Add exact-once accepted plan decomposition claims

This commit is contained in:
Devin Foley committed 2026-05-23 21:40:59 -07:00
1 parent 6b53e1bf7d
commit ca0407cbb7
13 files changed
+19193 -1

No files matched your search

+6
View File
@@ -438,6 +438,10 @@ export type {
RequestConfirmationTarget,
RequestConfirmationPayload,
RequestConfirmationResult,
AcceptedPlanDecompositionStatus,
AcceptedPlanDecompositionChild,
AcceptedPlanDecomposition,
AcceptedPlanDecompositionResult,
IssueThreadInteractionBase,
SuggestTasksInteraction,
AskUserQuestionsInteraction,
@@ -793,6 +797,7 @@ export {
createIssueSchema,
createIssueInputSchema,
createChildIssueSchema,
createAcceptedPlanDecompositionSchema,
resolveCreateIssueStatusDefault,
createIssueLabelSchema,
issueBlockedInboxAttentionSchema,
@@ -861,6 +866,7 @@ export {
releaseIssueTreeHoldSchema,
type CreateIssue,
type CreateChildIssue,
type CreateAcceptedPlanDecomposition,
type CreateIssueLabel,
type UpdateIssue,
type ResolveIssueRecoveryAction,
+4
View File
@@ -207,6 +207,10 @@ export type {
RequestConfirmationTarget,
RequestConfirmationPayload,
RequestConfirmationResult,
AcceptedPlanDecompositionStatus,
AcceptedPlanDecompositionChild,
AcceptedPlanDecomposition,
AcceptedPlanDecompositionResult,
IssueThreadInteractionBase,
SuggestTasksInteraction,
AskUserQuestionsInteraction,
+50
View File
@@ -129,6 +129,56 @@ export interface LegacyPlanDocument {
source: "issue_description";
}
export type AcceptedPlanDecompositionStatus = "in_flight" | "completed";
export interface AcceptedPlanDecompositionChild {
projectId?: string | null;
projectWorkspaceId?: string | null;
goalId?: string | null;
blockedByIssueIds?: string[];
title: string;
description?: string | null;
status: IssueStatus;
workMode: IssueWorkMode;
priority: IssuePriority;
assigneeAgentId?: string | null;
assigneeUserId?: string | null;
requestDepth?: number;
billingCode?: string | null;
assigneeAdapterOverrides?: IssueAssigneeAdapterOverrides | null;
executionPolicy?: IssueExecutionPolicy | null;
executionWorkspaceId?: string | null;
executionWorkspacePreference?: string | null;
executionWorkspaceSettings?: IssueExecutionWorkspaceSettings | null;
labelIds?: string[];
acceptanceCriteria?: string[];
blockParentUntilDone?: boolean;
}
export interface AcceptedPlanDecomposition {
id: string;
companyId: string;
sourceIssueId: string;
acceptedPlanRevisionId: string;
acceptedInteractionId: string | null;
status: AcceptedPlanDecompositionStatus;
requestFingerprint: string;
requestedChildCount: number;
childIssueIds: string[];
ownerAgentId: string | null;
ownerUserId: string | null;
ownerRunId: string | null;
completedAt: Date | string | null;
createdAt: Date | string;
updatedAt: Date | string;
}
export interface AcceptedPlanDecompositionResult {
decomposition: AcceptedPlanDecomposition;
childIssueIds: string[];
newlyCreatedChildIssueIds: string[];
}
export interface IssueRelationIssueSummary {
id: string;
identifier: string | null;
+2
View File
@@ -151,6 +151,7 @@ export {
createIssueSchema,
createIssueInputSchema,
createChildIssueSchema,
createAcceptedPlanDecompositionSchema,
resolveCreateIssueStatusDefault,
createIssueLabelSchema,
issueBlockedInboxAttentionSchema,
@@ -202,6 +203,7 @@ export {
restoreIssueDocumentRevisionSchema,
type CreateIssue,
type CreateChildIssue,
type CreateAcceptedPlanDecomposition,
type CreateIssueLabel,
type UpdateIssue,
type IssueExecutionWorkspaceSettings,
+7
View File
@@ -412,6 +412,13 @@ export const createChildIssueSchema = withCreateIssueStatusDefault(createIssueBa
export type CreateChildIssue = z.infer<typeof createChildIssueSchema>;
export const createAcceptedPlanDecompositionSchema = z.object({
acceptedPlanRevisionId: z.string().uuid(),
children: z.array(createChildIssueSchema).min(1).max(25),
});
export type CreateAcceptedPlanDecomposition = z.infer<typeof createAcceptedPlanDecompositionSchema>;
export const createIssueLabelSchema = z.object({
name: z.string().trim().min(1).max(48),
color: z.string().regex(/^#(?:[0-9a-fA-F]{6})$/, "Color must be a 6-digit hex value"),