@n8n/instance-ai 1.10.2 → 1.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +128 -0
- package/dist/agent/instance-agent.js +8 -0
- package/dist/agent/instance-agent.js.map +1 -1
- package/dist/agent/shared-prompts.d.ts +1 -0
- package/dist/agent/shared-prompts.js +25 -0
- package/dist/agent/shared-prompts.js.map +1 -1
- package/dist/agent/sub-agent-debriefing.d.ts +8 -8
- package/dist/agent/system-prompt.d.ts +2 -0
- package/dist/agent/system-prompt.js +52 -93
- package/dist/agent/system-prompt.js.map +1 -1
- package/dist/build.tsbuildinfo +1 -1
- package/dist/constants/max-steps.d.ts +0 -1
- package/dist/constants/max-steps.js +0 -1
- package/dist/constants/max-steps.js.map +1 -1
- package/dist/index.d.ts +123 -33
- package/dist/index.js +103 -96
- package/dist/index.js.map +1 -1
- package/dist/knowledge-base/build-templates-index.d.ts +12 -0
- package/dist/knowledge-base/build-templates-index.js +113 -0
- package/dist/knowledge-base/build-templates-index.js.map +1 -0
- package/dist/knowledge-base/extract-builder-templates-archive.d.ts +2 -0
- package/dist/knowledge-base/extract-builder-templates-archive.js +89 -0
- package/dist/knowledge-base/extract-builder-templates-archive.js.map +1 -0
- package/dist/knowledge-base/materialize-knowledge-base.d.ts +67 -0
- package/dist/knowledge-base/materialize-knowledge-base.js +186 -0
- package/dist/knowledge-base/materialize-knowledge-base.js.map +1 -0
- package/dist/mcp/mcp-client-manager.js +6 -1
- package/dist/mcp/mcp-client-manager.js.map +1 -1
- package/dist/parsers/pdf-parser.js +4 -0
- package/dist/parsers/pdf-parser.js.map +1 -1
- package/dist/planned-tasks/planned-task-service.d.ts +5 -1
- package/dist/planned-tasks/planned-task-service.js +29 -1
- package/dist/planned-tasks/planned-task-service.js.map +1 -1
- package/dist/runtime/run-state-registry.d.ts +8 -0
- package/dist/runtime/run-state-registry.js.map +1 -1
- package/dist/runtime/terminal-response-guard.d.ts +2 -1
- package/dist/runtime/terminal-response-guard.js +20 -0
- package/dist/runtime/terminal-response-guard.js.map +1 -1
- package/dist/skills/materialize-runtime-skills.d.ts +1 -7
- package/dist/skills/materialize-runtime-skills.js +96 -176
- package/dist/skills/materialize-runtime-skills.js.map +1 -1
- package/dist/storage/index.d.ts +1 -1
- package/dist/storage/planned-task-storage.js +1 -0
- package/dist/storage/planned-task-storage.js.map +1 -1
- package/dist/storage/terminal-outcome-storage.d.ts +2 -2
- package/dist/storage/workflow-loop-storage.d.ts +199 -70
- package/dist/storage/workflow-loop-storage.js +107 -0
- package/dist/storage/workflow-loop-storage.js.map +1 -1
- package/dist/stream/work-summary-accumulator.d.ts +6 -6
- package/dist/tools/attachments/parse-file.tool.d.ts +18 -18
- package/dist/tools/credentials.tool.d.ts +2 -5
- package/dist/tools/credentials.tool.js +2 -6
- package/dist/tools/credentials.tool.js.map +1 -1
- package/dist/tools/executions.tool.js +53 -7
- package/dist/tools/executions.tool.js.map +1 -1
- package/dist/tools/index.js +3 -9
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/nodes/node-search-engine.d.ts +2 -0
- package/dist/tools/nodes/node-search-engine.js +66 -7
- package/dist/tools/nodes/node-search-engine.js.map +1 -1
- package/dist/tools/nodes.tool.js +10 -3
- package/dist/tools/nodes.tool.js.map +1 -1
- package/dist/tools/orchestration/complete-checkpoint.tool.js +69 -0
- package/dist/tools/orchestration/complete-checkpoint.tool.js.map +1 -1
- package/dist/tools/orchestration/delegate.schemas.d.ts +5 -5
- package/dist/tools/orchestration/delegate.tool.js +1 -1
- package/dist/tools/orchestration/delegate.tool.js.map +1 -1
- package/dist/tools/orchestration/plan.tool.js +96 -60
- package/dist/tools/orchestration/plan.tool.js.map +1 -1
- package/dist/tools/orchestration/report-verification-verdict.tool.d.ts +9 -6
- package/dist/tools/orchestration/report-verification-verdict.tool.js +6 -1
- package/dist/tools/orchestration/report-verification-verdict.tool.js.map +1 -1
- package/dist/tools/orchestration/verify-built-workflow.tool.js +3 -2
- package/dist/tools/orchestration/verify-built-workflow.tool.js.map +1 -1
- package/dist/tools/tool-ids.d.ts +0 -5
- package/dist/tools/tool-ids.js +3 -7
- package/dist/tools/tool-ids.js.map +1 -1
- package/dist/tools/workflows/build-workflow.tool.d.ts +8 -2
- package/dist/tools/workflows/build-workflow.tool.js +371 -17
- package/dist/tools/workflows/build-workflow.tool.js.map +1 -1
- package/dist/tools/workflows/materialize-node-type.tool.d.ts +4 -4
- package/dist/tools/workflows/materialize-node-type.tool.js +2 -2
- package/dist/tools/workflows/materialize-node-type.tool.js.map +1 -1
- package/dist/tools/workflows/setup-workflow.schema.d.ts +32 -32
- package/dist/tools/workflows/submit-workflow.tool.d.ts +16 -12
- package/dist/tools/workflows/submit-workflow.tool.js +9 -2
- package/dist/tools/workflows/submit-workflow.tool.js.map +1 -1
- package/dist/tools/workflows/write-sandbox-file.tool.js +2 -2
- package/dist/tools/workflows/write-sandbox-file.tool.js.map +1 -1
- package/dist/tools/workflows.tool.js +5 -0
- package/dist/tools/workflows.tool.js.map +1 -1
- package/dist/tracing/langsmith-tracing.js +6 -1
- package/dist/tracing/langsmith-tracing.js.map +1 -1
- package/dist/tracing/trace-payloads.js +2 -6
- package/dist/tracing/trace-payloads.js.map +1 -1
- package/dist/types.d.ts +48 -9
- package/dist/types.js.map +1 -1
- package/dist/workflow-builder/build-failure-tracker.d.ts +10 -0
- package/dist/workflow-builder/build-failure-tracker.js +36 -0
- package/dist/workflow-builder/build-failure-tracker.js.map +1 -0
- package/dist/workflow-builder/index.d.ts +1 -0
- package/dist/workflow-builder/index.js +4 -1
- package/dist/workflow-builder/index.js.map +1 -1
- package/dist/workflow-loop/guidance.js +10 -6
- package/dist/workflow-loop/guidance.js.map +1 -1
- package/dist/workflow-loop/index.d.ts +3 -2
- package/dist/workflow-loop/index.js +14 -1
- package/dist/workflow-loop/index.js.map +1 -1
- package/dist/workflow-loop/runtime.js +3 -1
- package/dist/workflow-loop/runtime.js.map +1 -1
- package/dist/workflow-loop/verification-obligation.d.ts +15 -0
- package/dist/workflow-loop/verification-obligation.js +140 -0
- package/dist/workflow-loop/verification-obligation.js.map +1 -0
- package/dist/workflow-loop/workflow-loop-controller.js +26 -1
- package/dist/workflow-loop/workflow-loop-controller.js.map +1 -1
- package/dist/workflow-loop/workflow-loop-state.d.ts +416 -62
- package/dist/workflow-loop/workflow-loop-state.js +66 -1
- package/dist/workflow-loop/workflow-loop-state.js.map +1 -1
- package/dist/workspace/builder-templates-service.js.map +1 -1
- package/dist/workspace/compute-workspace-content-hash.d.ts +1 -0
- package/dist/workspace/compute-workspace-content-hash.js +15 -0
- package/dist/workspace/compute-workspace-content-hash.js.map +1 -0
- package/dist/workspace/create-workspace.d.ts +9 -43
- package/dist/workspace/create-workspace.js +45 -55
- package/dist/workspace/create-workspace.js.map +1 -1
- package/dist/workspace/lazy-runtime-workspace.js +1 -1
- package/dist/workspace/lazy-runtime-workspace.js.map +1 -1
- package/dist/workspace/prebaked-workspace-bundle.d.ts +39 -0
- package/dist/workspace/prebaked-workspace-bundle.js +75 -0
- package/dist/workspace/prebaked-workspace-bundle.js.map +1 -0
- package/dist/workspace/sandbox-fs.d.ts +9 -24
- package/dist/workspace/sandbox-fs.js +2 -16
- package/dist/workspace/sandbox-fs.js.map +1 -1
- package/dist/workspace/sandbox-setup.d.ts +1 -7
- package/dist/workspace/sandbox-setup.js +28 -170
- package/dist/workspace/sandbox-setup.js.map +1 -1
- package/dist/workspace/snapshot-image-context.d.ts +5 -0
- package/dist/workspace/snapshot-image-context.js +36 -0
- package/dist/workspace/snapshot-image-context.js.map +1 -0
- package/dist/workspace/snapshot-manager.d.ts +9 -9
- package/dist/workspace/snapshot-manager.js +57 -67
- package/dist/workspace/snapshot-manager.js.map +1 -1
- package/dist/workspace/template-telemetry.js +4 -4
- package/dist/workspace/template-telemetry.js.map +1 -1
- package/dist/workspace/workspace-file-content.d.ts +2 -0
- package/dist/workspace/workspace-file-content.js +11 -0
- package/dist/workspace/workspace-file-content.js.map +1 -0
- package/dist/workspace/workspace-files.d.ts +20 -0
- package/dist/workspace/workspace-files.js +74 -0
- package/dist/workspace/workspace-files.js.map +1 -0
- package/dist/workspace/workspace-manifest.d.ts +12 -0
- package/dist/workspace/workspace-manifest.js +28 -0
- package/dist/workspace/workspace-manifest.js.map +1 -0
- package/package.json +21 -15
- package/skills/data-table-manager/SKILL.md +6 -6
- package/skills/debugging-executions/SKILL.md +44 -0
- package/skills/planned-task-runtime/SKILL.md +163 -0
- package/skills/planning/SKILL.md +137 -0
- package/skills/post-build-flow/SKILL.md +119 -0
- package/skills/post-build-flow/references/trigger-input-data-shapes.md +38 -0
- package/skills/workflow-builder/SKILL.md +608 -0
- package/dist/tools/best-practices/index.d.ts +0 -2
- package/dist/tools/best-practices/index.js +0 -10
- package/dist/tools/best-practices/index.js.map +0 -1
- package/dist/tools/best-practices/techniques.d.ts +0 -1
- package/dist/tools/best-practices/techniques.js +0 -7
- package/dist/tools/best-practices/techniques.js.map +0 -1
- package/dist/tools/orchestration/add-plan-item.tool.d.ts +0 -5
- package/dist/tools/orchestration/add-plan-item.tool.js +0 -89
- package/dist/tools/orchestration/add-plan-item.tool.js.map +0 -1
- package/dist/tools/orchestration/blueprint-accumulator.d.ts +0 -49
- package/dist/tools/orchestration/blueprint-accumulator.js +0 -176
- package/dist/tools/orchestration/blueprint-accumulator.js.map +0 -1
- package/dist/tools/orchestration/blueprint.schema.d.ts +0 -182
- package/dist/tools/orchestration/blueprint.schema.js +0 -56
- package/dist/tools/orchestration/blueprint.schema.js.map +0 -1
- package/dist/tools/orchestration/build-workflow-agent.prompt.d.ts +0 -8
- package/dist/tools/orchestration/build-workflow-agent.prompt.js +0 -466
- package/dist/tools/orchestration/build-workflow-agent.prompt.js.map +0 -1
- package/dist/tools/orchestration/build-workflow-agent.tool.d.ts +0 -148
- package/dist/tools/orchestration/build-workflow-agent.tool.js +0 -1498
- package/dist/tools/orchestration/build-workflow-agent.tool.js.map +0 -1
- package/dist/tools/orchestration/builder-memory-compaction.d.ts +0 -42
- package/dist/tools/orchestration/builder-memory-compaction.js +0 -132
- package/dist/tools/orchestration/builder-memory-compaction.js.map +0 -1
- package/dist/tools/orchestration/plan-agent-prompt.d.ts +0 -1
- package/dist/tools/orchestration/plan-agent-prompt.js +0 -83
- package/dist/tools/orchestration/plan-agent-prompt.js.map +0 -1
- package/dist/tools/orchestration/plan-with-agent.tool.d.ts +0 -27
- package/dist/tools/orchestration/plan-with-agent.tool.js +0 -710
- package/dist/tools/orchestration/plan-with-agent.tool.js.map +0 -1
- package/dist/tools/orchestration/submit-plan.tool.d.ts +0 -3
- package/dist/tools/orchestration/submit-plan.tool.js +0 -98
- package/dist/tools/orchestration/submit-plan.tool.js.map +0 -1
- package/dist/tools/templates.tool.d.ts +0 -1
- package/dist/tools/templates.tool.js +0 -58
- package/dist/tools/templates.tool.js.map +0 -1
- package/dist/workspace/daytona-auth-manager.d.ts +0 -26
- package/dist/workspace/daytona-auth-manager.js +0 -90
- package/dist/workspace/daytona-auth-manager.js.map +0 -1
- package/dist/workspace/daytona-filesystem.d.ts +0 -25
- package/dist/workspace/daytona-filesystem.js +0 -132
- package/dist/workspace/daytona-filesystem.js.map +0 -1
- package/dist/workspace/daytona-sandbox.d.ts +0 -71
- package/dist/workspace/daytona-sandbox.js +0 -368
- package/dist/workspace/daytona-sandbox.js.map +0 -1
- package/dist/workspace/lazy-daytona.d.ts +0 -2
- package/dist/workspace/lazy-daytona.js +0 -12
- package/dist/workspace/lazy-daytona.js.map +0 -1
- package/dist/workspace/local-filesystem.d.ts +0 -48
- package/dist/workspace/local-filesystem.js +0 -250
- package/dist/workspace/local-filesystem.js.map +0 -1
- package/dist/workspace/local-sandbox.d.ts +0 -28
- package/dist/workspace/local-sandbox.js +0 -121
- package/dist/workspace/local-sandbox.js.map +0 -1
- package/dist/workspace/n8n-sandbox-filesystem.d.ts +0 -25
- package/dist/workspace/n8n-sandbox-filesystem.js +0 -128
- package/dist/workspace/n8n-sandbox-filesystem.js.map +0 -1
- package/dist/workspace/n8n-sandbox-sandbox.d.ts +0 -35
- package/dist/workspace/n8n-sandbox-sandbox.js +0 -143
- package/dist/workspace/n8n-sandbox-sandbox.js.map +0 -1
package/dist/types.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ import type { Logger } from './logger';
|
|
|
8
8
|
import type { McpClientManager } from './mcp/mcp-client-manager';
|
|
9
9
|
import type { IterationLog } from './storage/iteration-log';
|
|
10
10
|
import type { IdRemapper, TraceIndex, TraceWriter } from './tracing/trace-replay';
|
|
11
|
-
import type { VerificationResult, WorkflowBuildOutcome, WorkflowLoopAction, WorkflowLoopState } from './workflow-loop/workflow-loop-state';
|
|
11
|
+
import type { VerificationResult, WorkflowBuildOutcome, WorkflowLoopAction, WorkflowLoopState, WorkflowVerificationObligation } from './workflow-loop/workflow-loop-state';
|
|
12
12
|
import type { BuilderTemplatesService } from './workspace/builder-templates-service';
|
|
13
13
|
export type InstanceAiToolRegistry = Map<string, BuiltTool>;
|
|
14
14
|
export interface WorkflowSummary {
|
|
@@ -150,9 +150,19 @@ export interface InstanceAiWorkflowService {
|
|
|
150
150
|
query?: string;
|
|
151
151
|
limit?: number;
|
|
152
152
|
status?: WorkflowListStatus;
|
|
153
|
+
scope?: 'project' | 'instance';
|
|
153
154
|
}): Promise<WorkflowSummary[]>;
|
|
154
155
|
get(workflowId: string): Promise<WorkflowDetail>;
|
|
155
156
|
getAsWorkflowJSON(workflowId: string): Promise<WorkflowJSON>;
|
|
157
|
+
getWorkflowHead(workflowId: string): Promise<{
|
|
158
|
+
versionId: string;
|
|
159
|
+
updatedAt: number;
|
|
160
|
+
}>;
|
|
161
|
+
getWorkflowSnapshot(workflowId: string): Promise<{
|
|
162
|
+
json: WorkflowJSON;
|
|
163
|
+
versionId: string;
|
|
164
|
+
updatedAt: number;
|
|
165
|
+
}>;
|
|
156
166
|
createFromWorkflowJSON(json: WorkflowJSON, options?: {
|
|
157
167
|
projectId?: string;
|
|
158
168
|
markAsAiTemporary?: boolean;
|
|
@@ -486,6 +496,7 @@ export type LocalGatewayStatus = {
|
|
|
486
496
|
};
|
|
487
497
|
export interface InstanceAiContext {
|
|
488
498
|
userId: string;
|
|
499
|
+
projectId?: string;
|
|
489
500
|
workflowService: InstanceAiWorkflowService;
|
|
490
501
|
executionService: InstanceAiExecutionService;
|
|
491
502
|
credentialService: InstanceAiCredentialService;
|
|
@@ -498,6 +509,8 @@ export interface InstanceAiContext {
|
|
|
498
509
|
localGatewayStatus?: LocalGatewayStatus;
|
|
499
510
|
permissions?: InstanceAiPermissions;
|
|
500
511
|
allowedRunWorkflowIds?: ReadonlySet<string>;
|
|
512
|
+
allowedRunWorkflowNames?: ReadonlySet<string>;
|
|
513
|
+
requireRunWorkflowApproval?: boolean;
|
|
501
514
|
branchReadOnly?: boolean;
|
|
502
515
|
allowSendingParameterValues?: boolean;
|
|
503
516
|
licenseHints?: string[];
|
|
@@ -507,6 +520,17 @@ export interface InstanceAiContext {
|
|
|
507
520
|
currentUserAttachments?: InstanceAiAttachment[];
|
|
508
521
|
logger?: Logger;
|
|
509
522
|
nodeTypesProvider?: INodeTypes;
|
|
523
|
+
workflowBuildContext?: {
|
|
524
|
+
threadId: string;
|
|
525
|
+
runId: string;
|
|
526
|
+
taskId: string;
|
|
527
|
+
workItemId: string;
|
|
528
|
+
allowPostPlanWorkflowCreate?: boolean;
|
|
529
|
+
isSupportingWorkflowTask?: boolean;
|
|
530
|
+
plannedTaskService?: PlannedTaskService;
|
|
531
|
+
workflowTaskService?: WorkflowTaskService;
|
|
532
|
+
onBuildOutcome?: (outcome: WorkflowBuildOutcome) => void | Promise<void>;
|
|
533
|
+
};
|
|
510
534
|
}
|
|
511
535
|
export interface TaskStorage {
|
|
512
536
|
get(threadId: string): Promise<TaskList | null>;
|
|
@@ -523,6 +547,7 @@ export interface PlannedTask {
|
|
|
523
547
|
deps: string[];
|
|
524
548
|
tools?: string[];
|
|
525
549
|
workflowId?: string;
|
|
550
|
+
isSupportingWorkflow?: boolean;
|
|
526
551
|
}
|
|
527
552
|
export type PlannedTaskStatus = 'planned' | 'running' | 'succeeded' | 'failed' | 'cancelled';
|
|
528
553
|
export interface PlannedTaskRecord extends PlannedTask {
|
|
@@ -539,9 +564,15 @@ export type PlannedTaskGraphStatus = 'awaiting_approval' | 'active' | 'awaiting_
|
|
|
539
564
|
export interface PlannedTaskGraph {
|
|
540
565
|
planRunId: string;
|
|
541
566
|
messageGroupId?: string;
|
|
567
|
+
postBuildRunApprovalRequired?: boolean;
|
|
542
568
|
status: PlannedTaskGraphStatus;
|
|
543
569
|
tasks: PlannedTaskRecord[];
|
|
544
570
|
}
|
|
571
|
+
export interface PlannedWorkflowVerification {
|
|
572
|
+
task: PlannedTaskRecord;
|
|
573
|
+
obligation: WorkflowVerificationObligation;
|
|
574
|
+
outcome?: WorkflowBuildOutcome;
|
|
575
|
+
}
|
|
545
576
|
export type PlannedTaskSchedulerAction = {
|
|
546
577
|
type: 'none';
|
|
547
578
|
graph: PlannedTaskGraph | null;
|
|
@@ -549,10 +580,18 @@ export type PlannedTaskSchedulerAction = {
|
|
|
549
580
|
type: 'dispatch';
|
|
550
581
|
graph: PlannedTaskGraph;
|
|
551
582
|
tasks: PlannedTaskRecord[];
|
|
583
|
+
} | {
|
|
584
|
+
type: 'orchestrate-build-workflow';
|
|
585
|
+
graph: PlannedTaskGraph;
|
|
586
|
+
tasks: PlannedTaskRecord[];
|
|
552
587
|
} | {
|
|
553
588
|
type: 'orchestrate-checkpoint';
|
|
554
589
|
graph: PlannedTaskGraph;
|
|
555
590
|
tasks: PlannedTaskRecord[];
|
|
591
|
+
} | {
|
|
592
|
+
type: 'orchestrate-workflow-verification';
|
|
593
|
+
graph: PlannedTaskGraph;
|
|
594
|
+
verification: PlannedWorkflowVerification;
|
|
556
595
|
} | {
|
|
557
596
|
type: 'replan';
|
|
558
597
|
graph: PlannedTaskGraph;
|
|
@@ -565,6 +604,7 @@ export interface PlannedTaskService {
|
|
|
565
604
|
createPlan(threadId: string, tasks: PlannedTask[], metadata: {
|
|
566
605
|
planRunId: string;
|
|
567
606
|
messageGroupId?: string;
|
|
607
|
+
postBuildRunApprovalRequired?: boolean;
|
|
568
608
|
}): Promise<PlannedTaskGraph>;
|
|
569
609
|
getGraph(threadId: string): Promise<PlannedTaskGraph | null>;
|
|
570
610
|
markRunning(threadId: string, taskId: string, update: {
|
|
@@ -596,8 +636,10 @@ export interface PlannedTaskService {
|
|
|
596
636
|
finishedAt?: number;
|
|
597
637
|
}): Promise<CheckpointSettleResult>;
|
|
598
638
|
revertCheckpointToPlanned(threadId: string, taskId: string): Promise<CheckpointSettleResult>;
|
|
639
|
+
revertBuildWorkflowToPlanned(threadId: string, taskId: string): Promise<CheckpointSettleResult>;
|
|
599
640
|
tick(threadId: string, options?: {
|
|
600
641
|
availableSlots?: number;
|
|
642
|
+
pendingWorkflowVerification?: PlannedWorkflowVerification;
|
|
601
643
|
}): Promise<PlannedTaskSchedulerAction>;
|
|
602
644
|
clear(threadId: string): Promise<void>;
|
|
603
645
|
approvePlan(threadId: string): Promise<PlannedTaskGraph | null>;
|
|
@@ -618,9 +660,12 @@ export type CheckpointSettleResult = {
|
|
|
618
660
|
export interface McpServerConfig {
|
|
619
661
|
name: string;
|
|
620
662
|
url?: string;
|
|
663
|
+
transport?: 'sse' | 'streamableHttp';
|
|
621
664
|
command?: string;
|
|
622
665
|
args?: string[];
|
|
623
666
|
env?: Record<string, string>;
|
|
667
|
+
fetch?: typeof fetch;
|
|
668
|
+
cacheKey?: string;
|
|
624
669
|
}
|
|
625
670
|
export interface InstanceAiMemoryConfig {
|
|
626
671
|
threadTtlDays?: number;
|
|
@@ -759,6 +804,7 @@ export interface OrchestrationContext {
|
|
|
759
804
|
runId: string;
|
|
760
805
|
messageGroupId?: string;
|
|
761
806
|
userId: string;
|
|
807
|
+
projectId?: string;
|
|
762
808
|
orchestratorAgentId: string;
|
|
763
809
|
modelId: ModelConfig;
|
|
764
810
|
checkpointStore?: CheckpointStore;
|
|
@@ -799,6 +845,7 @@ export interface OrchestrationContext {
|
|
|
799
845
|
plannedTaskService?: PlannedTaskService;
|
|
800
846
|
schedulePlannedTasks?: () => Promise<void>;
|
|
801
847
|
workspace?: Workspace;
|
|
848
|
+
workspaceRoot?: string;
|
|
802
849
|
nodeDefinitionDirs?: string[];
|
|
803
850
|
memory?: BuiltMemory;
|
|
804
851
|
currentUserMessage?: string;
|
|
@@ -808,14 +855,6 @@ export interface OrchestrationContext {
|
|
|
808
855
|
domainContext?: InstanceAiContext;
|
|
809
856
|
iterationLog?: IterationLog;
|
|
810
857
|
sendCorrectionToTask?: (taskId: string, correction: string) => 'queued' | 'task-completed' | 'task-not-found';
|
|
811
|
-
findSubAgentResumeInfo?: (agentKind: string) => Promise<{
|
|
812
|
-
runId: string;
|
|
813
|
-
toolCallId: string;
|
|
814
|
-
persistence: {
|
|
815
|
-
threadId: string;
|
|
816
|
-
resourceId: string;
|
|
817
|
-
};
|
|
818
|
-
} | undefined>;
|
|
819
858
|
persistInFlightUserMessage?: () => Promise<void>;
|
|
820
859
|
touchRun?: () => boolean;
|
|
821
860
|
touchBackgroundTask?: (taskId: string) => boolean;
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AA+yBa,QAAA,kBAAkB,GAAG,CAAC,UAAU,EAAE,gBAAgB,EAAE,YAAY,CAAU,CAAC;AAC3E,QAAA,yBAAyB,GAAG,0BAAkB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare function buildFailureSignature(errors: string[]): string;
|
|
2
|
+
interface BuildFailureTrackerOptions {
|
|
3
|
+
includeSdkLanguageGuidance?: boolean;
|
|
4
|
+
}
|
|
5
|
+
export declare class BuildFailureTracker {
|
|
6
|
+
private readonly history;
|
|
7
|
+
record(workItemKey: string, errors: string[], options?: BuildFailureTrackerOptions): string | undefined;
|
|
8
|
+
clear(workItemKey: string): void;
|
|
9
|
+
}
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BuildFailureTracker = void 0;
|
|
4
|
+
exports.buildFailureSignature = buildFailureSignature;
|
|
5
|
+
function buildFailureSignature(errors) {
|
|
6
|
+
return errors
|
|
7
|
+
.map((error) => error.split('\n\n')[0].toLowerCase().replace(/\d+/g, '#').replace(/\s+/g, ' ').trim())
|
|
8
|
+
.sort()
|
|
9
|
+
.join(' | ');
|
|
10
|
+
}
|
|
11
|
+
const GENERIC_ESCALATION = 'You already tried this and it failed with the same error. Do not repeat the same approach. ' +
|
|
12
|
+
'Use a different repair strategy for this work item.';
|
|
13
|
+
const SDK_LANGUAGE_GUIDANCE = 'SDK builder code is a restricted subset of TypeScript (see ' +
|
|
14
|
+
'knowledge-base/reference/workflow-sdk-language.md): only SDK builder methods are allowed, not ' +
|
|
15
|
+
'native array/string methods or globals. Build strings with template literals or explicit lines, ' +
|
|
16
|
+
'and move runtime joining, aggregation, or transforms into a Code node or an n8n expression.';
|
|
17
|
+
class BuildFailureTracker {
|
|
18
|
+
history = new Map();
|
|
19
|
+
record(workItemKey, errors, options = {}) {
|
|
20
|
+
const signature = buildFailureSignature(errors);
|
|
21
|
+
const seen = this.history.get(workItemKey) ?? new Set();
|
|
22
|
+
const repeated = seen.has(signature);
|
|
23
|
+
seen.add(signature);
|
|
24
|
+
this.history.set(workItemKey, seen);
|
|
25
|
+
return repeated
|
|
26
|
+
? [GENERIC_ESCALATION, options.includeSdkLanguageGuidance ? SDK_LANGUAGE_GUIDANCE : '']
|
|
27
|
+
.filter(Boolean)
|
|
28
|
+
.join(' ')
|
|
29
|
+
: undefined;
|
|
30
|
+
}
|
|
31
|
+
clear(workItemKey) {
|
|
32
|
+
this.history.delete(workItemKey);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
exports.BuildFailureTracker = BuildFailureTracker;
|
|
36
|
+
//# sourceMappingURL=build-failure-tracker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-failure-tracker.js","sourceRoot":"","sources":["../../src/workflow-builder/build-failure-tracker.ts"],"names":[],"mappings":";;;AAMA,sDAOC;AAPD,SAAgB,qBAAqB,CAAC,MAAgB;IACrD,OAAO,MAAM;SACX,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACd,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CACrF;SACA,IAAI,EAAE;SACN,IAAI,CAAC,KAAK,CAAC,CAAC;AACf,CAAC;AAMD,MAAM,kBAAkB,GACvB,6FAA6F;IAC7F,qDAAqD,CAAC;AAEvD,MAAM,qBAAqB,GAC1B,6DAA6D;IAC7D,gGAAgG;IAChG,kGAAkG;IAClG,6FAA6F,CAAC;AAG/F,MAAa,mBAAmB;IACd,OAAO,GAAG,IAAI,GAAG,EAAuB,CAAC;IAM1D,MAAM,CACL,WAAmB,EACnB,MAAgB,EAChB,UAAsC,EAAE;QAExC,MAAM,SAAS,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAChD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,IAAI,GAAG,EAAU,CAAC;QAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACrC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACpB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QACpC,OAAO,QAAQ;YACd,CAAC,CAAC,CAAC,kBAAkB,EAAE,OAAO,CAAC,0BAA0B,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC;iBACpF,MAAM,CAAC,OAAO,CAAC;iBACf,IAAI,CAAC,GAAG,CAAC;YACZ,CAAC,CAAC,SAAS,CAAC;IACd,CAAC;IAGD,KAAK,CAAC,WAAmB;QACxB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAClC,CAAC;CACD;AA5BD,kDA4BC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { extractWorkflowCode, stripImportStatements, resolveLocalImports, SDK_IMPORT_STATEMENT, } from './extract-code';
|
|
2
2
|
export { applyPatches } from './patch-code';
|
|
3
3
|
export { parseAndValidate, partitionWarnings } from './parse-validate';
|
|
4
|
+
export { BuildFailureTracker, buildFailureSignature } from './build-failure-tracker';
|
|
4
5
|
export { EXPRESSION_REFERENCE, ADDITIONAL_FUNCTIONS, WORKFLOW_RULES, WORKFLOW_SDK_PATTERNS, } from './sdk-prompt-sections';
|
|
5
6
|
export type { ValidationWarning, ParseAndValidateResult } from './types';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.WORKFLOW_SDK_PATTERNS = exports.WORKFLOW_RULES = exports.ADDITIONAL_FUNCTIONS = exports.EXPRESSION_REFERENCE = exports.partitionWarnings = exports.parseAndValidate = exports.applyPatches = exports.SDK_IMPORT_STATEMENT = exports.resolveLocalImports = exports.stripImportStatements = exports.extractWorkflowCode = void 0;
|
|
3
|
+
exports.WORKFLOW_SDK_PATTERNS = exports.WORKFLOW_RULES = exports.ADDITIONAL_FUNCTIONS = exports.EXPRESSION_REFERENCE = exports.buildFailureSignature = exports.BuildFailureTracker = exports.partitionWarnings = exports.parseAndValidate = exports.applyPatches = exports.SDK_IMPORT_STATEMENT = exports.resolveLocalImports = exports.stripImportStatements = exports.extractWorkflowCode = void 0;
|
|
4
4
|
var extract_code_1 = require("./extract-code");
|
|
5
5
|
Object.defineProperty(exports, "extractWorkflowCode", { enumerable: true, get: function () { return extract_code_1.extractWorkflowCode; } });
|
|
6
6
|
Object.defineProperty(exports, "stripImportStatements", { enumerable: true, get: function () { return extract_code_1.stripImportStatements; } });
|
|
@@ -11,6 +11,9 @@ Object.defineProperty(exports, "applyPatches", { enumerable: true, get: function
|
|
|
11
11
|
var parse_validate_1 = require("./parse-validate");
|
|
12
12
|
Object.defineProperty(exports, "parseAndValidate", { enumerable: true, get: function () { return parse_validate_1.parseAndValidate; } });
|
|
13
13
|
Object.defineProperty(exports, "partitionWarnings", { enumerable: true, get: function () { return parse_validate_1.partitionWarnings; } });
|
|
14
|
+
var build_failure_tracker_1 = require("./build-failure-tracker");
|
|
15
|
+
Object.defineProperty(exports, "BuildFailureTracker", { enumerable: true, get: function () { return build_failure_tracker_1.BuildFailureTracker; } });
|
|
16
|
+
Object.defineProperty(exports, "buildFailureSignature", { enumerable: true, get: function () { return build_failure_tracker_1.buildFailureSignature; } });
|
|
14
17
|
var sdk_prompt_sections_1 = require("./sdk-prompt-sections");
|
|
15
18
|
Object.defineProperty(exports, "EXPRESSION_REFERENCE", { enumerable: true, get: function () { return sdk_prompt_sections_1.EXPRESSION_REFERENCE; } });
|
|
16
19
|
Object.defineProperty(exports, "ADDITIONAL_FUNCTIONS", { enumerable: true, get: function () { return sdk_prompt_sections_1.ADDITIONAL_FUNCTIONS; } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/workflow-builder/index.ts"],"names":[],"mappings":";;;AAAA,+CAKwB;AAJvB,mHAAA,mBAAmB,OAAA;AACnB,qHAAA,qBAAqB,OAAA;AACrB,mHAAA,mBAAmB,OAAA;AACnB,oHAAA,oBAAoB,OAAA;AAErB,2CAA4C;AAAnC,0GAAA,YAAY,OAAA;AACrB,mDAAuE;AAA9D,kHAAA,gBAAgB,OAAA;AAAE,mHAAA,iBAAiB,OAAA;AAC5C,6DAK+B;AAJ9B,2HAAA,oBAAoB,OAAA;AACpB,2HAAA,oBAAoB,OAAA;AACpB,qHAAA,cAAc,OAAA;AACd,4HAAA,qBAAqB,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/workflow-builder/index.ts"],"names":[],"mappings":";;;AAAA,+CAKwB;AAJvB,mHAAA,mBAAmB,OAAA;AACnB,qHAAA,qBAAqB,OAAA;AACrB,mHAAA,mBAAmB,OAAA;AACnB,oHAAA,oBAAoB,OAAA;AAErB,2CAA4C;AAAnC,0GAAA,YAAY,OAAA;AACrB,mDAAuE;AAA9D,kHAAA,gBAAgB,OAAA;AAAE,mHAAA,iBAAiB,OAAA;AAC5C,iEAAqF;AAA5E,4HAAA,mBAAmB,OAAA;AAAE,8HAAA,qBAAqB,OAAA;AACnD,6DAK+B;AAJ9B,2HAAA,oBAAoB,OAAA;AACpB,2HAAA,oBAAoB,OAAA;AACpB,qHAAA,cAAc,OAAA;AACd,4HAAA,qBAAqB,OAAA"}
|
|
@@ -18,29 +18,33 @@ function formatWorkflowLoopGuidance(action, options = {}) {
|
|
|
18
18
|
return `Workflow verified successfully. Report completion to the user.${action.workflowId ? ` Workflow ID: ${action.workflowId}` : ''}`;
|
|
19
19
|
}
|
|
20
20
|
case 'verify':
|
|
21
|
-
return (`VERIFY:
|
|
21
|
+
return (`VERIFY: Inspect the persisted workflow ${action.workflowId} with \`workflows(action="get-json")\` and compare it to the requested outcome. ` +
|
|
22
|
+
'Build/save success only means a workflow was saved. ' +
|
|
22
23
|
`If the build had mocked credentials, use \`verify-built-workflow\` with workItemId "${options.workItemId ?? 'unknown'}". ` +
|
|
23
24
|
'Otherwise use `executions(action="run")`. ' +
|
|
24
25
|
'If it fails, use `executions(action="debug")` to diagnose. ' +
|
|
25
|
-
|
|
26
|
+
'If the saved graph or run evidence is not good enough, report `needs_patch` or `needs_rebuild` and keep patching the same workflow. ' +
|
|
27
|
+
`Then call \`report-verification-verdict\` with workItemId "${options.workItemId ?? 'unknown'}", \`workflowInspection\`, and your findings.`);
|
|
26
28
|
case 'blocked':
|
|
27
29
|
return `BUILD BLOCKED: ${action.reason}. Explain this to the user and ask how to proceed.`;
|
|
28
30
|
case 'rebuild':
|
|
29
31
|
return (`REBUILD NEEDED: Workflow "${action.workflowId}" needs structural repair. ` +
|
|
30
|
-
`
|
|
32
|
+
'Load the `workflow-builder` skill, then call `build-workflow` directly ' +
|
|
33
|
+
`with \`workflowId: "${action.workflowId}"\` ` +
|
|
31
34
|
`and \`workItemId: "${options.workItemId ?? 'unknown'}"\` ` +
|
|
32
35
|
'(no plan — this is a single-task rebuild; `workflowId` and `workItemId` are required ' +
|
|
33
36
|
'so the builder updates the existing workflow instead of creating a duplicate). ' +
|
|
34
|
-
`
|
|
37
|
+
`Use SDK code or a targeted patch to apply this structural repair: ${action.failureDetails}`);
|
|
35
38
|
case 'patch':
|
|
36
39
|
return (`PATCH NEEDED: Node "${action.failedNodeName}" in workflow ${action.workflowId} needs a targeted fix. ` +
|
|
37
40
|
`Diagnosis: ${action.diagnosis}. ` +
|
|
38
41
|
(action.patch ? `Suggested fix: ${JSON.stringify(action.patch)}. ` : '') +
|
|
39
|
-
`
|
|
42
|
+
'Load the `workflow-builder` skill, then call `build-workflow` directly ' +
|
|
43
|
+
`with \`workflowId: "${action.workflowId}"\` ` +
|
|
40
44
|
`and \`workItemId: "${options.workItemId ?? 'unknown'}"\` ` +
|
|
41
45
|
'(no plan — this is a single-task patch; `workflowId` and `workItemId` are required ' +
|
|
42
46
|
'so the builder updates the existing workflow instead of creating a duplicate). ' +
|
|
43
|
-
'
|
|
47
|
+
'Use patch mode when the edit is small.');
|
|
44
48
|
}
|
|
45
49
|
}
|
|
46
50
|
//# sourceMappingURL=guidance.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guidance.js","sourceRoot":"","sources":["../../src/workflow-loop/guidance.ts"],"names":[],"mappings":";;AAMA,
|
|
1
|
+
{"version":3,"file":"guidance.js","sourceRoot":"","sources":["../../src/workflow-loop/guidance.ts"],"names":[],"mappings":";;AAMA,gEAwDC;AAxDD,SAAgB,0BAA0B,CACzC,MAA0B,EAC1B,UAAuC,EAAE;IAEzC,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACrB,KAAK,SAAS;YACb,OAAO,yBAAyB,MAAM,CAAC,MAAM,EAAE,CAAC;QACjD,KAAK,mBAAmB;YACvB,OAAO,kBAAkB,MAAM,CAAC,MAAM,6DAA6D,CAAC;QACrG,KAAK,MAAM,CAAC,CAAC,CAAC;YACb,IAAI,MAAM,CAAC,qBAAqB,EAAE,MAAM,IAAI,MAAM,CAAC,yBAAyB,EAAE,CAAC;gBAC9E,OAAO,CACN,2DAA2D;oBAC3D,uDAAuD,MAAM,CAAC,UAAU,IAAI,SAAS,IAAI;oBACzF,qGAAqG;oBACrG,oFAAoF;oBACpF,6HAA6H,CAC7H,CAAC;YACH,CAAC;YACD,OAAO,iEAAiE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,iBAAiB,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACzI,CAAC;QACD,KAAK,QAAQ;YACZ,OAAO,CACN,0CAA0C,MAAM,CAAC,UAAU,kFAAkF;gBAC7I,sDAAsD;gBACtD,uFAAuF,OAAO,CAAC,UAAU,IAAI,SAAS,KAAK;gBAC3H,4CAA4C;gBAC5C,6DAA6D;gBAC7D,sIAAsI;gBACtI,8DAA8D,OAAO,CAAC,UAAU,IAAI,SAAS,+CAA+C,CAC5I,CAAC;QACH,KAAK,SAAS;YACb,OAAO,kBAAkB,MAAM,CAAC,MAAM,oDAAoD,CAAC;QAC5F,KAAK,SAAS;YACb,OAAO,CACN,6BAA6B,MAAM,CAAC,UAAU,6BAA6B;gBAC3E,yEAAyE;gBACzE,uBAAuB,MAAM,CAAC,UAAU,MAAM;gBAC9C,sBAAsB,OAAO,CAAC,UAAU,IAAI,SAAS,MAAM;gBAC3D,uFAAuF;gBACvF,iFAAiF;gBACjF,qEAAqE,MAAM,CAAC,cAAc,EAAE,CAC5F,CAAC;QACH,KAAK,OAAO;YACX,OAAO,CACN,uBAAuB,MAAM,CAAC,cAAc,iBAAiB,MAAM,CAAC,UAAU,yBAAyB;gBACvG,cAAc,MAAM,CAAC,SAAS,IAAI;gBAClC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,kBAAkB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxE,yEAAyE;gBACzE,uBAAuB,MAAM,CAAC,UAAU,MAAM;gBAC9C,sBAAsB,OAAO,CAAC,UAAU,IAAI,SAAS,MAAM;gBAC3D,qFAAqF;gBACrF,iFAAiF;gBACjF,wCAAwC,CACxC,CAAC;IACJ,CAAC;AACF,CAAC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
export { workflowLoopPhaseSchema, workflowLoopStatusSchema, workflowLoopSourceSchema, remediationCategorySchema, remediationMetadataSchema, workflowLoopStateSchema, attemptActionSchema, attemptResultSchema, attemptRecordSchema, triggerTypeSchema, workflowVerificationReadinessSchema, workflowSetupRequirementSchema, workflowBuildOutcomeSchema, verificationVerdictSchema, verificationResultSchema, } from './workflow-loop-state';
|
|
2
|
-
export type { WorkflowLoopPhase, WorkflowLoopStatus, WorkflowLoopSource, RemediationCategory, RemediationMetadata, WorkflowLoopState, AttemptAction, AttemptResult, AttemptRecord, TriggerType, WorkflowVerificationEvidence, WorkflowVerificationReadiness, WorkflowSetupRequirement, WorkflowBuildOutcome, VerificationVerdict, VerificationResult, WorkflowLoopAction, } from './workflow-loop-state';
|
|
1
|
+
export { workflowLoopPhaseSchema, workflowLoopStatusSchema, workflowLoopSourceSchema, remediationCategorySchema, remediationMetadataSchema, workflowBuildOwnerSchema, workflowLoopStateSchema, attemptActionSchema, attemptResultSchema, attemptRecordSchema, triggerTypeSchema, workflowVerificationEvidenceSchema, workflowVerificationReadinessSchema, workflowSetupRequirementSchema, workflowVerificationObligationStatusSchema, workflowVerificationObligationPolicySchema, workflowVerificationObligationSourceSchema, workflowVerificationObligationSchema, workflowBuildOutcomeSchema, verificationVerdictSchema, verificationResultSchema, resolveWorkflowBuildOwner, plannedTaskIdFromWorkflowBuildOwner, isPlannedWorkflowBuildOwner, } from './workflow-loop-state';
|
|
2
|
+
export type { WorkflowLoopPhase, WorkflowLoopStatus, WorkflowLoopSource, RemediationCategory, RemediationMetadata, WorkflowBuildOwner, WorkflowLoopState, AttemptAction, AttemptResult, AttemptRecord, TriggerType, WorkflowVerificationEvidence, WorkflowVerificationReadiness, WorkflowSetupRequirement, WorkflowVerificationObligationStatus, WorkflowVerificationObligationPolicy, WorkflowVerificationObligationSource, WorkflowVerificationObligation, WorkflowBuildOutcome, VerificationVerdict, VerificationResult, WorkflowLoopAction, } from './workflow-loop-state';
|
|
3
3
|
export { createWorkItem, handleBuildOutcome, handleVerificationVerdict, formatAttemptHistory, } from './workflow-loop-controller';
|
|
4
4
|
export { formatWorkflowLoopGuidance } from './guidance';
|
|
5
5
|
export { WorkflowTaskCoordinator } from './workflow-task-service';
|
|
6
|
+
export { deriveWorkflowVerificationObligation, deriveWorkflowVerificationObligationFromOutcome, isWorkflowVerificationObligationUnsettled, type DeriveWorkflowVerificationObligationOptions, type WorkflowVerificationObligationRecord, } from './verification-obligation';
|
|
6
7
|
export { MAX_POST_SUBMIT_REMEDIATION_SUBMITS, MAX_PRE_SAVE_SUBMIT_FAILURES, createRemediation, remainingPostSubmitRemediations, terminalRemediationFromState, } from './remediation';
|
|
7
8
|
export { createTerminalRemediationGuard, type TerminalRemediationGuard, } from './terminal-remediation-guard';
|
|
@@ -1,22 +1,31 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createTerminalRemediationGuard = exports.terminalRemediationFromState = exports.remainingPostSubmitRemediations = exports.createRemediation = exports.MAX_PRE_SAVE_SUBMIT_FAILURES = exports.MAX_POST_SUBMIT_REMEDIATION_SUBMITS = exports.WorkflowTaskCoordinator = exports.formatWorkflowLoopGuidance = exports.formatAttemptHistory = exports.handleVerificationVerdict = exports.handleBuildOutcome = exports.createWorkItem = exports.verificationResultSchema = exports.verificationVerdictSchema = exports.workflowBuildOutcomeSchema = exports.workflowSetupRequirementSchema = exports.workflowVerificationReadinessSchema = exports.triggerTypeSchema = exports.attemptRecordSchema = exports.attemptResultSchema = exports.attemptActionSchema = exports.workflowLoopStateSchema = exports.remediationMetadataSchema = exports.remediationCategorySchema = exports.workflowLoopSourceSchema = exports.workflowLoopStatusSchema = exports.workflowLoopPhaseSchema = void 0;
|
|
3
|
+
exports.createTerminalRemediationGuard = exports.terminalRemediationFromState = exports.remainingPostSubmitRemediations = exports.createRemediation = exports.MAX_PRE_SAVE_SUBMIT_FAILURES = exports.MAX_POST_SUBMIT_REMEDIATION_SUBMITS = exports.isWorkflowVerificationObligationUnsettled = exports.deriveWorkflowVerificationObligationFromOutcome = exports.deriveWorkflowVerificationObligation = exports.WorkflowTaskCoordinator = exports.formatWorkflowLoopGuidance = exports.formatAttemptHistory = exports.handleVerificationVerdict = exports.handleBuildOutcome = exports.createWorkItem = exports.isPlannedWorkflowBuildOwner = exports.plannedTaskIdFromWorkflowBuildOwner = exports.resolveWorkflowBuildOwner = exports.verificationResultSchema = exports.verificationVerdictSchema = exports.workflowBuildOutcomeSchema = exports.workflowVerificationObligationSchema = exports.workflowVerificationObligationSourceSchema = exports.workflowVerificationObligationPolicySchema = exports.workflowVerificationObligationStatusSchema = exports.workflowSetupRequirementSchema = exports.workflowVerificationReadinessSchema = exports.workflowVerificationEvidenceSchema = exports.triggerTypeSchema = exports.attemptRecordSchema = exports.attemptResultSchema = exports.attemptActionSchema = exports.workflowLoopStateSchema = exports.workflowBuildOwnerSchema = exports.remediationMetadataSchema = exports.remediationCategorySchema = exports.workflowLoopSourceSchema = exports.workflowLoopStatusSchema = exports.workflowLoopPhaseSchema = void 0;
|
|
4
4
|
var workflow_loop_state_1 = require("./workflow-loop-state");
|
|
5
5
|
Object.defineProperty(exports, "workflowLoopPhaseSchema", { enumerable: true, get: function () { return workflow_loop_state_1.workflowLoopPhaseSchema; } });
|
|
6
6
|
Object.defineProperty(exports, "workflowLoopStatusSchema", { enumerable: true, get: function () { return workflow_loop_state_1.workflowLoopStatusSchema; } });
|
|
7
7
|
Object.defineProperty(exports, "workflowLoopSourceSchema", { enumerable: true, get: function () { return workflow_loop_state_1.workflowLoopSourceSchema; } });
|
|
8
8
|
Object.defineProperty(exports, "remediationCategorySchema", { enumerable: true, get: function () { return workflow_loop_state_1.remediationCategorySchema; } });
|
|
9
9
|
Object.defineProperty(exports, "remediationMetadataSchema", { enumerable: true, get: function () { return workflow_loop_state_1.remediationMetadataSchema; } });
|
|
10
|
+
Object.defineProperty(exports, "workflowBuildOwnerSchema", { enumerable: true, get: function () { return workflow_loop_state_1.workflowBuildOwnerSchema; } });
|
|
10
11
|
Object.defineProperty(exports, "workflowLoopStateSchema", { enumerable: true, get: function () { return workflow_loop_state_1.workflowLoopStateSchema; } });
|
|
11
12
|
Object.defineProperty(exports, "attemptActionSchema", { enumerable: true, get: function () { return workflow_loop_state_1.attemptActionSchema; } });
|
|
12
13
|
Object.defineProperty(exports, "attemptResultSchema", { enumerable: true, get: function () { return workflow_loop_state_1.attemptResultSchema; } });
|
|
13
14
|
Object.defineProperty(exports, "attemptRecordSchema", { enumerable: true, get: function () { return workflow_loop_state_1.attemptRecordSchema; } });
|
|
14
15
|
Object.defineProperty(exports, "triggerTypeSchema", { enumerable: true, get: function () { return workflow_loop_state_1.triggerTypeSchema; } });
|
|
16
|
+
Object.defineProperty(exports, "workflowVerificationEvidenceSchema", { enumerable: true, get: function () { return workflow_loop_state_1.workflowVerificationEvidenceSchema; } });
|
|
15
17
|
Object.defineProperty(exports, "workflowVerificationReadinessSchema", { enumerable: true, get: function () { return workflow_loop_state_1.workflowVerificationReadinessSchema; } });
|
|
16
18
|
Object.defineProperty(exports, "workflowSetupRequirementSchema", { enumerable: true, get: function () { return workflow_loop_state_1.workflowSetupRequirementSchema; } });
|
|
19
|
+
Object.defineProperty(exports, "workflowVerificationObligationStatusSchema", { enumerable: true, get: function () { return workflow_loop_state_1.workflowVerificationObligationStatusSchema; } });
|
|
20
|
+
Object.defineProperty(exports, "workflowVerificationObligationPolicySchema", { enumerable: true, get: function () { return workflow_loop_state_1.workflowVerificationObligationPolicySchema; } });
|
|
21
|
+
Object.defineProperty(exports, "workflowVerificationObligationSourceSchema", { enumerable: true, get: function () { return workflow_loop_state_1.workflowVerificationObligationSourceSchema; } });
|
|
22
|
+
Object.defineProperty(exports, "workflowVerificationObligationSchema", { enumerable: true, get: function () { return workflow_loop_state_1.workflowVerificationObligationSchema; } });
|
|
17
23
|
Object.defineProperty(exports, "workflowBuildOutcomeSchema", { enumerable: true, get: function () { return workflow_loop_state_1.workflowBuildOutcomeSchema; } });
|
|
18
24
|
Object.defineProperty(exports, "verificationVerdictSchema", { enumerable: true, get: function () { return workflow_loop_state_1.verificationVerdictSchema; } });
|
|
19
25
|
Object.defineProperty(exports, "verificationResultSchema", { enumerable: true, get: function () { return workflow_loop_state_1.verificationResultSchema; } });
|
|
26
|
+
Object.defineProperty(exports, "resolveWorkflowBuildOwner", { enumerable: true, get: function () { return workflow_loop_state_1.resolveWorkflowBuildOwner; } });
|
|
27
|
+
Object.defineProperty(exports, "plannedTaskIdFromWorkflowBuildOwner", { enumerable: true, get: function () { return workflow_loop_state_1.plannedTaskIdFromWorkflowBuildOwner; } });
|
|
28
|
+
Object.defineProperty(exports, "isPlannedWorkflowBuildOwner", { enumerable: true, get: function () { return workflow_loop_state_1.isPlannedWorkflowBuildOwner; } });
|
|
20
29
|
var workflow_loop_controller_1 = require("./workflow-loop-controller");
|
|
21
30
|
Object.defineProperty(exports, "createWorkItem", { enumerable: true, get: function () { return workflow_loop_controller_1.createWorkItem; } });
|
|
22
31
|
Object.defineProperty(exports, "handleBuildOutcome", { enumerable: true, get: function () { return workflow_loop_controller_1.handleBuildOutcome; } });
|
|
@@ -26,6 +35,10 @@ var guidance_1 = require("./guidance");
|
|
|
26
35
|
Object.defineProperty(exports, "formatWorkflowLoopGuidance", { enumerable: true, get: function () { return guidance_1.formatWorkflowLoopGuidance; } });
|
|
27
36
|
var workflow_task_service_1 = require("./workflow-task-service");
|
|
28
37
|
Object.defineProperty(exports, "WorkflowTaskCoordinator", { enumerable: true, get: function () { return workflow_task_service_1.WorkflowTaskCoordinator; } });
|
|
38
|
+
var verification_obligation_1 = require("./verification-obligation");
|
|
39
|
+
Object.defineProperty(exports, "deriveWorkflowVerificationObligation", { enumerable: true, get: function () { return verification_obligation_1.deriveWorkflowVerificationObligation; } });
|
|
40
|
+
Object.defineProperty(exports, "deriveWorkflowVerificationObligationFromOutcome", { enumerable: true, get: function () { return verification_obligation_1.deriveWorkflowVerificationObligationFromOutcome; } });
|
|
41
|
+
Object.defineProperty(exports, "isWorkflowVerificationObligationUnsettled", { enumerable: true, get: function () { return verification_obligation_1.isWorkflowVerificationObligationUnsettled; } });
|
|
29
42
|
var remediation_1 = require("./remediation");
|
|
30
43
|
Object.defineProperty(exports, "MAX_POST_SUBMIT_REMEDIATION_SUBMITS", { enumerable: true, get: function () { return remediation_1.MAX_POST_SUBMIT_REMEDIATION_SUBMITS; } });
|
|
31
44
|
Object.defineProperty(exports, "MAX_PRE_SAVE_SUBMIT_FAILURES", { enumerable: true, get: function () { return remediation_1.MAX_PRE_SAVE_SUBMIT_FAILURES; } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/workflow-loop/index.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/workflow-loop/index.ts"],"names":[],"mappings":";;;AAAA,6DAyB+B;AAxB9B,8HAAA,uBAAuB,OAAA;AACvB,+HAAA,wBAAwB,OAAA;AACxB,+HAAA,wBAAwB,OAAA;AACxB,gIAAA,yBAAyB,OAAA;AACzB,gIAAA,yBAAyB,OAAA;AACzB,+HAAA,wBAAwB,OAAA;AACxB,8HAAA,uBAAuB,OAAA;AACvB,0HAAA,mBAAmB,OAAA;AACnB,0HAAA,mBAAmB,OAAA;AACnB,0HAAA,mBAAmB,OAAA;AACnB,wHAAA,iBAAiB,OAAA;AACjB,yIAAA,kCAAkC,OAAA;AAClC,0IAAA,mCAAmC,OAAA;AACnC,qIAAA,8BAA8B,OAAA;AAC9B,iJAAA,0CAA0C,OAAA;AAC1C,iJAAA,0CAA0C,OAAA;AAC1C,iJAAA,0CAA0C,OAAA;AAC1C,2IAAA,oCAAoC,OAAA;AACpC,iIAAA,0BAA0B,OAAA;AAC1B,gIAAA,yBAAyB,OAAA;AACzB,+HAAA,wBAAwB,OAAA;AACxB,gIAAA,yBAAyB,OAAA;AACzB,0IAAA,mCAAmC,OAAA;AACnC,kIAAA,2BAA2B,OAAA;AA4B5B,uEAKoC;AAJnC,0HAAA,cAAc,OAAA;AACd,8HAAA,kBAAkB,OAAA;AAClB,qIAAA,yBAAyB,OAAA;AACzB,gIAAA,oBAAoB,OAAA;AAGrB,uCAAwD;AAA/C,sHAAA,0BAA0B,OAAA;AACnC,iEAAkE;AAAzD,gIAAA,uBAAuB,OAAA;AAChC,qEAMmC;AALlC,+IAAA,oCAAoC,OAAA;AACpC,0JAAA,+CAA+C,OAAA;AAC/C,oJAAA,yCAAyC,OAAA;AAI1C,6CAMuB;AALtB,kIAAA,mCAAmC,OAAA;AACnC,2HAAA,4BAA4B,OAAA;AAC5B,gHAAA,iBAAiB,OAAA;AACjB,8HAAA,+BAA+B,OAAA;AAC/B,2HAAA,4BAA4B,OAAA;AAE7B,2EAGsC;AAFrC,4IAAA,8BAA8B,OAAA"}
|
|
@@ -11,6 +11,8 @@ function createInitialState(threadId, outcome) {
|
|
|
11
11
|
phase: 'building',
|
|
12
12
|
status: 'active',
|
|
13
13
|
source: outcome.workflowId ? 'modify' : 'create',
|
|
14
|
+
owner: outcome.owner,
|
|
15
|
+
plannedTaskId: outcome.plannedTaskId,
|
|
14
16
|
rebuildAttempts: 0,
|
|
15
17
|
preSaveSubmitFailures: 0,
|
|
16
18
|
postSubmitRemediationSubmitsUsed: 0,
|
|
@@ -39,7 +41,7 @@ class WorkflowLoopRuntime {
|
|
|
39
41
|
const { state: newState, action, attempt, } = (0, workflow_loop_controller_1.handleVerificationVerdict)(existing.state, existing.attempts, verdict);
|
|
40
42
|
if (action.type === 'ignored')
|
|
41
43
|
return action;
|
|
42
|
-
await this.storage.saveWorkItem(threadId, newState, [...existing.attempts, attempt]);
|
|
44
|
+
await this.storage.saveWorkItem(threadId, newState, [...existing.attempts, attempt], existing.lastBuildOutcome);
|
|
43
45
|
return action;
|
|
44
46
|
}
|
|
45
47
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/workflow-loop/runtime.ts"],"names":[],"mappings":";;;AAAA,yEAA2F;AAS3F,SAAS,kBAAkB,CAAC,QAAgB,EAAE,OAA6B;IAC1E,OAAO;QACN,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,QAAQ;QACR,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,KAAK,EAAE,UAAU;QACjB,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ;QAChD,eAAe,EAAE,CAAC;QAClB,qBAAqB,EAAE,CAAC;QACxB,gCAAgC,EAAE,CAAC;KACnC,CAAC;AACH,CAAC;AAED,MAAa,mBAAmB;IACF;IAA7B,YAA6B,OAA4B;QAA5B,YAAO,GAAP,OAAO,CAAqB;IAAG,CAAC;IAE7D,KAAK,CAAC,iBAAiB,CACtB,QAAgB,EAChB,OAA6B;QAE7B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;QAC9E,MAAM,KAAK,GAAG,QAAQ,EAAE,KAAK,IAAI,kBAAkB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACvE,MAAM,QAAQ,GAAG,QAAQ,EAAE,QAAQ,IAAI,EAAE,CAAC;QAE1C,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAA,6CAAkB,EAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC1F,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;YAAE,OAAO,MAAM,CAAC;QAE7C,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,GAAG,QAAQ,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;QACrF,OAAO,MAAM,CAAC;IACf,CAAC;IAED,KAAK,CAAC,wBAAwB,CAC7B,QAAgB,EAChB,OAA2B;QAE3B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;QAC9E,IAAI,CAAC,QAAQ,EAAE,CAAC;YACf,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,sBAAsB,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;QAChF,CAAC;QAED,MAAM,EACL,KAAK,EAAE,QAAQ,EACf,MAAM,EACN,OAAO,GACP,GAAG,IAAA,oDAAyB,EAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC1E,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;YAAE,OAAO,MAAM,CAAC;QAE7C,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/workflow-loop/runtime.ts"],"names":[],"mappings":";;;AAAA,yEAA2F;AAS3F,SAAS,kBAAkB,CAAC,QAAgB,EAAE,OAA6B;IAC1E,OAAO;QACN,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,QAAQ;QACR,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,KAAK,EAAE,UAAU;QACjB,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ;QAChD,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,eAAe,EAAE,CAAC;QAClB,qBAAqB,EAAE,CAAC;QACxB,gCAAgC,EAAE,CAAC;KACnC,CAAC;AACH,CAAC;AAED,MAAa,mBAAmB;IACF;IAA7B,YAA6B,OAA4B;QAA5B,YAAO,GAAP,OAAO,CAAqB;IAAG,CAAC;IAE7D,KAAK,CAAC,iBAAiB,CACtB,QAAgB,EAChB,OAA6B;QAE7B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;QAC9E,MAAM,KAAK,GAAG,QAAQ,EAAE,KAAK,IAAI,kBAAkB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACvE,MAAM,QAAQ,GAAG,QAAQ,EAAE,QAAQ,IAAI,EAAE,CAAC;QAE1C,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAA,6CAAkB,EAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC1F,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;YAAE,OAAO,MAAM,CAAC;QAE7C,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,GAAG,QAAQ,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;QACrF,OAAO,MAAM,CAAC;IACf,CAAC;IAED,KAAK,CAAC,wBAAwB,CAC7B,QAAgB,EAChB,OAA2B;QAE3B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;QAC9E,IAAI,CAAC,QAAQ,EAAE,CAAC;YACf,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,sBAAsB,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;QAChF,CAAC;QAED,MAAM,EACL,KAAK,EAAE,QAAQ,EACf,MAAM,EACN,OAAO,GACP,GAAG,IAAA,oDAAyB,EAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC1E,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;YAAE,OAAO,MAAM,CAAC;QAE7C,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAC9B,QAAQ,EACR,QAAQ,EACR,CAAC,GAAG,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,EAC/B,QAAQ,CAAC,gBAAgB,CACzB,CAAC;QACF,OAAO,MAAM,CAAC;IACf,CAAC;CACD;AA1CD,kDA0CC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { AttemptRecord, WorkflowBuildOwner, WorkflowBuildOutcome, WorkflowLoopState, WorkflowVerificationObligation, WorkflowVerificationObligationSource } from './workflow-loop-state';
|
|
2
|
+
export interface WorkflowVerificationObligationRecord {
|
|
3
|
+
state: WorkflowLoopState;
|
|
4
|
+
attempts: AttemptRecord[];
|
|
5
|
+
lastBuildOutcome?: WorkflowBuildOutcome;
|
|
6
|
+
}
|
|
7
|
+
export interface DeriveWorkflowVerificationObligationOptions {
|
|
8
|
+
source?: WorkflowVerificationObligationSource;
|
|
9
|
+
owner?: WorkflowBuildOwner;
|
|
10
|
+
plannedTaskId?: string;
|
|
11
|
+
updatedAt?: string;
|
|
12
|
+
}
|
|
13
|
+
export declare function deriveWorkflowVerificationObligation(threadId: string, record: WorkflowVerificationObligationRecord, options?: DeriveWorkflowVerificationObligationOptions): WorkflowVerificationObligation;
|
|
14
|
+
export declare function isWorkflowVerificationObligationUnsettled(obligation: WorkflowVerificationObligation): boolean;
|
|
15
|
+
export declare function deriveWorkflowVerificationObligationFromOutcome(threadId: string, outcome: WorkflowBuildOutcome, options?: DeriveWorkflowVerificationObligationOptions): WorkflowVerificationObligation;
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.deriveWorkflowVerificationObligation = deriveWorkflowVerificationObligation;
|
|
4
|
+
exports.isWorkflowVerificationObligationUnsettled = isWorkflowVerificationObligationUnsettled;
|
|
5
|
+
exports.deriveWorkflowVerificationObligationFromOutcome = deriveWorkflowVerificationObligationFromOutcome;
|
|
6
|
+
const workflow_loop_state_1 = require("./workflow-loop-state");
|
|
7
|
+
const UNSETTLED_OBLIGATION_STATUSES = new Set([
|
|
8
|
+
'pending_build',
|
|
9
|
+
'ready_to_verify',
|
|
10
|
+
'verifying',
|
|
11
|
+
]);
|
|
12
|
+
function hasSuccessfulEvidence(outcome) {
|
|
13
|
+
return (outcome.verification?.attempted === true &&
|
|
14
|
+
outcome.verification.success &&
|
|
15
|
+
!!outcome.verification.executionId);
|
|
16
|
+
}
|
|
17
|
+
function hasFailedEvidence(outcome) {
|
|
18
|
+
return outcome.verification?.attempted === true && !outcome.verification.success;
|
|
19
|
+
}
|
|
20
|
+
function isNeedsSetupRemediation(remediation) {
|
|
21
|
+
return remediation?.category === 'needs_setup' && !remediation.shouldEdit;
|
|
22
|
+
}
|
|
23
|
+
function hasSetupBlockingEvidence(state, outcome) {
|
|
24
|
+
if (outcome.verificationReadiness?.status === 'needs_setup')
|
|
25
|
+
return true;
|
|
26
|
+
if (isNeedsSetupRemediation(outcome.remediation))
|
|
27
|
+
return true;
|
|
28
|
+
if (isNeedsSetupRemediation(state.lastRemediation))
|
|
29
|
+
return true;
|
|
30
|
+
return outcome.setupRequirement?.status === 'required' && hasFailedEvidence(outcome);
|
|
31
|
+
}
|
|
32
|
+
function deriveStatus(state, outcome) {
|
|
33
|
+
if (!outcome)
|
|
34
|
+
return 'pending_build';
|
|
35
|
+
if (!outcome.submitted)
|
|
36
|
+
return 'blocked';
|
|
37
|
+
if (hasSuccessfulEvidence(outcome))
|
|
38
|
+
return 'verified';
|
|
39
|
+
if (hasSetupBlockingEvidence(state, outcome))
|
|
40
|
+
return 'needs_setup';
|
|
41
|
+
switch (outcome.verificationReadiness?.status) {
|
|
42
|
+
case 'already_verified':
|
|
43
|
+
return 'verified';
|
|
44
|
+
case 'needs_setup':
|
|
45
|
+
return 'needs_setup';
|
|
46
|
+
case 'not_verifiable':
|
|
47
|
+
return 'not_verifiable';
|
|
48
|
+
case 'ready':
|
|
49
|
+
if (state.status === 'blocked')
|
|
50
|
+
return 'blocked';
|
|
51
|
+
return 'ready_to_verify';
|
|
52
|
+
default:
|
|
53
|
+
if (state.status === 'blocked')
|
|
54
|
+
return 'blocked';
|
|
55
|
+
return outcome.workflowId ? 'ready_to_verify' : 'blocked';
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
function derivePolicy(status, outcome) {
|
|
59
|
+
if (status === 'not_verifiable')
|
|
60
|
+
return 'manual';
|
|
61
|
+
if (outcome?.verificationReadiness?.status === 'not_verifiable')
|
|
62
|
+
return 'manual';
|
|
63
|
+
return 'required';
|
|
64
|
+
}
|
|
65
|
+
function deriveBlockingReason(state, outcome) {
|
|
66
|
+
if (!outcome)
|
|
67
|
+
return undefined;
|
|
68
|
+
if (!outcome.submitted) {
|
|
69
|
+
return (outcome.blockingReason ?? outcome.failureSignature ?? 'Builder did not submit a workflow.');
|
|
70
|
+
}
|
|
71
|
+
if (outcome.verificationReadiness?.status === 'not_verifiable') {
|
|
72
|
+
return outcome.verificationReadiness.guidance;
|
|
73
|
+
}
|
|
74
|
+
if (outcome.verificationReadiness?.status === 'needs_setup') {
|
|
75
|
+
return outcome.verificationReadiness.guidance;
|
|
76
|
+
}
|
|
77
|
+
const outcomeRemediation = outcome.remediation;
|
|
78
|
+
if (outcomeRemediation?.category === 'needs_setup' && !outcomeRemediation.shouldEdit) {
|
|
79
|
+
return outcomeRemediation.guidance;
|
|
80
|
+
}
|
|
81
|
+
const lastRemediation = state.lastRemediation;
|
|
82
|
+
if (lastRemediation?.category === 'needs_setup' && !lastRemediation.shouldEdit) {
|
|
83
|
+
return lastRemediation.guidance;
|
|
84
|
+
}
|
|
85
|
+
if (outcome.setupRequirement?.status === 'required' && hasFailedEvidence(outcome)) {
|
|
86
|
+
return outcome.setupRequirement.guidance;
|
|
87
|
+
}
|
|
88
|
+
if (state.status === 'blocked') {
|
|
89
|
+
return state.lastRemediation?.guidance ?? outcome.blockingReason ?? outcome.failureSignature;
|
|
90
|
+
}
|
|
91
|
+
return undefined;
|
|
92
|
+
}
|
|
93
|
+
function lastAttemptTimestamp(attempts) {
|
|
94
|
+
return attempts.at(-1)?.createdAt;
|
|
95
|
+
}
|
|
96
|
+
function deriveWorkflowVerificationObligation(threadId, record, options = {}) {
|
|
97
|
+
const outcome = record.lastBuildOutcome;
|
|
98
|
+
const status = deriveStatus(record.state, outcome);
|
|
99
|
+
const updatedAt = options.updatedAt ?? lastAttemptTimestamp(record.attempts) ?? new Date().toISOString();
|
|
100
|
+
const owner = (0, workflow_loop_state_1.resolveWorkflowBuildOwner)(options, record.state, outcome);
|
|
101
|
+
const plannedTaskId = (0, workflow_loop_state_1.plannedTaskIdFromWorkflowBuildOwner)(owner);
|
|
102
|
+
const source = options.source ?? owner.type;
|
|
103
|
+
return {
|
|
104
|
+
workItemId: record.state.workItemId,
|
|
105
|
+
threadId,
|
|
106
|
+
runId: outcome?.runId ?? record.state.runId,
|
|
107
|
+
taskId: outcome?.taskId ?? record.state.lastTaskId,
|
|
108
|
+
owner,
|
|
109
|
+
plannedTaskId,
|
|
110
|
+
workflowId: outcome?.workflowId ?? record.state.workflowId,
|
|
111
|
+
source,
|
|
112
|
+
policy: derivePolicy(status, outcome),
|
|
113
|
+
status,
|
|
114
|
+
readiness: outcome?.verificationReadiness,
|
|
115
|
+
setupRequirement: outcome?.setupRequirement,
|
|
116
|
+
evidence: outcome?.verification,
|
|
117
|
+
blockingReason: deriveBlockingReason(record.state, outcome),
|
|
118
|
+
updatedAt,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
function isWorkflowVerificationObligationUnsettled(obligation) {
|
|
122
|
+
return UNSETTLED_OBLIGATION_STATUSES.has(obligation.status);
|
|
123
|
+
}
|
|
124
|
+
function deriveWorkflowVerificationObligationFromOutcome(threadId, outcome, options = {}) {
|
|
125
|
+
const state = {
|
|
126
|
+
workItemId: outcome.workItemId,
|
|
127
|
+
threadId,
|
|
128
|
+
runId: outcome.runId,
|
|
129
|
+
workflowId: outcome.workflowId,
|
|
130
|
+
lastTaskId: outcome.taskId,
|
|
131
|
+
owner: outcome.owner,
|
|
132
|
+
plannedTaskId: outcome.plannedTaskId,
|
|
133
|
+
phase: 'verifying',
|
|
134
|
+
status: 'active',
|
|
135
|
+
source: 'create',
|
|
136
|
+
rebuildAttempts: 0,
|
|
137
|
+
};
|
|
138
|
+
return deriveWorkflowVerificationObligation(threadId, { state, attempts: [], lastBuildOutcome: outcome }, options);
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=verification-obligation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verification-obligation.js","sourceRoot":"","sources":["../../src/workflow-loop/verification-obligation.ts"],"names":[],"mappings":"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"}
|