@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.
Files changed (266) hide show
  1. package/dist/agent/computer-use-prompt.d.ts +5 -0
  2. package/dist/agent/computer-use-prompt.js +97 -0
  3. package/dist/agent/computer-use-prompt.js.map +1 -0
  4. package/dist/agent/instance-agent.js +48 -73
  5. package/dist/agent/instance-agent.js.map +1 -1
  6. package/dist/agent/mcp-tool-name-validation.d.ts +15 -0
  7. package/dist/agent/mcp-tool-name-validation.js +67 -0
  8. package/dist/agent/mcp-tool-name-validation.js.map +1 -0
  9. package/dist/agent/sanitize-mcp-schemas.d.ts +56 -2
  10. package/dist/agent/sanitize-mcp-schemas.js +226 -19
  11. package/dist/agent/sanitize-mcp-schemas.js.map +1 -1
  12. package/dist/agent/sub-agent-debriefing.d.ts +2 -2
  13. package/dist/agent/sub-agent-factory.d.ts +1 -0
  14. package/dist/agent/sub-agent-factory.js +1 -0
  15. package/dist/agent/sub-agent-factory.js.map +1 -1
  16. package/dist/agent/system-prompt.d.ts +1 -1
  17. package/dist/agent/system-prompt.js +46 -104
  18. package/dist/agent/system-prompt.js.map +1 -1
  19. package/dist/build.tsbuildinfo +1 -1
  20. package/dist/constants/model-settings.d.ts +3 -0
  21. package/dist/constants/model-settings.js +7 -0
  22. package/dist/constants/model-settings.js.map +1 -0
  23. package/dist/domain-access/domain-access-tracker.d.ts +3 -0
  24. package/dist/domain-access/domain-access-tracker.js +16 -0
  25. package/dist/domain-access/domain-access-tracker.js.map +1 -1
  26. package/dist/domain-access/domain-gating.d.ts +35 -6
  27. package/dist/domain-access/domain-gating.js +47 -1
  28. package/dist/domain-access/domain-gating.js.map +1 -1
  29. package/dist/domain-access/index.d.ts +1 -1
  30. package/dist/domain-access/index.js +3 -1
  31. package/dist/domain-access/index.js.map +1 -1
  32. package/dist/index.d.ts +14 -6
  33. package/dist/index.js +19 -2
  34. package/dist/index.js.map +1 -1
  35. package/dist/logger.d.ts +6 -0
  36. package/dist/mcp/mcp-client-manager.d.ts +18 -2
  37. package/dist/mcp/mcp-client-manager.js +124 -20
  38. package/dist/mcp/mcp-client-manager.js.map +1 -1
  39. package/dist/parsers/docx-parser.d.ts +6 -0
  40. package/dist/parsers/docx-parser.js +65 -0
  41. package/dist/parsers/docx-parser.js.map +1 -0
  42. package/dist/parsers/html-parser.d.ts +7 -0
  43. package/dist/parsers/html-parser.js +67 -0
  44. package/dist/parsers/html-parser.js.map +1 -0
  45. package/dist/parsers/index.d.ts +4 -0
  46. package/dist/parsers/index.js +16 -0
  47. package/dist/parsers/index.js.map +1 -0
  48. package/dist/parsers/pdf-parser.d.ts +7 -0
  49. package/dist/parsers/pdf-parser.js +72 -0
  50. package/dist/parsers/pdf-parser.js.map +1 -0
  51. package/dist/parsers/structured-file-parser.d.ts +8 -3
  52. package/dist/parsers/structured-file-parser.js +36 -4
  53. package/dist/parsers/structured-file-parser.js.map +1 -1
  54. package/dist/parsers/validate-attachments.d.ts +14 -0
  55. package/dist/parsers/validate-attachments.js +61 -0
  56. package/dist/parsers/validate-attachments.js.map +1 -0
  57. package/dist/parsers/xlsx-parser.d.ts +2 -0
  58. package/dist/parsers/xlsx-parser.js +75 -0
  59. package/dist/parsers/xlsx-parser.js.map +1 -0
  60. package/dist/planned-tasks/planned-task-permissions.d.ts +2 -0
  61. package/dist/planned-tasks/planned-task-permissions.js +8 -2
  62. package/dist/planned-tasks/planned-task-permissions.js.map +1 -1
  63. package/dist/planned-tasks/planned-task-service.d.ts +14 -1
  64. package/dist/planned-tasks/planned-task-service.js +138 -2
  65. package/dist/planned-tasks/planned-task-service.js.map +1 -1
  66. package/dist/runtime/background-task-manager.d.ts +32 -1
  67. package/dist/runtime/background-task-manager.js +134 -4
  68. package/dist/runtime/background-task-manager.js.map +1 -1
  69. package/dist/runtime/builder-sandbox-session-registry.d.ts +45 -0
  70. package/dist/runtime/builder-sandbox-session-registry.js +159 -0
  71. package/dist/runtime/builder-sandbox-session-registry.js.map +1 -0
  72. package/dist/runtime/liveness-policy.d.ts +40 -0
  73. package/dist/runtime/liveness-policy.js +74 -0
  74. package/dist/runtime/liveness-policy.js.map +1 -0
  75. package/dist/runtime/resumable-stream-executor.d.ts +1 -0
  76. package/dist/runtime/resumable-stream-executor.js +1 -0
  77. package/dist/runtime/resumable-stream-executor.js.map +1 -1
  78. package/dist/runtime/run-state-registry.d.ts +21 -5
  79. package/dist/runtime/run-state-registry.js +109 -7
  80. package/dist/runtime/run-state-registry.js.map +1 -1
  81. package/dist/runtime/stream-runner.d.ts +3 -0
  82. package/dist/runtime/stream-runner.js +3 -0
  83. package/dist/runtime/stream-runner.js.map +1 -1
  84. package/dist/runtime/terminal-response-guard.d.ts +30 -0
  85. package/dist/runtime/terminal-response-guard.js +149 -0
  86. package/dist/runtime/terminal-response-guard.js.map +1 -0
  87. package/dist/storage/agent-tree-snapshot.d.ts +2 -0
  88. package/dist/storage/index.d.ts +2 -0
  89. package/dist/storage/index.js +3 -1
  90. package/dist/storage/index.js.map +1 -1
  91. package/dist/storage/planned-task-storage.js +2 -1
  92. package/dist/storage/planned-task-storage.js.map +1 -1
  93. package/dist/storage/terminal-outcome-storage.d.ts +48 -0
  94. package/dist/storage/terminal-outcome-storage.js +84 -0
  95. package/dist/storage/terminal-outcome-storage.js.map +1 -0
  96. package/dist/storage/workflow-loop-storage.d.ts +442 -16
  97. package/dist/stream/consume-with-hitl.d.ts +2 -0
  98. package/dist/stream/consume-with-hitl.js +2 -0
  99. package/dist/stream/consume-with-hitl.js.map +1 -1
  100. package/dist/stream/map-chunk.js +6 -0
  101. package/dist/stream/map-chunk.js.map +1 -1
  102. package/dist/tools/attachments/parse-file.tool.d.ts +46 -34
  103. package/dist/tools/attachments/parse-file.tool.js +115 -56
  104. package/dist/tools/attachments/parse-file.tool.js.map +1 -1
  105. package/dist/tools/credentials.tool.d.ts +120 -1
  106. package/dist/tools/credentials.tool.js +65 -12
  107. package/dist/tools/credentials.tool.js.map +1 -1
  108. package/dist/tools/data-tables.tool.d.ts +1 -0
  109. package/dist/tools/data-tables.tool.js +64 -24
  110. package/dist/tools/data-tables.tool.js.map +1 -1
  111. package/dist/tools/executions.tool.js +4 -1
  112. package/dist/tools/executions.tool.js.map +1 -1
  113. package/dist/tools/filesystem/create-tools-from-mcp-server.d.ts +2 -1
  114. package/dist/tools/filesystem/create-tools-from-mcp-server.js +74 -5
  115. package/dist/tools/filesystem/create-tools-from-mcp-server.js.map +1 -1
  116. package/dist/tools/index.d.ts +4 -24
  117. package/dist/tools/index.js +23 -7
  118. package/dist/tools/index.js.map +1 -1
  119. package/dist/tools/nodes.tool.js +15 -15
  120. package/dist/tools/nodes.tool.js.map +1 -1
  121. package/dist/tools/orchestration/add-plan-item.tool.js +3 -1
  122. package/dist/tools/orchestration/add-plan-item.tool.js.map +1 -1
  123. package/dist/tools/orchestration/blueprint-accumulator.d.ts +4 -1
  124. package/dist/tools/orchestration/blueprint-accumulator.js +28 -0
  125. package/dist/tools/orchestration/blueprint-accumulator.js.map +1 -1
  126. package/dist/tools/orchestration/blueprint.schema.d.ts +61 -16
  127. package/dist/tools/orchestration/blueprint.schema.js +15 -1
  128. package/dist/tools/orchestration/blueprint.schema.js.map +1 -1
  129. package/dist/tools/orchestration/browser-credential-setup.nudge.d.ts +5 -0
  130. package/dist/tools/orchestration/browser-credential-setup.nudge.js +11 -0
  131. package/dist/tools/orchestration/browser-credential-setup.nudge.js.map +1 -0
  132. package/dist/tools/orchestration/browser-credential-setup.prompt.js +2 -1
  133. package/dist/tools/orchestration/browser-credential-setup.prompt.js.map +1 -1
  134. package/dist/tools/orchestration/browser-credential-setup.tool.js +55 -7
  135. package/dist/tools/orchestration/browser-credential-setup.tool.js.map +1 -1
  136. package/dist/tools/orchestration/build-workflow-agent.prompt.js +86 -60
  137. package/dist/tools/orchestration/build-workflow-agent.prompt.js.map +1 -1
  138. package/dist/tools/orchestration/build-workflow-agent.tool.d.ts +56 -3
  139. package/dist/tools/orchestration/build-workflow-agent.tool.js +1020 -300
  140. package/dist/tools/orchestration/build-workflow-agent.tool.js.map +1 -1
  141. package/dist/tools/orchestration/builder-memory-compaction.d.ts +38 -0
  142. package/dist/tools/orchestration/builder-memory-compaction.js +146 -0
  143. package/dist/tools/orchestration/builder-memory-compaction.js.map +1 -0
  144. package/dist/tools/orchestration/complete-checkpoint.tool.d.ts +2 -0
  145. package/dist/tools/orchestration/complete-checkpoint.tool.js +76 -0
  146. package/dist/tools/orchestration/complete-checkpoint.tool.js.map +1 -0
  147. package/dist/tools/orchestration/data-table-agent.tool.js +34 -17
  148. package/dist/tools/orchestration/data-table-agent.tool.js.map +1 -1
  149. package/dist/tools/orchestration/delegate.tool.js +34 -16
  150. package/dist/tools/orchestration/delegate.tool.js.map +1 -1
  151. package/dist/tools/orchestration/plan-agent-prompt.d.ts +1 -1
  152. package/dist/tools/orchestration/plan-agent-prompt.js +7 -0
  153. package/dist/tools/orchestration/plan-agent-prompt.js.map +1 -1
  154. package/dist/tools/orchestration/plan-with-agent.tool.d.ts +23 -0
  155. package/dist/tools/orchestration/plan-with-agent.tool.js +314 -13
  156. package/dist/tools/orchestration/plan-with-agent.tool.js.map +1 -1
  157. package/dist/tools/orchestration/plan.tool.js +17 -1
  158. package/dist/tools/orchestration/plan.tool.js.map +1 -1
  159. package/dist/tools/orchestration/report-verification-verdict.tool.d.ts +40 -2
  160. package/dist/tools/orchestration/report-verification-verdict.tool.js +85 -6
  161. package/dist/tools/orchestration/report-verification-verdict.tool.js.map +1 -1
  162. package/dist/tools/orchestration/research-with-agent.tool.js +33 -16
  163. package/dist/tools/orchestration/research-with-agent.tool.js.map +1 -1
  164. package/dist/tools/orchestration/tracing-utils.js +8 -0
  165. package/dist/tools/orchestration/tracing-utils.js.map +1 -1
  166. package/dist/tools/orchestration/verify-built-workflow.tool.d.ts +8 -2
  167. package/dist/tools/orchestration/verify-built-workflow.tool.js +476 -6
  168. package/dist/tools/orchestration/verify-built-workflow.tool.js.map +1 -1
  169. package/dist/tools/research.tool.js +56 -10
  170. package/dist/tools/research.tool.js.map +1 -1
  171. package/dist/tools/shared/ask-user.tool.d.ts +1 -0
  172. package/dist/tools/shared/ask-user.tool.js +3 -2
  173. package/dist/tools/shared/ask-user.tool.js.map +1 -1
  174. package/dist/tools/templates.tool.js +5 -90
  175. package/dist/tools/templates.tool.js.map +1 -1
  176. package/dist/tools/web-research/sanitize-web-content.d.ts +0 -1
  177. package/dist/tools/web-research/sanitize-web-content.js +0 -9
  178. package/dist/tools/web-research/sanitize-web-content.js.map +1 -1
  179. package/dist/tools/workflows/apply-workflow-credentials.tool.d.ts +2 -2
  180. package/dist/tools/workflows/build-workflow.tool.d.ts +2 -2
  181. package/dist/tools/workflows/build-workflow.tool.js +6 -4
  182. package/dist/tools/workflows/build-workflow.tool.js.map +1 -1
  183. package/dist/tools/workflows/materialize-node-type.tool.d.ts +8 -8
  184. package/dist/tools/workflows/resolve-credentials.d.ts +9 -4
  185. package/dist/tools/workflows/resolve-credentials.js +59 -27
  186. package/dist/tools/workflows/resolve-credentials.js.map +1 -1
  187. package/dist/tools/workflows/setup-workflow.schema.d.ts +40 -0
  188. package/dist/tools/workflows/setup-workflow.service.d.ts +5 -1
  189. package/dist/tools/workflows/setup-workflow.service.js +71 -5
  190. package/dist/tools/workflows/setup-workflow.service.js.map +1 -1
  191. package/dist/tools/workflows/submit-workflow-identity.d.ts +25 -3
  192. package/dist/tools/workflows/submit-workflow-identity.js +92 -5
  193. package/dist/tools/workflows/submit-workflow-identity.js.map +1 -1
  194. package/dist/tools/workflows/submit-workflow.tool.d.ts +60 -6
  195. package/dist/tools/workflows/submit-workflow.tool.js +102 -19
  196. package/dist/tools/workflows/submit-workflow.tool.js.map +1 -1
  197. package/dist/tools/workflows/workflow-json-utils.d.ts +4 -0
  198. package/dist/tools/workflows/workflow-json-utils.js +54 -0
  199. package/dist/tools/workflows/workflow-json-utils.js.map +1 -0
  200. package/dist/tools/workflows.tool.d.ts +7 -1
  201. package/dist/tools/workflows.tool.js +283 -54
  202. package/dist/tools/workflows.tool.js.map +1 -1
  203. package/dist/tracing/langsmith-tracing.d.ts +2 -0
  204. package/dist/tracing/langsmith-tracing.js +12 -3
  205. package/dist/tracing/langsmith-tracing.js.map +1 -1
  206. package/dist/tracing/trace-replay.d.ts +3 -0
  207. package/dist/tracing/trace-replay.js +65 -0
  208. package/dist/tracing/trace-replay.js.map +1 -1
  209. package/dist/types.d.ts +92 -16
  210. package/dist/workflow-builder/parse-validate.d.ts +5 -1
  211. package/dist/workflow-builder/parse-validate.js +5 -4
  212. package/dist/workflow-builder/parse-validate.js.map +1 -1
  213. package/dist/workflow-loop/guidance.js +8 -2
  214. package/dist/workflow-loop/guidance.js.map +1 -1
  215. package/dist/workflow-loop/index.d.ts +3 -2
  216. package/dist/workflow-loop/index.js +11 -1
  217. package/dist/workflow-loop/index.js.map +1 -1
  218. package/dist/workflow-loop/remediation.d.ts +13 -0
  219. package/dist/workflow-loop/remediation.js +36 -0
  220. package/dist/workflow-loop/remediation.js.map +1 -0
  221. package/dist/workflow-loop/runtime.js +7 -0
  222. package/dist/workflow-loop/runtime.js.map +1 -1
  223. package/dist/workflow-loop/workflow-loop-controller.d.ts +1 -1
  224. package/dist/workflow-loop/workflow-loop-controller.js +196 -29
  225. package/dist/workflow-loop/workflow-loop-controller.js.map +1 -1
  226. package/dist/workflow-loop/workflow-loop-state.d.ts +500 -10
  227. package/dist/workflow-loop/workflow-loop-state.js +74 -1
  228. package/dist/workflow-loop/workflow-loop-state.js.map +1 -1
  229. package/dist/workflow-loop/workflow-task-service.d.ts +2 -1
  230. package/dist/workflow-loop/workflow-task-service.js +4 -0
  231. package/dist/workflow-loop/workflow-task-service.js.map +1 -1
  232. package/dist/workspace/builder-sandbox-factory.d.ts +3 -4
  233. package/dist/workspace/builder-sandbox-factory.js +74 -35
  234. package/dist/workspace/builder-sandbox-factory.js.map +1 -1
  235. package/dist/workspace/create-workspace.d.ts +2 -0
  236. package/dist/workspace/create-workspace.js.map +1 -1
  237. package/dist/workspace/n8n-sandbox-filesystem.js +2 -2
  238. package/dist/workspace/n8n-sandbox-filesystem.js.map +1 -1
  239. package/dist/workspace/n8n-sandbox-sandbox.d.ts +2 -3
  240. package/dist/workspace/n8n-sandbox-sandbox.js +3 -7
  241. package/dist/workspace/n8n-sandbox-sandbox.js.map +1 -1
  242. package/dist/workspace/sandbox-setup.d.ts +1 -1
  243. package/dist/workspace/sandbox-setup.js +41 -16
  244. package/dist/workspace/sandbox-setup.js.map +1 -1
  245. package/dist/workspace/snapshot-manager.d.ts +14 -2
  246. package/dist/workspace/snapshot-manager.js +57 -1
  247. package/dist/workspace/snapshot-manager.js.map +1 -1
  248. package/package.json +35 -10
  249. package/dist/tools/templates/template-api.d.ts +0 -21
  250. package/dist/tools/templates/template-api.js +0 -104
  251. package/dist/tools/templates/template-api.js.map +0 -1
  252. package/dist/tools/templates/types.d.ts +0 -52
  253. package/dist/tools/templates/types.js +0 -37
  254. package/dist/tools/templates/types.js.map +0 -1
  255. package/dist/tools/utils/mermaid.utils.d.ts +0 -15
  256. package/dist/tools/utils/mermaid.utils.js +0 -622
  257. package/dist/tools/utils/mermaid.utils.js.map +0 -1
  258. package/dist/tools/utils/node-configuration.utils.d.ts +0 -6
  259. package/dist/tools/utils/node-configuration.utils.js +0 -77
  260. package/dist/tools/utils/node-configuration.utils.js.map +0 -1
  261. package/dist/workspace/n8n-sandbox-client.d.ts +0 -105
  262. package/dist/workspace/n8n-sandbox-client.js +0 -335
  263. package/dist/workspace/n8n-sandbox-client.js.map +0 -1
  264. package/dist/workspace/n8n-sandbox-image-manager.d.ts +0 -5
  265. package/dist/workspace/n8n-sandbox-image-manager.js +0 -25
  266. 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
- delete(workflowId: string): Promise<void>;
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>>): Promise<{
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>): Promise<{
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
- spawnBackgroundTask?: (opts: SpawnBackgroundTaskOptions) => void;
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 declare function parseAndValidate(code: string): ParseAndValidateResult;
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":";;AAgDA,4CA+BC;AAQD,8CAmBC;AAlGD,oDAAiF;AAEjF,iDAAuD;AAavD,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,CAAC,IAAY;IAE5C,MAAM,WAAW,GAAG,IAAA,oCAAqB,EAAC,IAAI,CAAC,CAAC;IAEhD,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,EAAE,CAAC;QAC3C,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;QAG9B,MAAM,gBAAgB,GAAG,IAAA,+BAAgB,EAAC,IAAI,CAAC,CAAC;QAChD,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"}
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
- '(no plan this is a single-task rebuild, and the `workflowId` parameter is required ' +
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
- '(no plan this is a single-task patch, and the `workflowId` parameter is required ' +
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,gEA6CC;AA7CD,SAAgB,0BAA0B,CACzC,MAA0B,EAC1B,UAAuC,EAAE;IAEzC,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACrB,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,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,qFAAqF;gBACrF,iFAAiF;gBACjF,8DAA8D,CAC9D,CAAC;IACJ,CAAC;AACF,CAAC"}
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,6DAY+B;AAX9B,8HAAA,uBAAuB,OAAA;AACvB,+HAAA,wBAAwB,OAAA;AACxB,+HAAA,wBAAwB,OAAA;AACxB,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;AAkBzB,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"}
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;KAClB,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,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;QAE1E,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;AAlCD,kDAkCC"}
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;