atom-lite 0.4.1 → 0.5.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/CHANGELOG.md +11 -0
- package/README.md +1 -1
- package/dist/agent/loop.d.ts +9 -0
- package/dist/agent/loop.js +233 -47
- package/dist/agent/loop.js.map +1 -1
- package/dist/agent/model-turn.d.ts +37 -0
- package/dist/agent/model-turn.js +53 -0
- package/dist/agent/model-turn.js.map +1 -0
- package/dist/agent/turn-recorder.d.ts +33 -0
- package/dist/agent/turn-recorder.js +74 -0
- package/dist/agent/turn-recorder.js.map +1 -0
- package/dist/agent/types.d.ts +4 -0
- package/dist/cli/app.js +373 -33
- package/dist/cli/app.js.map +1 -1
- package/dist/cli/commands.d.ts +3 -0
- package/dist/cli/commands.js +20 -5
- package/dist/cli/commands.js.map +1 -1
- package/dist/cli/main.js +2 -2
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/mouse.js +4 -1
- package/dist/cli/mouse.js.map +1 -1
- package/dist/cli/stream-text.js +1 -0
- package/dist/cli/stream-text.js.map +1 -1
- package/dist/cli/theme.d.ts +1 -1
- package/dist/cli/theme.js +2 -0
- package/dist/cli/theme.js.map +1 -1
- package/dist/cli/transcript.d.ts +15 -1
- package/dist/cli/transcript.js +40 -1
- package/dist/cli/transcript.js.map +1 -1
- package/dist/cli/trust-prompt.d.ts +24 -0
- package/dist/cli/trust-prompt.js +89 -0
- package/dist/cli/trust-prompt.js.map +1 -0
- package/dist/config/defaults.d.ts +2 -0
- package/dist/config/defaults.js +2 -0
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/load.js +4 -0
- package/dist/config/load.js.map +1 -1
- package/dist/config/paths.d.ts +2 -0
- package/dist/config/paths.js +12 -1
- package/dist/config/paths.js.map +1 -1
- package/dist/config/schema.d.ts +4 -0
- package/dist/config/schema.js +2 -0
- package/dist/config/schema.js.map +1 -1
- package/dist/context/manager.d.ts +17 -3
- package/dist/context/manager.js +129 -41
- package/dist/context/manager.js.map +1 -1
- package/dist/extensions/api.d.ts +51 -1
- package/dist/extensions/api.js +124 -6
- package/dist/extensions/api.js.map +1 -1
- package/dist/extensions/discovery.d.ts +16 -0
- package/dist/extensions/discovery.js +191 -108
- package/dist/extensions/discovery.js.map +1 -1
- package/dist/extensions/loader.d.ts +42 -1
- package/dist/extensions/loader.js +272 -32
- package/dist/extensions/loader.js.map +1 -1
- package/dist/extensions/session-manager.d.ts +44 -0
- package/dist/extensions/session-manager.js +137 -0
- package/dist/extensions/session-manager.js.map +1 -0
- package/dist/extensions/tool-adapter.d.ts +12 -0
- package/dist/extensions/tool-adapter.js +157 -0
- package/dist/extensions/tool-adapter.js.map +1 -0
- package/dist/extensions/trust.d.ts +2 -0
- package/dist/extensions/trust.js +32 -17
- package/dist/extensions/trust.js.map +1 -1
- package/dist/extensions/types.d.ts +45 -3
- package/dist/extensions/ui.d.ts +21 -0
- package/dist/extensions/ui.js +75 -0
- package/dist/extensions/ui.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp/stdio-transport.js +3 -20
- package/dist/mcp/stdio-transport.js.map +1 -1
- package/dist/runtime/scheduler.d.ts +4 -3
- package/dist/runtime/scheduler.js +7 -105
- package/dist/runtime/scheduler.js.map +1 -1
- package/dist/runtime/tool-executor.d.ts +18 -0
- package/dist/runtime/tool-executor.js +126 -0
- package/dist/runtime/tool-executor.js.map +1 -0
- package/dist/security/process.d.ts +10 -0
- package/dist/security/process.js +36 -0
- package/dist/security/process.js.map +1 -1
- package/dist/sessions/store.js +2 -3
- package/dist/sessions/store.js.map +1 -1
- package/dist/tools/bash.js +6 -3
- package/dist/tools/bash.js.map +1 -1
- package/dist/tools/types.d.ts +6 -0
- package/package.json +3 -1
package/CHANGELOG.md
CHANGED
|
@@ -9,6 +9,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
9
9
|
|
|
10
10
|
### Added
|
|
11
11
|
|
|
12
|
+
## [0.5.0] - 2026-11-05
|
|
13
|
+
|
|
14
|
+
### Added
|
|
15
|
+
|
|
16
|
+
- Unmodified Pi coding-agent extension support: discovery, project trust,
|
|
17
|
+
in-process loading via `jiti`, extension tools, commands, events, and
|
|
18
|
+
session entries, plus ADR-0011 and the extensions guide.
|
|
19
|
+
- `/extensions doctor` diagnostics, `/steer` mid-turn injection, and
|
|
20
|
+
message queuing during active turns.
|
|
21
|
+
- Continuous dimmed thinking blocks in the TUI.
|
|
22
|
+
|
|
12
23
|
## [0.4.1] - 2026-11-04
|
|
13
24
|
|
|
14
25
|
### Fixed
|
package/README.md
CHANGED
|
@@ -234,7 +234,7 @@ palette. Common commands:
|
|
|
234
234
|
| `/search <query>` | Search sessions by title or content |
|
|
235
235
|
| `/export [path]` | Export the session transcript |
|
|
236
236
|
| `/mcp [reconnect [server]]` | Inspect or reconnect MCP servers |
|
|
237
|
-
| `/extensions` | List
|
|
237
|
+
| `/extensions` | List discovered extensions and load status |
|
|
238
238
|
| `/compact` | Compact older context |
|
|
239
239
|
| `/clear` | Clear the transcript view |
|
|
240
240
|
| `/approval` | Change approval mode |
|
package/dist/agent/loop.d.ts
CHANGED
|
@@ -12,6 +12,8 @@ export declare class AgentRuntime {
|
|
|
12
12
|
private bashConcurrency;
|
|
13
13
|
private toolMap;
|
|
14
14
|
private limits;
|
|
15
|
+
private extensionDispatch;
|
|
16
|
+
private steeringQueue;
|
|
15
17
|
private systemPrompt;
|
|
16
18
|
private contextWindow;
|
|
17
19
|
private contextUsed;
|
|
@@ -22,11 +24,18 @@ export declare class AgentRuntime {
|
|
|
22
24
|
getContextUsage(): ContextUsage;
|
|
23
25
|
private emitContextUsage;
|
|
24
26
|
setEffort(effort: string): void;
|
|
27
|
+
setSteeringQueue(queue: string[]): void;
|
|
28
|
+
compactSession(session: {
|
|
29
|
+
messages: Message[];
|
|
30
|
+
appendMessage(m: Message): void;
|
|
31
|
+
appendEvent?(partial: any): any;
|
|
32
|
+
}, focus?: string): Promise<string | null>;
|
|
25
33
|
/** Replace the toolset, e.g. after MCP discovery or a list_changed refresh. */
|
|
26
34
|
setTools(tools: AgentRuntimeOptions["tools"]): void;
|
|
27
35
|
getEffort(): string;
|
|
28
36
|
runAgentTurn(input: string, session: {
|
|
29
37
|
messages: Message[];
|
|
30
38
|
appendMessage(m: Message): void;
|
|
39
|
+
appendEvent?(partial: any): any;
|
|
31
40
|
}, signal: AbortSignal): Promise<string>;
|
|
32
41
|
}
|
package/dist/agent/loop.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { DEFAULT_LIMITS } from "../types.js";
|
|
2
2
|
import { executeToolBatch } from "../runtime/scheduler.js";
|
|
3
3
|
import { ContextManager } from "../context/manager.js";
|
|
4
|
+
import { runModelTurn } from "./model-turn.js";
|
|
5
|
+
import { TurnRecorder } from "./turn-recorder.js";
|
|
4
6
|
export class AgentRuntime {
|
|
5
7
|
provider;
|
|
6
8
|
model;
|
|
@@ -13,6 +15,8 @@ export class AgentRuntime {
|
|
|
13
15
|
bashConcurrency;
|
|
14
16
|
toolMap;
|
|
15
17
|
limits;
|
|
18
|
+
extensionDispatch;
|
|
19
|
+
steeringQueue;
|
|
16
20
|
systemPrompt;
|
|
17
21
|
contextWindow;
|
|
18
22
|
contextUsed;
|
|
@@ -38,6 +42,8 @@ export class AgentRuntime {
|
|
|
38
42
|
});
|
|
39
43
|
this.toolMap = new Map(options.tools.map((t) => [t.definition.name, t]));
|
|
40
44
|
this.limits = { ...DEFAULT_LIMITS, ...(options.limits ?? {}) };
|
|
45
|
+
this.extensionDispatch = options.extensionDispatch;
|
|
46
|
+
this.steeringQueue = options.steeringQueue;
|
|
41
47
|
this.systemPrompt = options.systemPrompt ?? "You are a coding assistant with tools: read, write, edit, bash, webfetch, websearch.";
|
|
42
48
|
this.contextWindow = options.contextWindow;
|
|
43
49
|
this.contextManager.setModelContextWindow(options.contextWindow);
|
|
@@ -76,6 +82,23 @@ export class AgentRuntime {
|
|
|
76
82
|
setEffort(effort) {
|
|
77
83
|
this.effort = effort;
|
|
78
84
|
}
|
|
85
|
+
setSteeringQueue(queue) {
|
|
86
|
+
this.steeringQueue = queue;
|
|
87
|
+
}
|
|
88
|
+
async compactSession(session, focus) {
|
|
89
|
+
const summary = await this.contextManager.compactHistory(this.workspace, session.messages, focus);
|
|
90
|
+
if (summary) {
|
|
91
|
+
this.contextManager.setSessionMemory(summary, this.contextManager.getLastCompactionCoveredCount());
|
|
92
|
+
if (typeof session.appendEvent === "function") {
|
|
93
|
+
session.appendEvent({
|
|
94
|
+
type: "context_compacted",
|
|
95
|
+
summary,
|
|
96
|
+
coveredCount: this.contextManager.getLastCompactionCoveredCount(),
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return summary;
|
|
101
|
+
}
|
|
79
102
|
/** Replace the toolset, e.g. after MCP discovery or a list_changed refresh. */
|
|
80
103
|
setTools(tools) {
|
|
81
104
|
this.tools = tools;
|
|
@@ -85,10 +108,29 @@ export class AgentRuntime {
|
|
|
85
108
|
return this.effort;
|
|
86
109
|
}
|
|
87
110
|
async runAgentTurn(input, session, signal) {
|
|
111
|
+
// Restore any persisted session memory for resumed sessions.
|
|
112
|
+
const events = session.events;
|
|
113
|
+
if (Array.isArray(events)) {
|
|
114
|
+
const latest = [...events].reverse().find((e) => e?.type === "context_compacted");
|
|
115
|
+
this.contextManager.setSessionMemory(typeof latest?.summary === "string" ? latest.summary : null, typeof latest?.coveredCount === "number" ? latest.coveredCount : undefined);
|
|
116
|
+
}
|
|
88
117
|
session.appendMessage({ role: "user", content: [{ type: "text", text: input }] });
|
|
118
|
+
await this.extensionDispatch?.("turn_start", { type: "turn_start" });
|
|
89
119
|
let totalToolCalls = 0;
|
|
120
|
+
let forceContinue = false;
|
|
90
121
|
const start = Date.now();
|
|
91
122
|
for (let iteration = 0; iteration < this.limits.maxIterations; iteration++) {
|
|
123
|
+
forceContinue = false;
|
|
124
|
+
// Drain any steering messages into the session before the next model turn.
|
|
125
|
+
if (this.steeringQueue && this.steeringQueue.length > 0) {
|
|
126
|
+
while (this.steeringQueue.length > 0) {
|
|
127
|
+
const msg = this.steeringQueue.shift();
|
|
128
|
+
session.appendMessage({
|
|
129
|
+
role: "user",
|
|
130
|
+
content: [{ type: "text", text: msg }],
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
}
|
|
92
134
|
if (signal.aborted) {
|
|
93
135
|
throw new Error("USER_CANCELLED");
|
|
94
136
|
}
|
|
@@ -101,49 +143,58 @@ export class AgentRuntime {
|
|
|
101
143
|
// assistant response reports fresh numbers.
|
|
102
144
|
this.contextUsed = undefined;
|
|
103
145
|
this.emitContextUsage();
|
|
146
|
+
const summary = this.contextManager.consumeCompactionSummary();
|
|
147
|
+
const coveredCount = this.contextManager.consumeCompactionCoveredCount();
|
|
148
|
+
if (summary && typeof session.appendEvent === "function") {
|
|
149
|
+
session.appendEvent({
|
|
150
|
+
type: "context_compacted",
|
|
151
|
+
summary,
|
|
152
|
+
coveredCount,
|
|
153
|
+
});
|
|
154
|
+
}
|
|
104
155
|
}
|
|
105
|
-
|
|
156
|
+
let response;
|
|
157
|
+
let streamedText = "";
|
|
158
|
+
await this.extensionDispatch?.("before_provider_request", {
|
|
159
|
+
type: "before_provider_request",
|
|
160
|
+
messages,
|
|
161
|
+
tools: this.tools.map((t) => t.definition),
|
|
162
|
+
});
|
|
163
|
+
for await (const ev of runModelTurn({
|
|
164
|
+
provider: this.provider,
|
|
106
165
|
model: this.model,
|
|
107
166
|
messages,
|
|
108
167
|
tools: this.tools.map((t) => t.definition),
|
|
168
|
+
effort: this.effort,
|
|
109
169
|
signal,
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
let streamedText = "";
|
|
114
|
-
if (typeof this.provider.stream === "function") {
|
|
115
|
-
// Stream tokens as they arrive.
|
|
116
|
-
for await (const ev of this.provider.stream(request)) {
|
|
117
|
-
if (ev.type === "thinking") {
|
|
118
|
-
this.onEvent?.({ type: "thinking_delta", text: ev.text });
|
|
119
|
-
}
|
|
120
|
-
else if (ev.type === "text") {
|
|
121
|
-
streamedText += ev.text;
|
|
122
|
-
this.onEvent?.({ type: "assistant_delta", text: ev.text });
|
|
123
|
-
}
|
|
124
|
-
else if (ev.type === "done") {
|
|
125
|
-
response = ev.response;
|
|
126
|
-
}
|
|
170
|
+
})) {
|
|
171
|
+
if (ev.type === "thinking_delta") {
|
|
172
|
+
this.onEvent?.({ type: "thinking_delta", text: ev.text });
|
|
127
173
|
}
|
|
128
|
-
if (
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
};
|
|
174
|
+
else if (ev.type === "assistant_delta") {
|
|
175
|
+
streamedText += ev.text;
|
|
176
|
+
this.onEvent?.({ type: "assistant_delta", text: ev.text });
|
|
177
|
+
}
|
|
178
|
+
else if (ev.type === "assistant_text") {
|
|
179
|
+
streamedText = ev.text;
|
|
180
|
+
this.onEvent?.({ type: "assistant_text", text: ev.text });
|
|
181
|
+
}
|
|
182
|
+
else if (ev.type === "final") {
|
|
183
|
+
response = ev.response;
|
|
184
|
+
streamedText = ev.streamedText;
|
|
135
185
|
}
|
|
136
186
|
}
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
187
|
+
await this.extensionDispatch?.("after_provider_response", {
|
|
188
|
+
type: "after_provider_response",
|
|
189
|
+
response,
|
|
190
|
+
});
|
|
191
|
+
const recorder = new TurnRecorder({
|
|
192
|
+
session,
|
|
193
|
+
onEvent: this.onEvent,
|
|
194
|
+
extensionDispatch: this.extensionDispatch,
|
|
195
|
+
});
|
|
196
|
+
const text = await recorder.recordAssistant(response, streamedText);
|
|
145
197
|
if (response.usage) {
|
|
146
|
-
this.onEvent?.({ type: "usage", input: response.usage.input, output: response.usage.output });
|
|
147
198
|
const used = (response.usage.input ?? 0) + (response.usage.output ?? 0);
|
|
148
199
|
if (used > 0) {
|
|
149
200
|
// The latest assistant step's prompt + generated tokens is the
|
|
@@ -152,14 +203,61 @@ export class AgentRuntime {
|
|
|
152
203
|
this.emitContextUsage();
|
|
153
204
|
}
|
|
154
205
|
}
|
|
155
|
-
const text = streamedText || (response.message.content?.map((p) => (p.type === "text" ? p.text : "")).join("") ?? "");
|
|
156
206
|
const toolCalls = response.toolCalls ?? [];
|
|
157
207
|
if (toolCalls.length === 0) {
|
|
158
|
-
|
|
208
|
+
// turn_end / agent_before_settle continuation handling.
|
|
209
|
+
let continued = false;
|
|
210
|
+
const turnResults = await this.extensionDispatch?.("turn_end", {
|
|
211
|
+
type: "turn_end",
|
|
212
|
+
});
|
|
213
|
+
for (const r of turnResults ?? []) {
|
|
214
|
+
if (r && r.continue)
|
|
215
|
+
continued = true;
|
|
216
|
+
}
|
|
217
|
+
if (continued) {
|
|
218
|
+
forceContinue = true;
|
|
219
|
+
continue;
|
|
220
|
+
}
|
|
221
|
+
const settleResults = await this.extensionDispatch?.("agent_before_settle", { type: "agent_before_settle" });
|
|
222
|
+
for (const r of settleResults ?? []) {
|
|
223
|
+
if (r && r.continue)
|
|
224
|
+
continued = true;
|
|
225
|
+
}
|
|
226
|
+
if (continued) {
|
|
227
|
+
forceContinue = true;
|
|
228
|
+
continue;
|
|
229
|
+
}
|
|
230
|
+
await this.extensionDispatch?.("agent_settled", {
|
|
231
|
+
type: "agent_settled",
|
|
232
|
+
});
|
|
159
233
|
return text;
|
|
160
234
|
}
|
|
161
|
-
|
|
162
|
-
|
|
235
|
+
// Emit tool_call events; allow mutation and block decisions.
|
|
236
|
+
const blocked = new Set();
|
|
237
|
+
let terminate = false;
|
|
238
|
+
for (const call of toolCalls) {
|
|
239
|
+
const payload = {
|
|
240
|
+
type: "tool_call",
|
|
241
|
+
toolCallId: call.id,
|
|
242
|
+
name: call.name,
|
|
243
|
+
input: call.arguments,
|
|
244
|
+
};
|
|
245
|
+
const results = await this.extensionDispatch?.("tool_call", payload);
|
|
246
|
+
// Apply in-place mutation.
|
|
247
|
+
if (payload.input && payload.input !== call.arguments) {
|
|
248
|
+
call.arguments = payload.input;
|
|
249
|
+
}
|
|
250
|
+
for (const r of results ?? []) {
|
|
251
|
+
if (r && typeof r === "object") {
|
|
252
|
+
if (r.block)
|
|
253
|
+
blocked.add(call.id);
|
|
254
|
+
if (r.terminate)
|
|
255
|
+
terminate = true;
|
|
256
|
+
if (r.input)
|
|
257
|
+
call.arguments = r.input;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
}
|
|
163
261
|
totalToolCalls += toolCalls.length;
|
|
164
262
|
if (totalToolCalls > this.limits.maxToolCalls) {
|
|
165
263
|
return "TASK_BUDGET_REACHED";
|
|
@@ -178,24 +276,112 @@ export class AgentRuntime {
|
|
|
178
276
|
stream,
|
|
179
277
|
text,
|
|
180
278
|
});
|
|
279
|
+
void this.extensionDispatch?.("tool_execution_update", {
|
|
280
|
+
type: "tool_execution_update",
|
|
281
|
+
toolCallId: call.id,
|
|
282
|
+
name: call.name,
|
|
283
|
+
stream,
|
|
284
|
+
text,
|
|
285
|
+
});
|
|
181
286
|
},
|
|
182
287
|
};
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
288
|
+
// Wrapped tool map emits tool_execution_start/end.
|
|
289
|
+
const wrappedToolMap = new Map(this.toolMap);
|
|
290
|
+
for (const [name, tool] of this.toolMap) {
|
|
291
|
+
wrappedToolMap.set(name, {
|
|
292
|
+
...tool,
|
|
293
|
+
execute: async (call, ctx2) => {
|
|
294
|
+
await this.extensionDispatch?.("tool_execution_start", {
|
|
295
|
+
type: "tool_execution_start",
|
|
296
|
+
toolCallId: call.id,
|
|
297
|
+
name: call.name,
|
|
298
|
+
args: call.arguments,
|
|
299
|
+
});
|
|
300
|
+
let result;
|
|
301
|
+
try {
|
|
302
|
+
result = await tool.execute(call, ctx2);
|
|
303
|
+
}
|
|
304
|
+
catch (err) {
|
|
305
|
+
result = {
|
|
306
|
+
toolCallId: call.id,
|
|
307
|
+
name: call.name,
|
|
308
|
+
content: `COMMAND_FAILED: ${err instanceof Error ? err.message : String(err)}`,
|
|
309
|
+
isError: true,
|
|
310
|
+
};
|
|
311
|
+
}
|
|
312
|
+
await this.extensionDispatch?.("tool_execution_end", {
|
|
313
|
+
type: "tool_execution_end",
|
|
314
|
+
toolCallId: call.id,
|
|
315
|
+
name: call.name,
|
|
316
|
+
result,
|
|
317
|
+
isError: result?.isError,
|
|
318
|
+
});
|
|
319
|
+
return result;
|
|
320
|
+
},
|
|
321
|
+
});
|
|
322
|
+
}
|
|
323
|
+
const blockedResults = new Map();
|
|
324
|
+
for (const call of toolCalls) {
|
|
325
|
+
if (!blocked.has(call.id))
|
|
326
|
+
continue;
|
|
327
|
+
const reason = "blocked by extension";
|
|
328
|
+
const r = {
|
|
329
|
+
toolCallId: call.id,
|
|
330
|
+
name: call.name,
|
|
331
|
+
content: reason,
|
|
332
|
+
isError: true,
|
|
333
|
+
};
|
|
334
|
+
blockedResults.set(call.id, r);
|
|
335
|
+
await this.extensionDispatch?.("tool_execution_start", {
|
|
336
|
+
type: "tool_execution_start",
|
|
337
|
+
toolCallId: call.id,
|
|
338
|
+
name: call.name,
|
|
339
|
+
args: call.arguments,
|
|
340
|
+
});
|
|
341
|
+
await this.extensionDispatch?.("tool_execution_end", {
|
|
342
|
+
type: "tool_execution_end",
|
|
343
|
+
toolCallId: call.id,
|
|
344
|
+
name: call.name,
|
|
345
|
+
result: r,
|
|
346
|
+
isError: true,
|
|
190
347
|
});
|
|
191
|
-
|
|
348
|
+
}
|
|
349
|
+
const execCalls = toolCalls.filter((c) => !blocked.has(c.id));
|
|
350
|
+
const execResults = await executeToolBatch(execCalls, wrappedToolMap, ctx, this.limits.maxParallelToolCalls, signal, undefined, this.bashConcurrency);
|
|
351
|
+
const resultMap = new Map();
|
|
352
|
+
for (const r of blockedResults.values())
|
|
353
|
+
resultMap.set(r.toolCallId, r);
|
|
354
|
+
for (const r of execResults) {
|
|
355
|
+
// Emit tool_result event and allow patches.
|
|
356
|
+
const payload = {
|
|
192
357
|
type: "tool_result",
|
|
193
358
|
toolCallId: r.toolCallId,
|
|
194
359
|
name: r.name,
|
|
195
360
|
content: r.content,
|
|
361
|
+
details: r.details,
|
|
362
|
+
structuredContent: r.structuredContent,
|
|
196
363
|
isError: r.isError,
|
|
197
|
-
|
|
364
|
+
usage: r.usage,
|
|
365
|
+
};
|
|
366
|
+
await this.extensionDispatch?.("tool_result", payload);
|
|
367
|
+
r.content = payload.content ?? r.content;
|
|
368
|
+
r.details = payload.details ?? r.details;
|
|
369
|
+
r.structuredContent = payload.structuredContent ?? r.structuredContent;
|
|
370
|
+
r.isError = payload.isError ?? r.isError;
|
|
371
|
+
r.usage = payload.usage ?? r.usage;
|
|
372
|
+
resultMap.set(r.toolCallId, r);
|
|
373
|
+
}
|
|
374
|
+
const orderedResults = toolCalls
|
|
375
|
+
.map((c) => resultMap.get(c.id))
|
|
376
|
+
.filter(Boolean);
|
|
377
|
+
for (const r of orderedResults) {
|
|
378
|
+
recorder.recordToolResult(r);
|
|
379
|
+
}
|
|
380
|
+
if (terminate) {
|
|
381
|
+
await this.extensionDispatch?.("agent_settled", {
|
|
382
|
+
type: "agent_settled",
|
|
198
383
|
});
|
|
384
|
+
return text;
|
|
199
385
|
}
|
|
200
386
|
}
|
|
201
387
|
return "TASK_BUDGET_REACHED";
|
package/dist/agent/loop.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loop.js","sourceRoot":"","sources":["../../src/agent/loop.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,MAAM,OAAO,YAAY;IACf,QAAQ,CAAkC;IAC1C,KAAK,CAAS;IACd,SAAS,CAAS;IAClB,SAAS,CAAmC;IAC5C,cAAc,CAAiB;IAC/B,OAAO,CAAiC;IACxC,KAAK,CAA+B;IACpC,MAAM,CAAS;IACf,eAAe,CAAwB;IACvC,OAAO,CAAoD;IAC3D,MAAM,CAAc;IACpB,YAAY,CAAS;IACrB,aAAa,CAAqB;IAClC,WAAW,CAAqB;IAExC,YAAY,OAA4B;QACtC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,SAAS,CAAC;QACxC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QACpD,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,QAAQ,CAAC;QACzC,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,QAAQ,CAAC;QAC3D,IAAI,CAAC,cAAc;YACjB,OAAO,CAAC,cAAc;gBACtB,IAAI,cAAc,CAAC;oBACjB,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,6BAA6B;oBACnE,cAAc,EAAE,IAAI;oBACpB,mBAAmB,EAAE,IAAI;oBACzB,gBAAgB,EAAE,EAAE;oBACpB,0BAA0B,EAAE,KAAK;oBACjC,QAAQ,EAAE,OAAO,CAAC,QAAQ;oBAC1B,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,SAAS;iBAClC,CAAC,CAAC;QACL,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;QAC/D,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,sFAAsF,CAAC;QACnI,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;QAC3C,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACnE,CAAC;IAED,WAAW,CAAC,QAAyC,EAAE,KAAc;QACnE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,KAAK;YAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACtD,2EAA2E;QAC3E,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;QAC7B,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACrF,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED,mFAAmF;IACnF,gBAAgB,CAAC,MAA0B;QACzC,MAAM,IAAI,GACR,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC;YACjE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YACpB,CAAC,CAAC,SAAS,CAAC;QAChB,IAAI,IAAI,KAAK,IAAI,CAAC,aAAa;YAAE,OAAO;QACxC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED,eAAe;QACb,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;IAChE,CAAC;IAEO,gBAAgB;QACtB,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,IAAI,EAAE,eAAe;YACrB,IAAI,EAAE,IAAI,CAAC,WAAW;YACtB,MAAM,EAAE,IAAI,CAAC,aAAa;SAC3B,CAAC,CAAC;IACL,CAAC;IAED,SAAS,CAAC,MAAc;QACtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,+EAA+E;IAC/E,QAAQ,CAAC,KAAmC;QAC1C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,KAAa,EACb,OAAiE,EACjE,MAAmB;QAEnB,OAAO,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAElF,IAAI,cAAc,GAAG,CAAC,CAAC;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEzB,KACE,IAAI,SAAS,GAAG,CAAC,EACjB,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,EACrC,SAAS,EAAE,EACX,CAAC;YACD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;YACpC,CAAC;YACD,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;gBACpD,OAAO,qBAAqB,CAAC;YAC/B,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,CAC9C,IAAI,CAAC,SAAS,EACd,OAAO,CAAC,QAAQ,CACjB,CAAC;YACF,IAAI,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,EAAE,CAAC;gBAC5C,+DAA+D;gBAC/D,4CAA4C;gBAC5C,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;gBAC7B,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,CAAC;YAED,MAAM,OAAO,GAAiB;gBAC5B,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,QAAQ;gBACR,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;gBAC1C,MAAM;gBACN,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;aACjC,CAAC;YAEF,IAAI,QAAa,CAAC;YAClB,IAAI,YAAY,GAAG,EAAE,CAAC;YACtB,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;gBAC/C,gCAAgC;gBAChC,IAAI,KAAK,EAAE,MAAM,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;oBACrD,IAAI,EAAE,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;wBAC3B,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;oBAC5D,CAAC;yBAAM,IAAI,EAAE,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;wBAC9B,YAAY,IAAI,EAAE,CAAC,IAAI,CAAC;wBACxB,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;oBAC7D,CAAC;yBAAM,IAAI,EAAE,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;wBAC9B,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC;oBACzB,CAAC;gBACH,CAAC;gBACD,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,wCAAwC;oBACxC,QAAQ,GAAG;wBACT,OAAO,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE;wBAChI,SAAS,EAAE,EAAE;wBACb,YAAY,EAAE,MAAM;qBACrB,CAAC;gBACJ,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACjD,MAAM,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;gBACtG,IAAI,CAAC;oBAAE,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC3D,YAAY,GAAG,CAAC,CAAC;YACnB,CAAC;YAED,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAExC,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;gBACnB,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC9F,MAAM,IAAI,GACR,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;gBAC7D,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;oBACb,+DAA+D;oBAC/D,8DAA8D;oBAC9D,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;oBACxB,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAC1B,CAAC;YACH,CAAC;YAED,MAAM,IAAI,GAAG,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;YAC3H,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,IAAI,EAAE,CAAC;YAC3C,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;gBACxC,OAAO,IAAI,CAAC;YACd,CAAC;YACD,KAAK,MAAM,CAAC,IAAI,SAAS;gBACvB,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;YAEnF,cAAc,IAAI,SAAS,CAAC,MAAM,CAAC;YACnC,IAAI,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;gBAC9C,OAAO,qBAAqB,CAAC;YAC/B,CAAC;YAED,MAAM,GAAG,GAAG;gBACV,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,MAAM;gBACN,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa;gBACxC,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,kBAAkB;gBAClD,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,YAAY,EAAE,CACZ,IAAkC,EAClC,MAA2B,EAC3B,IAAY,EACZ,EAAE;oBACF,IAAI,CAAC,OAAO,EAAE,CAAC;wBACb,IAAI,EAAE,aAAa;wBACnB,UAAU,EAAE,IAAI,CAAC,EAAE;wBACnB,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,MAAM;wBACN,IAAI;qBACL,CAAC,CAAC;gBACL,CAAC;aACF,CAAC;YACF,MAAM,OAAO,GAAG,MAAM,gBAAgB,CACpC,SAAS,EACT,IAAI,CAAC,OAAO,EACZ,GAAG,EACH,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAChC,MAAM,EACN,SAAS,EACT,IAAI,CAAC,eAAe,CACrB,CAAC;YACF,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;gBACxB,OAAO,CAAC,aAAa,CAAC;oBACpB,IAAI,EAAE,MAAM;oBACZ,UAAU,EAAE,CAAC,CAAC,UAAU;oBACxB,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,OAAO,EAAE,CAAC,CAAC,OAAO;iBACnB,CAAC,CAAC;gBACH,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,IAAI,EAAE,aAAa;oBACnB,UAAU,EAAE,CAAC,CAAC,UAAU;oBACxB,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,OAAO,EAAE,CAAC,CAAC,OAAO;oBAClB,OAAO,EAAE,CAAC,CAAC,OAAO;oBAClB,IAAI,EAAE,CAAC,CAAC,IAAI;iBACb,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,qBAAqB,CAAC;IAC/B,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"loop.js","sourceRoot":"","sources":["../../src/agent/loop.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { Message, ModelRequest } from "../types.js";
|
|
2
|
+
import type { ProviderAdapter } from "../providers/types.js";
|
|
3
|
+
export interface ModelTurnRequest {
|
|
4
|
+
provider: ProviderAdapter;
|
|
5
|
+
model: string;
|
|
6
|
+
messages: Message[];
|
|
7
|
+
tools: ModelRequest["tools"];
|
|
8
|
+
effort: string;
|
|
9
|
+
signal: AbortSignal;
|
|
10
|
+
}
|
|
11
|
+
export type ModelTurnEvent = {
|
|
12
|
+
type: "thinking_delta";
|
|
13
|
+
text: string;
|
|
14
|
+
} | {
|
|
15
|
+
type: "assistant_delta";
|
|
16
|
+
text: string;
|
|
17
|
+
} | {
|
|
18
|
+
type: "assistant_text";
|
|
19
|
+
text: string;
|
|
20
|
+
} | {
|
|
21
|
+
type: "final";
|
|
22
|
+
response: {
|
|
23
|
+
message: Message;
|
|
24
|
+
toolCalls?: ModelRequest extends {
|
|
25
|
+
tools: infer T;
|
|
26
|
+
} ? unknown : unknown;
|
|
27
|
+
usage?: {
|
|
28
|
+
input?: number;
|
|
29
|
+
output?: number;
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
streamedText: string;
|
|
33
|
+
};
|
|
34
|
+
export declare class ModelTurn {
|
|
35
|
+
static run(request: ModelTurnRequest): AsyncGenerator<ModelTurnEvent, any, any>;
|
|
36
|
+
}
|
|
37
|
+
export declare function runModelTurn(request: ModelTurnRequest): AsyncGenerator<ModelTurnEvent>;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
export class ModelTurn {
|
|
2
|
+
static run(request) {
|
|
3
|
+
return runModelTurn(request);
|
|
4
|
+
}
|
|
5
|
+
}
|
|
6
|
+
export async function* runModelTurn(request) {
|
|
7
|
+
const modelRequest = {
|
|
8
|
+
model: request.model,
|
|
9
|
+
messages: request.messages,
|
|
10
|
+
tools: request.tools,
|
|
11
|
+
signal: request.signal,
|
|
12
|
+
options: { effort: request.effort },
|
|
13
|
+
};
|
|
14
|
+
if (typeof request.provider.stream === "function") {
|
|
15
|
+
let response;
|
|
16
|
+
let streamedText = "";
|
|
17
|
+
for await (const ev of request.provider.stream(modelRequest)) {
|
|
18
|
+
if (ev.type === "thinking") {
|
|
19
|
+
yield { type: "thinking_delta", text: ev.text };
|
|
20
|
+
}
|
|
21
|
+
else if (ev.type === "text") {
|
|
22
|
+
streamedText += ev.text;
|
|
23
|
+
yield { type: "assistant_delta", text: ev.text };
|
|
24
|
+
}
|
|
25
|
+
else if (ev.type === "done") {
|
|
26
|
+
response = ev.response;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
if (!response) {
|
|
30
|
+
response = {
|
|
31
|
+
message: {
|
|
32
|
+
role: "assistant",
|
|
33
|
+
content: streamedText
|
|
34
|
+
? [{ type: "text", text: streamedText }]
|
|
35
|
+
: undefined,
|
|
36
|
+
},
|
|
37
|
+
toolCalls: [],
|
|
38
|
+
finishReason: "stop",
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
yield { type: "final", response, streamedText };
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
const response = await request.provider.generate(modelRequest);
|
|
45
|
+
const text = response.message.content
|
|
46
|
+
?.map((p) => (p.type === "text" ? p.text : ""))
|
|
47
|
+
.join("") ?? "";
|
|
48
|
+
if (text) {
|
|
49
|
+
yield { type: "assistant_text", text };
|
|
50
|
+
}
|
|
51
|
+
yield { type: "final", response, streamedText: text };
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=model-turn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-turn.js","sourceRoot":"","sources":["../../src/agent/model-turn.ts"],"names":[],"mappings":"AA0BA,MAAM,OAAO,SAAS;IACpB,MAAM,CAAC,GAAG,CAAC,OAAyB;QAClC,OAAO,YAAY,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;CACF;AAED,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,YAAY,CACjC,OAAyB;IAEzB,MAAM,YAAY,GAAiB;QACjC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,OAAO,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE;KACpC,CAAC;IAEF,IAAI,OAAO,OAAO,CAAC,QAAQ,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QAClD,IAAI,QAAa,CAAC;QAClB,IAAI,YAAY,GAAG,EAAE,CAAC;QACtB,IAAI,KAAK,EAAE,MAAM,EAAE,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;YAC7D,IAAI,EAAE,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBAC3B,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;YAClD,CAAC;iBAAM,IAAI,EAAE,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC9B,YAAY,IAAI,EAAE,CAAC,IAAI,CAAC;gBACxB,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;YACnD,CAAC;iBAAM,IAAI,EAAE,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC9B,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC;YACzB,CAAC;QACH,CAAC;QACD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,QAAQ,GAAG;gBACT,OAAO,EAAE;oBACP,IAAI,EAAE,WAAW;oBACjB,OAAO,EAAE,YAAY;wBACnB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;wBACxC,CAAC,CAAC,SAAS;iBACd;gBACD,SAAS,EAAE,EAAE;gBACb,YAAY,EAAE,MAAM;aACrB,CAAC;QACJ,CAAC;QACD,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;QAChD,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC/D,MAAM,IAAI,GACR,QAAQ,CAAC,OAAO,CAAC,OAAO;QACtB,EAAE,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SACnD,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;IACpB,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC;IACzC,CAAC;IACD,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;AACxD,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { Message } from "../types.js";
|
|
2
|
+
export interface TurnRecorderOptions {
|
|
3
|
+
session: {
|
|
4
|
+
appendMessage(message: Message): void;
|
|
5
|
+
};
|
|
6
|
+
onEvent?: (event: unknown) => void;
|
|
7
|
+
extensionDispatch?: (event: string, payload: any) => Promise<any[]> | any[];
|
|
8
|
+
}
|
|
9
|
+
export declare class TurnRecorder {
|
|
10
|
+
private session;
|
|
11
|
+
private onEvent;
|
|
12
|
+
private extensionDispatch;
|
|
13
|
+
constructor(options: TurnRecorderOptions);
|
|
14
|
+
recordAssistant(response: {
|
|
15
|
+
message: Message;
|
|
16
|
+
toolCalls?: Array<{
|
|
17
|
+
id: string;
|
|
18
|
+
name: string;
|
|
19
|
+
arguments: Record<string, unknown>;
|
|
20
|
+
}>;
|
|
21
|
+
usage?: {
|
|
22
|
+
input?: number;
|
|
23
|
+
output?: number;
|
|
24
|
+
};
|
|
25
|
+
}, streamedText: string): Promise<string>;
|
|
26
|
+
recordToolResult(result: {
|
|
27
|
+
toolCallId: string;
|
|
28
|
+
name: string;
|
|
29
|
+
content: string;
|
|
30
|
+
isError?: boolean;
|
|
31
|
+
diff?: string[];
|
|
32
|
+
}): void;
|
|
33
|
+
}
|