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.
- package/AGENTS.md +12 -32
- package/CLAUDE.md +20 -30
- package/README.md +1 -1
- package/dist/adapters/anthropic/AnthropicAdapter.js +9 -10
- package/dist/adapters/anthropic/AnthropicAdapter.js.map +1 -1
- package/dist/adapters/browser/BrowserAnthropicAdapter.js +26 -8
- package/dist/adapters/browser/BrowserAnthropicAdapter.js.map +1 -1
- package/dist/concepts/LLMCall.js +6 -0
- package/dist/concepts/LLMCall.js.map +1 -1
- package/dist/concepts/RAG.js +7 -1
- package/dist/concepts/RAG.js.map +1 -1
- package/dist/concepts/Swarm.js +1 -0
- package/dist/concepts/Swarm.js.map +1 -1
- package/dist/esm/adapters/anthropic/AnthropicAdapter.js +9 -10
- package/dist/esm/adapters/anthropic/AnthropicAdapter.js.map +1 -1
- package/dist/esm/adapters/browser/BrowserAnthropicAdapter.js +26 -8
- package/dist/esm/adapters/browser/BrowserAnthropicAdapter.js.map +1 -1
- package/dist/esm/concepts/LLMCall.js +6 -0
- package/dist/esm/concepts/LLMCall.js.map +1 -1
- package/dist/esm/concepts/RAG.js +7 -1
- package/dist/esm/concepts/RAG.js.map +1 -1
- package/dist/esm/concepts/Swarm.js +1 -0
- package/dist/esm/concepts/Swarm.js.map +1 -1
- package/dist/esm/executor/agentLoop.js +4 -0
- package/dist/esm/executor/agentLoop.js.map +1 -1
- package/dist/esm/index.js +6 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/call/callLLMStage.js +41 -0
- package/dist/esm/lib/call/callLLMStage.js.map +1 -1
- package/dist/esm/lib/call/helpers.js +361 -3
- package/dist/esm/lib/call/helpers.js.map +1 -1
- package/dist/esm/lib/call/parseResponseStage.js +12 -3
- package/dist/esm/lib/call/parseResponseStage.js.map +1 -1
- package/dist/esm/lib/call/streamingCallLLMStage.js +42 -0
- package/dist/esm/lib/call/streamingCallLLMStage.js.map +1 -1
- package/dist/esm/lib/call/toolExecutionSubflow.js +5 -2
- package/dist/esm/lib/call/toolExecutionSubflow.js.map +1 -1
- package/dist/esm/lib/concepts/AgentBuilder.js +83 -0
- package/dist/esm/lib/concepts/AgentBuilder.js.map +1 -1
- package/dist/esm/lib/concepts/AgentRunner.js +77 -63
- package/dist/esm/lib/concepts/AgentRunner.js.map +1 -1
- package/dist/esm/lib/instructions/InstructionRecorder.js +6 -2
- package/dist/esm/lib/instructions/InstructionRecorder.js.map +1 -1
- package/dist/esm/lib/loop/buildAgentLoop.js +132 -4
- package/dist/esm/lib/loop/buildAgentLoop.js.map +1 -1
- package/dist/esm/lib/narrative/agentRenderer.js +79 -14
- package/dist/esm/lib/narrative/agentRenderer.js.map +1 -1
- package/dist/esm/observe.barrel.js +2 -0
- package/dist/esm/observe.barrel.js.map +1 -1
- package/dist/esm/providers.barrel.js +1 -1
- package/dist/esm/providers.barrel.js.map +1 -1
- package/dist/esm/recorders/CostRecorder.js +20 -16
- package/dist/esm/recorders/CostRecorder.js.map +1 -1
- package/dist/esm/recorders/ExplainRecorder.js +4 -0
- package/dist/esm/recorders/ExplainRecorder.js.map +1 -1
- package/dist/esm/recorders/RecorderBridge.js +11 -5
- package/dist/esm/recorders/RecorderBridge.js.map +1 -1
- package/dist/esm/recorders/TokenRecorder.js +26 -24
- package/dist/esm/recorders/TokenRecorder.js.map +1 -1
- package/dist/esm/recorders/ToolUsageRecorder.js +21 -17
- package/dist/esm/recorders/ToolUsageRecorder.js.map +1 -1
- package/dist/esm/streaming/StreamEmitter.js.map +1 -1
- package/dist/executor/agentLoop.js +4 -0
- package/dist/executor/agentLoop.js.map +1 -1
- package/dist/index.js +15 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/call/callLLMStage.js +41 -0
- package/dist/lib/call/callLLMStage.js.map +1 -1
- package/dist/lib/call/helpers.js +364 -4
- package/dist/lib/call/helpers.js.map +1 -1
- package/dist/lib/call/parseResponseStage.js +12 -3
- package/dist/lib/call/parseResponseStage.js.map +1 -1
- package/dist/lib/call/streamingCallLLMStage.js +42 -0
- package/dist/lib/call/streamingCallLLMStage.js.map +1 -1
- package/dist/lib/call/toolExecutionSubflow.js +5 -2
- package/dist/lib/call/toolExecutionSubflow.js.map +1 -1
- package/dist/lib/concepts/AgentBuilder.js +83 -0
- package/dist/lib/concepts/AgentBuilder.js.map +1 -1
- package/dist/lib/concepts/AgentRunner.js +77 -63
- package/dist/lib/concepts/AgentRunner.js.map +1 -1
- package/dist/lib/instructions/InstructionRecorder.js +6 -2
- package/dist/lib/instructions/InstructionRecorder.js.map +1 -1
- package/dist/lib/loop/buildAgentLoop.js +132 -4
- package/dist/lib/loop/buildAgentLoop.js.map +1 -1
- package/dist/lib/narrative/agentRenderer.js +79 -14
- package/dist/lib/narrative/agentRenderer.js.map +1 -1
- package/dist/observe.barrel.js +4 -1
- package/dist/observe.barrel.js.map +1 -1
- package/dist/providers.barrel.js +3 -1
- package/dist/providers.barrel.js.map +1 -1
- package/dist/recorders/CostRecorder.js +20 -16
- package/dist/recorders/CostRecorder.js.map +1 -1
- package/dist/recorders/ExplainRecorder.js +4 -0
- package/dist/recorders/ExplainRecorder.js.map +1 -1
- package/dist/recorders/RecorderBridge.js +11 -5
- package/dist/recorders/RecorderBridge.js.map +1 -1
- package/dist/recorders/TokenRecorder.js +26 -24
- package/dist/recorders/TokenRecorder.js.map +1 -1
- package/dist/recorders/ToolUsageRecorder.js +21 -17
- package/dist/recorders/ToolUsageRecorder.js.map +1 -1
- package/dist/streaming/StreamEmitter.js.map +1 -1
- package/dist/types/adapters/browser/BrowserAnthropicAdapter.d.ts.map +1 -1
- package/dist/types/concepts/LLMCall.d.ts.map +1 -1
- package/dist/types/concepts/RAG.d.ts.map +1 -1
- package/dist/types/concepts/Swarm.d.ts.map +1 -1
- package/dist/types/concepts/index.d.ts +1 -1
- package/dist/types/concepts/index.d.ts.map +1 -1
- package/dist/types/core/recorders.d.ts +4 -0
- package/dist/types/core/recorders.d.ts.map +1 -1
- package/dist/types/executor/agentLoop.d.ts.map +1 -1
- package/dist/types/index.d.ts +6 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/lib/call/callLLMStage.d.ts.map +1 -1
- package/dist/types/lib/call/helpers.d.ts +45 -1
- package/dist/types/lib/call/helpers.d.ts.map +1 -1
- package/dist/types/lib/call/parseResponseStage.d.ts.map +1 -1
- package/dist/types/lib/call/streamingCallLLMStage.d.ts.map +1 -1
- package/dist/types/lib/call/toolExecutionSubflow.d.ts +12 -0
- package/dist/types/lib/call/toolExecutionSubflow.d.ts.map +1 -1
- package/dist/types/lib/concepts/Agent.d.ts +1 -1
- package/dist/types/lib/concepts/Agent.d.ts.map +1 -1
- package/dist/types/lib/concepts/AgentBuilder.d.ts +90 -0
- package/dist/types/lib/concepts/AgentBuilder.d.ts.map +1 -1
- package/dist/types/lib/concepts/AgentRunner.d.ts +19 -0
- package/dist/types/lib/concepts/AgentRunner.d.ts.map +1 -1
- package/dist/types/lib/concepts/index.d.ts +1 -1
- package/dist/types/lib/concepts/index.d.ts.map +1 -1
- package/dist/types/lib/instructions/InstructionRecorder.d.ts +3 -2
- package/dist/types/lib/instructions/InstructionRecorder.d.ts.map +1 -1
- package/dist/types/lib/loop/buildAgentLoop.d.ts.map +1 -1
- package/dist/types/lib/loop/types.d.ts +38 -0
- package/dist/types/lib/loop/types.d.ts.map +1 -1
- package/dist/types/lib/narrative/agentRenderer.d.ts +7 -2
- package/dist/types/lib/narrative/agentRenderer.d.ts.map +1 -1
- package/dist/types/observe.barrel.d.ts +1 -0
- package/dist/types/observe.barrel.d.ts.map +1 -1
- package/dist/types/providers.barrel.d.ts +1 -1
- package/dist/types/providers.barrel.d.ts.map +1 -1
- package/dist/types/recorders/CostRecorder.d.ts +17 -13
- package/dist/types/recorders/CostRecorder.d.ts.map +1 -1
- package/dist/types/recorders/ExplainRecorder.d.ts +3 -0
- package/dist/types/recorders/ExplainRecorder.d.ts.map +1 -1
- package/dist/types/recorders/RecorderBridge.d.ts +7 -3
- package/dist/types/recorders/RecorderBridge.d.ts.map +1 -1
- package/dist/types/recorders/TokenRecorder.d.ts +17 -18
- package/dist/types/recorders/TokenRecorder.d.ts.map +1 -1
- package/dist/types/recorders/ToolUsageRecorder.d.ts +15 -11
- package/dist/types/recorders/ToolUsageRecorder.d.ts.map +1 -1
- package/dist/types/scope/types.d.ts +7 -0
- package/dist/types/scope/types.d.ts.map +1 -1
- package/dist/types/streaming/StreamEmitter.d.ts +9 -0
- package/dist/types/streaming/StreamEmitter.d.ts.map +1 -1
- package/dist/types/types/agent.d.ts +7 -0
- package/dist/types/types/agent.d.ts.map +1 -1
- package/dist/types/types/multiAgent.d.ts +7 -0
- package/dist/types/types/multiAgent.d.ts.map +1 -1
- package/dist/types/types/tools.d.ts +19 -3
- package/dist/types/types/tools.d.ts.map +1 -1
- package/package.json +4 -5
|
@@ -32,6 +32,9 @@ class Agent {
|
|
|
32
32
|
enableStreaming = false;
|
|
33
33
|
enableVerboseNarrative = false;
|
|
34
34
|
outputResponseFormat;
|
|
35
|
+
parallelToolsEnabled = false;
|
|
36
|
+
customRoute;
|
|
37
|
+
maxIdenticalFailuresValue;
|
|
35
38
|
constructor(options) {
|
|
36
39
|
this.provider = (0, createProvider_1.resolveProvider)(options.provider);
|
|
37
40
|
this.agentName = options.name ?? 'agent';
|
|
@@ -93,6 +96,81 @@ class Agent {
|
|
|
93
96
|
this.enableStreaming = enabled;
|
|
94
97
|
return this;
|
|
95
98
|
}
|
|
99
|
+
/**
|
|
100
|
+
* Run multiple tool calls within a single turn concurrently via Promise.all.
|
|
101
|
+
*
|
|
102
|
+
* Only beneficial when the LLM requests 2+ independent tool calls in one turn
|
|
103
|
+
* (e.g., "look up customer, orders, and product in parallel"). Results are
|
|
104
|
+
* appended to the conversation in the order the LLM requested them.
|
|
105
|
+
*
|
|
106
|
+
* **Caveat:** decide() functions on tool-level instructions mutate a shared
|
|
107
|
+
* Decision Scope — in parallel mode those mutations are not serialized.
|
|
108
|
+
* If your instructions rely on strict ordering, keep sequential (default).
|
|
109
|
+
*
|
|
110
|
+
* @example
|
|
111
|
+
* ```ts
|
|
112
|
+
* Agent.create({ provider })
|
|
113
|
+
* .tools([getCustomer, getOrders, getProduct])
|
|
114
|
+
* .parallelTools(true)
|
|
115
|
+
* .build();
|
|
116
|
+
* ```
|
|
117
|
+
*/
|
|
118
|
+
parallelTools(enabled = true) {
|
|
119
|
+
this.parallelToolsEnabled = enabled;
|
|
120
|
+
return this;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Register user-defined routing branches evaluated BEFORE the default
|
|
124
|
+
* `tool-calls | final` routing. First matching `when` predicate wins.
|
|
125
|
+
*
|
|
126
|
+
* Useful for injecting escalation paths, safety gates, or bespoke handlers
|
|
127
|
+
* without touching the Agent loop internals. The default tool-calls and
|
|
128
|
+
* final branches still apply when no user branch matches.
|
|
129
|
+
*
|
|
130
|
+
* @example
|
|
131
|
+
* ```ts
|
|
132
|
+
* Agent.create({ provider })
|
|
133
|
+
* .tool(searchTool)
|
|
134
|
+
* .route({
|
|
135
|
+
* branches: [
|
|
136
|
+
* { id: 'escalate', when: (s) => s.parsedResponse.content.includes('[ESCALATE]'), runner: humanReviewAgent },
|
|
137
|
+
* ],
|
|
138
|
+
* })
|
|
139
|
+
* .build();
|
|
140
|
+
* ```
|
|
141
|
+
*/
|
|
142
|
+
route(config) {
|
|
143
|
+
this.customRoute = config;
|
|
144
|
+
return this;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Set the repeated-identical-failure escalation threshold. When a tool call
|
|
148
|
+
* with the exact same (name, args) has failed this many times in a row, a
|
|
149
|
+
* one-shot `escalation` field is injected into that tool result content
|
|
150
|
+
* urging the LLM to change arguments, switch tools, or finalize. Fires
|
|
151
|
+
* exactly once per (name, args) key per conversation — further identical
|
|
152
|
+
* failures are left bare to avoid token bloat.
|
|
153
|
+
*
|
|
154
|
+
* Defaults to `3`. Pass `0` to disable escalation entirely.
|
|
155
|
+
*
|
|
156
|
+
* @example
|
|
157
|
+
* ```ts
|
|
158
|
+
* Agent.create({ provider })
|
|
159
|
+
* .tools([...])
|
|
160
|
+
* .maxIdenticalFailures(2) // fire escalation after 2 identical failures
|
|
161
|
+
* .build();
|
|
162
|
+
*
|
|
163
|
+
* // Disable entirely:
|
|
164
|
+
* Agent.create({ provider }).tools([...]).maxIdenticalFailures(0).build();
|
|
165
|
+
* ```
|
|
166
|
+
*/
|
|
167
|
+
maxIdenticalFailures(n) {
|
|
168
|
+
if (!Number.isFinite(n) || n < 0) {
|
|
169
|
+
throw new Error(`AgentBuilder.maxIdenticalFailures: expected a non-negative finite number, got ${n}`);
|
|
170
|
+
}
|
|
171
|
+
this.maxIdenticalFailuresValue = n;
|
|
172
|
+
return this;
|
|
173
|
+
}
|
|
96
174
|
/**
|
|
97
175
|
* Enable verbose narrative — full values, no truncation.
|
|
98
176
|
* Shows complete system prompts, tool results, and LLM outputs in the narrative.
|
|
@@ -221,6 +299,11 @@ class Agent {
|
|
|
221
299
|
streaming: this.enableStreaming,
|
|
222
300
|
verboseNarrative: this.enableVerboseNarrative,
|
|
223
301
|
responseFormat: this.outputResponseFormat,
|
|
302
|
+
parallelTools: this.parallelToolsEnabled,
|
|
303
|
+
customRoute: this.customRoute,
|
|
304
|
+
...(this.maxIdenticalFailuresValue !== undefined && {
|
|
305
|
+
maxIdenticalFailures: this.maxIdenticalFailuresValue,
|
|
306
|
+
}),
|
|
224
307
|
});
|
|
225
308
|
}
|
|
226
309
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentBuilder.js","sourceRoot":"","sources":["../../../src/lib/concepts/AgentBuilder.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;
|
|
1
|
+
{"version":3,"file":"AgentBuilder.js","sourceRoot":"","sources":["../../../src/lib/concepts/AgentBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,6 +36,9 @@ class AgentRunner {
|
|
|
36
36
|
initialDecision;
|
|
37
37
|
streamingEnabled;
|
|
38
38
|
responseFormat;
|
|
39
|
+
parallelToolsEnabled;
|
|
40
|
+
customRoute;
|
|
41
|
+
maxIdenticalFailures;
|
|
39
42
|
cachedDecideFunctions;
|
|
40
43
|
conversationHistory = [];
|
|
41
44
|
lastExecutor;
|
|
@@ -59,6 +62,9 @@ class AgentRunner {
|
|
|
59
62
|
this.initialDecision = options.initialDecision;
|
|
60
63
|
this.streamingEnabled = options.streaming ?? false;
|
|
61
64
|
this.responseFormat = options.responseFormat;
|
|
65
|
+
this.parallelToolsEnabled = options.parallelTools ?? false;
|
|
66
|
+
this.customRoute = options.customRoute;
|
|
67
|
+
this.maxIdenticalFailures = options.maxIdenticalFailures;
|
|
62
68
|
this.verboseNarrative = options.verboseNarrative ?? false;
|
|
63
69
|
if (this.verboseNarrative) {
|
|
64
70
|
this.narrativeRenderer = (0, narrative_1.createAgentRenderer)({ verbose: true });
|
|
@@ -174,37 +180,10 @@ class AgentRunner {
|
|
|
174
180
|
const executor = new footprintjs_1.FlowChartExecutor(chart, executorOpts);
|
|
175
181
|
executor.enableNarrative({ renderer: this.narrativeRenderer });
|
|
176
182
|
executor.attachRecorder(new footprintjs_1.MetricRecorder('metrics'));
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
let lastToolDescriptions;
|
|
180
|
-
let lastMessages;
|
|
183
|
+
// Capture LLM responses + per-call context during traversal
|
|
184
|
+
const { recorder: llmCaptureRecorder, captures: llmCaptures } = this.createLLMCaptureRecorder(bridge);
|
|
181
185
|
if (bridge) {
|
|
182
|
-
|
|
183
|
-
id: '__llm-capture',
|
|
184
|
-
onWrite(event) {
|
|
185
|
-
if (event.key === 'systemPrompt' && typeof event.value === 'string') {
|
|
186
|
-
lastSystemPrompt = event.value;
|
|
187
|
-
}
|
|
188
|
-
if (event.key === 'toolDescriptions' && Array.isArray(event.value)) {
|
|
189
|
-
lastToolDescriptions = event.value;
|
|
190
|
-
}
|
|
191
|
-
if (event.key === 'messages' && Array.isArray(event.value)) {
|
|
192
|
-
lastMessages = event.value;
|
|
193
|
-
}
|
|
194
|
-
// adapterRawResponse fires AFTER context writes — snapshot context per call
|
|
195
|
-
if (event.key === 'adapterRawResponse' && event.value) {
|
|
196
|
-
llmCaptures.push({
|
|
197
|
-
response: event.value,
|
|
198
|
-
context: {
|
|
199
|
-
systemPrompt: lastSystemPrompt,
|
|
200
|
-
toolDescriptions: lastToolDescriptions ? [...lastToolDescriptions] : undefined,
|
|
201
|
-
messages: lastMessages ? [...lastMessages] : undefined,
|
|
202
|
-
},
|
|
203
|
-
});
|
|
204
|
-
}
|
|
205
|
-
},
|
|
206
|
-
};
|
|
207
|
-
executor.attachRecorder(llmCapture);
|
|
186
|
+
executor.attachRecorder(llmCaptureRecorder);
|
|
208
187
|
}
|
|
209
188
|
const startMs = Date.now();
|
|
210
189
|
try {
|
|
@@ -227,6 +206,7 @@ class AgentRunner {
|
|
|
227
206
|
content: '',
|
|
228
207
|
iterations: pauseResult.iterations,
|
|
229
208
|
paused: true,
|
|
209
|
+
reason: 'paused',
|
|
230
210
|
});
|
|
231
211
|
return pauseResult;
|
|
232
212
|
}
|
|
@@ -235,12 +215,16 @@ class AgentRunner {
|
|
|
235
215
|
type: 'turn_end',
|
|
236
216
|
content: agentResult.content,
|
|
237
217
|
iterations: agentResult.iterations,
|
|
218
|
+
...(agentResult.maxIterationsReached && { reason: 'maxIterations' }),
|
|
238
219
|
});
|
|
239
220
|
if (bridge) {
|
|
240
221
|
// Dispatch per-iteration LLM calls — each with its own context snapshot
|
|
241
222
|
const perCallMs = llmCaptures.length > 0 ? Math.round((Date.now() - startMs) / llmCaptures.length) : 0;
|
|
242
223
|
for (const capture of llmCaptures) {
|
|
243
|
-
bridge.dispatchLLMCall(capture.response, perCallMs,
|
|
224
|
+
bridge.dispatchLLMCall(capture.response, perCallMs, {
|
|
225
|
+
...capture.context,
|
|
226
|
+
runtimeStageId: capture.runtimeStageId,
|
|
227
|
+
});
|
|
244
228
|
}
|
|
245
229
|
bridge.dispatchTurnComplete(agentResult.content, agentResult.messages.length, agentResult.iterations);
|
|
246
230
|
}
|
|
@@ -281,49 +265,68 @@ class AgentRunner {
|
|
|
281
265
|
if (!checkpoint) {
|
|
282
266
|
throw new Error('Cannot resume: no checkpoint available.');
|
|
283
267
|
}
|
|
284
|
-
// Capture LLM calls + context during resume (same
|
|
268
|
+
// Capture LLM calls + context during resume (same factory as run())
|
|
285
269
|
const bridge = this.recorders.length > 0 ? new RecorderBridge_1.RecorderBridge(this.recorders) : null;
|
|
286
|
-
const llmCaptures =
|
|
287
|
-
let lastSystemPrompt;
|
|
288
|
-
let lastToolDescriptions;
|
|
289
|
-
let lastMessages;
|
|
270
|
+
const { recorder: llmCaptureRecorder, captures: llmCaptures } = this.createLLMCaptureRecorder(bridge);
|
|
290
271
|
if (bridge) {
|
|
291
|
-
|
|
292
|
-
id: '__llm-capture-resume',
|
|
293
|
-
onWrite(event) {
|
|
294
|
-
if (event.key === 'systemPrompt' && typeof event.value === 'string') {
|
|
295
|
-
lastSystemPrompt = event.value;
|
|
296
|
-
}
|
|
297
|
-
if (event.key === 'toolDescriptions' && Array.isArray(event.value)) {
|
|
298
|
-
lastToolDescriptions = event.value;
|
|
299
|
-
}
|
|
300
|
-
if (event.key === 'messages' && Array.isArray(event.value)) {
|
|
301
|
-
lastMessages = event.value;
|
|
302
|
-
}
|
|
303
|
-
if (event.key === 'adapterRawResponse' && event.value) {
|
|
304
|
-
llmCaptures.push({
|
|
305
|
-
response: event.value,
|
|
306
|
-
context: {
|
|
307
|
-
systemPrompt: lastSystemPrompt,
|
|
308
|
-
toolDescriptions: lastToolDescriptions ? [...lastToolDescriptions] : undefined,
|
|
309
|
-
messages: lastMessages ? [...lastMessages] : undefined,
|
|
310
|
-
},
|
|
311
|
-
});
|
|
312
|
-
}
|
|
313
|
-
},
|
|
314
|
-
};
|
|
315
|
-
executor.attachRecorder(llmCapture);
|
|
272
|
+
executor.attachRecorder(llmCaptureRecorder);
|
|
316
273
|
}
|
|
317
274
|
const startMs = Date.now();
|
|
318
275
|
await executor.resume(checkpoint, humanResponse);
|
|
319
276
|
if (bridge) {
|
|
320
277
|
const perCallMs = llmCaptures.length > 0 ? Math.round((Date.now() - startMs) / llmCaptures.length) : 0;
|
|
321
278
|
for (const capture of llmCaptures) {
|
|
322
|
-
bridge.dispatchLLMCall(capture.response, perCallMs,
|
|
279
|
+
bridge.dispatchLLMCall(capture.response, perCallMs, {
|
|
280
|
+
...capture.context,
|
|
281
|
+
runtimeStageId: capture.runtimeStageId,
|
|
282
|
+
});
|
|
323
283
|
}
|
|
324
284
|
}
|
|
325
285
|
return this.buildResult(executor);
|
|
326
286
|
}
|
|
287
|
+
/**
|
|
288
|
+
* Create a scope recorder that captures LLM responses + context during traversal.
|
|
289
|
+
* Shared by run() and resume() — eliminates duplication and ensures both paths
|
|
290
|
+
* track runtimeStageId for stream bridge tool events.
|
|
291
|
+
*/
|
|
292
|
+
createLLMCaptureRecorder(bridge) {
|
|
293
|
+
const captures = [];
|
|
294
|
+
let lastSystemPrompt;
|
|
295
|
+
let lastToolDescriptions;
|
|
296
|
+
let lastMessages;
|
|
297
|
+
const recorder = {
|
|
298
|
+
id: '__llm-capture',
|
|
299
|
+
onStageStart(event) {
|
|
300
|
+
// Track current stage runtimeStageId — bridge reads it for stream tool events
|
|
301
|
+
if (bridge)
|
|
302
|
+
bridge.setToolRuntimeStageId(event.runtimeStageId);
|
|
303
|
+
},
|
|
304
|
+
onWrite(event) {
|
|
305
|
+
if (event.key === 'systemPrompt' && typeof event.value === 'string') {
|
|
306
|
+
lastSystemPrompt = event.value;
|
|
307
|
+
}
|
|
308
|
+
if (event.key === 'toolDescriptions' && Array.isArray(event.value)) {
|
|
309
|
+
lastToolDescriptions = event.value;
|
|
310
|
+
}
|
|
311
|
+
if (event.key === 'messages' && Array.isArray(event.value)) {
|
|
312
|
+
lastMessages = event.value;
|
|
313
|
+
}
|
|
314
|
+
// adapterRawResponse fires AFTER context writes — snapshot context per call
|
|
315
|
+
if (event.key === 'adapterRawResponse' && event.value) {
|
|
316
|
+
captures.push({
|
|
317
|
+
response: event.value,
|
|
318
|
+
runtimeStageId: event.runtimeStageId,
|
|
319
|
+
context: {
|
|
320
|
+
systemPrompt: lastSystemPrompt,
|
|
321
|
+
toolDescriptions: lastToolDescriptions ? [...lastToolDescriptions] : undefined,
|
|
322
|
+
messages: lastMessages ? [...lastMessages] : undefined,
|
|
323
|
+
},
|
|
324
|
+
});
|
|
325
|
+
}
|
|
326
|
+
},
|
|
327
|
+
};
|
|
328
|
+
return { recorder, captures };
|
|
329
|
+
}
|
|
327
330
|
/** Extract AgentResult from executor state — shared by run() and resume(). */
|
|
328
331
|
buildResult(executor) {
|
|
329
332
|
if (executor.isPaused()) {
|
|
@@ -344,8 +347,14 @@ class AgentRunner {
|
|
|
344
347
|
const lastAsst = (0, memory_1.lastAssistantMessage)(messages);
|
|
345
348
|
const result = state.result ?? (lastAsst ? (0, content_1.getTextContent)(lastAsst.content) : '');
|
|
346
349
|
const iterations = state.loopCount ?? 0;
|
|
350
|
+
const maxIterationsReached = state.maxIterationsReached === true;
|
|
347
351
|
this.conversationHistory = messages;
|
|
348
|
-
return {
|
|
352
|
+
return {
|
|
353
|
+
content: result,
|
|
354
|
+
messages,
|
|
355
|
+
iterations,
|
|
356
|
+
...(maxIterationsReached && { maxIterationsReached: true }),
|
|
357
|
+
};
|
|
349
358
|
}
|
|
350
359
|
getNarrative() {
|
|
351
360
|
return this.lastExecutor?.getNarrative() ?? [];
|
|
@@ -398,6 +407,11 @@ class AgentRunner {
|
|
|
398
407
|
decideFunctions: this.cachedDecideFunctions,
|
|
399
408
|
streaming: this.streamingEnabled,
|
|
400
409
|
responseFormat: this.responseFormat,
|
|
410
|
+
parallelTools: this.parallelToolsEnabled,
|
|
411
|
+
...(this.maxIdenticalFailures !== undefined && {
|
|
412
|
+
maxIdenticalFailures: this.maxIdenticalFailures,
|
|
413
|
+
}),
|
|
414
|
+
routeExtensions: this.customRoute?.branches,
|
|
401
415
|
onStreamEvent,
|
|
402
416
|
onInstructionsFired: (toolId, fired) => {
|
|
403
417
|
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":"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"}
|
|
@@ -112,9 +112,13 @@ class InstructionRecorder {
|
|
|
112
112
|
const toolFirings = this.firings.get(toolId);
|
|
113
113
|
return toolFirings ? [...toolFirings.keys()] : [];
|
|
114
114
|
}
|
|
115
|
-
/** Serialize for inclusion in executor.getSnapshot().recorders. */
|
|
116
115
|
toSnapshot() {
|
|
117
|
-
return {
|
|
116
|
+
return {
|
|
117
|
+
name: 'Instructions',
|
|
118
|
+
description: 'Translator (FlowRecorder) — per-tool instruction injection log',
|
|
119
|
+
preferredOperation: 'translate',
|
|
120
|
+
data: this.getSummary(),
|
|
121
|
+
};
|
|
118
122
|
}
|
|
119
123
|
clear() {
|
|
120
124
|
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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"}
|
|
@@ -44,6 +44,7 @@ const content_1 = require("../../types/content");
|
|
|
44
44
|
const memory_1 = require("../../memory");
|
|
45
45
|
const types_1 = require("./types");
|
|
46
46
|
const instructions_1 = require("../instructions");
|
|
47
|
+
const messages_3 = require("../../types/messages");
|
|
47
48
|
// ── Default Agent Routing ─────────────────────────────────────────────────────
|
|
48
49
|
/**
|
|
49
50
|
* Default routing for the Agent loop: tool-calls | final.
|
|
@@ -171,6 +172,10 @@ function buildAgentLoop(config, seed, options) {
|
|
|
171
172
|
const toolExecutionSubflow = (0, toolExecutionSubflow_1.buildToolExecutionSubflow)({
|
|
172
173
|
registry: config.registry,
|
|
173
174
|
toolProvider: config.toolProvider,
|
|
175
|
+
parallel: config.parallelTools === true,
|
|
176
|
+
...(config.maxIdenticalFailures !== undefined && {
|
|
177
|
+
maxIdenticalFailures: config.maxIdenticalFailures,
|
|
178
|
+
}),
|
|
174
179
|
// Always pass instruction config — even without build-time instructions,
|
|
175
180
|
// tool handlers can return runtime instructions/followUps.
|
|
176
181
|
instructionConfig: {
|
|
@@ -285,7 +290,12 @@ function buildAgentLoop(config, seed, options) {
|
|
|
285
290
|
}
|
|
286
291
|
builder = builder.addFunction('ParseResponse', parseResponseStage_1.parseResponseStage, 'parse-response', 'Parse LLM response into structured result');
|
|
287
292
|
// ── Routing — one code path for both Agent and Swarm ──
|
|
288
|
-
|
|
293
|
+
// Priority: explicit config.routing (Swarm) > routeExtensions (user .route()) > default
|
|
294
|
+
const routing = config.routing
|
|
295
|
+
? config.routing
|
|
296
|
+
: config.routeExtensions && config.routeExtensions.length > 0
|
|
297
|
+
? extendDefaultRouting(defaultAgentRouting(toolExecutionSubflow, useCommitFlag), config.routeExtensions)
|
|
298
|
+
: defaultAgentRouting(toolExecutionSubflow, useCommitFlag);
|
|
289
299
|
// Validate branches
|
|
290
300
|
if (routing.branches.length === 0) {
|
|
291
301
|
throw new Error('RoutingConfig must have at least one branch.');
|
|
@@ -300,13 +310,38 @@ function buildAgentLoop(config, seed, options) {
|
|
|
300
310
|
].join(', ')}]`);
|
|
301
311
|
}
|
|
302
312
|
// Wrap decider with structural maxIterations guard — no custom routing can bypass this.
|
|
303
|
-
// If loopCount >= maxIterations, force-route to defaultBranch
|
|
313
|
+
// If loopCount >= maxIterations, force-route to defaultBranch and set the
|
|
314
|
+
// `maxIterationsReached` flag on scope so ANY default-branch stage (Finalize,
|
|
315
|
+
// Swarm's RouteSpecialist fallback, user-supplied terminal stage, …) can
|
|
316
|
+
// surface the fact that this was a forced termination rather than a chosen
|
|
317
|
+
// one. Setting the flag here — rather than inside a specific Finalize stage —
|
|
318
|
+
// makes the signal available for every routing topology built on top of
|
|
319
|
+
// buildAgentLoop.
|
|
320
|
+
//
|
|
304
321
|
// The defaultBranch MUST call $break() or breakFn() — validated below.
|
|
305
322
|
const safeDecider = (scope, breakFn, streamCb) => {
|
|
306
323
|
const loopCount = scope.loopCount ?? 0;
|
|
307
324
|
const maxIter = scope.maxIterations ?? 10;
|
|
308
|
-
if (loopCount >= maxIter)
|
|
325
|
+
if (loopCount >= maxIter) {
|
|
326
|
+
// Deciders can write to scope — the write is committed with the decider
|
|
327
|
+
// stage's transaction. For TypedScope, property assignment goes through
|
|
328
|
+
// the Proxy set trap; for raw ScopeFacade, fall back to setValue if the
|
|
329
|
+
// property assignment is rejected.
|
|
330
|
+
try {
|
|
331
|
+
scope.maxIterationsReached = true;
|
|
332
|
+
}
|
|
333
|
+
catch {
|
|
334
|
+
if (typeof scope.setValue === 'function') {
|
|
335
|
+
try {
|
|
336
|
+
scope.setValue('maxIterationsReached', true);
|
|
337
|
+
}
|
|
338
|
+
catch {
|
|
339
|
+
/* unable to record — consumers must read loopCount vs maxIterations */
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
}
|
|
309
343
|
return routing.defaultBranch;
|
|
344
|
+
}
|
|
310
345
|
return routing.decider(scope, breakFn, streamCb);
|
|
311
346
|
};
|
|
312
347
|
let decider = builder.addDeciderFunction(routing.deciderName, safeDecider, routing.deciderId, routing.deciderDescription);
|
|
@@ -348,6 +383,83 @@ function buildAgentLoop(config, seed, options) {
|
|
|
348
383
|
return { chart: builder.build(), getStrictFollowUp };
|
|
349
384
|
}
|
|
350
385
|
exports.buildAgentLoop = buildAgentLoop;
|
|
386
|
+
/**
|
|
387
|
+
* Wrap a base RoutingConfig with user-defined extensions.
|
|
388
|
+
*
|
|
389
|
+
* User extensions run BEFORE the base decider. First matching `when` predicate wins.
|
|
390
|
+
* If no extension matches, base routing applies. Runners are mounted as subflows
|
|
391
|
+
* when they expose `.toFlowChart()`; otherwise they are wrapped with runnerAsStage.
|
|
392
|
+
*/
|
|
393
|
+
function extendDefaultRouting(base, extensions) {
|
|
394
|
+
// Each user branch is a TERMINAL fn stage: run the runner, write the content as the
|
|
395
|
+
// agent's final result, and break the loop. We don't mount as a subflow because we
|
|
396
|
+
// need terminate semantics in the parent loop — a subflow would return control to
|
|
397
|
+
// the decider and keep looping. Drill-down via runner.toFlowChart() is a future
|
|
398
|
+
// enhancement; for Phase 1 we optimize for correctness and simplicity.
|
|
399
|
+
const userBranches = extensions.map((ext, idx) => {
|
|
400
|
+
const id = ext.id ?? `route-${idx}`;
|
|
401
|
+
return {
|
|
402
|
+
id,
|
|
403
|
+
kind: 'fn',
|
|
404
|
+
fn: createRouteExtensionStage(ext.runner),
|
|
405
|
+
name: id,
|
|
406
|
+
description: `User routing branch '${id}'`,
|
|
407
|
+
};
|
|
408
|
+
});
|
|
409
|
+
const extendedBranches = [...userBranches, ...base.branches];
|
|
410
|
+
return {
|
|
411
|
+
deciderName: base.deciderName,
|
|
412
|
+
deciderId: base.deciderId,
|
|
413
|
+
deciderDescription: base.deciderDescription,
|
|
414
|
+
decider: (scope, breakFn, streamCb) => {
|
|
415
|
+
// User predicates evaluated first — first match wins.
|
|
416
|
+
for (let i = 0; i < extensions.length; i++) {
|
|
417
|
+
try {
|
|
418
|
+
if (extensions[i].when(scope)) {
|
|
419
|
+
return userBranches[i].id;
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
catch {
|
|
423
|
+
// Predicate errors fall through to base routing (fail-open).
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
return base.decider(scope, breakFn, streamCb);
|
|
427
|
+
},
|
|
428
|
+
branches: extendedBranches,
|
|
429
|
+
defaultBranch: base.defaultBranch,
|
|
430
|
+
};
|
|
431
|
+
}
|
|
432
|
+
/**
|
|
433
|
+
* Build a terminal stage fn that invokes a user-provided runner, writes its content
|
|
434
|
+
* as the agent's final answer, and breaks the loop.
|
|
435
|
+
*
|
|
436
|
+
* Called when a user `.route()` branch predicate fires. The runner receives the last
|
|
437
|
+
* user message as input; its output content becomes the agent's assistant response.
|
|
438
|
+
*/
|
|
439
|
+
function createRouteExtensionStage(runner) {
|
|
440
|
+
return async (scope) => {
|
|
441
|
+
const messages = scope.messages ?? [];
|
|
442
|
+
const lastUser = [...messages].reverse().find((m) => m.role === 'user');
|
|
443
|
+
const input = typeof lastUser?.content === 'string'
|
|
444
|
+
? lastUser.content
|
|
445
|
+
: Array.isArray(lastUser?.content)
|
|
446
|
+
? lastUser.content
|
|
447
|
+
.map((b) => (typeof b?.text === 'string' ? b.text : ''))
|
|
448
|
+
.filter(Boolean)
|
|
449
|
+
.join('\n')
|
|
450
|
+
: '';
|
|
451
|
+
const env = scope.$getEnv();
|
|
452
|
+
const signal = env?.signal;
|
|
453
|
+
const timeoutMs = env?.timeoutMs;
|
|
454
|
+
const output = await runner.run(input, { signal, timeoutMs });
|
|
455
|
+
const content = typeof output?.content === 'string' ? output.content : '';
|
|
456
|
+
// Append the runner's answer as an assistant message so downstream
|
|
457
|
+
// observers (narrative, recorders) see a coherent conversation.
|
|
458
|
+
scope.messages = [...messages, (0, messages_3.assistantMessage)(content)];
|
|
459
|
+
scope.result = content;
|
|
460
|
+
scope.$break();
|
|
461
|
+
};
|
|
462
|
+
}
|
|
351
463
|
/**
|
|
352
464
|
* Create the Finalize stage function (decider 'final' branch).
|
|
353
465
|
*
|
|
@@ -360,7 +472,23 @@ function createFinalizeStage(options) {
|
|
|
360
472
|
return (scope) => {
|
|
361
473
|
const messages = scope.messages ?? [];
|
|
362
474
|
const lastAsst = (0, memory_1.lastAssistantMessage)(messages);
|
|
363
|
-
|
|
475
|
+
const lastAsstText = lastAsst ? (0, content_1.getTextContent)(lastAsst.content) : '';
|
|
476
|
+
// safeDecider sets `maxIterationsReached` when it force-routes at the cap.
|
|
477
|
+
// Read it here — don't re-derive from loopCount — so this stage agrees
|
|
478
|
+
// with whatever safeDecider decided (single source of truth).
|
|
479
|
+
const exhausted = scope.maxIterationsReached === true;
|
|
480
|
+
if (exhausted) {
|
|
481
|
+
const maxIter = scope.maxIterations ?? 10;
|
|
482
|
+
// Prefer the LLM's last reasoning text if present — otherwise synthesize
|
|
483
|
+
// a clear "agent gave up" message so callers never see an unexplained
|
|
484
|
+
// empty response after a long tool-error loop.
|
|
485
|
+
scope.result =
|
|
486
|
+
lastAsstText ||
|
|
487
|
+
`Agent stopped after ${maxIter} iterations without a final answer. The LLM may be stuck in a tool-error retry loop — check the execution trace.`;
|
|
488
|
+
}
|
|
489
|
+
else {
|
|
490
|
+
scope.result = lastAsstText;
|
|
491
|
+
}
|
|
364
492
|
if (useCommitFlag) {
|
|
365
493
|
scope.memory_shouldCommit = true;
|
|
366
494
|
}
|