@markusylisiurunen/tau 0.3.25 → 0.3.26
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/README.md +4 -4
- package/dist/core/session/runner.js +97 -16
- package/dist/core/session/runner.js.map +1 -1
- package/dist/core/session/session_engine.js +74 -26
- package/dist/core/session/session_engine.js.map +1 -1
- package/dist/core/tools/bash.js +9 -1
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/edit.js +6 -1
- package/dist/core/tools/edit.js.map +1 -1
- package/dist/core/tools/emit_output.js +1 -0
- package/dist/core/tools/emit_output.js.map +1 -1
- package/dist/core/tools/grep.js +6 -1
- package/dist/core/tools/grep.js.map +1 -1
- package/dist/core/tools/list.js +6 -1
- package/dist/core/tools/list.js.map +1 -1
- package/dist/core/tools/nook.js +9 -1
- package/dist/core/tools/nook.js.map +1 -1
- package/dist/core/tools/read.js +6 -1
- package/dist/core/tools/read.js.map +1 -1
- package/dist/core/tools/registry.js.map +1 -1
- package/dist/core/tools/send_input_to_agent.js +13 -2
- package/dist/core/tools/send_input_to_agent.js.map +1 -1
- package/dist/core/tools/spawn_agent.js +6 -2
- package/dist/core/tools/spawn_agent.js.map +1 -1
- package/dist/core/tools/terminate_agent.js +6 -2
- package/dist/core/tools/terminate_agent.js.map +1 -1
- package/dist/core/tools/view_image.js +6 -1
- package/dist/core/tools/view_image.js.map +1 -1
- package/dist/core/tools/wait_for_agents.js +10 -7
- package/dist/core/tools/wait_for_agents.js.map +1 -1
- package/dist/core/tools/web_fetch.js +6 -1
- package/dist/core/tools/web_fetch.js.map +1 -1
- package/dist/core/tools/web_search.js +6 -1
- package/dist/core/tools/web_search.js.map +1 -1
- package/dist/core/tools/write.js +6 -1
- package/dist/core/tools/write.js.map +1 -1
- package/dist/core/utils/gemini_speech.js +1 -1
- package/dist/core/utils/gemini_transcription.js +1 -1
- package/dist/core/utils/subagent_utils.js +2 -0
- package/dist/core/utils/subagent_utils.js.map +1 -1
- package/dist/core/version.js +1 -1
- package/dist/host/client_tool_broker.js +1 -0
- package/dist/host/client_tool_broker.js.map +1 -1
- package/dist/host/local_session_host.js +118 -23
- package/dist/host/local_session_host.js.map +1 -1
- package/dist/protocol/session_protocol.d.ts +14 -7
- package/dist/protocol/session_protocol.js +48 -24
- package/dist/protocol/session_protocol.js.map +1 -1
- package/dist/tui/chat_view.js +4 -0
- package/dist/tui/chat_view.js.map +1 -1
- package/dist/tui/session_chat_controller.js +7 -4
- package/dist/tui/session_chat_controller.js.map +1 -1
- package/dist/tui/tool_ui_router.js +9 -0
- package/dist/tui/tool_ui_router.js.map +1 -1
- package/dist/tui/ui/tool_ui_registry.js +27 -8
- package/dist/tui/ui/tool_ui_registry.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -35,7 +35,7 @@ for built-in providers and features, use these `apiKeys` entries: `anthropic`, `
|
|
|
35
35
|
|
|
36
36
|
`parallel` is only needed for `web_search`/`web_fetch` usage in sub-agents and can be provided through `apiKeys.parallel` or `PARALLEL_API_KEY` (`PARALLEL_API_KEY` takes precedence).
|
|
37
37
|
|
|
38
|
-
`/listen` and Telegram audio transcription use Mistral by default (`apiKeys.mistral` or `MISTRAL_API_KEY`, with `MISTRAL_API_KEY` taking precedence). set `speechToText.provider` to `gemini` to use Gemini 3.
|
|
38
|
+
`/listen` and Telegram audio transcription use Mistral by default (`apiKeys.mistral` or `MISTRAL_API_KEY`, with `MISTRAL_API_KEY` taking precedence). set `speechToText.provider` to `gemini` to use Gemini 3.6 Flash instead (`apiKeys.google` or `GEMINI_API_KEY`). `/listen` also requires `ffmpeg` on your system and is currently supported only on macOS.
|
|
39
39
|
|
|
40
40
|
`tau tool pdf-unpack` uses Mistral OCR (`apiKeys.mistral` or `MISTRAL_API_KEY`) and requires `pdftoppm` from Poppler on your system.
|
|
41
41
|
|
|
@@ -475,7 +475,7 @@ the prune commands drop bash tool results from the active context without summar
|
|
|
475
475
|
|
|
476
476
|
`/listen` (or `ctrl+y`) starts microphone recording on macOS, including while the assistant is working. while recording, editor typing is disabled, and `ctrl+y` stops recording and starts transcription at the cursor using the configured speech-to-text provider. `esc` stops recording first without interrupting the assistant; press it again to interrupt active work. recording also auto-stops after 5 minutes. on Linux, `/listen` is currently unavailable and tau shows a warning.
|
|
477
477
|
|
|
478
|
-
`/speak` rewrites the last assistant message into naturally speakable text with Gemini 3.
|
|
478
|
+
`/speak` rewrites the last assistant message into naturally speakable text with Gemini 3.6 Flash, synthesizes audio with Gemini 3.1 Flash TTS, and starts playing on macOS at 1.4x speed as soon as the first speech chunk is ready.
|
|
479
479
|
|
|
480
480
|
`/rewind` opens a picker over prior user messages in the current context. it truncates history from the selected message onward (including the selected message) and prefills the editor with that message so you can retry from there.
|
|
481
481
|
|
|
@@ -573,7 +573,7 @@ the `defaultPersona` field specifies which persona to use when starting the app.
|
|
|
573
573
|
|
|
574
574
|
the `defaultTheme` field sets the theme id to load at startup. it must be non-empty, and matching is exact/case-sensitive. if not specified, it defaults to `gold`.
|
|
575
575
|
|
|
576
|
-
`speechToText.provider` selects the `/listen` and Telegram audio transcription provider. supported values are `mistral` (default, uses Voxtral) and `gemini` (uses Gemini 3.
|
|
576
|
+
`speechToText.provider` selects the `/listen` and Telegram audio transcription provider. supported values are `mistral` (default, uses Voxtral) and `gemini` (uses Gemini 3.6 Flash with minimal thinking).
|
|
577
577
|
|
|
578
578
|
`cloudflareSandbox.bridges` configures host-owned Cloudflare Sandbox bridge targets for hosted sessions. session requests refer to a bridge by id and a pre-existing sandbox id; Tau does not create sandboxes, clone repos, install dependencies, inject secrets, or run readiness checks during `session.create`. paths such as `cwd` are real paths inside the sandbox execution environment. Tau resolves session config/content from that execution environment cwd when creating the session and on `/reload`; bridge credentials stay on the host through either `apiKey` or `apiKeyEnv` and are not stored in session snapshots.
|
|
579
579
|
|
|
@@ -737,7 +737,7 @@ tau connects your terminal to large language models, giving them tools to intera
|
|
|
737
737
|
|
|
738
738
|
the model sees your messages, any file contents you've shared, and the results of tool calls. it doesn't have ambient access to your filesystem; it only sees what you show it or what it explicitly requests through tools.
|
|
739
739
|
|
|
740
|
-
tool calls are displayed
|
|
740
|
+
tool calls are displayed as soon as the model identifies the tool, before its arguments finish streaming, so you can see what the model is preparing and executing. use `ctrl+o` to toggle between compact and detailed views.
|
|
741
741
|
|
|
742
742
|
## tool output truncation
|
|
743
743
|
|
|
@@ -1,17 +1,59 @@
|
|
|
1
1
|
import { createToolError } from "../utils/messages.js";
|
|
2
2
|
import { MessageAccumulator } from "./message_accumulator.js";
|
|
3
3
|
const ASSISTANT_PARTIAL_MIN_INTERVAL_MS = 33;
|
|
4
|
+
function getStreamingToolCallIdentity(event) {
|
|
5
|
+
const content = event.partial.content[event.contentIndex];
|
|
6
|
+
if (content?.type !== "toolCall" || !content.id.trim() || !content.name.trim()) {
|
|
7
|
+
return undefined;
|
|
8
|
+
}
|
|
9
|
+
return { toolCallId: content.id, toolName: content.name };
|
|
10
|
+
}
|
|
4
11
|
export async function* runModelSubturn(options) {
|
|
5
12
|
const { model, context, modelRuntime, streamOptions, signal, emitPartials, retry } = options;
|
|
6
|
-
let
|
|
13
|
+
let hasEmittedCompletedToolCall = false;
|
|
7
14
|
const runAttempt = async function* (attemptOptions) {
|
|
8
15
|
const stream = modelRuntime.streamModel(model, context, attemptOptions);
|
|
9
16
|
const accumulator = emitPartials ? new MessageAccumulator() : undefined;
|
|
10
17
|
let lastPartialEmittedAt = 0;
|
|
11
18
|
let hasPendingPartial = false;
|
|
12
|
-
let
|
|
19
|
+
let emittedCompletedToolCallCount = 0;
|
|
13
20
|
const toolCallOrder = [];
|
|
14
21
|
const completedToolCalls = new Map();
|
|
22
|
+
const streamingToolCalls = new Map();
|
|
23
|
+
const trackStreamingToolCall = (event) => {
|
|
24
|
+
const contentIndex = event.contentIndex;
|
|
25
|
+
const current = streamingToolCalls.get(contentIndex);
|
|
26
|
+
const next = getStreamingToolCallIdentity(event);
|
|
27
|
+
if (current &&
|
|
28
|
+
next &&
|
|
29
|
+
current.toolCallId === next.toolCallId &&
|
|
30
|
+
current.toolName === next.toolName) {
|
|
31
|
+
return undefined;
|
|
32
|
+
}
|
|
33
|
+
const duplicate = next
|
|
34
|
+
? [...streamingToolCalls].some(([index, identity]) => index !== contentIndex && identity.toolCallId === next.toolCallId)
|
|
35
|
+
: false;
|
|
36
|
+
if (!next || duplicate) {
|
|
37
|
+
if (!current) {
|
|
38
|
+
return undefined;
|
|
39
|
+
}
|
|
40
|
+
streamingToolCalls.delete(contentIndex);
|
|
41
|
+
return { type: "tool_call_discarded", toolCallId: current.toolCallId, contentIndex };
|
|
42
|
+
}
|
|
43
|
+
streamingToolCalls.set(contentIndex, next);
|
|
44
|
+
return { type: "tool_call_streaming", ...next, contentIndex };
|
|
45
|
+
};
|
|
46
|
+
const discardStreamingToolCalls = () => {
|
|
47
|
+
const events = [...streamingToolCalls]
|
|
48
|
+
.sort(([left], [right]) => left - right)
|
|
49
|
+
.map(([contentIndex, identity]) => ({
|
|
50
|
+
type: "tool_call_discarded",
|
|
51
|
+
toolCallId: identity.toolCallId,
|
|
52
|
+
contentIndex,
|
|
53
|
+
}));
|
|
54
|
+
streamingToolCalls.clear();
|
|
55
|
+
return events;
|
|
56
|
+
};
|
|
15
57
|
const emitPartialIfPending = async function* () {
|
|
16
58
|
if (!accumulator || !hasPendingPartial) {
|
|
17
59
|
return;
|
|
@@ -21,9 +63,9 @@ export async function* runModelSubturn(options) {
|
|
|
21
63
|
if (!snapshot.hasTextStarted && !snapshot.hasAnyThinking && snapshot.toolCalls.length === 0) {
|
|
22
64
|
return;
|
|
23
65
|
}
|
|
24
|
-
if (snapshot.toolCalls.length >
|
|
25
|
-
|
|
26
|
-
|
|
66
|
+
if (snapshot.toolCalls.length > emittedCompletedToolCallCount) {
|
|
67
|
+
hasEmittedCompletedToolCall = true;
|
|
68
|
+
emittedCompletedToolCallCount = snapshot.toolCalls.length;
|
|
27
69
|
}
|
|
28
70
|
yield { type: "assistant_partial", snapshot };
|
|
29
71
|
lastPartialEmittedAt = Date.now();
|
|
@@ -49,6 +91,10 @@ export async function* runModelSubturn(options) {
|
|
|
49
91
|
if (!accumulator) {
|
|
50
92
|
continue;
|
|
51
93
|
}
|
|
94
|
+
const streamingEvent = trackStreamingToolCall(event);
|
|
95
|
+
if (streamingEvent) {
|
|
96
|
+
yield streamingEvent;
|
|
97
|
+
}
|
|
52
98
|
if (toolCallOrder.includes(event.contentIndex)) {
|
|
53
99
|
throw new Error(`model stream started tool call index ${event.contentIndex} twice`);
|
|
54
100
|
}
|
|
@@ -56,10 +102,24 @@ export async function* runModelSubturn(options) {
|
|
|
56
102
|
toolCallOrder.sort((left, right) => left - right);
|
|
57
103
|
continue;
|
|
58
104
|
}
|
|
105
|
+
if (event.type === "toolcall_delta") {
|
|
106
|
+
if (!accumulator) {
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
const streamingEvent = trackStreamingToolCall(event);
|
|
110
|
+
if (streamingEvent) {
|
|
111
|
+
yield streamingEvent;
|
|
112
|
+
}
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
59
115
|
if (event.type === "toolcall_end") {
|
|
60
116
|
if (!accumulator) {
|
|
61
117
|
continue;
|
|
62
118
|
}
|
|
119
|
+
const streamingEvent = trackStreamingToolCall(event);
|
|
120
|
+
if (streamingEvent) {
|
|
121
|
+
yield streamingEvent;
|
|
122
|
+
}
|
|
63
123
|
if (!toolCallOrder.includes(event.contentIndex)) {
|
|
64
124
|
throw new Error(`model stream completed tool call at index ${event.contentIndex} without starting it`);
|
|
65
125
|
}
|
|
@@ -72,6 +132,7 @@ export async function* runModelSubturn(options) {
|
|
|
72
132
|
}
|
|
73
133
|
toolCallOrder.shift();
|
|
74
134
|
completedToolCalls.delete(contentIndex);
|
|
135
|
+
streamingToolCalls.delete(contentIndex);
|
|
75
136
|
accumulator.processEvent(completed);
|
|
76
137
|
hasPendingPartial = true;
|
|
77
138
|
yield* emitPartialIfPending();
|
|
@@ -81,9 +142,15 @@ export async function* runModelSubturn(options) {
|
|
|
81
142
|
}
|
|
82
143
|
catch (error) {
|
|
83
144
|
yield* emitPartialIfPending();
|
|
145
|
+
for (const discarded of discardStreamingToolCalls()) {
|
|
146
|
+
yield discarded;
|
|
147
|
+
}
|
|
84
148
|
throw error;
|
|
85
149
|
}
|
|
86
150
|
yield* emitPartialIfPending();
|
|
151
|
+
for (const discarded of discardStreamingToolCalls()) {
|
|
152
|
+
yield discarded;
|
|
153
|
+
}
|
|
87
154
|
return await stream.result();
|
|
88
155
|
};
|
|
89
156
|
const retryNotice = retry?.notice
|
|
@@ -119,7 +186,7 @@ export async function* runModelSubturn(options) {
|
|
|
119
186
|
while (true) {
|
|
120
187
|
try {
|
|
121
188
|
const result = yield* runAttempt(streamOptions);
|
|
122
|
-
if (!
|
|
189
|
+
if (!hasEmittedCompletedToolCall &&
|
|
123
190
|
attempt < maxRetries &&
|
|
124
191
|
retry?.shouldRetryAfterError?.({ error: result, model })) {
|
|
125
192
|
attempt += 1;
|
|
@@ -136,7 +203,7 @@ export async function* runModelSubturn(options) {
|
|
|
136
203
|
return result;
|
|
137
204
|
}
|
|
138
205
|
catch (error) {
|
|
139
|
-
if (!
|
|
206
|
+
if (!hasEmittedCompletedToolCall &&
|
|
140
207
|
attempt < maxRetries &&
|
|
141
208
|
retry?.shouldRetryAfterError?.({ error, model })) {
|
|
142
209
|
attempt += 1;
|
|
@@ -177,14 +244,27 @@ function prepareToolCall(toolCall, options) {
|
|
|
177
244
|
}
|
|
178
245
|
return { type: "ready", toolCall, definition };
|
|
179
246
|
}
|
|
180
|
-
function createToolQueuedEvent(
|
|
247
|
+
function createToolQueuedEvent(prepared, context) {
|
|
248
|
+
const { toolCall, definition } = prepared;
|
|
181
249
|
return {
|
|
182
250
|
type: "tool_ui",
|
|
183
251
|
uiEvent: {
|
|
184
252
|
type: "tool_call_queued",
|
|
185
253
|
toolCallId: toolCall.id,
|
|
186
254
|
toolName: toolCall.name,
|
|
187
|
-
headerTarget: toolCall
|
|
255
|
+
headerTarget: definition.getDisplayTarget(toolCall, context),
|
|
256
|
+
},
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
function createToolBlockedEvent(result, reason) {
|
|
260
|
+
return {
|
|
261
|
+
type: "tool_ui",
|
|
262
|
+
uiEvent: {
|
|
263
|
+
type: "tool_call_blocked",
|
|
264
|
+
toolCallId: result.toolCallId,
|
|
265
|
+
toolName: result.toolName,
|
|
266
|
+
headerTarget: result.toolName,
|
|
267
|
+
reason,
|
|
188
268
|
},
|
|
189
269
|
};
|
|
190
270
|
}
|
|
@@ -205,14 +285,14 @@ export class SequentialToolCallRunner {
|
|
|
205
285
|
enqueue(toolCall) {
|
|
206
286
|
const prepared = prepareToolCall(toolCall, this.options);
|
|
207
287
|
this.enqueuePrepared(prepared);
|
|
208
|
-
return prepared.type === "ready"
|
|
288
|
+
return prepared.type === "ready"
|
|
289
|
+
? createToolQueuedEvent(prepared, this.options.dispatchContext)
|
|
290
|
+
: createToolBlockedEvent(prepared.result, prepared.message);
|
|
209
291
|
}
|
|
210
292
|
enqueueRejected(toolCall, message) {
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
result: createToolError(toolCall, message),
|
|
215
|
-
});
|
|
293
|
+
const result = createToolError(toolCall, message);
|
|
294
|
+
this.enqueuePrepared({ type: "rejected", message, result });
|
|
295
|
+
return createToolBlockedEvent(result, message);
|
|
216
296
|
}
|
|
217
297
|
enqueuePrepared(prepared) {
|
|
218
298
|
if (this.finished) {
|
|
@@ -324,6 +404,7 @@ export async function* runToolCalls(options) {
|
|
|
324
404
|
continue;
|
|
325
405
|
}
|
|
326
406
|
resultsByIndex.set(index, prepared.result);
|
|
407
|
+
yield createToolBlockedEvent(prepared.result, prepared.message);
|
|
327
408
|
yield { type: "notice", severity: "error", text: prepared.message };
|
|
328
409
|
}
|
|
329
410
|
for (const prepared of preparedCalls) {
|
|
@@ -331,7 +412,7 @@ export async function* runToolCalls(options) {
|
|
|
331
412
|
break;
|
|
332
413
|
}
|
|
333
414
|
if (prepared.type === "ready") {
|
|
334
|
-
yield createToolQueuedEvent(prepared
|
|
415
|
+
yield createToolQueuedEvent(prepared, dispatchContext);
|
|
335
416
|
}
|
|
336
417
|
}
|
|
337
418
|
for (const [index, prepared] of preparedCalls.entries()) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../src/core/session/runner.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D,MAAM,iCAAiC,GAAG,EAAE,CAAC;AAwB7C,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,eAAe,CACpC,OAA+B;IAE/B,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IAE7F,IAAI,kBAAkB,GAAG,KAAK,CAAC;IAE/B,MAAM,UAAU,GAAG,KAAK,SAAS,CAAC,EAChC,cAAgC;QAEhC,MAAM,MAAM,GAAG,YAAY,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;QACxE,MAAM,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,kBAAkB,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACxE,IAAI,oBAAoB,GAAG,CAAC,CAAC;QAC7B,IAAI,iBAAiB,GAAG,KAAK,CAAC;QAC9B,IAAI,oBAAoB,GAAG,CAAC,CAAC;QAC7B,MAAM,aAAa,GAAa,EAAE,CAAC;QACnC,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAG/B,CAAC;QAEJ,MAAM,oBAAoB,GAAG,KAAK,SAAS,CAAC;YAC1C,IAAI,CAAC,WAAW,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACvC,OAAO;YACT,CAAC;YACD,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC;YACtC,iBAAiB,GAAG,KAAK,CAAC;YAC1B,IAAI,CAAC,QAAQ,CAAC,cAAc,IAAI,CAAC,QAAQ,CAAC,cAAc,IAAI,QAAQ,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC5F,OAAO;YACT,CAAC;YACD,IAAI,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,oBAAoB,EAAE,CAAC;gBACrD,kBAAkB,GAAG,IAAI,CAAC;gBAC1B,oBAAoB,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC;YACnD,CAAC;YACD,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE,QAAQ,EAAE,CAAC;YAC9C,oBAAoB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACpC,CAAC,CAAC;QAEF,IAAI,CAAC;YACH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBACjC,IAAI,WAAW,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;oBACjD,WAAW,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gBAClC,CAAC;gBAED,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;oBACtE,IAAI,WAAW,EAAE,CAAC;wBAChB,iBAAiB,GAAG,IAAI,CAAC;wBACzB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;wBACvB,IACE,oBAAoB,KAAK,CAAC;4BAC1B,GAAG,GAAG,oBAAoB,IAAI,iCAAiC,EAC/D,CAAC;4BACD,KAAK,CAAC,CAAC,oBAAoB,EAAE,CAAC;wBAChC,CAAC;oBACH,CAAC;oBACD,SAAS;gBACX,CAAC;gBAED,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;oBACpC,KAAK,CAAC,CAAC,oBAAoB,EAAE,CAAC;oBAC9B,IAAI,CAAC,WAAW,EAAE,CAAC;wBACjB,SAAS;oBACX,CAAC;oBACD,IAAI,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;wBAC/C,MAAM,IAAI,KAAK,CAAC,wCAAwC,KAAK,CAAC,YAAY,QAAQ,CAAC,CAAC;oBACtF,CAAC;oBACD,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;oBACvC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC;oBAClD,SAAS;gBACX,CAAC;gBAED,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;oBAClC,IAAI,CAAC,WAAW,EAAE,CAAC;wBACjB,SAAS;oBACX,CAAC;oBACD,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;wBAChD,MAAM,IAAI,KAAK,CACb,6CAA6C,KAAK,CAAC,YAAY,sBAAsB,CACtF,CAAC;oBACJ,CAAC;oBACD,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;oBAElD,OAAO,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAChC,MAAM,YAAY,GAAG,aAAa,CAAC,CAAC,CAAE,CAAC;wBACvC,MAAM,SAAS,GAAG,kBAAkB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;wBACvD,IAAI,CAAC,SAAS,EAAE,CAAC;4BACf,MAAM;wBACR,CAAC;wBACD,aAAa,CAAC,KAAK,EAAE,CAAC;wBACtB,kBAAkB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;wBACxC,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;wBACpC,iBAAiB,GAAG,IAAI,CAAC;wBACzB,KAAK,CAAC,CAAC,oBAAoB,EAAE,CAAC;oBAChC,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,KAAK,CAAC,CAAC,oBAAoB,EAAE,CAAC;YAC9B,MAAM,KAAK,CAAC;QACd,CAAC;QAED,KAAK,CAAC,CAAC,oBAAoB,EAAE,CAAC;QAC9B,OAAO,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;IAC/B,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,KAAK,EAAE,MAAM;QAC/B,CAAC,CAAC;YACE,IAAI,EAAE,QAAiB;YACvB,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM;YACzC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI;SACxB;QACH,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,UAAU,GAAG,KAAK,EAAE,UAAU,IAAI,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,KAAK,EAAE,OAAO,IAAI,CAAC,CAAC;IAEpC,MAAM,YAAY,GAAG,KAAK,IAAI,EAAE;QAC9B,IAAI,OAAO,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnC,OAAO;QACT,CAAC;QACD,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAClC,IAAI,KAAgD,CAAC;YACrD,MAAM,OAAO,GAAG,GAAG,EAAE;gBACnB,IAAI,KAAK,EAAE,CAAC;oBACV,YAAY,CAAC,KAAK,CAAC,CAAC;gBACtB,CAAC;gBACD,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAC7C,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC;YACF,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBACtB,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAC7C,OAAO,EAAE,CAAC;YACZ,CAAC,EAAE,OAAO,CAAC,CAAC;YACZ,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,OAAO,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;YAChD,IACE,CAAC,kBAAkB;gBACnB,OAAO,GAAG,UAAU;gBACpB,KAAK,EAAE,qBAAqB,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EACxD,CAAC;gBACD,OAAO,IAAI,CAAC,CAAC;gBACb,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC;gBACnB,IAAI,WAAW,EAAE,CAAC;oBAChB,MAAM,WAAW,CAAC;gBACpB,CAAC;gBACD,MAAM,YAAY,EAAE,CAAC;gBACrB,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACnB,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;gBACzC,CAAC;gBACD,SAAS;YACX,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IACE,CAAC,kBAAkB;gBACnB,OAAO,GAAG,UAAU;gBACpB,KAAK,EAAE,qBAAqB,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAChD,CAAC;gBACD,OAAO,IAAI,CAAC,CAAC;gBACb,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC;gBACnB,IAAI,WAAW,EAAE,CAAC;oBAChB,MAAM,WAAW,CAAC;gBACpB,CAAC;gBACD,MAAM,YAAY,EAAE,CAAC;gBACrB,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACnB,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;gBACzC,CAAC;gBACD,SAAS;YACX,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;AACH,CAAC;AAkCD,SAAS,eAAe,CACtB,QAAkB,EAClB,OAAmC;IAEnC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACtE,MAAM,OAAO,GACX,OAAO,CAAC,iBAAiB,EAAE,UAAU,EAAE,CAAC,QAAQ,CAAC;YACjD,SAAS,QAAQ,CAAC,IAAI,oCAAoC,CAAC;QAC7D,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,OAAO;YACP,MAAM,EAAE,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC;SAC3C,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GACd,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;QACvC,OAAO,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7F,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,OAAO,GACX,OAAO,CAAC,iBAAiB,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC;YAClD,SAAS,QAAQ,CAAC,IAAI,4BAA4B,CAAC;QACrD,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,OAAO;YACP,MAAM,EAAE,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC;SAC3C,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;AACjD,CAAC;AAED,SAAS,qBAAqB,CAAC,QAAkB;IAC/C,OAAO;QACL,IAAI,EAAE,SAAS;QACf,OAAO,EAAE;YACP,IAAI,EAAE,kBAAkB;YACxB,UAAU,EAAE,QAAQ,CAAC,EAAE;YACvB,QAAQ,EAAE,QAAQ,CAAC,IAAI;YACvB,YAAY,EAAE,QAAQ,CAAC,IAAI;SAC5B;KACF,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,wBAAwB;IAahB;IACA;IAbF,MAAM,GAAsB,EAAE,CAAC;IAC/B,OAAO,GAGnB,EAAE,CAAC;IACA,SAAS,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7C,UAAU,CAAiB;IAC3B,QAAQ,GAAG,KAAK,CAAC;IACjB,MAAM,GAAG,KAAK,CAAC;IACf,OAAO,CAAsB;IAErC,YACmB,OAAwC,EACxC,MAAmB;QADnB,YAAO,GAAP,OAAO,CAAiC;QACxC,WAAM,GAAN,MAAM,CAAa;IACnC,CAAC;IAEJ,OAAO,CAAC,QAAkB;QACxB,MAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACzD,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC/B,OAAO,QAAQ,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACjF,CAAC;IAED,eAAe,CAAC,QAAkB,EAAE,OAAe;QACjD,IAAI,CAAC,eAAe,CAAC;YACnB,IAAI,EAAE,UAAU;YAChB,OAAO;YACP,MAAM,EAAE,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC;SAC3C,CAAC,CAAC;IACL,CAAC;IAEO,eAAe,CAAC,QAA0B;QAChD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;QAC3E,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;YAC9C,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACxB,OAAO;YACT,CAAC;YACD,MAAM,SAAS,GAAG,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;YAC3F,OAAO,IAAI,EAAE,CAAC;gBACZ,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;gBACpC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBACd,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;oBAC3D,OAAO;gBACT,CAAC;gBACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC,CAAC,CAAC;QACH,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YAC3C,IAAI,CAAC,OAAO,GAAG,EAAE,KAAK,EAAE,CAAC;YACzB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5C,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,OAAO,CAAC,KAAsB;QACpC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACpC,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QAChD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE;gBACzC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;gBACnB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC5C,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;gBACnD,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,IAAI;QACF,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClC,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QACxD,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,CAAC,MAAM,CAAC,aAAa,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,KAAK,SAAS,CAAC,CAAC,mBAAmB,CACjC,QAA0B,EAC1B,MAAmB,EACnB,eAAoC;IAEpC,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACjC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;QACpE,OAAO,QAAQ,CAAC,MAAM,CAAC;IACzB,CAAC;IAED,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,QAAQ,CAAC;IAC1C,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC;QAC9E,IAAI,QAAQ,CAAC,cAAc,EAAE,CAAC;YAC5B,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,cAAc,EAAE,CAAC;QAC9D,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC;QAClC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;QACrD,CAAC;QACD,OAAO,MAAM,CAAC,UAAU,CAAC;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5E,MAAM;YACJ,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,SAAS,QAAQ,CAAC,IAAI,MAAM,QAAQ,CAAC,EAAE,uBAAuB,YAAY,EAAE;SACnF,CAAC;QACF,OAAO,eAAe,CAAC,QAAQ,EAAE,SAAS,QAAQ,CAAC,IAAI,uBAAuB,YAAY,EAAE,CAAC,CAAC;IAChG,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,YAAY,CACjC,OAA4B;IAE5B,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,kBAAkB,EAAE,GAAG,OAAO,CAAC;IAC9E,MAAM,aAAa,GAAuB,EAAE,CAAC;IAC7C,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM;QACR,CAAC;QACD,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC,CAAC;IACpE,CAAC;IACD,MAAM,cAAc,GAAG,IAAI,GAAG,EAA6B,CAAC;IAE5D,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,aAAa,CAAC,OAAO,EAAE,EAAE,CAAC;QACxD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM;QACR,CAAC;QACD,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YACjC,SAAS;QACX,CAAC;QACD,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;IACtE,CAAC;IAED,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;QACrC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM;QACR,CAAC;QACD,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC9B,MAAM,qBAAqB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAED,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,aAAa,CAAC,OAAO,EAAE,EAAE,CAAC;QACxD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM;QACR,CAAC;QACD,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YACjC,SAAS;QACX,CAAC;QACD,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC;IAC3F,CAAC;IAED,KAAK,MAAM,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QACjD,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../src/core/session/runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -829,8 +829,9 @@ export class SessionEngine {
|
|
|
829
829
|
const toolStream = toolRunner[Symbol.asyncIterator]();
|
|
830
830
|
const pendingToolResults = [];
|
|
831
831
|
const recoveryToolResults = [];
|
|
832
|
-
const
|
|
833
|
-
const
|
|
832
|
+
const admittedToolCalls = [];
|
|
833
|
+
const admittedToolCallIds = new Set();
|
|
834
|
+
const streamingToolCallIdsByContentIndex = new Map();
|
|
834
835
|
let modelDone = false;
|
|
835
836
|
let toolDone = false;
|
|
836
837
|
let shouldNoteProviderError = false;
|
|
@@ -857,7 +858,7 @@ export class SessionEngine {
|
|
|
857
858
|
finalMessage = next.result.value;
|
|
858
859
|
void toolRunner.finish().catch(() => undefined);
|
|
859
860
|
try {
|
|
860
|
-
const reconciliation =
|
|
861
|
+
const reconciliation = reconcileAdmittedToolCalls(finalMessage, admittedToolCalls);
|
|
861
862
|
finalMessage = reconciliation.message;
|
|
862
863
|
toolRecoveryMode = reconciliation.recover
|
|
863
864
|
? finalMessage.stopReason === "aborted" || signal.aborted
|
|
@@ -922,46 +923,93 @@ export class SessionEngine {
|
|
|
922
923
|
}
|
|
923
924
|
const event = next.result.value;
|
|
924
925
|
modelNext = modelStream.next().then((result) => ({ source: "model", result }), (error) => ({ source: "model_error", error }));
|
|
926
|
+
if (event.type === "tool_call_streaming") {
|
|
927
|
+
const replacesToolCallId = streamingToolCallIdsByContentIndex.get(event.contentIndex);
|
|
928
|
+
if (signal.aborted || admittedToolCallIds.has(event.toolCallId)) {
|
|
929
|
+
if (replacesToolCallId) {
|
|
930
|
+
streamingToolCallIdsByContentIndex.delete(event.contentIndex);
|
|
931
|
+
const discardedEvent = {
|
|
932
|
+
type: "tool_call_discarded",
|
|
933
|
+
historyEntryId,
|
|
934
|
+
toolCallId: replacesToolCallId,
|
|
935
|
+
contentIndex: event.contentIndex,
|
|
936
|
+
};
|
|
937
|
+
this.emitEvent(discardedEvent);
|
|
938
|
+
yield discardedEvent;
|
|
939
|
+
}
|
|
940
|
+
continue;
|
|
941
|
+
}
|
|
942
|
+
streamingToolCallIdsByContentIndex.set(event.contentIndex, event.toolCallId);
|
|
943
|
+
const streamingEvent = {
|
|
944
|
+
type: "tool_call_streaming",
|
|
945
|
+
historyEntryId,
|
|
946
|
+
toolCallId: event.toolCallId,
|
|
947
|
+
toolName: event.toolName,
|
|
948
|
+
contentIndex: event.contentIndex,
|
|
949
|
+
...(replacesToolCallId ? { replacesToolCallId } : {}),
|
|
950
|
+
};
|
|
951
|
+
this.emitEvent(streamingEvent);
|
|
952
|
+
yield streamingEvent;
|
|
953
|
+
continue;
|
|
954
|
+
}
|
|
955
|
+
if (event.type === "tool_call_discarded") {
|
|
956
|
+
if (streamingToolCallIdsByContentIndex.get(event.contentIndex) !== event.toolCallId) {
|
|
957
|
+
continue;
|
|
958
|
+
}
|
|
959
|
+
streamingToolCallIdsByContentIndex.delete(event.contentIndex);
|
|
960
|
+
const discardedEvent = {
|
|
961
|
+
type: "tool_call_discarded",
|
|
962
|
+
historyEntryId,
|
|
963
|
+
toolCallId: event.toolCallId,
|
|
964
|
+
contentIndex: event.contentIndex,
|
|
965
|
+
};
|
|
966
|
+
this.emitEvent(discardedEvent);
|
|
967
|
+
yield discardedEvent;
|
|
968
|
+
continue;
|
|
969
|
+
}
|
|
925
970
|
if (event.type === "assistant_partial") {
|
|
926
971
|
if (signal.aborted) {
|
|
927
972
|
continue;
|
|
928
973
|
}
|
|
929
|
-
const
|
|
930
|
-
for (const
|
|
931
|
-
const invalidId = !
|
|
932
|
-
const duplicateId =
|
|
974
|
+
const admissionEvents = [];
|
|
975
|
+
for (const admittedToolCall of event.snapshot.toolCalls.slice(admittedToolCalls.length)) {
|
|
976
|
+
const invalidId = !admittedToolCall.id.trim();
|
|
977
|
+
const duplicateId = admittedToolCallIds.has(admittedToolCall.id);
|
|
933
978
|
if (!invalidId && !duplicateId) {
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
const
|
|
937
|
-
|
|
938
|
-
|
|
979
|
+
admittedToolCallIds.add(admittedToolCall.id);
|
|
980
|
+
admittedToolCalls.push(admittedToolCall);
|
|
981
|
+
for (const [contentIndex, toolCallId] of streamingToolCallIdsByContentIndex) {
|
|
982
|
+
if (toolCallId === admittedToolCall.id) {
|
|
983
|
+
streamingToolCallIdsByContentIndex.delete(contentIndex);
|
|
984
|
+
break;
|
|
985
|
+
}
|
|
939
986
|
}
|
|
987
|
+
admissionEvents.push(toolRunner.enqueue(admittedToolCall));
|
|
940
988
|
continue;
|
|
941
989
|
}
|
|
942
990
|
const toolCall = {
|
|
943
|
-
...
|
|
991
|
+
...admittedToolCall,
|
|
944
992
|
id: `invalid-tool-call-${randomUUID()}`,
|
|
945
993
|
};
|
|
946
994
|
const message = invalidId
|
|
947
995
|
? "Model returned a tool call with an empty ID."
|
|
948
|
-
: `Model returned duplicate tool call ID '${
|
|
949
|
-
|
|
950
|
-
toolRunner.enqueueRejected(toolCall, message);
|
|
996
|
+
: `Model returned duplicate tool call ID '${admittedToolCall.id}'.`;
|
|
997
|
+
admittedToolCalls.push(toolCall);
|
|
998
|
+
admissionEvents.push(toolRunner.enqueueRejected(toolCall, message));
|
|
951
999
|
}
|
|
952
1000
|
const partialEvent = {
|
|
953
1001
|
type: "assistant_partial",
|
|
954
1002
|
historyEntryId,
|
|
955
1003
|
snapshot: {
|
|
956
1004
|
...event.snapshot,
|
|
957
|
-
toolCalls: [...
|
|
1005
|
+
toolCalls: [...admittedToolCalls],
|
|
958
1006
|
},
|
|
959
1007
|
};
|
|
960
1008
|
this.emitEvent(partialEvent);
|
|
961
1009
|
yield partialEvent;
|
|
962
|
-
for (const
|
|
963
|
-
this.emitEvent(
|
|
964
|
-
yield
|
|
1010
|
+
for (const admissionEvent of admissionEvents) {
|
|
1011
|
+
this.emitEvent(admissionEvent);
|
|
1012
|
+
yield admissionEvent;
|
|
965
1013
|
}
|
|
966
1014
|
continue;
|
|
967
1015
|
}
|
|
@@ -999,7 +1047,7 @@ export class SessionEngine {
|
|
|
999
1047
|
if (toolRecoveryMode && finalMessage) {
|
|
1000
1048
|
const timestamp = this.deps.clock.now();
|
|
1001
1049
|
const recoveryResultsByToolCallId = new Map(recoveryToolResults.map((toolResult) => [toolResult.toolCallId, toolResult]));
|
|
1002
|
-
const completeRecoveryToolResults =
|
|
1050
|
+
const completeRecoveryToolResults = admittedToolCalls.map((toolCall) => recoveryResultsByToolCallId.get(toolCall.id) ?? {
|
|
1003
1051
|
role: "toolResult",
|
|
1004
1052
|
toolCallId: toolCall.id,
|
|
1005
1053
|
toolName: toolCall.name,
|
|
@@ -1014,7 +1062,7 @@ export class SessionEngine {
|
|
|
1014
1062
|
});
|
|
1015
1063
|
const recoveryMessage = buildToolRecoveryUserMessage({
|
|
1016
1064
|
errorMessage: finalMessage.errorMessage,
|
|
1017
|
-
toolCalls:
|
|
1065
|
+
toolCalls: admittedToolCalls,
|
|
1018
1066
|
toolResults: completeRecoveryToolResults,
|
|
1019
1067
|
continueOriginalRequest: toolRecoveryMode === "continue",
|
|
1020
1068
|
timestamp,
|
|
@@ -1067,10 +1115,10 @@ function consumeSubturnRetry(budget) {
|
|
|
1067
1115
|
budget.remaining -= 1;
|
|
1068
1116
|
return true;
|
|
1069
1117
|
}
|
|
1070
|
-
function
|
|
1118
|
+
function reconcileAdmittedToolCalls(message, admittedToolCalls) {
|
|
1071
1119
|
const finalToolCalls = message.content.filter((content) => content.type === "toolCall");
|
|
1072
1120
|
const isTerminalFailure = message.stopReason === "error" || message.stopReason === "aborted";
|
|
1073
|
-
if (
|
|
1121
|
+
if (admittedToolCalls.length === 0) {
|
|
1074
1122
|
if (!isTerminalFailure && finalToolCalls.length > 0) {
|
|
1075
1123
|
throw new Error(`model stream completed without toolcall_end for '${finalToolCalls[0].id}'`);
|
|
1076
1124
|
}
|
|
@@ -1084,7 +1132,7 @@ function reconcileStreamedToolCalls(message, streamedToolCalls) {
|
|
|
1084
1132
|
recover: false,
|
|
1085
1133
|
};
|
|
1086
1134
|
}
|
|
1087
|
-
if (message.stopReason === "toolUse" && isDeepStrictEqual(finalToolCalls,
|
|
1135
|
+
if (message.stopReason === "toolUse" && isDeepStrictEqual(finalToolCalls, admittedToolCalls)) {
|
|
1088
1136
|
return { message, recover: false };
|
|
1089
1137
|
}
|
|
1090
1138
|
const errorMessage = isTerminalFailure
|
|
@@ -1097,7 +1145,7 @@ function reconcileStreamedToolCalls(message, streamedToolCalls) {
|
|
|
1097
1145
|
...message,
|
|
1098
1146
|
content: [
|
|
1099
1147
|
...message.content.filter((content) => content.type !== "toolCall"),
|
|
1100
|
-
...
|
|
1148
|
+
...admittedToolCalls,
|
|
1101
1149
|
],
|
|
1102
1150
|
...(isTerminalFailure ? {} : { stopReason: "error", errorMessage }),
|
|
1103
1151
|
},
|