@n8n/instance-ai 1.4.1 → 1.6.0
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/computer-use-prompt.d.ts +5 -0
- package/dist/agent/computer-use-prompt.js +97 -0
- package/dist/agent/computer-use-prompt.js.map +1 -0
- package/dist/agent/instance-agent.js +48 -73
- package/dist/agent/instance-agent.js.map +1 -1
- package/dist/agent/mcp-tool-name-validation.d.ts +15 -0
- package/dist/agent/mcp-tool-name-validation.js +67 -0
- package/dist/agent/mcp-tool-name-validation.js.map +1 -0
- package/dist/agent/sanitize-mcp-schemas.d.ts +56 -2
- package/dist/agent/sanitize-mcp-schemas.js +226 -19
- package/dist/agent/sanitize-mcp-schemas.js.map +1 -1
- package/dist/agent/sub-agent-debriefing.d.ts +2 -2
- package/dist/agent/sub-agent-factory.d.ts +1 -0
- package/dist/agent/sub-agent-factory.js +1 -0
- package/dist/agent/sub-agent-factory.js.map +1 -1
- package/dist/agent/system-prompt.d.ts +1 -1
- package/dist/agent/system-prompt.js +46 -104
- 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/domain-access/domain-access-tracker.d.ts +3 -0
- package/dist/domain-access/domain-access-tracker.js +16 -0
- package/dist/domain-access/domain-access-tracker.js.map +1 -1
- package/dist/domain-access/domain-gating.d.ts +35 -6
- package/dist/domain-access/domain-gating.js +47 -1
- package/dist/domain-access/domain-gating.js.map +1 -1
- package/dist/domain-access/index.d.ts +1 -1
- package/dist/domain-access/index.js +3 -1
- package/dist/domain-access/index.js.map +1 -1
- package/dist/index.d.ts +14 -6
- package/dist/index.js +19 -2
- package/dist/index.js.map +1 -1
- package/dist/logger.d.ts +6 -0
- package/dist/mcp/mcp-client-manager.d.ts +18 -2
- package/dist/mcp/mcp-client-manager.js +124 -20
- package/dist/mcp/mcp-client-manager.js.map +1 -1
- package/dist/parsers/docx-parser.d.ts +6 -0
- package/dist/parsers/docx-parser.js +65 -0
- package/dist/parsers/docx-parser.js.map +1 -0
- package/dist/parsers/html-parser.d.ts +7 -0
- package/dist/parsers/html-parser.js +67 -0
- package/dist/parsers/html-parser.js.map +1 -0
- package/dist/parsers/index.d.ts +4 -0
- package/dist/parsers/index.js +16 -0
- package/dist/parsers/index.js.map +1 -0
- package/dist/parsers/pdf-parser.d.ts +7 -0
- package/dist/parsers/pdf-parser.js +72 -0
- package/dist/parsers/pdf-parser.js.map +1 -0
- package/dist/parsers/structured-file-parser.d.ts +8 -3
- package/dist/parsers/structured-file-parser.js +36 -4
- package/dist/parsers/structured-file-parser.js.map +1 -1
- package/dist/parsers/validate-attachments.d.ts +14 -0
- package/dist/parsers/validate-attachments.js +61 -0
- package/dist/parsers/validate-attachments.js.map +1 -0
- package/dist/parsers/xlsx-parser.d.ts +2 -0
- package/dist/parsers/xlsx-parser.js +75 -0
- package/dist/parsers/xlsx-parser.js.map +1 -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 +32 -1
- package/dist/runtime/background-task-manager.js +134 -4
- 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/liveness-policy.d.ts +40 -0
- package/dist/runtime/liveness-policy.js +74 -0
- package/dist/runtime/liveness-policy.js.map +1 -0
- package/dist/runtime/resumable-stream-executor.d.ts +1 -0
- package/dist/runtime/resumable-stream-executor.js +1 -0
- package/dist/runtime/resumable-stream-executor.js.map +1 -1
- package/dist/runtime/run-state-registry.d.ts +21 -5
- package/dist/runtime/run-state-registry.js +109 -7
- package/dist/runtime/run-state-registry.js.map +1 -1
- package/dist/runtime/stream-runner.d.ts +3 -0
- package/dist/runtime/stream-runner.js +3 -0
- package/dist/runtime/stream-runner.js.map +1 -1
- package/dist/runtime/terminal-response-guard.d.ts +30 -0
- package/dist/runtime/terminal-response-guard.js +149 -0
- package/dist/runtime/terminal-response-guard.js.map +1 -0
- package/dist/storage/agent-tree-snapshot.d.ts +2 -0
- package/dist/storage/index.d.ts +2 -0
- package/dist/storage/index.js +3 -1
- package/dist/storage/index.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/terminal-outcome-storage.d.ts +48 -0
- package/dist/storage/terminal-outcome-storage.js +84 -0
- package/dist/storage/terminal-outcome-storage.js.map +1 -0
- package/dist/storage/workflow-loop-storage.d.ts +442 -16
- package/dist/stream/consume-with-hitl.d.ts +2 -0
- package/dist/stream/consume-with-hitl.js +2 -0
- package/dist/stream/consume-with-hitl.js.map +1 -1
- package/dist/stream/map-chunk.js +6 -0
- package/dist/stream/map-chunk.js.map +1 -1
- package/dist/tools/attachments/parse-file.tool.d.ts +46 -34
- package/dist/tools/attachments/parse-file.tool.js +115 -56
- package/dist/tools/attachments/parse-file.tool.js.map +1 -1
- package/dist/tools/credentials.tool.d.ts +120 -1
- package/dist/tools/credentials.tool.js +65 -12
- package/dist/tools/credentials.tool.js.map +1 -1
- package/dist/tools/data-tables.tool.d.ts +1 -0
- package/dist/tools/data-tables.tool.js +64 -24
- 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/filesystem/create-tools-from-mcp-server.d.ts +2 -1
- package/dist/tools/filesystem/create-tools-from-mcp-server.js +74 -5
- package/dist/tools/filesystem/create-tools-from-mcp-server.js.map +1 -1
- package/dist/tools/index.d.ts +4 -24
- package/dist/tools/index.js +23 -7
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/nodes.tool.js +15 -15
- package/dist/tools/nodes.tool.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 +61 -16
- package/dist/tools/orchestration/blueprint.schema.js +15 -1
- package/dist/tools/orchestration/blueprint.schema.js.map +1 -1
- package/dist/tools/orchestration/browser-credential-setup.nudge.d.ts +5 -0
- package/dist/tools/orchestration/browser-credential-setup.nudge.js +11 -0
- package/dist/tools/orchestration/browser-credential-setup.nudge.js.map +1 -0
- package/dist/tools/orchestration/browser-credential-setup.prompt.js +2 -1
- package/dist/tools/orchestration/browser-credential-setup.prompt.js.map +1 -1
- package/dist/tools/orchestration/browser-credential-setup.tool.js +55 -7
- package/dist/tools/orchestration/browser-credential-setup.tool.js.map +1 -1
- package/dist/tools/orchestration/build-workflow-agent.prompt.js +86 -60
- package/dist/tools/orchestration/build-workflow-agent.prompt.js.map +1 -1
- package/dist/tools/orchestration/build-workflow-agent.tool.d.ts +56 -3
- package/dist/tools/orchestration/build-workflow-agent.tool.js +1020 -300
- 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 +34 -17
- package/dist/tools/orchestration/data-table-agent.tool.js.map +1 -1
- package/dist/tools/orchestration/delegate.tool.js +34 -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 +7 -0
- package/dist/tools/orchestration/plan-agent-prompt.js.map +1 -1
- package/dist/tools/orchestration/plan-with-agent.tool.d.ts +23 -0
- package/dist/tools/orchestration/plan-with-agent.tool.js +314 -13
- 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 +33 -16
- package/dist/tools/orchestration/research-with-agent.tool.js.map +1 -1
- package/dist/tools/orchestration/tracing-utils.js +8 -0
- package/dist/tools/orchestration/tracing-utils.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 +56 -10
- package/dist/tools/research.tool.js.map +1 -1
- package/dist/tools/shared/ask-user.tool.d.ts +1 -0
- package/dist/tools/shared/ask-user.tool.js +3 -2
- package/dist/tools/shared/ask-user.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 +6 -4
- 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/resolve-credentials.d.ts +9 -4
- package/dist/tools/workflows/resolve-credentials.js +59 -27
- package/dist/tools/workflows/resolve-credentials.js.map +1 -1
- package/dist/tools/workflows/setup-workflow.schema.d.ts +40 -0
- package/dist/tools/workflows/setup-workflow.service.d.ts +5 -1
- package/dist/tools/workflows/setup-workflow.service.js +71 -5
- package/dist/tools/workflows/setup-workflow.service.js.map +1 -1
- package/dist/tools/workflows/submit-workflow-identity.d.ts +25 -3
- 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 +60 -6
- package/dist/tools/workflows/submit-workflow.tool.js +102 -19
- package/dist/tools/workflows/submit-workflow.tool.js.map +1 -1
- package/dist/tools/workflows/workflow-json-utils.d.ts +4 -0
- package/dist/tools/workflows/workflow-json-utils.js +54 -0
- package/dist/tools/workflows/workflow-json-utils.js.map +1 -0
- package/dist/tools/workflows.tool.d.ts +7 -1
- package/dist/tools/workflows.tool.js +283 -54
- package/dist/tools/workflows.tool.js.map +1 -1
- package/dist/tracing/langsmith-tracing.d.ts +2 -0
- package/dist/tracing/langsmith-tracing.js +12 -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 +92 -16
- package/dist/workflow-builder/parse-validate.d.ts +5 -1
- package/dist/workflow-builder/parse-validate.js +5 -4
- 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 +11 -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 +500 -10
- package/dist/workflow-loop/workflow-loop-state.js +74 -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 -4
- package/dist/workspace/builder-sandbox-factory.js +74 -35
- 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/n8n-sandbox-filesystem.js +2 -2
- package/dist/workspace/n8n-sandbox-filesystem.js.map +1 -1
- package/dist/workspace/n8n-sandbox-sandbox.d.ts +2 -3
- package/dist/workspace/n8n-sandbox-sandbox.js +3 -7
- package/dist/workspace/n8n-sandbox-sandbox.js.map +1 -1
- package/dist/workspace/sandbox-setup.d.ts +1 -1
- package/dist/workspace/sandbox-setup.js +41 -16
- 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 +35 -10
- 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/workspace/n8n-sandbox-client.d.ts +0 -105
- package/dist/workspace/n8n-sandbox-client.js +0 -335
- package/dist/workspace/n8n-sandbox-client.js.map +0 -1
- package/dist/workspace/n8n-sandbox-image-manager.d.ts +0 -5
- package/dist/workspace/n8n-sandbox-image-manager.js +0 -25
- package/dist/workspace/n8n-sandbox-image-manager.js.map +0 -1
package/dist/types.d.ts
CHANGED
|
@@ -5,18 +5,22 @@ 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 { McpClientManager } from './mcp/mcp-client-manager';
|
|
13
|
+
import type { BuilderSandboxSessionRegistry } from './runtime/builder-sandbox-session-registry';
|
|
11
14
|
import type { IterationLog } from './storage/iteration-log';
|
|
12
15
|
import type { IdRemapper, TraceIndex, TraceWriter } from './tracing/trace-replay';
|
|
13
|
-
import type { VerificationResult, WorkflowBuildOutcome, WorkflowLoopAction } from './workflow-loop/workflow-loop-state';
|
|
16
|
+
import type { VerificationResult, WorkflowBuildOutcome, WorkflowLoopAction, WorkflowLoopState } from './workflow-loop/workflow-loop-state';
|
|
14
17
|
import type { BuilderSandboxFactory } from './workspace/builder-sandbox-factory';
|
|
15
18
|
export interface WorkflowSummary {
|
|
16
19
|
id: string;
|
|
17
20
|
name: string;
|
|
18
21
|
versionId: string;
|
|
19
22
|
activeVersionId: string | null;
|
|
23
|
+
isArchived: boolean;
|
|
20
24
|
createdAt: string;
|
|
21
25
|
updatedAt: string;
|
|
22
26
|
tags?: string[];
|
|
@@ -120,10 +124,12 @@ export interface WorkflowVersionDetail extends WorkflowVersionSummary {
|
|
|
120
124
|
nodes: WorkflowNode[];
|
|
121
125
|
connections: Record<string, unknown>;
|
|
122
126
|
}
|
|
127
|
+
export type WorkflowListStatus = 'active' | 'archived' | 'all';
|
|
123
128
|
export interface InstanceAiWorkflowService {
|
|
124
129
|
list(options?: {
|
|
125
130
|
query?: string;
|
|
126
131
|
limit?: number;
|
|
132
|
+
status?: WorkflowListStatus;
|
|
127
133
|
}): Promise<WorkflowSummary[]>;
|
|
128
134
|
get(workflowId: string): Promise<WorkflowDetail>;
|
|
129
135
|
getAsWorkflowJSON(workflowId: string): Promise<WorkflowJSON>;
|
|
@@ -135,7 +141,7 @@ export interface InstanceAiWorkflowService {
|
|
|
135
141
|
projectId?: string;
|
|
136
142
|
}): Promise<WorkflowDetail>;
|
|
137
143
|
archive(workflowId: string): Promise<void>;
|
|
138
|
-
|
|
144
|
+
unarchive(workflowId: string): Promise<void>;
|
|
139
145
|
clearAiTemporary(workflowId: string): Promise<void>;
|
|
140
146
|
archiveIfAiTemporary(workflowId: string): Promise<boolean>;
|
|
141
147
|
publish(workflowId: string, options?: {
|
|
@@ -196,6 +202,8 @@ export interface CredentialTypeSearchResult {
|
|
|
196
202
|
export interface InstanceAiCredentialService {
|
|
197
203
|
list(options?: {
|
|
198
204
|
type?: string;
|
|
205
|
+
workflowId?: string;
|
|
206
|
+
projectId?: string;
|
|
199
207
|
}): Promise<CredentialSummary[]>;
|
|
200
208
|
get(credentialId: string): Promise<CredentialDetail>;
|
|
201
209
|
delete(credentialId: string): Promise<void>;
|
|
@@ -254,6 +262,7 @@ export interface InstanceAiNodeService {
|
|
|
254
262
|
content: string;
|
|
255
263
|
version?: string;
|
|
256
264
|
error?: string;
|
|
265
|
+
builderHint?: string;
|
|
257
266
|
} | null>;
|
|
258
267
|
listDiscriminators?(nodeType: string): Promise<{
|
|
259
268
|
resources: Array<{
|
|
@@ -281,6 +290,10 @@ export interface SearchableNodeDescription {
|
|
|
281
290
|
required: boolean;
|
|
282
291
|
displayOptions?: Record<string, unknown>;
|
|
283
292
|
}>;
|
|
293
|
+
outputs?: Record<string, {
|
|
294
|
+
required?: boolean;
|
|
295
|
+
displayOptions?: Record<string, unknown>;
|
|
296
|
+
}>;
|
|
284
297
|
};
|
|
285
298
|
}
|
|
286
299
|
export interface DataTableSummary {
|
|
@@ -309,6 +322,9 @@ export interface DataTableFilterInput {
|
|
|
309
322
|
value: string | number | boolean | null;
|
|
310
323
|
}>;
|
|
311
324
|
}
|
|
325
|
+
export interface DataTableIdOptions {
|
|
326
|
+
projectId?: string;
|
|
327
|
+
}
|
|
312
328
|
export interface InstanceAiDataTableService {
|
|
313
329
|
list(options?: {
|
|
314
330
|
projectId?: string;
|
|
@@ -319,35 +335,36 @@ export interface InstanceAiDataTableService {
|
|
|
319
335
|
}>, options?: {
|
|
320
336
|
projectId?: string;
|
|
321
337
|
}): Promise<DataTableSummary>;
|
|
322
|
-
delete(dataTableId: string): Promise<void>;
|
|
323
|
-
getSchema(dataTableId: string): Promise<DataTableColumnInfo[]>;
|
|
338
|
+
delete(dataTableId: string, options?: DataTableIdOptions): Promise<void>;
|
|
339
|
+
getSchema(dataTableId: string, options?: DataTableIdOptions): Promise<DataTableColumnInfo[]>;
|
|
324
340
|
addColumn(dataTableId: string, column: {
|
|
325
341
|
name: string;
|
|
326
342
|
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>;
|
|
343
|
+
}, options?: DataTableIdOptions): Promise<DataTableColumnInfo>;
|
|
344
|
+
deleteColumn(dataTableId: string, columnId: string, options?: DataTableIdOptions): Promise<void>;
|
|
345
|
+
renameColumn(dataTableId: string, columnId: string, newName: string, options?: DataTableIdOptions): Promise<void>;
|
|
330
346
|
queryRows(dataTableId: string, options?: {
|
|
331
347
|
filter?: DataTableFilterInput;
|
|
332
348
|
limit?: number;
|
|
333
349
|
offset?: number;
|
|
350
|
+
projectId?: string;
|
|
334
351
|
}): Promise<{
|
|
335
352
|
count: number;
|
|
336
353
|
data: Array<Record<string, unknown>>;
|
|
337
354
|
}>;
|
|
338
|
-
insertRows(dataTableId: string, rows: Array<Record<string, unknown
|
|
355
|
+
insertRows(dataTableId: string, rows: Array<Record<string, unknown>>, options?: DataTableIdOptions): Promise<{
|
|
339
356
|
insertedCount: number;
|
|
340
357
|
dataTableId: string;
|
|
341
358
|
tableName: string;
|
|
342
359
|
projectId: string;
|
|
343
360
|
}>;
|
|
344
|
-
updateRows(dataTableId: string, filter: DataTableFilterInput, data: Record<string, unknown
|
|
361
|
+
updateRows(dataTableId: string, filter: DataTableFilterInput, data: Record<string, unknown>, options?: DataTableIdOptions): Promise<{
|
|
345
362
|
updatedCount: number;
|
|
346
363
|
dataTableId: string;
|
|
347
364
|
tableName: string;
|
|
348
365
|
projectId: string;
|
|
349
366
|
}>;
|
|
350
|
-
deleteRows(dataTableId: string, filter: DataTableFilterInput): Promise<{
|
|
367
|
+
deleteRows(dataTableId: string, filter: DataTableFilterInput, options?: DataTableIdOptions): Promise<{
|
|
351
368
|
deletedCount: number;
|
|
352
369
|
dataTableId: string;
|
|
353
370
|
tableName: string;
|
|
@@ -428,11 +445,9 @@ export interface InstanceAiWorkspaceService {
|
|
|
428
445
|
}
|
|
429
446
|
export type LocalGatewayStatus = {
|
|
430
447
|
status: 'connected';
|
|
431
|
-
} | {
|
|
432
|
-
status: 'disconnected';
|
|
433
448
|
capabilities: string[];
|
|
434
449
|
} | {
|
|
435
|
-
status: 'disabled';
|
|
450
|
+
status: 'disabledGlobally' | 'disconnected' | 'disabled';
|
|
436
451
|
};
|
|
437
452
|
export interface InstanceAiContext {
|
|
438
453
|
userId: string;
|
|
@@ -446,6 +461,7 @@ export interface InstanceAiContext {
|
|
|
446
461
|
localMcpServer?: LocalMcpServer;
|
|
447
462
|
localGatewayStatus?: LocalGatewayStatus;
|
|
448
463
|
permissions?: InstanceAiPermissions;
|
|
464
|
+
allowedRunWorkflowIds?: ReadonlySet<string>;
|
|
449
465
|
branchReadOnly?: boolean;
|
|
450
466
|
licenseHints?: string[];
|
|
451
467
|
domainAccessTracker?: DomainAccessTracker;
|
|
@@ -453,12 +469,13 @@ export interface InstanceAiContext {
|
|
|
453
469
|
aiCreatedWorkflowIds?: Set<string>;
|
|
454
470
|
currentUserAttachments?: InstanceAiAttachment[];
|
|
455
471
|
logger?: Logger;
|
|
472
|
+
nodeTypesProvider?: INodeTypes;
|
|
456
473
|
}
|
|
457
474
|
export interface TaskStorage {
|
|
458
475
|
get(threadId: string): Promise<TaskList | null>;
|
|
459
476
|
save(threadId: string, tasks: TaskList): Promise<void>;
|
|
460
477
|
}
|
|
461
|
-
export type PlannedTaskKind = 'delegate' | 'build-workflow' | 'manage-data-tables' | 'research';
|
|
478
|
+
export type PlannedTaskKind = 'delegate' | 'build-workflow' | 'manage-data-tables' | 'research' | 'checkpoint';
|
|
462
479
|
export interface PlannedTask {
|
|
463
480
|
id: string;
|
|
464
481
|
title: string;
|
|
@@ -479,7 +496,7 @@ export interface PlannedTaskRecord extends PlannedTask {
|
|
|
479
496
|
startedAt?: number;
|
|
480
497
|
finishedAt?: number;
|
|
481
498
|
}
|
|
482
|
-
export type PlannedTaskGraphStatus = 'active' | 'awaiting_replan' | 'completed' | 'cancelled';
|
|
499
|
+
export type PlannedTaskGraphStatus = 'awaiting_approval' | 'active' | 'awaiting_replan' | 'completed' | 'cancelled';
|
|
483
500
|
export interface PlannedTaskGraph {
|
|
484
501
|
planRunId: string;
|
|
485
502
|
messageGroupId?: string;
|
|
@@ -493,6 +510,10 @@ export type PlannedTaskSchedulerAction = {
|
|
|
493
510
|
type: 'dispatch';
|
|
494
511
|
graph: PlannedTaskGraph;
|
|
495
512
|
tasks: PlannedTaskRecord[];
|
|
513
|
+
} | {
|
|
514
|
+
type: 'orchestrate-checkpoint';
|
|
515
|
+
graph: PlannedTaskGraph;
|
|
516
|
+
tasks: PlannedTaskRecord[];
|
|
496
517
|
} | {
|
|
497
518
|
type: 'replan';
|
|
498
519
|
graph: PlannedTaskGraph;
|
|
@@ -525,11 +546,35 @@ export interface PlannedTaskService {
|
|
|
525
546
|
error?: string;
|
|
526
547
|
finishedAt?: number;
|
|
527
548
|
}): Promise<PlannedTaskGraph | null>;
|
|
549
|
+
markCheckpointSucceeded(threadId: string, taskId: string, update: {
|
|
550
|
+
result?: string;
|
|
551
|
+
outcome?: Record<string, unknown>;
|
|
552
|
+
finishedAt?: number;
|
|
553
|
+
}): Promise<CheckpointSettleResult>;
|
|
554
|
+
markCheckpointFailed(threadId: string, taskId: string, update: {
|
|
555
|
+
error?: string;
|
|
556
|
+
outcome?: Record<string, unknown>;
|
|
557
|
+
finishedAt?: number;
|
|
558
|
+
}): Promise<CheckpointSettleResult>;
|
|
559
|
+
revertCheckpointToPlanned(threadId: string, taskId: string): Promise<CheckpointSettleResult>;
|
|
528
560
|
tick(threadId: string, options?: {
|
|
529
561
|
availableSlots?: number;
|
|
530
562
|
}): Promise<PlannedTaskSchedulerAction>;
|
|
531
563
|
clear(threadId: string): Promise<void>;
|
|
564
|
+
approvePlan(threadId: string): Promise<PlannedTaskGraph | null>;
|
|
565
|
+
revertToActive(threadId: string): Promise<PlannedTaskGraph | null>;
|
|
532
566
|
}
|
|
567
|
+
export type CheckpointSettleResult = {
|
|
568
|
+
ok: true;
|
|
569
|
+
graph: PlannedTaskGraph;
|
|
570
|
+
} | {
|
|
571
|
+
ok: false;
|
|
572
|
+
reason: 'not-found' | 'wrong-kind' | 'wrong-status';
|
|
573
|
+
actual?: {
|
|
574
|
+
kind?: PlannedTaskKind;
|
|
575
|
+
status?: PlannedTaskStatus;
|
|
576
|
+
};
|
|
577
|
+
};
|
|
533
578
|
export interface McpServerConfig {
|
|
534
579
|
name: string;
|
|
535
580
|
url?: string;
|
|
@@ -620,12 +665,35 @@ export interface SpawnBackgroundTaskOptions {
|
|
|
620
665
|
traceContext?: InstanceAiTraceContext;
|
|
621
666
|
plannedTaskId?: string;
|
|
622
667
|
workItemId?: string;
|
|
668
|
+
dedupeKey?: {
|
|
669
|
+
plannedTaskId?: string;
|
|
670
|
+
workflowId?: string;
|
|
671
|
+
role: string;
|
|
672
|
+
};
|
|
673
|
+
parentCheckpointId?: string;
|
|
623
674
|
run: (signal: AbortSignal, drainCorrections: () => string[], waitForCorrection: () => Promise<void>) => Promise<string | BackgroundTaskResult>;
|
|
624
675
|
}
|
|
676
|
+
export type SpawnBackgroundTaskResult = {
|
|
677
|
+
status: 'started';
|
|
678
|
+
taskId: string;
|
|
679
|
+
agentId: string;
|
|
680
|
+
} | {
|
|
681
|
+
status: 'limit-reached';
|
|
682
|
+
} | {
|
|
683
|
+
status: 'duplicate';
|
|
684
|
+
existing: {
|
|
685
|
+
taskId: string;
|
|
686
|
+
agentId: string;
|
|
687
|
+
role: string;
|
|
688
|
+
plannedTaskId?: string;
|
|
689
|
+
workItemId?: string;
|
|
690
|
+
};
|
|
691
|
+
};
|
|
625
692
|
export interface WorkflowTaskService {
|
|
626
693
|
reportBuildOutcome(outcome: WorkflowBuildOutcome): Promise<WorkflowLoopAction>;
|
|
627
694
|
reportVerificationVerdict(verdict: VerificationResult): Promise<WorkflowLoopAction>;
|
|
628
695
|
getBuildOutcome(workItemId: string): Promise<WorkflowBuildOutcome | undefined>;
|
|
696
|
+
getWorkflowLoopState(workItemId: string): Promise<WorkflowLoopState | undefined>;
|
|
629
697
|
updateBuildOutcome(workItemId: string, update: Partial<WorkflowBuildOutcome>): Promise<void>;
|
|
630
698
|
}
|
|
631
699
|
export interface OrchestrationContext {
|
|
@@ -639,6 +707,7 @@ export interface OrchestrationContext {
|
|
|
639
707
|
subAgentMaxSteps: number;
|
|
640
708
|
eventBus: InstanceAiEventBus;
|
|
641
709
|
logger: Logger;
|
|
710
|
+
trackTelemetry?: (eventName: string, properties: Record<string, GenericValue>) => void;
|
|
642
711
|
domainTools: ToolsInput;
|
|
643
712
|
abortSignal: AbortSignal;
|
|
644
713
|
taskStorage: TaskStorage;
|
|
@@ -665,20 +734,26 @@ export interface OrchestrationContext {
|
|
|
665
734
|
mcpTools?: ToolsInput;
|
|
666
735
|
oauth2CallbackUrl?: string;
|
|
667
736
|
webhookBaseUrl?: string;
|
|
668
|
-
|
|
737
|
+
formBaseUrl?: string;
|
|
738
|
+
spawnBackgroundTask?: (opts: SpawnBackgroundTaskOptions) => SpawnBackgroundTaskResult;
|
|
669
739
|
cancelBackgroundTask?: (taskId: string) => Promise<void>;
|
|
670
740
|
plannedTaskService?: PlannedTaskService;
|
|
671
741
|
schedulePlannedTasks?: () => Promise<void>;
|
|
672
742
|
workspace?: Workspace;
|
|
673
743
|
builderSandboxFactory?: BuilderSandboxFactory;
|
|
744
|
+
builderSandboxSessionRegistry?: BuilderSandboxSessionRegistry;
|
|
674
745
|
nodeDefinitionDirs?: string[];
|
|
675
746
|
memory?: Memory;
|
|
676
747
|
currentUserMessage?: string;
|
|
677
748
|
isReplanFollowUp?: boolean;
|
|
749
|
+
isCheckpointFollowUp?: boolean;
|
|
750
|
+
checkpointTaskId?: string;
|
|
678
751
|
domainContext?: InstanceAiContext;
|
|
679
752
|
researchMode?: boolean;
|
|
680
753
|
iterationLog?: IterationLog;
|
|
681
754
|
sendCorrectionToTask?: (taskId: string, correction: string) => 'queued' | 'task-completed' | 'task-not-found';
|
|
755
|
+
touchRun?: () => boolean;
|
|
756
|
+
touchBackgroundTask?: (taskId: string) => boolean;
|
|
682
757
|
workflowTaskService?: WorkflowTaskService;
|
|
683
758
|
tracingProxyConfig?: ServiceProxyConfig;
|
|
684
759
|
getRunningTaskSummaries?: () => Array<{
|
|
@@ -693,6 +768,7 @@ export interface CreateInstanceAgentOptions {
|
|
|
693
768
|
context: InstanceAiContext;
|
|
694
769
|
orchestrationContext?: OrchestrationContext;
|
|
695
770
|
mcpServers?: McpServerConfig[];
|
|
771
|
+
mcpManager: McpClientManager;
|
|
696
772
|
memoryConfig: InstanceAiMemoryConfig;
|
|
697
773
|
memory?: Memory;
|
|
698
774
|
workspace?: Workspace;
|
|
@@ -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
|
-
const json = builder.toJSON();
|
|
26
|
-
const schemaValidation = (0, workflow_sdk_1.validateWorkflow)(json);
|
|
26
|
+
const json = builder.toJSON({ tidyUp: true });
|
|
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,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAK9C,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, 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';
|
|
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,15 +1,19 @@
|
|
|
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.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;
|
|
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; } });
|
|
11
13
|
Object.defineProperty(exports, "attemptRecordSchema", { enumerable: true, get: function () { return workflow_loop_state_1.attemptRecordSchema; } });
|
|
12
14
|
Object.defineProperty(exports, "triggerTypeSchema", { enumerable: true, get: function () { return workflow_loop_state_1.triggerTypeSchema; } });
|
|
15
|
+
Object.defineProperty(exports, "workflowVerificationReadinessSchema", { enumerable: true, get: function () { return workflow_loop_state_1.workflowVerificationReadinessSchema; } });
|
|
16
|
+
Object.defineProperty(exports, "workflowSetupRequirementSchema", { enumerable: true, get: function () { return workflow_loop_state_1.workflowSetupRequirementSchema; } });
|
|
13
17
|
Object.defineProperty(exports, "workflowBuildOutcomeSchema", { enumerable: true, get: function () { return workflow_loop_state_1.workflowBuildOutcomeSchema; } });
|
|
14
18
|
Object.defineProperty(exports, "verificationVerdictSchema", { enumerable: true, get: function () { return workflow_loop_state_1.verificationVerdictSchema; } });
|
|
15
19
|
Object.defineProperty(exports, "verificationResultSchema", { enumerable: true, get: function () { return workflow_loop_state_1.verificationResultSchema; } });
|
|
@@ -22,4 +26,10 @@ var guidance_1 = require("./guidance");
|
|
|
22
26
|
Object.defineProperty(exports, "formatWorkflowLoopGuidance", { enumerable: true, get: function () { return guidance_1.formatWorkflowLoopGuidance; } });
|
|
23
27
|
var workflow_task_service_1 = require("./workflow-task-service");
|
|
24
28
|
Object.defineProperty(exports, "WorkflowTaskCoordinator", { enumerable: true, get: function () { return workflow_task_service_1.WorkflowTaskCoordinator; } });
|
|
29
|
+
var remediation_1 = require("./remediation");
|
|
30
|
+
Object.defineProperty(exports, "MAX_POST_SUBMIT_REMEDIATION_SUBMITS", { enumerable: true, get: function () { return remediation_1.MAX_POST_SUBMIT_REMEDIATION_SUBMITS; } });
|
|
31
|
+
Object.defineProperty(exports, "MAX_PRE_SAVE_SUBMIT_FAILURES", { enumerable: true, get: function () { return remediation_1.MAX_PRE_SAVE_SUBMIT_FAILURES; } });
|
|
32
|
+
Object.defineProperty(exports, "createRemediation", { enumerable: true, get: function () { return remediation_1.createRemediation; } });
|
|
33
|
+
Object.defineProperty(exports, "remainingPostSubmitRemediations", { enumerable: true, get: function () { return remediation_1.remainingPostSubmitRemediations; } });
|
|
34
|
+
Object.defineProperty(exports, "terminalRemediationFromState", { enumerable: true, get: function () { return remediation_1.terminalRemediationFromState; } });
|
|
25
35
|
//# 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,6DAgB+B;AAf9B,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,0IAAA,mCAAmC,OAAA;AACnC,qIAAA,8BAA8B,OAAA;AAC9B,iIAAA,0BAA0B,OAAA;AAC1B,gIAAA,yBAAyB,OAAA;AACzB,+HAAA,wBAAwB,OAAA;AAuBzB,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;
|