@n8n/instance-ai 1.4.1 → 1.5.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/dist/agent/instance-agent.js +0 -1
- package/dist/agent/instance-agent.js.map +1 -1
- package/dist/agent/sub-agent-debriefing.d.ts +2 -2
- package/dist/agent/system-prompt.js +36 -14
- package/dist/agent/system-prompt.js.map +1 -1
- package/dist/build.tsbuildinfo +1 -1
- package/dist/constants/model-settings.d.ts +3 -0
- package/dist/constants/model-settings.js +7 -0
- package/dist/constants/model-settings.js.map +1 -0
- package/dist/index.d.ts +4 -2
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/logger.d.ts +6 -0
- package/dist/planned-tasks/planned-task-permissions.d.ts +2 -0
- package/dist/planned-tasks/planned-task-permissions.js +8 -2
- package/dist/planned-tasks/planned-task-permissions.js.map +1 -1
- package/dist/planned-tasks/planned-task-service.d.ts +14 -1
- package/dist/planned-tasks/planned-task-service.js +138 -2
- package/dist/planned-tasks/planned-task-service.js.map +1 -1
- package/dist/runtime/background-task-manager.d.ts +25 -1
- package/dist/runtime/background-task-manager.js +66 -2
- package/dist/runtime/background-task-manager.js.map +1 -1
- package/dist/runtime/builder-sandbox-session-registry.d.ts +45 -0
- package/dist/runtime/builder-sandbox-session-registry.js +159 -0
- package/dist/runtime/builder-sandbox-session-registry.js.map +1 -0
- package/dist/runtime/run-state-registry.d.ts +7 -4
- package/dist/runtime/run-state-registry.js +9 -0
- package/dist/runtime/run-state-registry.js.map +1 -1
- package/dist/storage/planned-task-storage.js +2 -1
- package/dist/storage/planned-task-storage.js.map +1 -1
- package/dist/storage/workflow-loop-storage.d.ts +292 -12
- package/dist/stream/consume-with-hitl.d.ts +1 -0
- package/dist/stream/consume-with-hitl.js +1 -0
- package/dist/stream/consume-with-hitl.js.map +1 -1
- package/dist/tools/data-tables.tool.js +60 -22
- package/dist/tools/data-tables.tool.js.map +1 -1
- package/dist/tools/executions.tool.js +4 -1
- package/dist/tools/executions.tool.js.map +1 -1
- package/dist/tools/index.d.ts +1 -2
- package/dist/tools/index.js +2 -3
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/orchestration/add-plan-item.tool.js +3 -1
- package/dist/tools/orchestration/add-plan-item.tool.js.map +1 -1
- package/dist/tools/orchestration/blueprint-accumulator.d.ts +4 -1
- package/dist/tools/orchestration/blueprint-accumulator.js +28 -0
- package/dist/tools/orchestration/blueprint-accumulator.js.map +1 -1
- package/dist/tools/orchestration/blueprint.schema.d.ts +60 -15
- package/dist/tools/orchestration/blueprint.schema.js +15 -1
- package/dist/tools/orchestration/blueprint.schema.js.map +1 -1
- package/dist/tools/orchestration/build-workflow-agent.prompt.js +41 -12
- package/dist/tools/orchestration/build-workflow-agent.prompt.js.map +1 -1
- package/dist/tools/orchestration/build-workflow-agent.tool.d.ts +51 -3
- package/dist/tools/orchestration/build-workflow-agent.tool.js +837 -272
- package/dist/tools/orchestration/build-workflow-agent.tool.js.map +1 -1
- package/dist/tools/orchestration/builder-memory-compaction.d.ts +38 -0
- package/dist/tools/orchestration/builder-memory-compaction.js +146 -0
- package/dist/tools/orchestration/builder-memory-compaction.js.map +1 -0
- package/dist/tools/orchestration/complete-checkpoint.tool.d.ts +2 -0
- package/dist/tools/orchestration/complete-checkpoint.tool.js +76 -0
- package/dist/tools/orchestration/complete-checkpoint.tool.js.map +1 -0
- package/dist/tools/orchestration/data-table-agent.tool.js +33 -17
- package/dist/tools/orchestration/data-table-agent.tool.js.map +1 -1
- package/dist/tools/orchestration/delegate.tool.js +32 -16
- package/dist/tools/orchestration/delegate.tool.js.map +1 -1
- package/dist/tools/orchestration/plan-agent-prompt.d.ts +1 -1
- package/dist/tools/orchestration/plan-agent-prompt.js +6 -0
- package/dist/tools/orchestration/plan-agent-prompt.js.map +1 -1
- package/dist/tools/orchestration/plan-with-agent.tool.d.ts +8 -0
- package/dist/tools/orchestration/plan-with-agent.tool.js +43 -12
- package/dist/tools/orchestration/plan-with-agent.tool.js.map +1 -1
- package/dist/tools/orchestration/plan.tool.js +17 -1
- package/dist/tools/orchestration/plan.tool.js.map +1 -1
- package/dist/tools/orchestration/report-verification-verdict.tool.d.ts +40 -2
- package/dist/tools/orchestration/report-verification-verdict.tool.js +85 -6
- package/dist/tools/orchestration/report-verification-verdict.tool.js.map +1 -1
- package/dist/tools/orchestration/research-with-agent.tool.js +32 -16
- package/dist/tools/orchestration/research-with-agent.tool.js.map +1 -1
- package/dist/tools/orchestration/verify-built-workflow.tool.d.ts +8 -2
- package/dist/tools/orchestration/verify-built-workflow.tool.js +476 -6
- package/dist/tools/orchestration/verify-built-workflow.tool.js.map +1 -1
- package/dist/tools/research.tool.js +2 -2
- package/dist/tools/research.tool.js.map +1 -1
- package/dist/tools/templates.tool.js +5 -90
- package/dist/tools/templates.tool.js.map +1 -1
- package/dist/tools/web-research/sanitize-web-content.d.ts +0 -1
- package/dist/tools/web-research/sanitize-web-content.js +0 -9
- package/dist/tools/web-research/sanitize-web-content.js.map +1 -1
- package/dist/tools/workflows/apply-workflow-credentials.tool.d.ts +2 -2
- package/dist/tools/workflows/build-workflow.tool.d.ts +2 -2
- package/dist/tools/workflows/build-workflow.tool.js +3 -1
- package/dist/tools/workflows/build-workflow.tool.js.map +1 -1
- package/dist/tools/workflows/materialize-node-type.tool.d.ts +8 -8
- package/dist/tools/workflows/submit-workflow-identity.d.ts +23 -1
- package/dist/tools/workflows/submit-workflow-identity.js +92 -5
- package/dist/tools/workflows/submit-workflow-identity.js.map +1 -1
- package/dist/tools/workflows/submit-workflow.tool.d.ts +48 -3
- package/dist/tools/workflows/submit-workflow.tool.js +81 -11
- package/dist/tools/workflows/submit-workflow.tool.js.map +1 -1
- package/dist/tracing/langsmith-tracing.js +8 -3
- package/dist/tracing/langsmith-tracing.js.map +1 -1
- package/dist/tracing/trace-replay.d.ts +3 -0
- package/dist/tracing/trace-replay.js +65 -0
- package/dist/tracing/trace-replay.js.map +1 -1
- package/dist/types.d.ts +79 -12
- package/dist/workflow-builder/parse-validate.d.ts +5 -1
- package/dist/workflow-builder/parse-validate.js +4 -3
- package/dist/workflow-builder/parse-validate.js.map +1 -1
- package/dist/workflow-loop/guidance.js +8 -2
- package/dist/workflow-loop/guidance.js.map +1 -1
- package/dist/workflow-loop/index.d.ts +3 -2
- package/dist/workflow-loop/index.js +9 -1
- package/dist/workflow-loop/index.js.map +1 -1
- package/dist/workflow-loop/remediation.d.ts +13 -0
- package/dist/workflow-loop/remediation.js +36 -0
- package/dist/workflow-loop/remediation.js.map +1 -0
- package/dist/workflow-loop/runtime.js +7 -0
- package/dist/workflow-loop/runtime.js.map +1 -1
- package/dist/workflow-loop/workflow-loop-controller.d.ts +1 -1
- package/dist/workflow-loop/workflow-loop-controller.js +196 -29
- package/dist/workflow-loop/workflow-loop-controller.js.map +1 -1
- package/dist/workflow-loop/workflow-loop-state.d.ts +338 -8
- package/dist/workflow-loop/workflow-loop-state.js +44 -1
- package/dist/workflow-loop/workflow-loop-state.js.map +1 -1
- package/dist/workflow-loop/workflow-task-service.d.ts +2 -1
- package/dist/workflow-loop/workflow-task-service.js +4 -0
- package/dist/workflow-loop/workflow-task-service.js.map +1 -1
- package/dist/workspace/builder-sandbox-factory.d.ts +3 -2
- package/dist/workspace/builder-sandbox-factory.js +74 -27
- package/dist/workspace/builder-sandbox-factory.js.map +1 -1
- package/dist/workspace/create-workspace.d.ts +2 -0
- package/dist/workspace/create-workspace.js.map +1 -1
- package/dist/workspace/sandbox-setup.js +36 -8
- package/dist/workspace/sandbox-setup.js.map +1 -1
- package/dist/workspace/snapshot-manager.d.ts +14 -2
- package/dist/workspace/snapshot-manager.js +57 -1
- package/dist/workspace/snapshot-manager.js.map +1 -1
- package/package.json +13 -7
- package/dist/tools/templates/template-api.d.ts +0 -21
- package/dist/tools/templates/template-api.js +0 -104
- package/dist/tools/templates/template-api.js.map +0 -1
- package/dist/tools/templates/types.d.ts +0 -52
- package/dist/tools/templates/types.js +0 -37
- package/dist/tools/templates/types.js.map +0 -1
- package/dist/tools/utils/mermaid.utils.d.ts +0 -15
- package/dist/tools/utils/mermaid.utils.js +0 -622
- package/dist/tools/utils/mermaid.utils.js.map +0 -1
- package/dist/tools/utils/node-configuration.utils.d.ts +0 -6
- package/dist/tools/utils/node-configuration.utils.js +0 -77
- package/dist/tools/utils/node-configuration.utils.js.map +0 -1
package/dist/types.d.ts
CHANGED
|
@@ -5,12 +5,14 @@ import type { Workspace } from '@mastra/core/workspace';
|
|
|
5
5
|
import type { Memory } from '@mastra/memory';
|
|
6
6
|
import type { TaskList, InstanceAiAttachment, InstanceAiPermissions, McpTool, McpToolCallRequest, McpToolCallResult } from '@n8n/api-types';
|
|
7
7
|
import type { WorkflowJSON } from '@n8n/workflow-sdk';
|
|
8
|
+
import type { GenericValue, INodeTypes } from 'n8n-workflow';
|
|
8
9
|
import type { DomainAccessTracker } from './domain-access/domain-access-tracker';
|
|
9
10
|
import type { InstanceAiEventBus } from './event-bus/event-bus.interface';
|
|
10
11
|
import type { Logger } from './logger';
|
|
12
|
+
import type { BuilderSandboxSessionRegistry } from './runtime/builder-sandbox-session-registry';
|
|
11
13
|
import type { IterationLog } from './storage/iteration-log';
|
|
12
14
|
import type { IdRemapper, TraceIndex, TraceWriter } from './tracing/trace-replay';
|
|
13
|
-
import type { VerificationResult, WorkflowBuildOutcome, WorkflowLoopAction } from './workflow-loop/workflow-loop-state';
|
|
15
|
+
import type { VerificationResult, WorkflowBuildOutcome, WorkflowLoopAction, WorkflowLoopState } from './workflow-loop/workflow-loop-state';
|
|
14
16
|
import type { BuilderSandboxFactory } from './workspace/builder-sandbox-factory';
|
|
15
17
|
export interface WorkflowSummary {
|
|
16
18
|
id: string;
|
|
@@ -281,6 +283,10 @@ export interface SearchableNodeDescription {
|
|
|
281
283
|
required: boolean;
|
|
282
284
|
displayOptions?: Record<string, unknown>;
|
|
283
285
|
}>;
|
|
286
|
+
outputs?: Record<string, {
|
|
287
|
+
required?: boolean;
|
|
288
|
+
displayOptions?: Record<string, unknown>;
|
|
289
|
+
}>;
|
|
284
290
|
};
|
|
285
291
|
}
|
|
286
292
|
export interface DataTableSummary {
|
|
@@ -309,6 +315,9 @@ export interface DataTableFilterInput {
|
|
|
309
315
|
value: string | number | boolean | null;
|
|
310
316
|
}>;
|
|
311
317
|
}
|
|
318
|
+
export interface DataTableIdOptions {
|
|
319
|
+
projectId?: string;
|
|
320
|
+
}
|
|
312
321
|
export interface InstanceAiDataTableService {
|
|
313
322
|
list(options?: {
|
|
314
323
|
projectId?: string;
|
|
@@ -319,35 +328,36 @@ export interface InstanceAiDataTableService {
|
|
|
319
328
|
}>, options?: {
|
|
320
329
|
projectId?: string;
|
|
321
330
|
}): Promise<DataTableSummary>;
|
|
322
|
-
delete(dataTableId: string): Promise<void>;
|
|
323
|
-
getSchema(dataTableId: string): Promise<DataTableColumnInfo[]>;
|
|
331
|
+
delete(dataTableId: string, options?: DataTableIdOptions): Promise<void>;
|
|
332
|
+
getSchema(dataTableId: string, options?: DataTableIdOptions): Promise<DataTableColumnInfo[]>;
|
|
324
333
|
addColumn(dataTableId: string, column: {
|
|
325
334
|
name: string;
|
|
326
335
|
type: 'string' | 'number' | 'boolean' | 'date';
|
|
327
|
-
}): Promise<DataTableColumnInfo>;
|
|
328
|
-
deleteColumn(dataTableId: string, columnId: string): Promise<void>;
|
|
329
|
-
renameColumn(dataTableId: string, columnId: string, newName: string): Promise<void>;
|
|
336
|
+
}, options?: DataTableIdOptions): Promise<DataTableColumnInfo>;
|
|
337
|
+
deleteColumn(dataTableId: string, columnId: string, options?: DataTableIdOptions): Promise<void>;
|
|
338
|
+
renameColumn(dataTableId: string, columnId: string, newName: string, options?: DataTableIdOptions): Promise<void>;
|
|
330
339
|
queryRows(dataTableId: string, options?: {
|
|
331
340
|
filter?: DataTableFilterInput;
|
|
332
341
|
limit?: number;
|
|
333
342
|
offset?: number;
|
|
343
|
+
projectId?: string;
|
|
334
344
|
}): Promise<{
|
|
335
345
|
count: number;
|
|
336
346
|
data: Array<Record<string, unknown>>;
|
|
337
347
|
}>;
|
|
338
|
-
insertRows(dataTableId: string, rows: Array<Record<string, unknown
|
|
348
|
+
insertRows(dataTableId: string, rows: Array<Record<string, unknown>>, options?: DataTableIdOptions): Promise<{
|
|
339
349
|
insertedCount: number;
|
|
340
350
|
dataTableId: string;
|
|
341
351
|
tableName: string;
|
|
342
352
|
projectId: string;
|
|
343
353
|
}>;
|
|
344
|
-
updateRows(dataTableId: string, filter: DataTableFilterInput, data: Record<string, unknown
|
|
354
|
+
updateRows(dataTableId: string, filter: DataTableFilterInput, data: Record<string, unknown>, options?: DataTableIdOptions): Promise<{
|
|
345
355
|
updatedCount: number;
|
|
346
356
|
dataTableId: string;
|
|
347
357
|
tableName: string;
|
|
348
358
|
projectId: string;
|
|
349
359
|
}>;
|
|
350
|
-
deleteRows(dataTableId: string, filter: DataTableFilterInput): Promise<{
|
|
360
|
+
deleteRows(dataTableId: string, filter: DataTableFilterInput, options?: DataTableIdOptions): Promise<{
|
|
351
361
|
deletedCount: number;
|
|
352
362
|
dataTableId: string;
|
|
353
363
|
tableName: string;
|
|
@@ -446,6 +456,7 @@ export interface InstanceAiContext {
|
|
|
446
456
|
localMcpServer?: LocalMcpServer;
|
|
447
457
|
localGatewayStatus?: LocalGatewayStatus;
|
|
448
458
|
permissions?: InstanceAiPermissions;
|
|
459
|
+
allowedRunWorkflowIds?: ReadonlySet<string>;
|
|
449
460
|
branchReadOnly?: boolean;
|
|
450
461
|
licenseHints?: string[];
|
|
451
462
|
domainAccessTracker?: DomainAccessTracker;
|
|
@@ -453,12 +464,13 @@ export interface InstanceAiContext {
|
|
|
453
464
|
aiCreatedWorkflowIds?: Set<string>;
|
|
454
465
|
currentUserAttachments?: InstanceAiAttachment[];
|
|
455
466
|
logger?: Logger;
|
|
467
|
+
nodeTypesProvider?: INodeTypes;
|
|
456
468
|
}
|
|
457
469
|
export interface TaskStorage {
|
|
458
470
|
get(threadId: string): Promise<TaskList | null>;
|
|
459
471
|
save(threadId: string, tasks: TaskList): Promise<void>;
|
|
460
472
|
}
|
|
461
|
-
export type PlannedTaskKind = 'delegate' | 'build-workflow' | 'manage-data-tables' | 'research';
|
|
473
|
+
export type PlannedTaskKind = 'delegate' | 'build-workflow' | 'manage-data-tables' | 'research' | 'checkpoint';
|
|
462
474
|
export interface PlannedTask {
|
|
463
475
|
id: string;
|
|
464
476
|
title: string;
|
|
@@ -479,7 +491,7 @@ export interface PlannedTaskRecord extends PlannedTask {
|
|
|
479
491
|
startedAt?: number;
|
|
480
492
|
finishedAt?: number;
|
|
481
493
|
}
|
|
482
|
-
export type PlannedTaskGraphStatus = 'active' | 'awaiting_replan' | 'completed' | 'cancelled';
|
|
494
|
+
export type PlannedTaskGraphStatus = 'awaiting_approval' | 'active' | 'awaiting_replan' | 'completed' | 'cancelled';
|
|
483
495
|
export interface PlannedTaskGraph {
|
|
484
496
|
planRunId: string;
|
|
485
497
|
messageGroupId?: string;
|
|
@@ -493,6 +505,10 @@ export type PlannedTaskSchedulerAction = {
|
|
|
493
505
|
type: 'dispatch';
|
|
494
506
|
graph: PlannedTaskGraph;
|
|
495
507
|
tasks: PlannedTaskRecord[];
|
|
508
|
+
} | {
|
|
509
|
+
type: 'orchestrate-checkpoint';
|
|
510
|
+
graph: PlannedTaskGraph;
|
|
511
|
+
tasks: PlannedTaskRecord[];
|
|
496
512
|
} | {
|
|
497
513
|
type: 'replan';
|
|
498
514
|
graph: PlannedTaskGraph;
|
|
@@ -525,11 +541,35 @@ export interface PlannedTaskService {
|
|
|
525
541
|
error?: string;
|
|
526
542
|
finishedAt?: number;
|
|
527
543
|
}): Promise<PlannedTaskGraph | null>;
|
|
544
|
+
markCheckpointSucceeded(threadId: string, taskId: string, update: {
|
|
545
|
+
result?: string;
|
|
546
|
+
outcome?: Record<string, unknown>;
|
|
547
|
+
finishedAt?: number;
|
|
548
|
+
}): Promise<CheckpointSettleResult>;
|
|
549
|
+
markCheckpointFailed(threadId: string, taskId: string, update: {
|
|
550
|
+
error?: string;
|
|
551
|
+
outcome?: Record<string, unknown>;
|
|
552
|
+
finishedAt?: number;
|
|
553
|
+
}): Promise<CheckpointSettleResult>;
|
|
554
|
+
revertCheckpointToPlanned(threadId: string, taskId: string): Promise<CheckpointSettleResult>;
|
|
528
555
|
tick(threadId: string, options?: {
|
|
529
556
|
availableSlots?: number;
|
|
530
557
|
}): Promise<PlannedTaskSchedulerAction>;
|
|
531
558
|
clear(threadId: string): Promise<void>;
|
|
559
|
+
approvePlan(threadId: string): Promise<PlannedTaskGraph | null>;
|
|
560
|
+
revertToActive(threadId: string): Promise<PlannedTaskGraph | null>;
|
|
532
561
|
}
|
|
562
|
+
export type CheckpointSettleResult = {
|
|
563
|
+
ok: true;
|
|
564
|
+
graph: PlannedTaskGraph;
|
|
565
|
+
} | {
|
|
566
|
+
ok: false;
|
|
567
|
+
reason: 'not-found' | 'wrong-kind' | 'wrong-status';
|
|
568
|
+
actual?: {
|
|
569
|
+
kind?: PlannedTaskKind;
|
|
570
|
+
status?: PlannedTaskStatus;
|
|
571
|
+
};
|
|
572
|
+
};
|
|
533
573
|
export interface McpServerConfig {
|
|
534
574
|
name: string;
|
|
535
575
|
url?: string;
|
|
@@ -620,12 +660,35 @@ export interface SpawnBackgroundTaskOptions {
|
|
|
620
660
|
traceContext?: InstanceAiTraceContext;
|
|
621
661
|
plannedTaskId?: string;
|
|
622
662
|
workItemId?: string;
|
|
663
|
+
dedupeKey?: {
|
|
664
|
+
plannedTaskId?: string;
|
|
665
|
+
workflowId?: string;
|
|
666
|
+
role: string;
|
|
667
|
+
};
|
|
668
|
+
parentCheckpointId?: string;
|
|
623
669
|
run: (signal: AbortSignal, drainCorrections: () => string[], waitForCorrection: () => Promise<void>) => Promise<string | BackgroundTaskResult>;
|
|
624
670
|
}
|
|
671
|
+
export type SpawnBackgroundTaskResult = {
|
|
672
|
+
status: 'started';
|
|
673
|
+
taskId: string;
|
|
674
|
+
agentId: string;
|
|
675
|
+
} | {
|
|
676
|
+
status: 'limit-reached';
|
|
677
|
+
} | {
|
|
678
|
+
status: 'duplicate';
|
|
679
|
+
existing: {
|
|
680
|
+
taskId: string;
|
|
681
|
+
agentId: string;
|
|
682
|
+
role: string;
|
|
683
|
+
plannedTaskId?: string;
|
|
684
|
+
workItemId?: string;
|
|
685
|
+
};
|
|
686
|
+
};
|
|
625
687
|
export interface WorkflowTaskService {
|
|
626
688
|
reportBuildOutcome(outcome: WorkflowBuildOutcome): Promise<WorkflowLoopAction>;
|
|
627
689
|
reportVerificationVerdict(verdict: VerificationResult): Promise<WorkflowLoopAction>;
|
|
628
690
|
getBuildOutcome(workItemId: string): Promise<WorkflowBuildOutcome | undefined>;
|
|
691
|
+
getWorkflowLoopState(workItemId: string): Promise<WorkflowLoopState | undefined>;
|
|
629
692
|
updateBuildOutcome(workItemId: string, update: Partial<WorkflowBuildOutcome>): Promise<void>;
|
|
630
693
|
}
|
|
631
694
|
export interface OrchestrationContext {
|
|
@@ -639,6 +702,7 @@ export interface OrchestrationContext {
|
|
|
639
702
|
subAgentMaxSteps: number;
|
|
640
703
|
eventBus: InstanceAiEventBus;
|
|
641
704
|
logger: Logger;
|
|
705
|
+
trackTelemetry?: (eventName: string, properties: Record<string, GenericValue>) => void;
|
|
642
706
|
domainTools: ToolsInput;
|
|
643
707
|
abortSignal: AbortSignal;
|
|
644
708
|
taskStorage: TaskStorage;
|
|
@@ -665,16 +729,19 @@ export interface OrchestrationContext {
|
|
|
665
729
|
mcpTools?: ToolsInput;
|
|
666
730
|
oauth2CallbackUrl?: string;
|
|
667
731
|
webhookBaseUrl?: string;
|
|
668
|
-
spawnBackgroundTask?: (opts: SpawnBackgroundTaskOptions) =>
|
|
732
|
+
spawnBackgroundTask?: (opts: SpawnBackgroundTaskOptions) => SpawnBackgroundTaskResult;
|
|
669
733
|
cancelBackgroundTask?: (taskId: string) => Promise<void>;
|
|
670
734
|
plannedTaskService?: PlannedTaskService;
|
|
671
735
|
schedulePlannedTasks?: () => Promise<void>;
|
|
672
736
|
workspace?: Workspace;
|
|
673
737
|
builderSandboxFactory?: BuilderSandboxFactory;
|
|
738
|
+
builderSandboxSessionRegistry?: BuilderSandboxSessionRegistry;
|
|
674
739
|
nodeDefinitionDirs?: string[];
|
|
675
740
|
memory?: Memory;
|
|
676
741
|
currentUserMessage?: string;
|
|
677
742
|
isReplanFollowUp?: boolean;
|
|
743
|
+
isCheckpointFollowUp?: boolean;
|
|
744
|
+
checkpointTaskId?: string;
|
|
678
745
|
domainContext?: InstanceAiContext;
|
|
679
746
|
researchMode?: boolean;
|
|
680
747
|
iterationLog?: IterationLog;
|
|
@@ -1,5 +1,9 @@
|
|
|
1
|
+
import type { INodeTypes } from 'n8n-workflow';
|
|
1
2
|
import type { ParseAndValidateResult, ValidationWarning } from './types';
|
|
2
|
-
export
|
|
3
|
+
export interface ParseAndValidateOptions {
|
|
4
|
+
nodeTypesProvider?: INodeTypes;
|
|
5
|
+
}
|
|
6
|
+
export declare function parseAndValidate(code: string, options?: ParseAndValidateOptions): ParseAndValidateResult;
|
|
3
7
|
export declare function partitionWarnings(warnings: ValidationWarning[]): {
|
|
4
8
|
errors: ValidationWarning[];
|
|
5
9
|
informational: ValidationWarning[];
|
|
@@ -13,17 +13,18 @@ function collectValidationIssues(issues, allWarnings) {
|
|
|
13
13
|
});
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
|
-
function parseAndValidate(code) {
|
|
16
|
+
function parseAndValidate(code, options = {}) {
|
|
17
17
|
const codeToParse = (0, extract_code_1.stripImportStatements)(code);
|
|
18
|
+
const { nodeTypesProvider } = options;
|
|
18
19
|
try {
|
|
19
20
|
const builder = (0, workflow_sdk_1.parseWorkflowCodeToBuilder)(codeToParse);
|
|
20
21
|
builder.regenerateNodeIds();
|
|
21
22
|
const allWarnings = [];
|
|
22
|
-
const graphValidation = builder.validate();
|
|
23
|
+
const graphValidation = builder.validate({ nodeTypesProvider });
|
|
23
24
|
collectValidationIssues(graphValidation.errors, allWarnings);
|
|
24
25
|
collectValidationIssues(graphValidation.warnings, allWarnings);
|
|
25
26
|
const json = builder.toJSON();
|
|
26
|
-
const schemaValidation = (0, workflow_sdk_1.validateWorkflow)(json);
|
|
27
|
+
const schemaValidation = (0, workflow_sdk_1.validateWorkflow)(json, { nodeTypesProvider, strictMode: true });
|
|
27
28
|
collectValidationIssues(schemaValidation.errors, allWarnings);
|
|
28
29
|
collectValidationIssues(schemaValidation.warnings, allWarnings);
|
|
29
30
|
return { workflow: json, warnings: allWarnings };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-validate.js","sourceRoot":"","sources":["../../src/workflow-builder/parse-validate.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"parse-validate.js","sourceRoot":"","sources":["../../src/workflow-builder/parse-validate.ts"],"names":[],"mappings":";;AAyDA,4CAsCC;AAQD,8CAmBC;AAlHD,oDAAiF;AAGjF,iDAAuD;AAqBvD,SAAS,uBAAuB,CAC/B,MAAyB,EACzB,WAAgC;IAEhC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC5B,WAAW,CAAC,IAAI,CAAC;YAChB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,QAAQ,EAAE,KAAK,CAAC,QAAQ;SACxB,CAAC,CAAC;IACJ,CAAC;AACF,CAAC;AAcD,SAAgB,gBAAgB,CAC/B,IAAY,EACZ,UAAmC,EAAE;IAGrC,MAAM,WAAW,GAAG,IAAA,oCAAqB,EAAC,IAAI,CAAC,CAAC;IAEhD,MAAM,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC;IAEtC,IAAI,CAAC;QAEJ,MAAM,OAAO,GAAG,IAAA,yCAA0B,EAAC,WAAW,CAAC,CAAC;QAGxD,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAE5B,MAAM,WAAW,GAAwB,EAAE,CAAC;QAG5C,MAAM,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAChE,uBAAuB,CAAC,eAAe,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAC7D,uBAAuB,CAAC,eAAe,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAE/D,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAK9B,MAAM,gBAAgB,GAAG,IAAA,+BAAgB,EAAC,IAAI,EAAE,EAAE,iBAAiB,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QACzF,uBAAuB,CAAC,gBAAgB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAC9D,uBAAuB,CAAC,gBAAgB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAEhE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;IAClD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CACd,kCAAkC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAC5F,CAAC;IACH,CAAC;AACF,CAAC;AAQD,SAAgB,iBAAiB,CAAC,QAA6B;IAK9D,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,CAAC,CAAC;IAE7E,MAAM,MAAM,GAAwB,EAAE,CAAC;IACvC,MAAM,aAAa,GAAwB,EAAE,CAAC;IAE9C,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QAC1B,IAAI,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YACpC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC;aAAM,CAAC;YACP,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChB,CAAC;IACF,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;AAClC,CAAC"}
|
|
@@ -3,6 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.formatWorkflowLoopGuidance = formatWorkflowLoopGuidance;
|
|
4
4
|
function formatWorkflowLoopGuidance(action, options = {}) {
|
|
5
5
|
switch (action.type) {
|
|
6
|
+
case 'ignored':
|
|
7
|
+
return `STALE REPORT IGNORED: ${action.reason}`;
|
|
8
|
+
case 'continue_building':
|
|
9
|
+
return `SUBMIT FAILED: ${action.reason}. Fix the workflow code and call \`submit-workflow\` again.`;
|
|
6
10
|
case 'done': {
|
|
7
11
|
if (action.mockedCredentialTypes?.length || action.hasUnresolvedPlaceholders) {
|
|
8
12
|
return ('Workflow verified successfully with temporary mock data. ' +
|
|
@@ -23,7 +27,8 @@ function formatWorkflowLoopGuidance(action, options = {}) {
|
|
|
23
27
|
case 'rebuild':
|
|
24
28
|
return (`REBUILD NEEDED: Workflow "${action.workflowId}" needs structural repair. ` +
|
|
25
29
|
`Call \`build-workflow-with-agent\` directly with \`workflowId: "${action.workflowId}"\` ` +
|
|
26
|
-
|
|
30
|
+
`and \`workItemId: "${options.workItemId ?? 'unknown'}"\` ` +
|
|
31
|
+
'(no plan — this is a single-task rebuild; `workflowId` and `workItemId` are required ' +
|
|
27
32
|
'so the builder updates the existing workflow instead of creating a duplicate). ' +
|
|
28
33
|
`In the \`task\` parameter, describe the structural repair and include these details: ${action.failureDetails}`);
|
|
29
34
|
case 'patch':
|
|
@@ -31,7 +36,8 @@ function formatWorkflowLoopGuidance(action, options = {}) {
|
|
|
31
36
|
`Diagnosis: ${action.diagnosis}. ` +
|
|
32
37
|
(action.patch ? `Suggested fix: ${JSON.stringify(action.patch)}. ` : '') +
|
|
33
38
|
`Call \`build-workflow-with-agent\` directly with \`workflowId: "${action.workflowId}"\` ` +
|
|
34
|
-
|
|
39
|
+
`and \`workItemId: "${options.workItemId ?? 'unknown'}"\` ` +
|
|
40
|
+
'(no plan — this is a single-task patch; `workflowId` and `workItemId` are required ' +
|
|
35
41
|
'so the builder updates the existing workflow instead of creating a duplicate). ' +
|
|
36
42
|
'In the `task` parameter, describe the targeted fix to apply.');
|
|
37
43
|
}
|
|
@@ -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,gEAmDC;AAnDD,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,wFAAwF;oBACxF,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,wBAAwB,MAAM,CAAC,UAAU,IAAI;gBAC7C,uFAAuF,OAAO,CAAC,UAAU,IAAI,SAAS,KAAK;gBAC3H,4CAA4C;gBAC5C,6DAA6D;gBAC7D,8DAA8D,OAAO,CAAC,UAAU,IAAI,SAAS,sBAAsB,CACnH,CAAC;QACH,KAAK,SAAS;YACb,OAAO,kBAAkB,MAAM,CAAC,MAAM,oDAAoD,CAAC;QAC5F,KAAK,SAAS;YACb,OAAO,CACN,6BAA6B,MAAM,CAAC,UAAU,6BAA6B;gBAC3E,mEAAmE,MAAM,CAAC,UAAU,MAAM;gBAC1F,sBAAsB,OAAO,CAAC,UAAU,IAAI,SAAS,MAAM;gBAC3D,uFAAuF;gBACvF,iFAAiF;gBACjF,wFAAwF,MAAM,CAAC,cAAc,EAAE,CAC/G,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,mEAAmE,MAAM,CAAC,UAAU,MAAM;gBAC1F,sBAAsB,OAAO,CAAC,UAAU,IAAI,SAAS,MAAM;gBAC3D,qFAAqF;gBACrF,iFAAiF;gBACjF,8DAA8D,CAC9D,CAAC;IACJ,CAAC;AACF,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
export { workflowLoopPhaseSchema, workflowLoopStatusSchema, workflowLoopSourceSchema, workflowLoopStateSchema, attemptActionSchema, attemptResultSchema, attemptRecordSchema, triggerTypeSchema, workflowBuildOutcomeSchema, verificationVerdictSchema, verificationResultSchema, } from './workflow-loop-state';
|
|
2
|
-
export type { WorkflowLoopPhase, WorkflowLoopStatus, WorkflowLoopSource, WorkflowLoopState, AttemptAction, AttemptResult, AttemptRecord, TriggerType, WorkflowBuildOutcome, VerificationVerdict, VerificationResult, WorkflowLoopAction, } from './workflow-loop-state';
|
|
1
|
+
export { workflowLoopPhaseSchema, workflowLoopStatusSchema, workflowLoopSourceSchema, remediationCategorySchema, remediationMetadataSchema, workflowLoopStateSchema, attemptActionSchema, attemptResultSchema, attemptRecordSchema, triggerTypeSchema, workflowBuildOutcomeSchema, verificationVerdictSchema, verificationResultSchema, } from './workflow-loop-state';
|
|
2
|
+
export type { WorkflowLoopPhase, WorkflowLoopStatus, WorkflowLoopSource, RemediationCategory, RemediationMetadata, WorkflowLoopState, AttemptAction, AttemptResult, AttemptRecord, TriggerType, 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 { MAX_POST_SUBMIT_REMEDIATION_SUBMITS, MAX_PRE_SAVE_SUBMIT_FAILURES, createRemediation, remainingPostSubmitRemediations, terminalRemediationFromState, } from './remediation';
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.WorkflowTaskCoordinator = exports.formatWorkflowLoopGuidance = exports.formatAttemptHistory = exports.handleVerificationVerdict = exports.handleBuildOutcome = exports.createWorkItem = exports.verificationResultSchema = exports.verificationVerdictSchema = exports.workflowBuildOutcomeSchema = exports.triggerTypeSchema = exports.attemptRecordSchema = exports.attemptResultSchema = exports.attemptActionSchema = exports.workflowLoopStateSchema = exports.workflowLoopSourceSchema = exports.workflowLoopStatusSchema = exports.workflowLoopPhaseSchema = void 0;
|
|
3
|
+
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.triggerTypeSchema = exports.attemptRecordSchema = exports.attemptResultSchema = exports.attemptActionSchema = exports.workflowLoopStateSchema = 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
|
+
Object.defineProperty(exports, "remediationCategorySchema", { enumerable: true, get: function () { return workflow_loop_state_1.remediationCategorySchema; } });
|
|
9
|
+
Object.defineProperty(exports, "remediationMetadataSchema", { enumerable: true, get: function () { return workflow_loop_state_1.remediationMetadataSchema; } });
|
|
8
10
|
Object.defineProperty(exports, "workflowLoopStateSchema", { enumerable: true, get: function () { return workflow_loop_state_1.workflowLoopStateSchema; } });
|
|
9
11
|
Object.defineProperty(exports, "attemptActionSchema", { enumerable: true, get: function () { return workflow_loop_state_1.attemptActionSchema; } });
|
|
10
12
|
Object.defineProperty(exports, "attemptResultSchema", { enumerable: true, get: function () { return workflow_loop_state_1.attemptResultSchema; } });
|
|
@@ -22,4 +24,10 @@ var guidance_1 = require("./guidance");
|
|
|
22
24
|
Object.defineProperty(exports, "formatWorkflowLoopGuidance", { enumerable: true, get: function () { return guidance_1.formatWorkflowLoopGuidance; } });
|
|
23
25
|
var workflow_task_service_1 = require("./workflow-task-service");
|
|
24
26
|
Object.defineProperty(exports, "WorkflowTaskCoordinator", { enumerable: true, get: function () { return workflow_task_service_1.WorkflowTaskCoordinator; } });
|
|
27
|
+
var remediation_1 = require("./remediation");
|
|
28
|
+
Object.defineProperty(exports, "MAX_POST_SUBMIT_REMEDIATION_SUBMITS", { enumerable: true, get: function () { return remediation_1.MAX_POST_SUBMIT_REMEDIATION_SUBMITS; } });
|
|
29
|
+
Object.defineProperty(exports, "MAX_PRE_SAVE_SUBMIT_FAILURES", { enumerable: true, get: function () { return remediation_1.MAX_PRE_SAVE_SUBMIT_FAILURES; } });
|
|
30
|
+
Object.defineProperty(exports, "createRemediation", { enumerable: true, get: function () { return remediation_1.createRemediation; } });
|
|
31
|
+
Object.defineProperty(exports, "remainingPostSubmitRemediations", { enumerable: true, get: function () { return remediation_1.remainingPostSubmitRemediations; } });
|
|
32
|
+
Object.defineProperty(exports, "terminalRemediationFromState", { enumerable: true, get: function () { return remediation_1.terminalRemediationFromState; } });
|
|
25
33
|
//# sourceMappingURL=index.js.map
|
|
@@ -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,6DAc+B;AAb9B,8HAAA,uBAAuB,OAAA;AACvB,+HAAA,wBAAwB,OAAA;AACxB,+HAAA,wBAAwB,OAAA;AACxB,gIAAA,yBAAyB,OAAA;AACzB,gIAAA,yBAAyB,OAAA;AACzB,8HAAA,uBAAuB,OAAA;AACvB,0HAAA,mBAAmB,OAAA;AACnB,0HAAA,mBAAmB,OAAA;AACnB,0HAAA,mBAAmB,OAAA;AACnB,wHAAA,iBAAiB,OAAA;AACjB,iIAAA,0BAA0B,OAAA;AAC1B,gIAAA,yBAAyB,OAAA;AACzB,+HAAA,wBAAwB,OAAA;AAoBzB,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,6CAMuB;AALtB,kIAAA,mCAAmC,OAAA;AACnC,2HAAA,4BAA4B,OAAA;AAC5B,gHAAA,iBAAiB,OAAA;AACjB,8HAAA,+BAA+B,OAAA;AAC/B,2HAAA,4BAA4B,OAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { RemediationCategory, RemediationMetadata, WorkflowLoopState } from './workflow-loop-state';
|
|
2
|
+
export declare const MAX_PRE_SAVE_SUBMIT_FAILURES = 3;
|
|
3
|
+
export declare const MAX_POST_SUBMIT_REMEDIATION_SUBMITS = 2;
|
|
4
|
+
export declare function createRemediation(input: {
|
|
5
|
+
category: RemediationCategory;
|
|
6
|
+
shouldEdit: boolean;
|
|
7
|
+
guidance: string;
|
|
8
|
+
reason?: string;
|
|
9
|
+
remainingSubmitFixes?: number;
|
|
10
|
+
attemptCount?: number;
|
|
11
|
+
}): RemediationMetadata;
|
|
12
|
+
export declare function remainingPostSubmitRemediations(state: WorkflowLoopState): number;
|
|
13
|
+
export declare function terminalRemediationFromState(state: WorkflowLoopState | undefined, currentRunId?: string): RemediationMetadata | undefined;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MAX_POST_SUBMIT_REMEDIATION_SUBMITS = exports.MAX_PRE_SAVE_SUBMIT_FAILURES = void 0;
|
|
4
|
+
exports.createRemediation = createRemediation;
|
|
5
|
+
exports.remainingPostSubmitRemediations = remainingPostSubmitRemediations;
|
|
6
|
+
exports.terminalRemediationFromState = terminalRemediationFromState;
|
|
7
|
+
exports.MAX_PRE_SAVE_SUBMIT_FAILURES = 3;
|
|
8
|
+
exports.MAX_POST_SUBMIT_REMEDIATION_SUBMITS = 2;
|
|
9
|
+
function createRemediation(input) {
|
|
10
|
+
return input;
|
|
11
|
+
}
|
|
12
|
+
function remainingPostSubmitRemediations(state) {
|
|
13
|
+
return Math.max(0, exports.MAX_POST_SUBMIT_REMEDIATION_SUBMITS - (state.postSubmitRemediationSubmitsUsed ?? 0));
|
|
14
|
+
}
|
|
15
|
+
function terminalRemediationFromState(state, currentRunId) {
|
|
16
|
+
if (!state)
|
|
17
|
+
return undefined;
|
|
18
|
+
if (currentRunId !== undefined && state.runId !== currentRunId)
|
|
19
|
+
return undefined;
|
|
20
|
+
if (state.lastRemediation && !state.lastRemediation.shouldEdit) {
|
|
21
|
+
return state.lastRemediation;
|
|
22
|
+
}
|
|
23
|
+
if (state.successfulSubmitSeen &&
|
|
24
|
+
(state.postSubmitRemediationSubmitsUsed ?? 0) >= exports.MAX_POST_SUBMIT_REMEDIATION_SUBMITS) {
|
|
25
|
+
return createRemediation({
|
|
26
|
+
category: 'blocked',
|
|
27
|
+
shouldEdit: false,
|
|
28
|
+
reason: 'post_submit_budget_exhausted',
|
|
29
|
+
attemptCount: state.postSubmitRemediationSubmitsUsed ?? 0,
|
|
30
|
+
remainingSubmitFixes: 0,
|
|
31
|
+
guidance: 'The workflow was saved, but the automatic repair budget is exhausted. Stop editing and explain the blocker to the user.',
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=remediation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remediation.js","sourceRoot":"","sources":["../../src/workflow-loop/remediation.ts"],"names":[],"mappings":";;;AASA,8CASC;AAED,0EAKC;AAED,oEAwBC;AA7CY,QAAA,4BAA4B,GAAG,CAAC,CAAC;AACjC,QAAA,mCAAmC,GAAG,CAAC,CAAC;AAErD,SAAgB,iBAAiB,CAAC,KAOjC;IACA,OAAO,KAAK,CAAC;AACd,CAAC;AAED,SAAgB,+BAA+B,CAAC,KAAwB;IACvE,OAAO,IAAI,CAAC,GAAG,CACd,CAAC,EACD,2CAAmC,GAAG,CAAC,KAAK,CAAC,gCAAgC,IAAI,CAAC,CAAC,CACnF,CAAC;AACH,CAAC;AAED,SAAgB,4BAA4B,CAC3C,KAAoC,EACpC,YAAqB;IAErB,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,IAAI,YAAY,KAAK,SAAS,IAAI,KAAK,CAAC,KAAK,KAAK,YAAY;QAAE,OAAO,SAAS,CAAC;IACjF,IAAI,KAAK,CAAC,eAAe,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC;QAChE,OAAO,KAAK,CAAC,eAAe,CAAC;IAC9B,CAAC;IACD,IACC,KAAK,CAAC,oBAAoB;QAC1B,CAAC,KAAK,CAAC,gCAAgC,IAAI,CAAC,CAAC,IAAI,2CAAmC,EACnF,CAAC;QACF,OAAO,iBAAiB,CAAC;YACxB,QAAQ,EAAE,SAAS;YACnB,UAAU,EAAE,KAAK;YACjB,MAAM,EAAE,8BAA8B;YACtC,YAAY,EAAE,KAAK,CAAC,gCAAgC,IAAI,CAAC;YACzD,oBAAoB,EAAE,CAAC;YACvB,QAAQ,EACP,yHAAyH;SAC1H,CAAC,CAAC;IACJ,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC"}
|
|
@@ -6,11 +6,14 @@ function createInitialState(threadId, outcome) {
|
|
|
6
6
|
return {
|
|
7
7
|
workItemId: outcome.workItemId,
|
|
8
8
|
threadId,
|
|
9
|
+
runId: outcome.runId,
|
|
9
10
|
workflowId: outcome.workflowId,
|
|
10
11
|
phase: 'building',
|
|
11
12
|
status: 'active',
|
|
12
13
|
source: outcome.workflowId ? 'modify' : 'create',
|
|
13
14
|
rebuildAttempts: 0,
|
|
15
|
+
preSaveSubmitFailures: 0,
|
|
16
|
+
postSubmitRemediationSubmitsUsed: 0,
|
|
14
17
|
};
|
|
15
18
|
}
|
|
16
19
|
class WorkflowLoopRuntime {
|
|
@@ -23,6 +26,8 @@ class WorkflowLoopRuntime {
|
|
|
23
26
|
const state = existing?.state ?? createInitialState(threadId, outcome);
|
|
24
27
|
const attempts = existing?.attempts ?? [];
|
|
25
28
|
const { state: newState, action, attempt } = (0, workflow_loop_controller_1.handleBuildOutcome)(state, attempts, outcome);
|
|
29
|
+
if (action.type === 'ignored')
|
|
30
|
+
return action;
|
|
26
31
|
await this.storage.saveWorkItem(threadId, newState, [...attempts, attempt], outcome);
|
|
27
32
|
return action;
|
|
28
33
|
}
|
|
@@ -32,6 +37,8 @@ class WorkflowLoopRuntime {
|
|
|
32
37
|
return { type: 'blocked', reason: `Unknown work item: ${verdict.workItemId}` };
|
|
33
38
|
}
|
|
34
39
|
const { state: newState, action, attempt, } = (0, workflow_loop_controller_1.handleVerificationVerdict)(existing.state, existing.attempts, verdict);
|
|
40
|
+
if (action.type === 'ignored')
|
|
41
|
+
return action;
|
|
35
42
|
await this.storage.saveWorkItem(threadId, newState, [...existing.attempts, attempt]);
|
|
36
43
|
return action;
|
|
37
44
|
}
|
|
@@ -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,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;
|
|
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,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;QACrF,OAAO,MAAM,CAAC;IACf,CAAC;CACD;AArCD,kDAqCC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { AttemptRecord, WorkflowBuildOutcome, WorkflowLoopAction, WorkflowLoopSource, WorkflowLoopState, VerificationResult } from './workflow-loop-state';
|
|
2
|
-
export declare function createWorkItem(threadId: string, source: WorkflowLoopSource, workflowId?: string): WorkflowLoopState;
|
|
2
|
+
export declare function createWorkItem(threadId: string, source: WorkflowLoopSource, workflowId?: string, runId?: string): WorkflowLoopState;
|
|
3
3
|
interface TransitionResult {
|
|
4
4
|
state: WorkflowLoopState;
|
|
5
5
|
action: WorkflowLoopAction;
|