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
package/dist/lib/call/helpers.js
CHANGED
|
@@ -3,11 +3,173 @@
|
|
|
3
3
|
* Shared helpers for call module stages.
|
|
4
4
|
*/
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.executeToolCalls = exports.normalizeAdapterResponse = void 0;
|
|
6
|
+
exports.executeToolCalls = exports.normalizeAdapterResponse = exports.enrichIfRepeatedFailure = exports.stableStringify = exports.REPEATED_FAILURE_ESCALATION_THRESHOLD = void 0;
|
|
7
7
|
const types_1 = require("../../types");
|
|
8
8
|
const askHuman_1 = require("../../tools/askHuman");
|
|
9
9
|
const validateInput_1 = require("../../tools/validateInput");
|
|
10
10
|
const instructions_1 = require("../instructions");
|
|
11
|
+
// ── Repeated-failure escalation ──────────────────────────────────────────────
|
|
12
|
+
//
|
|
13
|
+
// When the LLM gets stuck calling a tool with the exact same (name, args) that
|
|
14
|
+
// keeps failing, some models loop until `maxIterations` is hit. To escape that
|
|
15
|
+
// trap, we inject a one-shot escalation message into the tool result content
|
|
16
|
+
// telling the LLM to change its approach. The escalation fires exactly once
|
|
17
|
+
// per (name, args) key — further identical failures are left alone, so we
|
|
18
|
+
// don't bloat tokens with repeated hectoring.
|
|
19
|
+
//
|
|
20
|
+
// Detection uses strict JSON parsing (not substring sniffing) so that a tool
|
|
21
|
+
// legitimately returning prose containing `"error":true` is not misclassified.
|
|
22
|
+
/**
|
|
23
|
+
* Default threshold for escalating repeated-identical-failure feedback.
|
|
24
|
+
* Override per-agent with `AgentBuilder.maxIdenticalFailures(n)`; pass `0` to
|
|
25
|
+
* disable escalation entirely.
|
|
26
|
+
*/
|
|
27
|
+
exports.REPEATED_FAILURE_ESCALATION_THRESHOLD = 3;
|
|
28
|
+
/**
|
|
29
|
+
* Stable JSON.stringify — keys sorted at every object level — so two calls
|
|
30
|
+
* with the same logical arguments but different key insertion order are
|
|
31
|
+
* treated as identical. Only handles plain JSON values (strings, numbers,
|
|
32
|
+
* booleans, nulls, arrays, plain objects), which matches the JSON-Schema
|
|
33
|
+
* shape of tool arguments.
|
|
34
|
+
*/
|
|
35
|
+
function stableStringify(value) {
|
|
36
|
+
if (value === null || value === undefined)
|
|
37
|
+
return JSON.stringify(value ?? null);
|
|
38
|
+
if (typeof value !== 'object')
|
|
39
|
+
return JSON.stringify(value);
|
|
40
|
+
if (Array.isArray(value)) {
|
|
41
|
+
return `[${value.map(stableStringify).join(',')}]`;
|
|
42
|
+
}
|
|
43
|
+
const obj = value;
|
|
44
|
+
const keys = Object.keys(obj).sort();
|
|
45
|
+
return `{${keys.map((k) => `${JSON.stringify(k)}:${stableStringify(obj[k])}`).join(',')}}`;
|
|
46
|
+
}
|
|
47
|
+
exports.stableStringify = stableStringify;
|
|
48
|
+
/**
|
|
49
|
+
* True iff the given message is a tool result that we wrote as an error — i.e.
|
|
50
|
+
* a top-level JSON object with `error === true`. Strict JSON parse: no
|
|
51
|
+
* substring sniffing, so tool content containing the literal phrase
|
|
52
|
+
* `"error":true` but not as a top-level field is not misclassified.
|
|
53
|
+
*/
|
|
54
|
+
function isErrorToolMessage(m) {
|
|
55
|
+
if (m.role !== 'tool')
|
|
56
|
+
return false;
|
|
57
|
+
const content = typeof m.content === 'string' ? m.content : '';
|
|
58
|
+
const trimmed = content.trim();
|
|
59
|
+
if (!trimmed.startsWith('{'))
|
|
60
|
+
return false;
|
|
61
|
+
try {
|
|
62
|
+
const parsed = JSON.parse(trimmed);
|
|
63
|
+
return (typeof parsed === 'object' &&
|
|
64
|
+
parsed !== null &&
|
|
65
|
+
parsed.error === true);
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Count prior tool-result messages in `messages` that match the given
|
|
73
|
+
* (toolName, argsJson) key AND represent an error.
|
|
74
|
+
*
|
|
75
|
+
* Cost: O(M × K) worst-case where M is messages.length and K is the average
|
|
76
|
+
* number of tool calls per assistant message. In practice K ≈ 1–3.
|
|
77
|
+
*/
|
|
78
|
+
function scanPriorFailures(messages, toolName, argsJson) {
|
|
79
|
+
let failures = 0;
|
|
80
|
+
for (let i = 0; i < messages.length; i++) {
|
|
81
|
+
const m = messages[i];
|
|
82
|
+
if (m.role !== 'tool')
|
|
83
|
+
continue;
|
|
84
|
+
if (!isErrorToolMessage(m))
|
|
85
|
+
continue;
|
|
86
|
+
const toolCallId = m.toolCallId;
|
|
87
|
+
// Find the originating assistant tool call (nearest preceding assistant
|
|
88
|
+
// message that declares a tool call with this result's toolCallId).
|
|
89
|
+
let matchedCall;
|
|
90
|
+
for (let j = i - 1; j >= 0; j--) {
|
|
91
|
+
const prev = messages[j];
|
|
92
|
+
if (prev.role === 'assistant' && prev.toolCalls) {
|
|
93
|
+
matchedCall = prev.toolCalls.find((tc) => tc.id === toolCallId);
|
|
94
|
+
if (matchedCall)
|
|
95
|
+
break;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
if (!matchedCall)
|
|
99
|
+
continue;
|
|
100
|
+
if (matchedCall.name !== toolName)
|
|
101
|
+
continue;
|
|
102
|
+
if (stableStringify(matchedCall.arguments ?? {}) !== argsJson)
|
|
103
|
+
continue;
|
|
104
|
+
failures++;
|
|
105
|
+
}
|
|
106
|
+
return { failures };
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* If the current call is a real error AND the (toolName, args) key has failed
|
|
110
|
+
* a multiple of `threshold` times (i.e. on the threshold-th, 2×threshold-th,
|
|
111
|
+
* 3×threshold-th … identical failure), inject an `escalation` field into
|
|
112
|
+
* the JSON result content.
|
|
113
|
+
*
|
|
114
|
+
* ## Why periodic, not one-shot
|
|
115
|
+
*
|
|
116
|
+
* A single escalation message early in the loop is easy for an LLM to skim
|
|
117
|
+
* past — especially when multiple parallel tool calls fail in the same
|
|
118
|
+
* turn. Firing periodically (every Nth identical failure) keeps nudging
|
|
119
|
+
* the LLM to change strategy while bounding token bloat to at most
|
|
120
|
+
* `maxIterations / threshold` escalations per key.
|
|
121
|
+
*
|
|
122
|
+
* Returns the possibly-enriched content. Pure — does not mutate inputs.
|
|
123
|
+
*
|
|
124
|
+
* Guarantees:
|
|
125
|
+
* - No false positives from substring matching (strict JSON parse).
|
|
126
|
+
* - Fires at every `N × threshold`-th failure, never between.
|
|
127
|
+
* - Stable under argument key reordering (uses `stableStringify`).
|
|
128
|
+
* - No-op when `threshold <= 0` (user-disabled).
|
|
129
|
+
* - No-op when `didError` is false OR content is non-JSON.
|
|
130
|
+
*/
|
|
131
|
+
function enrichIfRepeatedFailure(resultContent, toolCall, priorMessages, options) {
|
|
132
|
+
const { didError, threshold } = options;
|
|
133
|
+
if (!didError)
|
|
134
|
+
return resultContent;
|
|
135
|
+
if (!Number.isFinite(threshold) || threshold <= 0)
|
|
136
|
+
return resultContent;
|
|
137
|
+
// Must be well-formed JSON we can extend. If it isn't, we still could wrap
|
|
138
|
+
// it — but that changes public tool-result shape unexpectedly, so skip.
|
|
139
|
+
const trimmed = resultContent.trim();
|
|
140
|
+
if (!trimmed.startsWith('{'))
|
|
141
|
+
return resultContent;
|
|
142
|
+
let parsed;
|
|
143
|
+
try {
|
|
144
|
+
const raw = JSON.parse(trimmed);
|
|
145
|
+
if (typeof raw !== 'object' || raw === null)
|
|
146
|
+
return resultContent;
|
|
147
|
+
parsed = raw;
|
|
148
|
+
}
|
|
149
|
+
catch {
|
|
150
|
+
return resultContent;
|
|
151
|
+
}
|
|
152
|
+
const argsJson = stableStringify(toolCall.arguments ?? {});
|
|
153
|
+
const { failures } = scanPriorFailures(priorMessages, toolCall.name, argsJson);
|
|
154
|
+
const total = failures + 1;
|
|
155
|
+
// Fire on every Nth multiple of `threshold` — total in {threshold,
|
|
156
|
+
// 2*threshold, 3*threshold, ...}. Below threshold, or between multiples,
|
|
157
|
+
// return the bare error content. The LLM gets a fresh escalation nudge
|
|
158
|
+
// periodically without flooding the context.
|
|
159
|
+
if (total < threshold)
|
|
160
|
+
return resultContent;
|
|
161
|
+
if (total % threshold !== 0)
|
|
162
|
+
return resultContent;
|
|
163
|
+
parsed.repeatedFailures = total;
|
|
164
|
+
parsed.escalation =
|
|
165
|
+
`STOP — this call to '${toolCall.name}' with these EXACT arguments has now failed ${total} times in a row. ` +
|
|
166
|
+
`Retrying with the same arguments will fail again. You MUST change course: ` +
|
|
167
|
+
`(1) call '${toolCall.name}' with DIFFERENT arguments (see expectedSchema above), ` +
|
|
168
|
+
`(2) use a different tool, or ` +
|
|
169
|
+
`(3) stop calling tools and reply with a plain text final answer.`;
|
|
170
|
+
return JSON.stringify(parsed);
|
|
171
|
+
}
|
|
172
|
+
exports.enrichIfRepeatedFailure = enrichIfRepeatedFailure;
|
|
11
173
|
/**
|
|
12
174
|
* Normalize an LLMResponse into an AdapterResult discriminated union.
|
|
13
175
|
*/
|
|
@@ -29,11 +191,38 @@ function normalizeAdapterResponse(response) {
|
|
|
29
191
|
};
|
|
30
192
|
}
|
|
31
193
|
exports.normalizeAdapterResponse = normalizeAdapterResponse;
|
|
32
|
-
async function executeToolCalls(toolCalls, registry, messages, toolProvider, signal, instructionConfig, decision) {
|
|
194
|
+
async function executeToolCalls(toolCalls, registry, messages, toolProvider, signal, instructionConfig, decision, options) {
|
|
33
195
|
// Single copy upfront — O(M+N) instead of O(M*N) from repeated spreads
|
|
34
196
|
const result = [...messages];
|
|
35
197
|
let askHumanPause;
|
|
36
198
|
const onStreamEvent = instructionConfig?.onStreamEvent;
|
|
199
|
+
const escalationThreshold = options?.maxIdenticalFailures ?? exports.REPEATED_FAILURE_ESCALATION_THRESHOLD;
|
|
200
|
+
// Parallel mode: run per-tool work concurrently, collect tool result messages in
|
|
201
|
+
// original order, surface the first ask_human pause (if any). Decide() mutations
|
|
202
|
+
// to the shared `decision` object are NOT serialized — parallel tools should not
|
|
203
|
+
// rely on strict decide ordering. Sequential mode (default) preserves prior semantics.
|
|
204
|
+
//
|
|
205
|
+
// Escalation caveat: prior-failure scanning runs against `result` at the moment
|
|
206
|
+
// each enrichment call is made, which in parallel mode means earlier tool calls
|
|
207
|
+
// in the same batch (by LLM order, not wall-clock order) count as "prior" for
|
|
208
|
+
// later ones. That's acceptable — what matters for the LLM's next turn is the
|
|
209
|
+
// aggregate signal that identical calls keep failing, not the fine-grained
|
|
210
|
+
// concurrency semantics inside one batch.
|
|
211
|
+
if (options?.parallel && toolCalls.length > 1) {
|
|
212
|
+
const perTool = await Promise.all(toolCalls.map((toolCall) => executeOneToolCall(toolCall, registry, toolProvider, signal, instructionConfig, decision, onStreamEvent)));
|
|
213
|
+
for (let i = 0; i < perTool.length; i++) {
|
|
214
|
+
const { resultMessage, askHumanMarker, didError } = perTool[i];
|
|
215
|
+
const originalContent = typeof resultMessage.content === 'string' ? resultMessage.content : '';
|
|
216
|
+
const enriched = enrichIfRepeatedFailure(originalContent, toolCalls[i], result, {
|
|
217
|
+
didError,
|
|
218
|
+
threshold: escalationThreshold,
|
|
219
|
+
});
|
|
220
|
+
result.push(enriched === originalContent ? resultMessage : { ...resultMessage, content: enriched });
|
|
221
|
+
if (!askHumanPause && askHumanMarker)
|
|
222
|
+
askHumanPause = askHumanMarker;
|
|
223
|
+
}
|
|
224
|
+
return { messages: result, askHumanPause };
|
|
225
|
+
}
|
|
37
226
|
for (const toolCall of toolCalls) {
|
|
38
227
|
let resultContent;
|
|
39
228
|
let runtimeInstructions;
|
|
@@ -80,8 +269,23 @@ async function executeToolCalls(toolCalls, registry, messages, toolProvider, sig
|
|
|
80
269
|
code: 'INVALID_INPUT',
|
|
81
270
|
message: `Invalid arguments for '${tool.id}': ${(0, validateInput_1.formatValidationErrors)(validation.errors)}`,
|
|
82
271
|
};
|
|
83
|
-
|
|
84
|
-
|
|
272
|
+
// Include the expected schema so the LLM has a concrete structural
|
|
273
|
+
// target to conform to on retry — addresses the most common cause
|
|
274
|
+
// of LLMs looping on validation errors (they can't see the schema
|
|
275
|
+
// from the error message alone).
|
|
276
|
+
resultContent = JSON.stringify({
|
|
277
|
+
error: true,
|
|
278
|
+
message: errorInfo.message,
|
|
279
|
+
expectedSchema: tool.inputSchema,
|
|
280
|
+
receivedArguments: toolArgs,
|
|
281
|
+
});
|
|
282
|
+
// Repeated-failure escalation also applies to invalid-input failures —
|
|
283
|
+
// that's the primary symptom this catches. Fall through to the normal
|
|
284
|
+
// emit/push path (no early `continue`) so enrichment runs.
|
|
285
|
+
result.push((0, types_1.toolResultMessage)(enrichIfRepeatedFailure(resultContent, toolCall, result, {
|
|
286
|
+
didError: true,
|
|
287
|
+
threshold: escalationThreshold,
|
|
288
|
+
}), toolCall.id));
|
|
85
289
|
continue;
|
|
86
290
|
}
|
|
87
291
|
}
|
|
@@ -158,6 +362,16 @@ async function executeToolCalls(toolCalls, registry, messages, toolProvider, sig
|
|
|
158
362
|
}
|
|
159
363
|
}
|
|
160
364
|
}
|
|
365
|
+
// Enrich repeated identical failures with escalation text BEFORE emitting
|
|
366
|
+
// tool_end and pushing the message — so both the stream consumer and the
|
|
367
|
+
// LLM's next turn see the stronger feedback. Driven by the explicit
|
|
368
|
+
// `didError` signal (not substring sniffing of the result content), so
|
|
369
|
+
// tool handlers that legitimately include the phrase "error":true in their
|
|
370
|
+
// content are not misclassified.
|
|
371
|
+
resultContent = enrichIfRepeatedFailure(resultContent, toolCall, result, {
|
|
372
|
+
didError: errorInfo !== undefined,
|
|
373
|
+
threshold: escalationThreshold,
|
|
374
|
+
});
|
|
161
375
|
onStreamEvent?.({
|
|
162
376
|
type: 'tool_end',
|
|
163
377
|
toolName: toolCall.name,
|
|
@@ -171,4 +385,150 @@ async function executeToolCalls(toolCalls, registry, messages, toolProvider, sig
|
|
|
171
385
|
return { messages: result, askHumanPause };
|
|
172
386
|
}
|
|
173
387
|
exports.executeToolCalls = executeToolCalls;
|
|
388
|
+
/**
|
|
389
|
+
* Execute a single tool call and return its result message + optional pause marker.
|
|
390
|
+
* Pure in the sense of side-effect-on-messages — does not mutate any shared array.
|
|
391
|
+
* DOES mutate `decision` via decide() functions when instructions fire (shared by design).
|
|
392
|
+
*
|
|
393
|
+
* Used by executeToolCalls in parallel mode so multiple tool calls can run concurrently
|
|
394
|
+
* while the caller appends results in toolCall order.
|
|
395
|
+
*/
|
|
396
|
+
async function executeOneToolCall(toolCall, registry, toolProvider, signal, instructionConfig, decision, onStreamEvent) {
|
|
397
|
+
let resultContent;
|
|
398
|
+
let runtimeInstructions;
|
|
399
|
+
let runtimeFollowUps;
|
|
400
|
+
let errorInfo;
|
|
401
|
+
let askHumanMarker;
|
|
402
|
+
const startMs = Date.now();
|
|
403
|
+
onStreamEvent?.({
|
|
404
|
+
type: 'tool_start',
|
|
405
|
+
toolName: toolCall.name,
|
|
406
|
+
toolCallId: toolCall.id,
|
|
407
|
+
args: (toolCall.arguments ?? {}),
|
|
408
|
+
});
|
|
409
|
+
// Try ToolProvider.execute() first (handles remote tools, gated tools, etc.)
|
|
410
|
+
// Skip ToolProvider for ask_human — it must run locally (uses Symbol marker for pause detection).
|
|
411
|
+
if (toolProvider?.execute && toolCall.name !== 'ask_human') {
|
|
412
|
+
try {
|
|
413
|
+
const execResult = await toolProvider.execute(toolCall, signal);
|
|
414
|
+
resultContent = execResult.content;
|
|
415
|
+
}
|
|
416
|
+
catch (err) {
|
|
417
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
418
|
+
errorInfo = { message: msg };
|
|
419
|
+
resultContent = JSON.stringify({ error: true, message: msg });
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
else {
|
|
423
|
+
const tool = registry.get(toolCall.name);
|
|
424
|
+
if (!tool) {
|
|
425
|
+
const safeName = String(toolCall.name)
|
|
426
|
+
.slice(0, 100)
|
|
427
|
+
.replace(/[\n\r]/g, '');
|
|
428
|
+
errorInfo = { code: 'NOT_FOUND', message: `Tool '${safeName}' not found` };
|
|
429
|
+
resultContent = JSON.stringify({ error: true, message: errorInfo.message });
|
|
430
|
+
}
|
|
431
|
+
else {
|
|
432
|
+
const toolArgs = (toolCall.arguments ?? {});
|
|
433
|
+
if (tool.inputSchema && Object.keys(tool.inputSchema).length > 0) {
|
|
434
|
+
const validation = (0, validateInput_1.validateToolInput)(toolArgs, tool.inputSchema);
|
|
435
|
+
if (!validation.valid) {
|
|
436
|
+
errorInfo = {
|
|
437
|
+
code: 'INVALID_INPUT',
|
|
438
|
+
message: `Invalid arguments for '${tool.id}': ${(0, validateInput_1.formatValidationErrors)(validation.errors)}`,
|
|
439
|
+
};
|
|
440
|
+
// Include the expected schema + what the LLM actually sent so it can
|
|
441
|
+
// self-correct on retry (the narrow error message alone is often
|
|
442
|
+
// not enough for the LLM to reconstruct the required shape).
|
|
443
|
+
resultContent = JSON.stringify({
|
|
444
|
+
error: true,
|
|
445
|
+
message: errorInfo.message,
|
|
446
|
+
expectedSchema: tool.inputSchema,
|
|
447
|
+
receivedArguments: toolArgs,
|
|
448
|
+
});
|
|
449
|
+
return {
|
|
450
|
+
resultMessage: (0, types_1.toolResultMessage)(resultContent, toolCall.id),
|
|
451
|
+
didError: true,
|
|
452
|
+
askHumanMarker: undefined,
|
|
453
|
+
};
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
try {
|
|
457
|
+
const execResult = await tool.handler(toolArgs);
|
|
458
|
+
resultContent = execResult.content;
|
|
459
|
+
if ((0, askHuman_1.isAskHumanResult)(execResult)) {
|
|
460
|
+
askHumanMarker = { question: execResult.question, toolCallId: toolCall.id };
|
|
461
|
+
}
|
|
462
|
+
const instructed = execResult;
|
|
463
|
+
runtimeInstructions = instructed.instructions;
|
|
464
|
+
runtimeFollowUps = instructed.followUps;
|
|
465
|
+
}
|
|
466
|
+
catch (err) {
|
|
467
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
468
|
+
errorInfo = { message: msg };
|
|
469
|
+
resultContent = JSON.stringify({ error: true, message: msg });
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
const toolExecLatencyMs = Date.now() - startMs;
|
|
474
|
+
if (instructionConfig) {
|
|
475
|
+
const perToolInstructions = instructionConfig.instructionsByToolId.get(toolCall.name);
|
|
476
|
+
const agentRules = instructionConfig.agentResponseRules;
|
|
477
|
+
const buildTimeInstructions = agentRules?.length
|
|
478
|
+
? [...agentRules, ...(perToolInstructions ?? [])]
|
|
479
|
+
: perToolInstructions;
|
|
480
|
+
const hasInstructions = buildTimeInstructions?.length || runtimeInstructions?.length || runtimeFollowUps?.length;
|
|
481
|
+
if (hasInstructions) {
|
|
482
|
+
let parsedContent;
|
|
483
|
+
try {
|
|
484
|
+
parsedContent = JSON.parse(resultContent);
|
|
485
|
+
}
|
|
486
|
+
catch {
|
|
487
|
+
parsedContent = resultContent;
|
|
488
|
+
}
|
|
489
|
+
const ctx = {
|
|
490
|
+
content: parsedContent,
|
|
491
|
+
error: errorInfo,
|
|
492
|
+
latencyMs: toolExecLatencyMs,
|
|
493
|
+
input: toolCall.arguments,
|
|
494
|
+
toolId: toolCall.name,
|
|
495
|
+
};
|
|
496
|
+
const injectionResult = (0, instructions_1.processInstructions)(resultContent, buildTimeInstructions, ctx, runtimeInstructions || runtimeFollowUps
|
|
497
|
+
? { instructions: runtimeInstructions, followUps: runtimeFollowUps }
|
|
498
|
+
: undefined, instructionConfig?.template);
|
|
499
|
+
if (injectionResult.injected) {
|
|
500
|
+
resultContent = injectionResult.content;
|
|
501
|
+
}
|
|
502
|
+
if (injectionResult.fired.length > 0 && instructionConfig?.onInstructionsFired) {
|
|
503
|
+
instructionConfig.onInstructionsFired(toolCall.name, injectionResult.fired);
|
|
504
|
+
}
|
|
505
|
+
if (decision && instructionConfig?.decideFunctions?.size) {
|
|
506
|
+
for (const fired of injectionResult.fired) {
|
|
507
|
+
const decideFn = instructionConfig.decideFunctions.get(fired.id);
|
|
508
|
+
if (decideFn) {
|
|
509
|
+
try {
|
|
510
|
+
decideFn(decision, ctx);
|
|
511
|
+
}
|
|
512
|
+
catch {
|
|
513
|
+
// decide errors are fail-open — don't crash tool execution
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
onStreamEvent?.({
|
|
521
|
+
type: 'tool_end',
|
|
522
|
+
toolName: toolCall.name,
|
|
523
|
+
toolCallId: toolCall.id,
|
|
524
|
+
result: resultContent,
|
|
525
|
+
error: !!errorInfo,
|
|
526
|
+
latencyMs: toolExecLatencyMs,
|
|
527
|
+
});
|
|
528
|
+
return {
|
|
529
|
+
resultMessage: (0, types_1.toolResultMessage)(resultContent, toolCall.id),
|
|
530
|
+
didError: errorInfo !== undefined,
|
|
531
|
+
askHumanMarker,
|
|
532
|
+
};
|
|
533
|
+
}
|
|
174
534
|
//# sourceMappingURL=helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/lib/call/helpers.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/lib/call/helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,10 +38,19 @@ function parseResponseStage(scope) {
|
|
|
38
38
|
const messages = scope.messages ?? [];
|
|
39
39
|
const asstMsg = (0, types_1.assistantMessage)(result.content, result.type === 'tools' ? result.toolCalls : undefined);
|
|
40
40
|
scope.messages = (0, memory_1.appendMessage)(messages, asstMsg);
|
|
41
|
-
// Write summary for narrative visibility
|
|
41
|
+
// Write summary for narrative visibility — include arguments so debuggers
|
|
42
|
+
// can see at a glance whether the LLM passed required fields. Names alone
|
|
43
|
+
// hide the common failure mode of retrying with empty / wrong args.
|
|
42
44
|
if (parsed.hasToolCalls) {
|
|
43
|
-
const
|
|
44
|
-
|
|
45
|
+
const signatures = parsed.toolCalls
|
|
46
|
+
.map((tc) => {
|
|
47
|
+
const argsStr = JSON.stringify(tc.arguments ?? {});
|
|
48
|
+
// Tight cap — narrative line, not a full dump
|
|
49
|
+
const truncated = argsStr.length > 120 ? argsStr.slice(0, 117) + '...' : argsStr;
|
|
50
|
+
return `${tc.name}(${truncated})`;
|
|
51
|
+
})
|
|
52
|
+
.join(', ');
|
|
53
|
+
scope.responseType = `tool_calls: [${signatures}]`;
|
|
45
54
|
}
|
|
46
55
|
else {
|
|
47
56
|
const preview = result.content.length > 80 ? result.content.slice(0, 80) + '...' : result.content;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseResponseStage.js","sourceRoot":"","sources":["../../../src/lib/call/parseResponseStage.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;;AAIH,uCAA+C;AAC/C,yCAA6C;AAE7C;;;GAGG;AACH,SAAgB,kBAAkB,CAAC,KAAiC;IAClE,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC;IAEnC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC/D,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,qBAAqB,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IACzE,CAAC;IAED,MAAM,MAAM,GAAG;QACb,YAAY,EAAE,MAAM,CAAC,IAAI,KAAK,OAAO;QACrC,SAAS,EAAE,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;QAC1D,OAAO,EAAE,MAAM,CAAC,OAAO;KACxB,CAAC;IAEF,KAAK,CAAC,cAAc,GAAG,MAAM,CAAC;IAE9B,2CAA2C;IAC3C,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;IACtC,MAAM,OAAO,GAAG,IAAA,wBAAgB,EAC9B,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CACvD,CAAC;IACF,KAAK,CAAC,QAAQ,GAAG,IAAA,sBAAa,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAElD,
|
|
1
|
+
{"version":3,"file":"parseResponseStage.js","sourceRoot":"","sources":["../../../src/lib/call/parseResponseStage.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;;AAIH,uCAA+C;AAC/C,yCAA6C;AAE7C;;;GAGG;AACH,SAAgB,kBAAkB,CAAC,KAAiC;IAClE,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC;IAEnC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC/D,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,qBAAqB,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IACzE,CAAC;IAED,MAAM,MAAM,GAAG;QACb,YAAY,EAAE,MAAM,CAAC,IAAI,KAAK,OAAO;QACrC,SAAS,EAAE,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;QAC1D,OAAO,EAAE,MAAM,CAAC,OAAO;KACxB,CAAC;IAEF,KAAK,CAAC,cAAc,GAAG,MAAM,CAAC;IAE9B,2CAA2C;IAC3C,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;IACtC,MAAM,OAAO,GAAG,IAAA,wBAAgB,EAC9B,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CACvD,CAAC;IACF,KAAK,CAAC,QAAQ,GAAG,IAAA,sBAAa,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAElD,0EAA0E;IAC1E,0EAA0E;IAC1E,oEAAoE;IACpE,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QACxB,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS;aAChC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;YACV,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;YACnD,8CAA8C;YAC9C,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;YACjF,OAAO,GAAG,EAAE,CAAC,IAAI,IAAI,SAAS,GAAG,CAAC;QACpC,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,KAAK,CAAC,YAAY,GAAG,gBAAgB,UAAU,GAAG,CAAC;IACrD,CAAC;SAAM,CAAC;QACN,MAAM,OAAO,GACX,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QACpF,KAAK,CAAC,YAAY,GAAG,WAAW,OAAO,GAAG,CAAC;IAC7C,CAAC;AACH,CAAC;AA7CD,gDA6CC"}
|
|
@@ -33,6 +33,24 @@ function createStreamingCallLLMStage(provider, optionsOrHandler) {
|
|
|
33
33
|
const iteration = (scope.loopCount ?? 0) + 1;
|
|
34
34
|
const startMs = Date.now();
|
|
35
35
|
onStreamEvent?.({ type: 'llm_start', iteration });
|
|
36
|
+
// ── Emit: request-side ─────────────────────────────────────────────
|
|
37
|
+
// Mirror of callLLMStage.ts — surface the EXACT shape being sent so
|
|
38
|
+
// attached EmitRecorders (including CombinedNarrativeRecorder) render
|
|
39
|
+
// it inline under the CallLLM stage. Critical for debugging stuck
|
|
40
|
+
// patterns like "LLM returns empty args every turn".
|
|
41
|
+
scope.$emit('agentfootprint.llm.request', {
|
|
42
|
+
iteration,
|
|
43
|
+
messageCount: messages.length,
|
|
44
|
+
messageRoles: messages.map((m) => m.role),
|
|
45
|
+
toolCount: tools.length,
|
|
46
|
+
toolNames: tools.map((t) => t.name),
|
|
47
|
+
toolsWithRequired: tools.map((t) => ({
|
|
48
|
+
name: t.name,
|
|
49
|
+
description: t.description,
|
|
50
|
+
required: t.inputSchema?.required ?? [],
|
|
51
|
+
})),
|
|
52
|
+
hasResponseFormat: !!responseFormat,
|
|
53
|
+
});
|
|
36
54
|
// If streaming is available and callback is injected, use chatStream
|
|
37
55
|
if (streamCallback && provider.chatStream) {
|
|
38
56
|
const contentParts = [];
|
|
@@ -79,6 +97,18 @@ function createStreamingCallLLMStage(provider, optionsOrHandler) {
|
|
|
79
97
|
};
|
|
80
98
|
scope.adapterRawResponse = response;
|
|
81
99
|
scope.adapterResult = (0, helpers_1.normalizeAdapterResponse)(response);
|
|
100
|
+
scope.$emit('agentfootprint.llm.response', {
|
|
101
|
+
iteration,
|
|
102
|
+
model: response.model,
|
|
103
|
+
stopReason: response.finishReason,
|
|
104
|
+
usage: response.usage,
|
|
105
|
+
content: response.content,
|
|
106
|
+
toolCalls: (response.toolCalls ?? []).map((tc) => ({
|
|
107
|
+
name: tc.name,
|
|
108
|
+
arguments: tc.arguments,
|
|
109
|
+
})),
|
|
110
|
+
latencyMs: Date.now() - startMs,
|
|
111
|
+
});
|
|
82
112
|
onStreamEvent?.({
|
|
83
113
|
type: 'llm_end',
|
|
84
114
|
iteration,
|
|
@@ -93,6 +123,18 @@ function createStreamingCallLLMStage(provider, optionsOrHandler) {
|
|
|
93
123
|
const response = await provider.chat(messages, options);
|
|
94
124
|
scope.adapterRawResponse = response;
|
|
95
125
|
scope.adapterResult = (0, helpers_1.normalizeAdapterResponse)(response);
|
|
126
|
+
scope.$emit('agentfootprint.llm.response', {
|
|
127
|
+
iteration,
|
|
128
|
+
model: response.model,
|
|
129
|
+
stopReason: response.finishReason,
|
|
130
|
+
usage: response.usage,
|
|
131
|
+
content: response.content,
|
|
132
|
+
toolCalls: (response.toolCalls ?? []).map((tc) => ({
|
|
133
|
+
name: tc.name,
|
|
134
|
+
arguments: tc.arguments,
|
|
135
|
+
})),
|
|
136
|
+
latencyMs: Date.now() - startMs,
|
|
137
|
+
});
|
|
96
138
|
onStreamEvent?.({
|
|
97
139
|
type: 'llm_end',
|
|
98
140
|
iteration,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streamingCallLLMStage.js","sourceRoot":"","sources":["../../../src/lib/call/streamingCallLLMStage.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"streamingCallLLMStage.js","sourceRoot":"","sources":["../../../src/lib/call/streamingCallLLMStage.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,7 +27,7 @@ const helpers_1 = require("./helpers");
|
|
|
27
27
|
* loopCount) is mapped.
|
|
28
28
|
*/
|
|
29
29
|
function buildToolExecutionSubflow(config) {
|
|
30
|
-
const { registry, toolProvider, instructionConfig } = config;
|
|
30
|
+
const { registry, toolProvider, instructionConfig, parallel, maxIdenticalFailures } = config;
|
|
31
31
|
const executeStageFn = async (scope) => {
|
|
32
32
|
const parsed = scope.parsedResponse;
|
|
33
33
|
const loopCount = scope.currentLoopCount ?? 0;
|
|
@@ -53,7 +53,10 @@ function buildToolExecutionSubflow(config) {
|
|
|
53
53
|
: instructionConfig?.decideFunctions?.size
|
|
54
54
|
? {}
|
|
55
55
|
: undefined;
|
|
56
|
-
const { messages: resultMessages, askHumanPause } = await (0, helpers_1.executeToolCalls)(parsed.toolCalls, registry, messages, toolProvider, signal, instructionConfig, decisionRef
|
|
56
|
+
const { messages: resultMessages, askHumanPause } = await (0, helpers_1.executeToolCalls)(parsed.toolCalls, registry, messages, toolProvider, signal, instructionConfig, decisionRef, {
|
|
57
|
+
...(parallel ? { parallel: true } : {}),
|
|
58
|
+
...(maxIdenticalFailures !== undefined ? { maxIdenticalFailures } : {}),
|
|
59
|
+
});
|
|
57
60
|
// Output DELTA only — footprintjs applyOutputMapping concatenates arrays,
|
|
58
61
|
// so the parent's outputMapper maps this to `messages` and concat appends correctly.
|
|
59
62
|
scope.toolResultMessages = resultMessages.slice(messages.length);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolExecutionSubflow.js","sourceRoot":"","sources":["../../../src/lib/call/toolExecutionSubflow.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,6CAAwC;AAOxC,uCAA6C;
|
|
1
|
+
{"version":3,"file":"toolExecutionSubflow.js","sourceRoot":"","sources":["../../../src/lib/call/toolExecutionSubflow.ts"],"names":[],"mappings":"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"}
|