agentfootprint 1.4.2 → 1.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (159) hide show
  1. package/AGENTS.md +12 -32
  2. package/CLAUDE.md +20 -30
  3. package/README.md +1 -1
  4. package/dist/adapters/anthropic/AnthropicAdapter.js +9 -10
  5. package/dist/adapters/anthropic/AnthropicAdapter.js.map +1 -1
  6. package/dist/adapters/browser/BrowserAnthropicAdapter.js +26 -8
  7. package/dist/adapters/browser/BrowserAnthropicAdapter.js.map +1 -1
  8. package/dist/concepts/LLMCall.js +6 -0
  9. package/dist/concepts/LLMCall.js.map +1 -1
  10. package/dist/concepts/RAG.js +7 -1
  11. package/dist/concepts/RAG.js.map +1 -1
  12. package/dist/concepts/Swarm.js +1 -0
  13. package/dist/concepts/Swarm.js.map +1 -1
  14. package/dist/esm/adapters/anthropic/AnthropicAdapter.js +9 -10
  15. package/dist/esm/adapters/anthropic/AnthropicAdapter.js.map +1 -1
  16. package/dist/esm/adapters/browser/BrowserAnthropicAdapter.js +26 -8
  17. package/dist/esm/adapters/browser/BrowserAnthropicAdapter.js.map +1 -1
  18. package/dist/esm/concepts/LLMCall.js +6 -0
  19. package/dist/esm/concepts/LLMCall.js.map +1 -1
  20. package/dist/esm/concepts/RAG.js +7 -1
  21. package/dist/esm/concepts/RAG.js.map +1 -1
  22. package/dist/esm/concepts/Swarm.js +1 -0
  23. package/dist/esm/concepts/Swarm.js.map +1 -1
  24. package/dist/esm/executor/agentLoop.js +4 -0
  25. package/dist/esm/executor/agentLoop.js.map +1 -1
  26. package/dist/esm/index.js +6 -0
  27. package/dist/esm/index.js.map +1 -1
  28. package/dist/esm/lib/call/callLLMStage.js +41 -0
  29. package/dist/esm/lib/call/callLLMStage.js.map +1 -1
  30. package/dist/esm/lib/call/helpers.js +361 -3
  31. package/dist/esm/lib/call/helpers.js.map +1 -1
  32. package/dist/esm/lib/call/parseResponseStage.js +12 -3
  33. package/dist/esm/lib/call/parseResponseStage.js.map +1 -1
  34. package/dist/esm/lib/call/streamingCallLLMStage.js +42 -0
  35. package/dist/esm/lib/call/streamingCallLLMStage.js.map +1 -1
  36. package/dist/esm/lib/call/toolExecutionSubflow.js +5 -2
  37. package/dist/esm/lib/call/toolExecutionSubflow.js.map +1 -1
  38. package/dist/esm/lib/concepts/AgentBuilder.js +83 -0
  39. package/dist/esm/lib/concepts/AgentBuilder.js.map +1 -1
  40. package/dist/esm/lib/concepts/AgentRunner.js +77 -63
  41. package/dist/esm/lib/concepts/AgentRunner.js.map +1 -1
  42. package/dist/esm/lib/instructions/InstructionRecorder.js +6 -2
  43. package/dist/esm/lib/instructions/InstructionRecorder.js.map +1 -1
  44. package/dist/esm/lib/loop/buildAgentLoop.js +132 -4
  45. package/dist/esm/lib/loop/buildAgentLoop.js.map +1 -1
  46. package/dist/esm/lib/narrative/agentRenderer.js +79 -14
  47. package/dist/esm/lib/narrative/agentRenderer.js.map +1 -1
  48. package/dist/esm/observe.barrel.js +2 -0
  49. package/dist/esm/observe.barrel.js.map +1 -1
  50. package/dist/esm/providers.barrel.js +1 -1
  51. package/dist/esm/providers.barrel.js.map +1 -1
  52. package/dist/esm/recorders/CostRecorder.js +20 -16
  53. package/dist/esm/recorders/CostRecorder.js.map +1 -1
  54. package/dist/esm/recorders/ExplainRecorder.js +4 -0
  55. package/dist/esm/recorders/ExplainRecorder.js.map +1 -1
  56. package/dist/esm/recorders/RecorderBridge.js +11 -5
  57. package/dist/esm/recorders/RecorderBridge.js.map +1 -1
  58. package/dist/esm/recorders/TokenRecorder.js +26 -24
  59. package/dist/esm/recorders/TokenRecorder.js.map +1 -1
  60. package/dist/esm/recorders/ToolUsageRecorder.js +21 -17
  61. package/dist/esm/recorders/ToolUsageRecorder.js.map +1 -1
  62. package/dist/esm/streaming/StreamEmitter.js.map +1 -1
  63. package/dist/executor/agentLoop.js +4 -0
  64. package/dist/executor/agentLoop.js.map +1 -1
  65. package/dist/index.js +15 -1
  66. package/dist/index.js.map +1 -1
  67. package/dist/lib/call/callLLMStage.js +41 -0
  68. package/dist/lib/call/callLLMStage.js.map +1 -1
  69. package/dist/lib/call/helpers.js +364 -4
  70. package/dist/lib/call/helpers.js.map +1 -1
  71. package/dist/lib/call/parseResponseStage.js +12 -3
  72. package/dist/lib/call/parseResponseStage.js.map +1 -1
  73. package/dist/lib/call/streamingCallLLMStage.js +42 -0
  74. package/dist/lib/call/streamingCallLLMStage.js.map +1 -1
  75. package/dist/lib/call/toolExecutionSubflow.js +5 -2
  76. package/dist/lib/call/toolExecutionSubflow.js.map +1 -1
  77. package/dist/lib/concepts/AgentBuilder.js +83 -0
  78. package/dist/lib/concepts/AgentBuilder.js.map +1 -1
  79. package/dist/lib/concepts/AgentRunner.js +77 -63
  80. package/dist/lib/concepts/AgentRunner.js.map +1 -1
  81. package/dist/lib/instructions/InstructionRecorder.js +6 -2
  82. package/dist/lib/instructions/InstructionRecorder.js.map +1 -1
  83. package/dist/lib/loop/buildAgentLoop.js +132 -4
  84. package/dist/lib/loop/buildAgentLoop.js.map +1 -1
  85. package/dist/lib/narrative/agentRenderer.js +79 -14
  86. package/dist/lib/narrative/agentRenderer.js.map +1 -1
  87. package/dist/observe.barrel.js +4 -1
  88. package/dist/observe.barrel.js.map +1 -1
  89. package/dist/providers.barrel.js +3 -1
  90. package/dist/providers.barrel.js.map +1 -1
  91. package/dist/recorders/CostRecorder.js +20 -16
  92. package/dist/recorders/CostRecorder.js.map +1 -1
  93. package/dist/recorders/ExplainRecorder.js +4 -0
  94. package/dist/recorders/ExplainRecorder.js.map +1 -1
  95. package/dist/recorders/RecorderBridge.js +11 -5
  96. package/dist/recorders/RecorderBridge.js.map +1 -1
  97. package/dist/recorders/TokenRecorder.js +26 -24
  98. package/dist/recorders/TokenRecorder.js.map +1 -1
  99. package/dist/recorders/ToolUsageRecorder.js +21 -17
  100. package/dist/recorders/ToolUsageRecorder.js.map +1 -1
  101. package/dist/streaming/StreamEmitter.js.map +1 -1
  102. package/dist/types/adapters/browser/BrowserAnthropicAdapter.d.ts.map +1 -1
  103. package/dist/types/concepts/LLMCall.d.ts.map +1 -1
  104. package/dist/types/concepts/RAG.d.ts.map +1 -1
  105. package/dist/types/concepts/Swarm.d.ts.map +1 -1
  106. package/dist/types/concepts/index.d.ts +1 -1
  107. package/dist/types/concepts/index.d.ts.map +1 -1
  108. package/dist/types/core/recorders.d.ts +4 -0
  109. package/dist/types/core/recorders.d.ts.map +1 -1
  110. package/dist/types/executor/agentLoop.d.ts.map +1 -1
  111. package/dist/types/index.d.ts +6 -0
  112. package/dist/types/index.d.ts.map +1 -1
  113. package/dist/types/lib/call/callLLMStage.d.ts.map +1 -1
  114. package/dist/types/lib/call/helpers.d.ts +45 -1
  115. package/dist/types/lib/call/helpers.d.ts.map +1 -1
  116. package/dist/types/lib/call/parseResponseStage.d.ts.map +1 -1
  117. package/dist/types/lib/call/streamingCallLLMStage.d.ts.map +1 -1
  118. package/dist/types/lib/call/toolExecutionSubflow.d.ts +12 -0
  119. package/dist/types/lib/call/toolExecutionSubflow.d.ts.map +1 -1
  120. package/dist/types/lib/concepts/Agent.d.ts +1 -1
  121. package/dist/types/lib/concepts/Agent.d.ts.map +1 -1
  122. package/dist/types/lib/concepts/AgentBuilder.d.ts +90 -0
  123. package/dist/types/lib/concepts/AgentBuilder.d.ts.map +1 -1
  124. package/dist/types/lib/concepts/AgentRunner.d.ts +19 -0
  125. package/dist/types/lib/concepts/AgentRunner.d.ts.map +1 -1
  126. package/dist/types/lib/concepts/index.d.ts +1 -1
  127. package/dist/types/lib/concepts/index.d.ts.map +1 -1
  128. package/dist/types/lib/instructions/InstructionRecorder.d.ts +3 -2
  129. package/dist/types/lib/instructions/InstructionRecorder.d.ts.map +1 -1
  130. package/dist/types/lib/loop/buildAgentLoop.d.ts.map +1 -1
  131. package/dist/types/lib/loop/types.d.ts +38 -0
  132. package/dist/types/lib/loop/types.d.ts.map +1 -1
  133. package/dist/types/lib/narrative/agentRenderer.d.ts +7 -2
  134. package/dist/types/lib/narrative/agentRenderer.d.ts.map +1 -1
  135. package/dist/types/observe.barrel.d.ts +1 -0
  136. package/dist/types/observe.barrel.d.ts.map +1 -1
  137. package/dist/types/providers.barrel.d.ts +1 -1
  138. package/dist/types/providers.barrel.d.ts.map +1 -1
  139. package/dist/types/recorders/CostRecorder.d.ts +17 -13
  140. package/dist/types/recorders/CostRecorder.d.ts.map +1 -1
  141. package/dist/types/recorders/ExplainRecorder.d.ts +3 -0
  142. package/dist/types/recorders/ExplainRecorder.d.ts.map +1 -1
  143. package/dist/types/recorders/RecorderBridge.d.ts +7 -3
  144. package/dist/types/recorders/RecorderBridge.d.ts.map +1 -1
  145. package/dist/types/recorders/TokenRecorder.d.ts +17 -18
  146. package/dist/types/recorders/TokenRecorder.d.ts.map +1 -1
  147. package/dist/types/recorders/ToolUsageRecorder.d.ts +15 -11
  148. package/dist/types/recorders/ToolUsageRecorder.d.ts.map +1 -1
  149. package/dist/types/scope/types.d.ts +7 -0
  150. package/dist/types/scope/types.d.ts.map +1 -1
  151. package/dist/types/streaming/StreamEmitter.d.ts +9 -0
  152. package/dist/types/streaming/StreamEmitter.d.ts.map +1 -1
  153. package/dist/types/types/agent.d.ts +7 -0
  154. package/dist/types/types/agent.d.ts.map +1 -1
  155. package/dist/types/types/multiAgent.d.ts +7 -0
  156. package/dist/types/types/multiAgent.d.ts.map +1 -1
  157. package/dist/types/types/tools.d.ts +19 -3
  158. package/dist/types/types/tools.d.ts.map +1 -1
  159. package/package.json +4 -5
@@ -29,6 +29,9 @@ export class Agent {
29
29
  enableStreaming = false;
30
30
  enableVerboseNarrative = false;
31
31
  outputResponseFormat;
32
+ parallelToolsEnabled = false;
33
+ customRoute;
34
+ maxIdenticalFailuresValue;
32
35
  constructor(options) {
33
36
  this.provider = resolveProvider(options.provider);
34
37
  this.agentName = options.name ?? 'agent';
@@ -90,6 +93,81 @@ export class Agent {
90
93
  this.enableStreaming = enabled;
91
94
  return this;
92
95
  }
96
+ /**
97
+ * Run multiple tool calls within a single turn concurrently via Promise.all.
98
+ *
99
+ * Only beneficial when the LLM requests 2+ independent tool calls in one turn
100
+ * (e.g., "look up customer, orders, and product in parallel"). Results are
101
+ * appended to the conversation in the order the LLM requested them.
102
+ *
103
+ * **Caveat:** decide() functions on tool-level instructions mutate a shared
104
+ * Decision Scope — in parallel mode those mutations are not serialized.
105
+ * If your instructions rely on strict ordering, keep sequential (default).
106
+ *
107
+ * @example
108
+ * ```ts
109
+ * Agent.create({ provider })
110
+ * .tools([getCustomer, getOrders, getProduct])
111
+ * .parallelTools(true)
112
+ * .build();
113
+ * ```
114
+ */
115
+ parallelTools(enabled = true) {
116
+ this.parallelToolsEnabled = enabled;
117
+ return this;
118
+ }
119
+ /**
120
+ * Register user-defined routing branches evaluated BEFORE the default
121
+ * `tool-calls | final` routing. First matching `when` predicate wins.
122
+ *
123
+ * Useful for injecting escalation paths, safety gates, or bespoke handlers
124
+ * without touching the Agent loop internals. The default tool-calls and
125
+ * final branches still apply when no user branch matches.
126
+ *
127
+ * @example
128
+ * ```ts
129
+ * Agent.create({ provider })
130
+ * .tool(searchTool)
131
+ * .route({
132
+ * branches: [
133
+ * { id: 'escalate', when: (s) => s.parsedResponse.content.includes('[ESCALATE]'), runner: humanReviewAgent },
134
+ * ],
135
+ * })
136
+ * .build();
137
+ * ```
138
+ */
139
+ route(config) {
140
+ this.customRoute = config;
141
+ return this;
142
+ }
143
+ /**
144
+ * Set the repeated-identical-failure escalation threshold. When a tool call
145
+ * with the exact same (name, args) has failed this many times in a row, a
146
+ * one-shot `escalation` field is injected into that tool result content
147
+ * urging the LLM to change arguments, switch tools, or finalize. Fires
148
+ * exactly once per (name, args) key per conversation — further identical
149
+ * failures are left bare to avoid token bloat.
150
+ *
151
+ * Defaults to `3`. Pass `0` to disable escalation entirely.
152
+ *
153
+ * @example
154
+ * ```ts
155
+ * Agent.create({ provider })
156
+ * .tools([...])
157
+ * .maxIdenticalFailures(2) // fire escalation after 2 identical failures
158
+ * .build();
159
+ *
160
+ * // Disable entirely:
161
+ * Agent.create({ provider }).tools([...]).maxIdenticalFailures(0).build();
162
+ * ```
163
+ */
164
+ maxIdenticalFailures(n) {
165
+ if (!Number.isFinite(n) || n < 0) {
166
+ throw new Error(`AgentBuilder.maxIdenticalFailures: expected a non-negative finite number, got ${n}`);
167
+ }
168
+ this.maxIdenticalFailuresValue = n;
169
+ return this;
170
+ }
93
171
  /**
94
172
  * Enable verbose narrative — full values, no truncation.
95
173
  * Shows complete system prompts, tool results, and LLM outputs in the narrative.
@@ -218,6 +296,11 @@ export class Agent {
218
296
  streaming: this.enableStreaming,
219
297
  verboseNarrative: this.enableVerboseNarrative,
220
298
  responseFormat: this.outputResponseFormat,
299
+ parallelTools: this.parallelToolsEnabled,
300
+ customRoute: this.customRoute,
301
+ ...(this.maxIdenticalFailuresValue !== undefined && {
302
+ maxIdenticalFailures: this.maxIdenticalFailuresValue,
303
+ }),
221
304
  });
222
305
  }
223
306
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AgentBuilder.js","sourceRoot":"","sources":["../../../../src/lib/concepts/AgentBuilder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AgentBuilder.js","sourceRoot":"","sources":["../../../../src/lib/concepts/AgentBuilder.ts"],"names":[],"mappings":"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"}
@@ -33,6 +33,9 @@ export class AgentRunner {
33
33
  initialDecision;
34
34
  streamingEnabled;
35
35
  responseFormat;
36
+ parallelToolsEnabled;
37
+ customRoute;
38
+ maxIdenticalFailures;
36
39
  cachedDecideFunctions;
37
40
  conversationHistory = [];
38
41
  lastExecutor;
@@ -56,6 +59,9 @@ export class AgentRunner {
56
59
  this.initialDecision = options.initialDecision;
57
60
  this.streamingEnabled = options.streaming ?? false;
58
61
  this.responseFormat = options.responseFormat;
62
+ this.parallelToolsEnabled = options.parallelTools ?? false;
63
+ this.customRoute = options.customRoute;
64
+ this.maxIdenticalFailures = options.maxIdenticalFailures;
59
65
  this.verboseNarrative = options.verboseNarrative ?? false;
60
66
  if (this.verboseNarrative) {
61
67
  this.narrativeRenderer = createAgentRenderer({ verbose: true });
@@ -171,37 +177,10 @@ export class AgentRunner {
171
177
  const executor = new FlowChartExecutor(chart, executorOpts);
172
178
  executor.enableNarrative({ renderer: this.narrativeRenderer });
173
179
  executor.attachRecorder(new MetricRecorder('metrics'));
174
- const llmCaptures = [];
175
- let lastSystemPrompt;
176
- let lastToolDescriptions;
177
- let lastMessages;
180
+ // Capture LLM responses + per-call context during traversal
181
+ const { recorder: llmCaptureRecorder, captures: llmCaptures } = this.createLLMCaptureRecorder(bridge);
178
182
  if (bridge) {
179
- const llmCapture = {
180
- id: '__llm-capture',
181
- onWrite(event) {
182
- if (event.key === 'systemPrompt' && typeof event.value === 'string') {
183
- lastSystemPrompt = event.value;
184
- }
185
- if (event.key === 'toolDescriptions' && Array.isArray(event.value)) {
186
- lastToolDescriptions = event.value;
187
- }
188
- if (event.key === 'messages' && Array.isArray(event.value)) {
189
- lastMessages = event.value;
190
- }
191
- // adapterRawResponse fires AFTER context writes — snapshot context per call
192
- if (event.key === 'adapterRawResponse' && event.value) {
193
- llmCaptures.push({
194
- response: event.value,
195
- context: {
196
- systemPrompt: lastSystemPrompt,
197
- toolDescriptions: lastToolDescriptions ? [...lastToolDescriptions] : undefined,
198
- messages: lastMessages ? [...lastMessages] : undefined,
199
- },
200
- });
201
- }
202
- },
203
- };
204
- executor.attachRecorder(llmCapture);
183
+ executor.attachRecorder(llmCaptureRecorder);
205
184
  }
206
185
  const startMs = Date.now();
207
186
  try {
@@ -224,6 +203,7 @@ export class AgentRunner {
224
203
  content: '',
225
204
  iterations: pauseResult.iterations,
226
205
  paused: true,
206
+ reason: 'paused',
227
207
  });
228
208
  return pauseResult;
229
209
  }
@@ -232,12 +212,16 @@ export class AgentRunner {
232
212
  type: 'turn_end',
233
213
  content: agentResult.content,
234
214
  iterations: agentResult.iterations,
215
+ ...(agentResult.maxIterationsReached && { reason: 'maxIterations' }),
235
216
  });
236
217
  if (bridge) {
237
218
  // Dispatch per-iteration LLM calls — each with its own context snapshot
238
219
  const perCallMs = llmCaptures.length > 0 ? Math.round((Date.now() - startMs) / llmCaptures.length) : 0;
239
220
  for (const capture of llmCaptures) {
240
- bridge.dispatchLLMCall(capture.response, perCallMs, capture.context);
221
+ bridge.dispatchLLMCall(capture.response, perCallMs, {
222
+ ...capture.context,
223
+ runtimeStageId: capture.runtimeStageId,
224
+ });
241
225
  }
242
226
  bridge.dispatchTurnComplete(agentResult.content, agentResult.messages.length, agentResult.iterations);
243
227
  }
@@ -278,49 +262,68 @@ export class AgentRunner {
278
262
  if (!checkpoint) {
279
263
  throw new Error('Cannot resume: no checkpoint available.');
280
264
  }
281
- // Capture LLM calls + context during resume (same pattern as run())
265
+ // Capture LLM calls + context during resume (same factory as run())
282
266
  const bridge = this.recorders.length > 0 ? new RecorderBridge(this.recorders) : null;
283
- const llmCaptures = [];
284
- let lastSystemPrompt;
285
- let lastToolDescriptions;
286
- let lastMessages;
267
+ const { recorder: llmCaptureRecorder, captures: llmCaptures } = this.createLLMCaptureRecorder(bridge);
287
268
  if (bridge) {
288
- const llmCapture = {
289
- id: '__llm-capture-resume',
290
- onWrite(event) {
291
- if (event.key === 'systemPrompt' && typeof event.value === 'string') {
292
- lastSystemPrompt = event.value;
293
- }
294
- if (event.key === 'toolDescriptions' && Array.isArray(event.value)) {
295
- lastToolDescriptions = event.value;
296
- }
297
- if (event.key === 'messages' && Array.isArray(event.value)) {
298
- lastMessages = event.value;
299
- }
300
- if (event.key === 'adapterRawResponse' && event.value) {
301
- llmCaptures.push({
302
- response: event.value,
303
- context: {
304
- systemPrompt: lastSystemPrompt,
305
- toolDescriptions: lastToolDescriptions ? [...lastToolDescriptions] : undefined,
306
- messages: lastMessages ? [...lastMessages] : undefined,
307
- },
308
- });
309
- }
310
- },
311
- };
312
- executor.attachRecorder(llmCapture);
269
+ executor.attachRecorder(llmCaptureRecorder);
313
270
  }
314
271
  const startMs = Date.now();
315
272
  await executor.resume(checkpoint, humanResponse);
316
273
  if (bridge) {
317
274
  const perCallMs = llmCaptures.length > 0 ? Math.round((Date.now() - startMs) / llmCaptures.length) : 0;
318
275
  for (const capture of llmCaptures) {
319
- bridge.dispatchLLMCall(capture.response, perCallMs, capture.context);
276
+ bridge.dispatchLLMCall(capture.response, perCallMs, {
277
+ ...capture.context,
278
+ runtimeStageId: capture.runtimeStageId,
279
+ });
320
280
  }
321
281
  }
322
282
  return this.buildResult(executor);
323
283
  }
284
+ /**
285
+ * Create a scope recorder that captures LLM responses + context during traversal.
286
+ * Shared by run() and resume() — eliminates duplication and ensures both paths
287
+ * track runtimeStageId for stream bridge tool events.
288
+ */
289
+ createLLMCaptureRecorder(bridge) {
290
+ const captures = [];
291
+ let lastSystemPrompt;
292
+ let lastToolDescriptions;
293
+ let lastMessages;
294
+ const recorder = {
295
+ id: '__llm-capture',
296
+ onStageStart(event) {
297
+ // Track current stage runtimeStageId — bridge reads it for stream tool events
298
+ if (bridge)
299
+ bridge.setToolRuntimeStageId(event.runtimeStageId);
300
+ },
301
+ onWrite(event) {
302
+ if (event.key === 'systemPrompt' && typeof event.value === 'string') {
303
+ lastSystemPrompt = event.value;
304
+ }
305
+ if (event.key === 'toolDescriptions' && Array.isArray(event.value)) {
306
+ lastToolDescriptions = event.value;
307
+ }
308
+ if (event.key === 'messages' && Array.isArray(event.value)) {
309
+ lastMessages = event.value;
310
+ }
311
+ // adapterRawResponse fires AFTER context writes — snapshot context per call
312
+ if (event.key === 'adapterRawResponse' && event.value) {
313
+ captures.push({
314
+ response: event.value,
315
+ runtimeStageId: event.runtimeStageId,
316
+ context: {
317
+ systemPrompt: lastSystemPrompt,
318
+ toolDescriptions: lastToolDescriptions ? [...lastToolDescriptions] : undefined,
319
+ messages: lastMessages ? [...lastMessages] : undefined,
320
+ },
321
+ });
322
+ }
323
+ },
324
+ };
325
+ return { recorder, captures };
326
+ }
324
327
  /** Extract AgentResult from executor state — shared by run() and resume(). */
325
328
  buildResult(executor) {
326
329
  if (executor.isPaused()) {
@@ -341,8 +344,14 @@ export class AgentRunner {
341
344
  const lastAsst = lastAssistantMessage(messages);
342
345
  const result = state.result ?? (lastAsst ? getTextContent(lastAsst.content) : '');
343
346
  const iterations = state.loopCount ?? 0;
347
+ const maxIterationsReached = state.maxIterationsReached === true;
344
348
  this.conversationHistory = messages;
345
- return { content: result, messages, iterations };
349
+ return {
350
+ content: result,
351
+ messages,
352
+ iterations,
353
+ ...(maxIterationsReached && { maxIterationsReached: true }),
354
+ };
346
355
  }
347
356
  getNarrative() {
348
357
  return this.lastExecutor?.getNarrative() ?? [];
@@ -395,6 +404,11 @@ export class AgentRunner {
395
404
  decideFunctions: this.cachedDecideFunctions,
396
405
  streaming: this.streamingEnabled,
397
406
  responseFormat: this.responseFormat,
407
+ parallelTools: this.parallelToolsEnabled,
408
+ ...(this.maxIdenticalFailures !== undefined && {
409
+ maxIdenticalFailures: this.maxIdenticalFailures,
410
+ }),
411
+ routeExtensions: this.customRoute?.branches,
398
412
  onStreamEvent,
399
413
  onInstructionsFired: (toolId, fired) => {
400
414
  for (const rec of this.recorders) {
@@ -1 +1 @@
1
- {"version":3,"file":"AgentRunner.js","sourceRoot":"","sources":["../../../../src/lib/concepts/AgentRunner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AgentRunner.js","sourceRoot":"","sources":["../../../../src/lib/concepts/AgentRunner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAOhE,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAM9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AACvE,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAEhE,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAI/E,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AA4ChE,MAAM,OAAO,WAAW;IACd,MAAM,CAAC,gBAAgB,GAAG,CAAC,CAAC;IACnB,QAAQ,CAAc;IAC9B,IAAI,CAAS;IACL,gBAAgB,CAAU;IAC1B,QAAQ,CAAe;IACvB,OAAO,CAAS;IAChB,SAAS,CAAkB;IAC3B,YAAY,CAAgB;IAC5B,YAAY,CAAe;IAC3B,oBAAoB,CAAkB;IACtC,kBAAkB,CAAgB;IAClC,oBAAoB,CAA4C;IAChE,iBAAiB,CAA+B;IAChD,eAAe,CAAqC;IACpD,gBAAgB,CAAU;IAC1B,cAAc,CAAkB;IAChC,oBAAoB,CAAU;IAC9B,WAAW,CAAqB;IAChC,oBAAoB,CAAU;IAC9B,qBAAqB,CAAiC;IAC/D,mBAAmB,GAAc,EAAE,CAAC;IACpC,YAAY,CAAqB;IACjC,QAAQ,CAAW;IACV,gBAAgB,CAAU;IACnC,iBAAiB,GAAG,mBAAmB,EAAE,CAAC;IACjC,gBAAgB,GAAG,IAAI,sBAAsB,EAAE,CAAC;IAEjE,YAAY,OAA2B;QACrC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;QACjD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC;QAC3C,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,CAAC;QAChD,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QACzC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC;QAC5D,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,cAAc,CAAC;QACnD,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC;QAC/C,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC;QACzD,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;QACnD,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;QAC/C,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC;QACnD,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;QAC7C,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,aAAa,IAAI,KAAK,CAAC;QAC3D,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC;QACzD,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI,KAAK,CAAC;QAC1D,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,IAAI,CAAC,iBAAiB,GAAG,mBAAmB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAClE,CAAC;QAED,wEAAwE;QACxE,gFAAgF;QAChF,IAAI,IAAI,CAAC,iBAAiB,EAAE,MAAM,EAAE,CAAC;YACnC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC3C,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;oBAChB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;wBAC/B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;4BAChC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;wBAC/B,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,sEAAsE;QACtE,8EAA8E;QAC9E,+FAA+F;QAC/F,IAAI,IAAI,CAAC,iBAAiB,EAAE,MAAM,EAAE,CAAC;YACnC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAoB,CAAC;YAC9C,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC3C,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;oBACvB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;wBACtC,IAAI,IAAI,CAAC,MAAM;4BAAE,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;oBACvD,CAAC;gBACH,CAAC;YACH,CAAC;YACD,IAAI,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;gBACvB,IAAI,CAAC,qBAAqB,GAAG,SAAS,CAAC;YACzC,CAAC;QACH,CAAC;IACH,CAAC;IAED,qEAAqE;IACrE,WAAW;QACT,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,cAAc,CACpC,IAAI,CAAC,WAAW,EAAE,EAClB;YACE,QAAQ,EAAE,EAAE;YACZ,WAAW,EAAE,IAAI;SAClB,EACD,EAAE,WAAW,EAAE,IAAI,EAAE,CACtB,CAAC;QACF,IAAI,CAAC,QAAQ,GAAG,iBAAiB,CAAC,IAAgB,CAAC,CAAC;QACpD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,yCAAyC;IACzC,KAAK,CAAC,GAAG,CACP,OAAe,EACf,OAOC;QAED,uEAAuE;QACvE,MAAM,SAAS,GAAG,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,YAAY,CAAC;QAC/F,IAAI,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,CAAC;YACtD,OAAO,CAAC,IAAI,CACV,6FAA6F,CAC9F,CAAC;QACJ,CAAC;QACD,sFAAsF;QACtF,MAAM,UAAU,GACd,OAAO,EAAE,OAAO;YAChB,CAAC,OAAO,EAAE,OAAO;gBACf,CAAC,CAAC,CAAC,CAAmB,EAAE,EAAE;oBACtB,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO;wBAAE,OAAO,CAAC,OAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBACtD,CAAC;gBACH,CAAC,CAAC,SAAS,CAAC,CAAC;QACjB,MAAM,aAAa,GAAwC,UAAU;YACnE,CAAC,CAAC,CAAC,KAAuB,EAAE,EAAE;gBAC1B,IAAI,CAAC;oBACH,UAAU,CAAC,KAAK,CAAC,CAAC;gBACpB,CAAC;gBAAC,MAAM,CAAC;oBACP,aAAa;gBACf,CAAC;YACH,CAAC;YACH,CAAC,CAAC,SAAS,CAAC;QAEd,aAAa,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC;QAE9D,wDAAwD;QACxD,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QACpE,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC7D,IAAI,IAAI,EAAE,CAAC;gBACT,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACpE,MAAM,YAAY,GAAc;oBAC9B,GAAG,IAAI,CAAC,mBAAmB;oBAC3B,WAAW,CAAC,OAAO,CAAC;oBACpB,gBAAgB,CAAC,SAAS,YAAY,CAAC,QAAQ,CAAC,WAAW,GAAG,EAAE;wBAC9D;4BACE,EAAE,EAAE,eAAe,EAAE,WAAW,CAAC,gBAAgB,EAAE;4BACnD,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC,MAAM;4BAClC,SAAS,EAAE,YAAY,CAAC,QAAQ,CAAC,MAAM;yBACxC;qBACF,CAAC;oBACF,iBAAiB,CAAC,UAAU,CAAC,OAAO,EAAE,eAAe,WAAW,CAAC,gBAAgB,EAAE,CAAC;iBACrF,CAAC;gBACF,IAAI,CAAC,mBAAmB,GAAG,YAAY,CAAC;YAC1C,CAAC;QACH,CAAC;QAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC;QAElF,gGAAgG;QAChG,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACrF,MAAM,aAAa,GAAG,MAAM,EAAE,uBAAuB,EAAE,CAAC;QACxD,MAAM,iBAAiB,GACrB,aAAa,IAAI,aAAa;YAC5B,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE;gBACR,aAAa,CAAC,KAAK,CAAC,CAAC;gBACrB,aAAa,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;YACH,CAAC,CAAC,aAAa,IAAI,aAAa,CAAC;QAErC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,cAAc,CACvD,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,EACnC,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,gBAAgB,EAAE,EACrE,EAAE,WAAW,EAAE,IAAI,EAAE,CACtB,CAAC;QACF,IAAI,CAAC,QAAQ,GAAG,iBAAiB,CAAC,IAAgB,CAAC,CAAC;QAEpD,MAAM,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAEnC,MAAM,YAAY,GAA6B,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;QACzE,IAAI,iBAAiB,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC/C,YAAY,CAAC,cAAc,GAAG;gBAC5B,OAAO,EAAE,CAAC,SAAiB,EAAE,KAAa,EAAE,EAAE,CAC5C,iBAAiB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;gBACtD,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC;gBACjB,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;aAChB,CAAC;QACJ,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QAC5D,QAAQ,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAC/D,QAAQ,CAAC,cAAc,CAAC,IAAI,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC;QAEvD,4DAA4D;QAC5D,MAAM,EAAE,QAAQ,EAAE,kBAAkB,EAAE,QAAQ,EAAE,WAAW,EAAE,GAC3D,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;QACxC,IAAI,MAAM,EAAE,CAAC;YACX,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;QAC9C,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE3B,IAAI,CAAC;YACH,MAAM,QAAQ,CAAC,GAAG,CAAC;gBACjB,MAAM,EAAE,OAAO,EAAE,MAAM;gBACvB,SAAS,EAAE,OAAO,EAAE,SAAS;aAC9B,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC;YAC7B,MAAM,EAAE,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAClC,MAAM,GAAG,CAAC;QACZ,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC;QAE7B,kFAAkF;QAClF,IAAI,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC;YACxB,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAC/C,aAAa,EAAE,CAAC;gBACd,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,EAAE;gBACX,UAAU,EAAE,WAAW,CAAC,UAAU;gBAClC,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,QAAiB;aAC1B,CAAC,CAAC;YACH,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAE/C,aAAa,EAAE,CAAC;YACd,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,WAAW,CAAC,OAAO;YAC5B,UAAU,EAAE,WAAW,CAAC,UAAU;YAClC,GAAG,CAAC,WAAW,CAAC,oBAAoB,IAAI,EAAE,MAAM,EAAE,eAAwB,EAAE,CAAC;SAC9E,CAAC,CAAC;QAEH,IAAI,MAAM,EAAE,CAAC;YACX,wEAAwE;YACxE,MAAM,SAAS,GACb,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACvF,KAAK,MAAM,OAAO,IAAI,WAAW,EAAE,CAAC;gBAClC,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,EAAE;oBAClD,GAAG,OAAO,CAAC,OAAO;oBAClB,cAAc,EAAE,OAAO,CAAC,cAAc;iBACvC,CAAC,CAAC;YACL,CAAC;YACD,MAAM,CAAC,oBAAoB,CACzB,WAAW,CAAC,OAAO,EACnB,WAAW,CAAC,QAAQ,CAAC,MAAM,EAC3B,WAAW,CAAC,UAAU,CACvB,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,iBAAiB,EAAE,CAAC;QACrC,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC;gBAC/B,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,YAAY,EAAE,QAAQ,CAAC,YAAY;aACpC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,sEAAsE;IACtE,KAAK,CAAC,MAAM,CAAC,aAAqB;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC;QACnC,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;QAC3E,CAAC;QAED,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,EAAE,CAAC;QAC5C,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC7D,CAAC;QAED,oEAAoE;QACpE,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACrF,MAAM,EAAE,QAAQ,EAAE,kBAAkB,EAAE,QAAQ,EAAE,WAAW,EAAE,GAC3D,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;QACxC,IAAI,MAAM,EAAE,CAAC;YACX,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;QAC9C,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC3B,MAAM,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QAEjD,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,SAAS,GACb,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACvF,KAAK,MAAM,OAAO,IAAI,WAAW,EAAE,CAAC;gBAClC,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,EAAE;oBAClD,GAAG,OAAO,CAAC,OAAO;oBAClB,cAAc,EAAE,OAAO,CAAC,cAAc;iBACvC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACK,wBAAwB,CAAC,MAA6B;QAI5D,MAAM,QAAQ,GAAqB,EAAE,CAAC;QACtC,IAAI,gBAAoC,CAAC;QACzC,IAAI,oBAA8E,CAAC;QACnF,IAAI,YAAmE,CAAC;QAExE,MAAM,QAAQ,GAAa;YACzB,EAAE,EAAE,eAAe;YACnB,YAAY,CAAC,KAAiC;gBAC5C,8EAA8E;gBAC9E,IAAI,MAAM;oBAAE,MAAM,CAAC,qBAAqB,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YACjE,CAAC;YACD,OAAO,CAAC,KAAiB;gBACvB,IAAI,KAAK,CAAC,GAAG,KAAK,cAAc,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;oBACpE,gBAAgB,GAAG,KAAK,CAAC,KAAK,CAAC;gBACjC,CAAC;gBACD,IAAI,KAAK,CAAC,GAAG,KAAK,kBAAkB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;oBACnE,oBAAoB,GAAG,KAAK,CAAC,KAAqD,CAAC;gBACrF,CAAC;gBACD,IAAI,KAAK,CAAC,GAAG,KAAK,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC3D,YAAY,GAAG,KAAK,CAAC,KAAkD,CAAC;gBAC1E,CAAC;gBACD,4EAA4E;gBAC5E,IAAI,KAAK,CAAC,GAAG,KAAK,oBAAoB,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;oBACtD,QAAQ,CAAC,IAAI,CAAC;wBACZ,QAAQ,EAAE,KAAK,CAAC,KAAoB;wBACpC,cAAc,EAAE,KAAK,CAAC,cAAc;wBACpC,OAAO,EAAE;4BACP,YAAY,EAAE,gBAAgB;4BAC9B,gBAAgB,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC,SAAS;4BAC9E,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS;yBACvD;qBACF,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;SACF,CAAC;QAEF,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;IAChC,CAAC;IAED,8EAA8E;IACtE,WAAW,CAAC,QAA2B;QAC7C,IAAI,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC;YACxB,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,EAAE,CAAC;YACpC,MAAM,cAAc,GAAI,QAAQ,CAAC,WAAW,EAAE,EAAE,WAAW,EAAE,QAAsB,IAAI,EAAE,CAAC;YAC1F,IAAI,CAAC,mBAAmB,GAAG,cAAc,CAAC;YAC1C,OAAO;gBACL,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,cAAc;gBACxB,UAAU,EAAG,QAAQ,CAAC,WAAW,EAAE,EAAE,WAAW,EAAE,SAAoB,IAAI,CAAC;gBAC3E,MAAM,EAAE,IAAI;gBACZ,SAAS,EAAE,EAAE,EAAE,SAAiE;aACjF,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,QAAQ,EAAE,WAAW,IAAI,EAAE,CAAC;QAC1C,MAAM,QAAQ,GAAI,KAAK,CAAC,QAAsB,IAAI,EAAE,CAAC;QACrD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,MAAM,GAAI,KAAK,CAAC,MAAiB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC9F,MAAM,UAAU,GAAI,KAAK,CAAC,SAAoB,IAAI,CAAC,CAAC;QACpD,MAAM,oBAAoB,GAAG,KAAK,CAAC,oBAAoB,KAAK,IAAI,CAAC;QAEjE,IAAI,CAAC,mBAAmB,GAAG,QAAQ,CAAC;QAEpC,OAAO;YACL,OAAO,EAAE,MAAM;YACf,QAAQ;YACR,UAAU;YACV,GAAG,CAAC,oBAAoB,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC;SAC5D,CAAC;IACJ,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,YAAY,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IACjD,CAAC;IACD,mBAAmB;QACjB,OAAO,IAAI,CAAC,YAAY,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC;IACxD,CAAC;IACD,WAAW;QACT,OAAO,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE,CAAC;IAC1C,CAAC;IAED,OAAO;QACL,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM,EAAE,IAAI,EAAE,GAAG,cAAc,CAC7B,IAAI,CAAC,WAAW,EAAE,EAClB,EAAE,QAAQ,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EACnC,EAAE,WAAW,EAAE,IAAI,EAAE,CACtB,CAAC;YACF,IAAI,CAAC,QAAQ,GAAG,iBAAiB,CAAC,IAAgB,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,WAAW;QACT,OAAO,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACvC,CAAC;IACD,iBAAiB;QACf,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;IAChC,CAAC;IAEO,WAAW,CAAC,aAAuC;QACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;QACxC,MAAM,cAAc,GAAG,IAAI,CAAC,oBAAoB,IAAI,YAAY,CAAC,IAAI,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC;QAC9F,MAAM,aAAa,GACjB,IAAI,CAAC,kBAAkB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAEvF,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,YAAY,EAAE,EAAE,QAAQ,EAAE,cAAc,EAAE;YAC1C,QAAQ,EAAE;gBACR,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,IAAI,aAAa,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC;gBAC5E,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK;gBAC/B,cAAc,EAAE,IAAI,CAAC,YAAY,EAAE,cAAc;aAClD;YACD,KAAK,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE;YAClC,YAAY,EAAE,IAAI,CAAC,kBAAkB;YACrC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,aAAa,EAAE,IAAI,CAAC,OAAO;YAC3B,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC7B,CAAC,CAAC;oBACE,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK;oBAC9B,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,cAAc;iBACjD;gBACH,CAAC,CAAC,SAAS;YACb,OAAO,EAAE,IAAI,CAAC,YAAY;YAC1B,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;YAC/C,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,eAAe,EAAE,IAAI,CAAC,qBAAqB;YAC3C,SAAS,EAAE,IAAI,CAAC,gBAAgB;YAChC,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,aAAa,EAAE,IAAI,CAAC,oBAAoB;YACxC,GAAG,CAAC,IAAI,CAAC,oBAAoB,KAAK,SAAS,IAAI;gBAC7C,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;aAChD,CAAC;YACF,eAAe,EAAE,IAAI,CAAC,WAAW,EAAE,QAAQ;YAC3C,aAAa;YACb,mBAAmB,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBACrC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;oBACjC,IAAI,GAAG,YAAY,mBAAmB;wBAAE,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBAC3E,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC"}
@@ -109,9 +109,13 @@ export class InstructionRecorder {
109
109
  const toolFirings = this.firings.get(toolId);
110
110
  return toolFirings ? [...toolFirings.keys()] : [];
111
111
  }
112
- /** Serialize for inclusion in executor.getSnapshot().recorders. */
113
112
  toSnapshot() {
114
- return { name: 'Instructions', data: this.getSummary() };
113
+ return {
114
+ name: 'Instructions',
115
+ description: 'Translator (FlowRecorder) — per-tool instruction injection log',
116
+ preferredOperation: 'translate',
117
+ data: this.getSummary(),
118
+ };
115
119
  }
116
120
  clear() {
117
121
  this.firings.clear();
@@ -1 +1 @@
1
- {"version":3,"file":"InstructionRecorder.js","sourceRoot":"","sources":["../../../../src/lib/instructions/InstructionRecorder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"InstructionRecorder.js","sourceRoot":"","sources":["../../../../src/lib/instructions/InstructionRecorder.ts"],"names":[],"mappings":"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"}
@@ -41,6 +41,7 @@ import { getTextContent } from '../../types/content';
41
41
  import { lastAssistantMessage } from '../../memory';
42
42
  import { AgentPattern } from './types';
43
43
  import { applyInstructionOverrides, buildInstructionsToLLMSubflow } from '../instructions';
44
+ import { assistantMessage } from '../../types/messages';
44
45
  // ── Default Agent Routing ─────────────────────────────────────────────────────
45
46
  /**
46
47
  * Default routing for the Agent loop: tool-calls | final.
@@ -168,6 +169,10 @@ export function buildAgentLoop(config, seed, options) {
168
169
  const toolExecutionSubflow = buildToolExecutionSubflow({
169
170
  registry: config.registry,
170
171
  toolProvider: config.toolProvider,
172
+ parallel: config.parallelTools === true,
173
+ ...(config.maxIdenticalFailures !== undefined && {
174
+ maxIdenticalFailures: config.maxIdenticalFailures,
175
+ }),
171
176
  // Always pass instruction config — even without build-time instructions,
172
177
  // tool handlers can return runtime instructions/followUps.
173
178
  instructionConfig: {
@@ -282,7 +287,12 @@ export function buildAgentLoop(config, seed, options) {
282
287
  }
283
288
  builder = builder.addFunction('ParseResponse', parseResponseStage, 'parse-response', 'Parse LLM response into structured result');
284
289
  // ── Routing — one code path for both Agent and Swarm ──
285
- const routing = config.routing ?? defaultAgentRouting(toolExecutionSubflow, useCommitFlag);
290
+ // Priority: explicit config.routing (Swarm) > routeExtensions (user .route()) > default
291
+ const routing = config.routing
292
+ ? config.routing
293
+ : config.routeExtensions && config.routeExtensions.length > 0
294
+ ? extendDefaultRouting(defaultAgentRouting(toolExecutionSubflow, useCommitFlag), config.routeExtensions)
295
+ : defaultAgentRouting(toolExecutionSubflow, useCommitFlag);
286
296
  // Validate branches
287
297
  if (routing.branches.length === 0) {
288
298
  throw new Error('RoutingConfig must have at least one branch.');
@@ -297,13 +307,38 @@ export function buildAgentLoop(config, seed, options) {
297
307
  ].join(', ')}]`);
298
308
  }
299
309
  // Wrap decider with structural maxIterations guard — no custom routing can bypass this.
300
- // If loopCount >= maxIterations, force-route to defaultBranch.
310
+ // If loopCount >= maxIterations, force-route to defaultBranch and set the
311
+ // `maxIterationsReached` flag on scope so ANY default-branch stage (Finalize,
312
+ // Swarm's RouteSpecialist fallback, user-supplied terminal stage, …) can
313
+ // surface the fact that this was a forced termination rather than a chosen
314
+ // one. Setting the flag here — rather than inside a specific Finalize stage —
315
+ // makes the signal available for every routing topology built on top of
316
+ // buildAgentLoop.
317
+ //
301
318
  // The defaultBranch MUST call $break() or breakFn() — validated below.
302
319
  const safeDecider = (scope, breakFn, streamCb) => {
303
320
  const loopCount = scope.loopCount ?? 0;
304
321
  const maxIter = scope.maxIterations ?? 10;
305
- if (loopCount >= maxIter)
322
+ if (loopCount >= maxIter) {
323
+ // Deciders can write to scope — the write is committed with the decider
324
+ // stage's transaction. For TypedScope, property assignment goes through
325
+ // the Proxy set trap; for raw ScopeFacade, fall back to setValue if the
326
+ // property assignment is rejected.
327
+ try {
328
+ scope.maxIterationsReached = true;
329
+ }
330
+ catch {
331
+ if (typeof scope.setValue === 'function') {
332
+ try {
333
+ scope.setValue('maxIterationsReached', true);
334
+ }
335
+ catch {
336
+ /* unable to record — consumers must read loopCount vs maxIterations */
337
+ }
338
+ }
339
+ }
306
340
  return routing.defaultBranch;
341
+ }
307
342
  return routing.decider(scope, breakFn, streamCb);
308
343
  };
309
344
  let decider = builder.addDeciderFunction(routing.deciderName, safeDecider, routing.deciderId, routing.deciderDescription);
@@ -344,6 +379,83 @@ export function buildAgentLoop(config, seed, options) {
344
379
  }
345
380
  return { chart: builder.build(), getStrictFollowUp };
346
381
  }
382
+ /**
383
+ * Wrap a base RoutingConfig with user-defined extensions.
384
+ *
385
+ * User extensions run BEFORE the base decider. First matching `when` predicate wins.
386
+ * If no extension matches, base routing applies. Runners are mounted as subflows
387
+ * when they expose `.toFlowChart()`; otherwise they are wrapped with runnerAsStage.
388
+ */
389
+ function extendDefaultRouting(base, extensions) {
390
+ // Each user branch is a TERMINAL fn stage: run the runner, write the content as the
391
+ // agent's final result, and break the loop. We don't mount as a subflow because we
392
+ // need terminate semantics in the parent loop — a subflow would return control to
393
+ // the decider and keep looping. Drill-down via runner.toFlowChart() is a future
394
+ // enhancement; for Phase 1 we optimize for correctness and simplicity.
395
+ const userBranches = extensions.map((ext, idx) => {
396
+ const id = ext.id ?? `route-${idx}`;
397
+ return {
398
+ id,
399
+ kind: 'fn',
400
+ fn: createRouteExtensionStage(ext.runner),
401
+ name: id,
402
+ description: `User routing branch '${id}'`,
403
+ };
404
+ });
405
+ const extendedBranches = [...userBranches, ...base.branches];
406
+ return {
407
+ deciderName: base.deciderName,
408
+ deciderId: base.deciderId,
409
+ deciderDescription: base.deciderDescription,
410
+ decider: (scope, breakFn, streamCb) => {
411
+ // User predicates evaluated first — first match wins.
412
+ for (let i = 0; i < extensions.length; i++) {
413
+ try {
414
+ if (extensions[i].when(scope)) {
415
+ return userBranches[i].id;
416
+ }
417
+ }
418
+ catch {
419
+ // Predicate errors fall through to base routing (fail-open).
420
+ }
421
+ }
422
+ return base.decider(scope, breakFn, streamCb);
423
+ },
424
+ branches: extendedBranches,
425
+ defaultBranch: base.defaultBranch,
426
+ };
427
+ }
428
+ /**
429
+ * Build a terminal stage fn that invokes a user-provided runner, writes its content
430
+ * as the agent's final answer, and breaks the loop.
431
+ *
432
+ * Called when a user `.route()` branch predicate fires. The runner receives the last
433
+ * user message as input; its output content becomes the agent's assistant response.
434
+ */
435
+ function createRouteExtensionStage(runner) {
436
+ return async (scope) => {
437
+ const messages = scope.messages ?? [];
438
+ const lastUser = [...messages].reverse().find((m) => m.role === 'user');
439
+ const input = typeof lastUser?.content === 'string'
440
+ ? lastUser.content
441
+ : Array.isArray(lastUser?.content)
442
+ ? lastUser.content
443
+ .map((b) => (typeof b?.text === 'string' ? b.text : ''))
444
+ .filter(Boolean)
445
+ .join('\n')
446
+ : '';
447
+ const env = scope.$getEnv();
448
+ const signal = env?.signal;
449
+ const timeoutMs = env?.timeoutMs;
450
+ const output = await runner.run(input, { signal, timeoutMs });
451
+ const content = typeof output?.content === 'string' ? output.content : '';
452
+ // Append the runner's answer as an assistant message so downstream
453
+ // observers (narrative, recorders) see a coherent conversation.
454
+ scope.messages = [...messages, assistantMessage(content)];
455
+ scope.result = content;
456
+ scope.$break();
457
+ };
458
+ }
347
459
  /**
348
460
  * Create the Finalize stage function (decider 'final' branch).
349
461
  *
@@ -356,7 +468,23 @@ function createFinalizeStage(options) {
356
468
  return (scope) => {
357
469
  const messages = scope.messages ?? [];
358
470
  const lastAsst = lastAssistantMessage(messages);
359
- scope.result = lastAsst ? getTextContent(lastAsst.content) : '';
471
+ const lastAsstText = lastAsst ? getTextContent(lastAsst.content) : '';
472
+ // safeDecider sets `maxIterationsReached` when it force-routes at the cap.
473
+ // Read it here — don't re-derive from loopCount — so this stage agrees
474
+ // with whatever safeDecider decided (single source of truth).
475
+ const exhausted = scope.maxIterationsReached === true;
476
+ if (exhausted) {
477
+ const maxIter = scope.maxIterations ?? 10;
478
+ // Prefer the LLM's last reasoning text if present — otherwise synthesize
479
+ // a clear "agent gave up" message so callers never see an unexplained
480
+ // empty response after a long tool-error loop.
481
+ scope.result =
482
+ lastAsstText ||
483
+ `Agent stopped after ${maxIter} iterations without a final answer. The LLM may be stuck in a tool-error retry loop — check the execution trace.`;
484
+ }
485
+ else {
486
+ scope.result = lastAsstText;
487
+ }
360
488
  if (useCommitFlag) {
361
489
  scope.memory_shouldCommit = true;
362
490
  }