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
@@ -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
- resultContent = JSON.stringify({ error: true, message: errorInfo.message });
84
- result.push((0, types_1.toolResultMessage)(resultContent, toolCall.id));
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 toolNames = parsed.toolCalls.map((tc) => tc.name).join(', ');
44
- scope.responseType = `tool_calls: [${toolNames}]`;
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,yCAAyC;IACzC,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QACxB,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnE,KAAK,CAAC,YAAY,GAAG,gBAAgB,SAAS,GAAG,CAAC;IACpD,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;AApCD,gDAoCC"}
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":"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"}
1
+ {"version":3,"file":"toolExecutionSubflow.js","sourceRoot":"","sources":["../../../src/lib/call/toolExecutionSubflow.ts"],"names":[],"mappings":"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"}