@cursor/july 0.1.2 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +16 -5
- package/README.md +8 -9
- package/dist/bin/agent-serve.d.ts +3 -1
- package/dist/bin/agent-serve.d.ts.map +1 -1
- package/dist/bin/agent-serve.js +389 -152
- package/dist/docs/404.html +2 -2
- package/dist/docs/ab.html +3 -3
- package/dist/docs/assets/{app.Oje4vhlk.js → app.BR0RbIdx.js} +1 -1
- package/dist/docs/assets/chunks/@localSearchIndexroot.DtIOQzGj.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.H5XZ2zCB.js → VPLocalSearchBox.qjsVTneI.js} +1 -1
- package/dist/docs/assets/chunks/{theme.CTR_TuaE.js → theme.2Kg8jIp_.js} +2 -2
- package/dist/docs/assets/{quickstart.md.CfU8_uTC.js → quickstart.md.BU6Iwi_9.js} +18 -6
- package/dist/docs/assets/{reference_cli.md.DA730zCu.js → reference_cli.md.Bv6pOxcF.js} +11 -6
- package/dist/docs/assets/{reference_cli.md.DA730zCu.lean.js → reference_cli.md.Bv6pOxcF.lean.js} +1 -1
- package/dist/docs/building-with-agents.html +3 -3
- package/dist/docs/concepts.html +3 -3
- package/dist/docs/deployment.html +3 -3
- package/dist/docs/evals.html +3 -3
- package/dist/docs/guides/agent-to-agent.html +3 -3
- package/dist/docs/guides/cloud-runtime.html +3 -3
- package/dist/docs/guides/github.html +3 -3
- package/dist/docs/guides/human-in-the-loop.html +3 -3
- package/dist/docs/guides/slack.html +3 -3
- package/dist/docs/guides/webhooks.html +3 -3
- package/dist/docs/hashmap.json +1 -1
- package/dist/docs/hillclimbing.html +3 -3
- package/dist/docs/index.html +3 -3
- package/dist/docs/quickstart.html +22 -10
- package/dist/docs/reference/agent-config.html +3 -3
- package/dist/docs/reference/channels.html +3 -3
- package/dist/docs/reference/cli.html +14 -9
- package/dist/docs/reference/connections.html +3 -3
- package/dist/docs/reference/hooks.html +3 -3
- package/dist/docs/reference/http-api.html +3 -3
- package/dist/docs/reference/instructions.html +3 -3
- package/dist/docs/reference/playground.html +3 -3
- package/dist/docs/reference/project-layout.html +3 -3
- package/dist/docs/reference/schedules.html +3 -3
- package/dist/docs/reference/sessions.html +3 -3
- package/dist/docs/reference/skills.html +3 -3
- package/dist/docs/reference/subagents.html +3 -3
- package/dist/docs/reference/tools.html +3 -3
- package/dist/docs/scaffolding-agents.html +3 -3
- package/dist/docs/storage.html +3 -3
- package/dist/docs/troubleshooting.html +3 -3
- package/dist/internal/chat-client.d.ts +29 -3
- package/dist/internal/chat-client.d.ts.map +1 -1
- package/dist/internal/chat-client.js +180 -27
- package/dist/internal/cli-ax.d.ts +75 -2
- package/dist/internal/cli-ax.d.ts.map +1 -1
- package/dist/internal/cli-ax.js +600 -52
- package/dist/internal/cli-cursor.d.ts.map +1 -1
- package/dist/internal/cli-cursor.js +8 -36
- package/dist/internal/cli-deploy.d.ts +59 -3
- package/dist/internal/cli-deploy.d.ts.map +1 -1
- package/dist/internal/cli-deploy.js +316 -38
- package/dist/internal/cursor/credentials.d.ts +9 -0
- package/dist/internal/cursor/credentials.d.ts.map +1 -1
- package/dist/internal/cursor/credentials.js +12 -0
- package/dist/internal/deploy-client.d.ts +9 -1
- package/dist/internal/deploy-client.d.ts.map +1 -1
- package/dist/internal/deploy-client.js +23 -3
- package/dist/internal/deploy-source.d.ts +35 -0
- package/dist/internal/deploy-source.d.ts.map +1 -0
- package/dist/internal/deploy-source.js +118 -0
- package/dist/internal/discovery.d.ts +11 -0
- package/dist/internal/discovery.d.ts.map +1 -1
- package/dist/internal/discovery.js +43 -14
- package/dist/internal/eval-run-store.d.ts.map +1 -1
- package/dist/internal/eval-run-store.js +2 -1
- package/dist/internal/eval-runner.d.ts +2 -0
- package/dist/internal/eval-runner.d.ts.map +1 -1
- package/dist/internal/eval-runner.js +2 -0
- package/dist/internal/event-mapper.d.ts +54 -1
- package/dist/internal/event-mapper.d.ts.map +1 -1
- package/dist/internal/event-mapper.js +151 -41
- package/dist/internal/init-project.d.ts +88 -1
- package/dist/internal/init-project.d.ts.map +1 -1
- package/dist/internal/init-project.js +221 -31
- package/dist/internal/install-cursor-skills.d.ts +64 -0
- package/dist/internal/install-cursor-skills.d.ts.map +1 -0
- package/dist/internal/install-cursor-skills.js +274 -0
- package/dist/internal/logs-client.d.ts +60 -0
- package/dist/internal/logs-client.d.ts.map +1 -0
- package/dist/internal/logs-client.js +311 -0
- package/dist/internal/open-browser.d.ts +5 -0
- package/dist/internal/open-browser.d.ts.map +1 -0
- package/dist/internal/open-browser.js +34 -0
- package/dist/internal/playground/toolchain.d.ts.map +1 -1
- package/dist/internal/playground/toolchain.js +16 -11
- package/dist/internal/playground-proxy.d.ts +69 -0
- package/dist/internal/playground-proxy.d.ts.map +1 -0
- package/dist/internal/playground-proxy.js +468 -0
- package/dist/internal/prompt-context.d.ts +35 -0
- package/dist/internal/prompt-context.d.ts.map +1 -0
- package/dist/internal/prompt-context.js +71 -0
- package/dist/internal/request-headers.d.ts +11 -0
- package/dist/internal/request-headers.d.ts.map +1 -0
- package/dist/internal/request-headers.js +14 -0
- package/dist/internal/resolve-prod-target.d.ts +42 -0
- package/dist/internal/resolve-prod-target.d.ts.map +1 -0
- package/dist/internal/resolve-prod-target.js +111 -0
- package/dist/internal/run-client.d.ts +2 -2
- package/dist/internal/run-client.d.ts.map +1 -1
- package/dist/internal/run-client.js +38 -23
- package/dist/internal/server.d.ts.map +1 -1
- package/dist/internal/server.js +10 -4
- package/dist/internal/session-engine.d.ts +1 -1
- package/dist/internal/session-engine.d.ts.map +1 -1
- package/dist/internal/session-engine.js +21 -6
- package/dist/internal/sessions-client.d.ts +21 -0
- package/dist/internal/sessions-client.d.ts.map +1 -0
- package/dist/internal/sessions-client.js +168 -0
- package/dist/internal/stream-progress.d.ts.map +1 -1
- package/dist/internal/stream-progress.js +31 -3
- package/dist/internal/terminal-style.d.ts +22 -0
- package/dist/internal/terminal-style.d.ts.map +1 -0
- package/dist/internal/terminal-style.js +49 -0
- package/dist/internal/trajectory.d.ts +10 -5
- package/dist/internal/trajectory.d.ts.map +1 -1
- package/dist/internal/trajectory.js +82 -10
- package/dist/internal/workspace.d.ts +11 -0
- package/dist/internal/workspace.d.ts.map +1 -1
- package/dist/internal/workspace.js +38 -4
- package/dist/playground/assets/index-D-vo2lV_.css +1 -0
- package/dist/playground/assets/index-x60b9q2j.js +312 -0
- package/dist/playground/index.html +2 -2
- package/dist/types.d.ts +26 -1
- package/dist/types.d.ts.map +1 -1
- package/docs/quickstart.md +22 -7
- package/docs/reference/cli.md +51 -3
- package/package.json +3 -1
- package/skills/ab/SKILL.md +8 -8
- package/skills/create-agent/SKILL.md +28 -22
- package/skills/debug/SKILL.md +11 -11
- package/skills/evals/SKILL.md +16 -16
- package/skills/framework-map/SKILL.md +6 -6
- package/skills/github/SKILL.md +13 -13
- package/skills/hillclimb/SKILL.md +10 -10
- package/skills/setup-slack/SKILL.md +13 -13
- package/src/bin/agent-serve.ts +422 -188
- package/src/internal/chat-client.ts +252 -37
- package/src/internal/cli-ax.ts +722 -72
- package/src/internal/cli-cursor.ts +14 -42
- package/src/internal/cli-deploy.ts +428 -49
- package/src/internal/cursor/credentials.ts +14 -0
- package/src/internal/deploy-client.ts +45 -4
- package/src/internal/deploy-source.ts +133 -0
- package/src/internal/discovery.ts +53 -16
- package/src/internal/eval-run-store.ts +2 -1
- package/src/internal/eval-runner.ts +5 -0
- package/src/internal/event-mapper.ts +222 -42
- package/src/internal/init-project.ts +333 -51
- package/src/internal/install-cursor-skills.ts +327 -0
- package/src/internal/logs-client.ts +442 -0
- package/src/internal/open-browser.ts +41 -0
- package/src/internal/playground/toolchain.ts +15 -13
- package/src/internal/playground-proxy.ts +576 -0
- package/src/internal/prompt-context.ts +95 -0
- package/src/internal/request-headers.ts +23 -0
- package/src/internal/resolve-prod-target.ts +150 -0
- package/src/internal/run-client.ts +39 -36
- package/src/internal/server.ts +12 -3
- package/src/internal/session-engine.ts +22 -3
- package/src/internal/sessions-client.ts +182 -0
- package/src/internal/stream-progress.ts +36 -2
- package/src/internal/terminal-style.ts +74 -0
- package/src/internal/trajectory.ts +91 -13
- package/src/internal/workspace.ts +42 -4
- package/src/types.ts +42 -6
- package/dist/docs/assets/chunks/@localSearchIndexroot.zwQ9RCQ7.js +0 -1
- package/dist/playground/assets/index-B1Qc9h2u.css +0 -1
- package/dist/playground/assets/index-CpDYCj8W.js +0 -79
- /package/dist/docs/assets/{quickstart.md.CfU8_uTC.lean.js → quickstart.md.BU6Iwi_9.lean.js} +0 -0
|
@@ -4,11 +4,63 @@
|
|
|
4
4
|
* (`SessionEvent` payloads). One mapper instance covers one turn.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import type {
|
|
7
|
+
import type {
|
|
8
|
+
InteractionUpdate as SdkInteractionUpdate,
|
|
9
|
+
ToolCall,
|
|
10
|
+
} from "@cursor/sdk";
|
|
8
11
|
import type { SessionEventPayload, TurnUsage } from "../types.js";
|
|
9
12
|
|
|
10
13
|
const CUSTOM_TOOLS_PROVIDER = "custom-user-tools";
|
|
11
14
|
|
|
15
|
+
/**
|
|
16
|
+
* Nested interaction updates from a task/subagent tool-call-delta.
|
|
17
|
+
* Mirrored locally so agent-serve typechecks against published `@cursor/sdk`
|
|
18
|
+
* versions that do not yet export `NestedTaskUpdate` / `tool-call-delta`.
|
|
19
|
+
*/
|
|
20
|
+
type NestedTaskUpdate =
|
|
21
|
+
| { type: "text-delta"; text: string }
|
|
22
|
+
| { type: "thinking-delta"; text: string }
|
|
23
|
+
| { type: "thinking-completed"; thinkingDurationMs: number }
|
|
24
|
+
| {
|
|
25
|
+
type: "tool-call-started";
|
|
26
|
+
callId: string;
|
|
27
|
+
toolCall: ToolCall;
|
|
28
|
+
modelCallId: string;
|
|
29
|
+
}
|
|
30
|
+
| {
|
|
31
|
+
type: "tool-call-completed";
|
|
32
|
+
callId: string;
|
|
33
|
+
toolCall: ToolCall;
|
|
34
|
+
modelCallId: string;
|
|
35
|
+
}
|
|
36
|
+
| {
|
|
37
|
+
type: "partial-tool-call";
|
|
38
|
+
callId: string;
|
|
39
|
+
toolCall: ToolCall;
|
|
40
|
+
modelCallId: string;
|
|
41
|
+
}
|
|
42
|
+
| { type: "step-started"; stepId: number }
|
|
43
|
+
| { type: "step-completed"; stepId: number; stepDurationMs: number };
|
|
44
|
+
|
|
45
|
+
type ToolCallDeltaUpdate = {
|
|
46
|
+
type: "tool-call-delta";
|
|
47
|
+
callId: string;
|
|
48
|
+
modelCallId: string;
|
|
49
|
+
taskUpdate: NestedTaskUpdate;
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
/** SDK updates plus nested task deltas once the SDK exposes them. */
|
|
53
|
+
type InteractionUpdate = SdkInteractionUpdate | ToolCallDeltaUpdate;
|
|
54
|
+
|
|
55
|
+
function asToolCallDelta(
|
|
56
|
+
update: InteractionUpdate
|
|
57
|
+
): ToolCallDeltaUpdate | undefined {
|
|
58
|
+
if ((update as { type: string }).type !== "tool-call-delta") {
|
|
59
|
+
return undefined;
|
|
60
|
+
}
|
|
61
|
+
return update as ToolCallDeltaUpdate;
|
|
62
|
+
}
|
|
63
|
+
|
|
12
64
|
export interface ToolCallDescription {
|
|
13
65
|
toolName: string;
|
|
14
66
|
args?: unknown;
|
|
@@ -20,12 +72,19 @@ export interface ToolResultDescription {
|
|
|
20
72
|
isError: boolean;
|
|
21
73
|
}
|
|
22
74
|
|
|
75
|
+
interface NestedAccumulators {
|
|
76
|
+
text: string;
|
|
77
|
+
reasoning: string;
|
|
78
|
+
}
|
|
79
|
+
|
|
23
80
|
export class TurnEventMapper {
|
|
24
81
|
private textAccumulator = "";
|
|
25
82
|
private reasoningAccumulator = "";
|
|
26
83
|
private usageTotal: TurnUsage | undefined;
|
|
27
84
|
private lastAssistantText: string | undefined;
|
|
28
85
|
private summaryTitle: string | undefined;
|
|
86
|
+
/** Per-parent-call accumulators for nested subagent streams. */
|
|
87
|
+
private readonly nested = new Map<string, NestedAccumulators>();
|
|
29
88
|
|
|
30
89
|
constructor(private readonly emit: (payload: SessionEventPayload) => void) {}
|
|
31
90
|
|
|
@@ -74,49 +133,11 @@ export class TurnEventMapper {
|
|
|
74
133
|
}
|
|
75
134
|
case "tool-call-started": {
|
|
76
135
|
this.flushAssistantText("tool_call");
|
|
77
|
-
|
|
78
|
-
this.emit({
|
|
79
|
-
type: "actions.requested",
|
|
80
|
-
data: {
|
|
81
|
-
calls: [
|
|
82
|
-
{
|
|
83
|
-
callId: update.callId,
|
|
84
|
-
toolName: description.toolName,
|
|
85
|
-
args: description.args,
|
|
86
|
-
},
|
|
87
|
-
],
|
|
88
|
-
},
|
|
89
|
-
});
|
|
90
|
-
if (description.subagent !== undefined) {
|
|
91
|
-
this.emit({
|
|
92
|
-
type: "subagent.called",
|
|
93
|
-
data: {
|
|
94
|
-
callId: update.callId,
|
|
95
|
-
name: description.subagent.name,
|
|
96
|
-
description: description.subagent.description,
|
|
97
|
-
},
|
|
98
|
-
});
|
|
99
|
-
}
|
|
136
|
+
this.emitToolStarted(update.callId, update.toolCall);
|
|
100
137
|
return;
|
|
101
138
|
}
|
|
102
139
|
case "tool-call-completed": {
|
|
103
|
-
|
|
104
|
-
const result = describeToolResult(update.toolCall);
|
|
105
|
-
this.emit({
|
|
106
|
-
type: "action.result",
|
|
107
|
-
data: {
|
|
108
|
-
callId: update.callId,
|
|
109
|
-
toolName: description.toolName,
|
|
110
|
-
output: result.output,
|
|
111
|
-
isError: result.isError,
|
|
112
|
-
},
|
|
113
|
-
});
|
|
114
|
-
if (description.subagent !== undefined) {
|
|
115
|
-
this.emit({
|
|
116
|
-
type: "subagent.completed",
|
|
117
|
-
data: { callId: update.callId, name: description.subagent.name },
|
|
118
|
-
});
|
|
119
|
-
}
|
|
140
|
+
this.emitToolCompleted(update.callId, update.toolCall);
|
|
120
141
|
return;
|
|
121
142
|
}
|
|
122
143
|
case "step-started": {
|
|
@@ -148,7 +169,13 @@ export class TurnEventMapper {
|
|
|
148
169
|
case "shell-output-delta":
|
|
149
170
|
return;
|
|
150
171
|
default: {
|
|
151
|
-
//
|
|
172
|
+
// Nested task/subagent progress (tool-call-delta) — accepted via
|
|
173
|
+
// structural check so we typecheck against older published SDKs.
|
|
174
|
+
const delta = asToolCallDelta(update);
|
|
175
|
+
if (delta !== undefined) {
|
|
176
|
+
this.handleNestedTaskUpdate(delta.callId, delta.taskUpdate);
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
152
179
|
return;
|
|
153
180
|
}
|
|
154
181
|
}
|
|
@@ -157,6 +184,143 @@ export class TurnEventMapper {
|
|
|
157
184
|
/** Close out the turn: finalize any open assistant text block. */
|
|
158
185
|
finish(): void {
|
|
159
186
|
this.flushAssistantText("stop");
|
|
187
|
+
for (const parentCallId of this.nested.keys()) {
|
|
188
|
+
this.flushNestedAssistantText(parentCallId, "stop");
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
private handleNestedTaskUpdate(
|
|
193
|
+
parentCallId: string,
|
|
194
|
+
update: NestedTaskUpdate
|
|
195
|
+
): void {
|
|
196
|
+
switch (update.type) {
|
|
197
|
+
case "text-delta": {
|
|
198
|
+
const acc = this.ensureNested(parentCallId);
|
|
199
|
+
acc.text += update.text;
|
|
200
|
+
this.emit({
|
|
201
|
+
type: "message.appended",
|
|
202
|
+
data: {
|
|
203
|
+
delta: update.text,
|
|
204
|
+
text: acc.text,
|
|
205
|
+
parentCallId,
|
|
206
|
+
},
|
|
207
|
+
});
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
210
|
+
case "thinking-delta": {
|
|
211
|
+
const acc = this.ensureNested(parentCallId);
|
|
212
|
+
acc.reasoning += update.text;
|
|
213
|
+
this.emit({
|
|
214
|
+
type: "reasoning.appended",
|
|
215
|
+
data: {
|
|
216
|
+
delta: update.text,
|
|
217
|
+
text: acc.reasoning,
|
|
218
|
+
parentCallId,
|
|
219
|
+
},
|
|
220
|
+
});
|
|
221
|
+
return;
|
|
222
|
+
}
|
|
223
|
+
case "thinking-completed": {
|
|
224
|
+
const acc = this.nested.get(parentCallId);
|
|
225
|
+
if (acc !== undefined && acc.reasoning !== "") {
|
|
226
|
+
acc.reasoning = "";
|
|
227
|
+
}
|
|
228
|
+
this.emit({
|
|
229
|
+
type: "reasoning.completed",
|
|
230
|
+
data: {
|
|
231
|
+
durationMs: update.thinkingDurationMs,
|
|
232
|
+
parentCallId,
|
|
233
|
+
},
|
|
234
|
+
});
|
|
235
|
+
return;
|
|
236
|
+
}
|
|
237
|
+
case "tool-call-started": {
|
|
238
|
+
this.flushNestedAssistantText(parentCallId, "tool_call");
|
|
239
|
+
this.emitToolStarted(update.callId, update.toolCall, parentCallId);
|
|
240
|
+
return;
|
|
241
|
+
}
|
|
242
|
+
case "tool-call-completed": {
|
|
243
|
+
this.emitToolCompleted(update.callId, update.toolCall, parentCallId);
|
|
244
|
+
return;
|
|
245
|
+
}
|
|
246
|
+
case "partial-tool-call":
|
|
247
|
+
case "step-started":
|
|
248
|
+
case "step-completed":
|
|
249
|
+
return;
|
|
250
|
+
default: {
|
|
251
|
+
return;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
private emitToolStarted(
|
|
257
|
+
callId: string,
|
|
258
|
+
toolCall: ToolCall,
|
|
259
|
+
parentCallId?: string
|
|
260
|
+
): void {
|
|
261
|
+
const description = describeToolCall(toolCall);
|
|
262
|
+
this.emit({
|
|
263
|
+
type: "actions.requested",
|
|
264
|
+
data: {
|
|
265
|
+
calls: [
|
|
266
|
+
{
|
|
267
|
+
callId,
|
|
268
|
+
toolName: description.toolName,
|
|
269
|
+
args: description.args,
|
|
270
|
+
parentCallId,
|
|
271
|
+
},
|
|
272
|
+
],
|
|
273
|
+
parentCallId,
|
|
274
|
+
},
|
|
275
|
+
});
|
|
276
|
+
// Subagent bookends only fire for the top-level task tool, not nested
|
|
277
|
+
// tools inside a subagent (nested subagents aren't supported).
|
|
278
|
+
if (description.subagent !== undefined && parentCallId === undefined) {
|
|
279
|
+
this.emit({
|
|
280
|
+
type: "subagent.called",
|
|
281
|
+
data: {
|
|
282
|
+
callId,
|
|
283
|
+
name: description.subagent.name,
|
|
284
|
+
description: description.subagent.description,
|
|
285
|
+
},
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
private emitToolCompleted(
|
|
291
|
+
callId: string,
|
|
292
|
+
toolCall: ToolCall,
|
|
293
|
+
parentCallId?: string
|
|
294
|
+
): void {
|
|
295
|
+
const description = describeToolCall(toolCall);
|
|
296
|
+
const result = describeToolResult(toolCall);
|
|
297
|
+
this.emit({
|
|
298
|
+
type: "action.result",
|
|
299
|
+
data: {
|
|
300
|
+
callId,
|
|
301
|
+
toolName: description.toolName,
|
|
302
|
+
output: result.output,
|
|
303
|
+
isError: result.isError,
|
|
304
|
+
parentCallId,
|
|
305
|
+
},
|
|
306
|
+
});
|
|
307
|
+
if (description.subagent !== undefined && parentCallId === undefined) {
|
|
308
|
+
this.flushNestedAssistantText(callId, "stop");
|
|
309
|
+
this.nested.delete(callId);
|
|
310
|
+
this.emit({
|
|
311
|
+
type: "subagent.completed",
|
|
312
|
+
data: { callId, name: description.subagent.name },
|
|
313
|
+
});
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
private ensureNested(parentCallId: string): NestedAccumulators {
|
|
318
|
+
let acc = this.nested.get(parentCallId);
|
|
319
|
+
if (acc === undefined) {
|
|
320
|
+
acc = { text: "", reasoning: "" };
|
|
321
|
+
this.nested.set(parentCallId, acc);
|
|
322
|
+
}
|
|
323
|
+
return acc;
|
|
160
324
|
}
|
|
161
325
|
|
|
162
326
|
private flushAssistantText(finishReason: "stop" | "tool_call"): void {
|
|
@@ -171,6 +335,22 @@ export class TurnEventMapper {
|
|
|
171
335
|
data: { text, finishReason },
|
|
172
336
|
});
|
|
173
337
|
}
|
|
338
|
+
|
|
339
|
+
private flushNestedAssistantText(
|
|
340
|
+
parentCallId: string,
|
|
341
|
+
finishReason: "stop" | "tool_call"
|
|
342
|
+
): void {
|
|
343
|
+
const acc = this.nested.get(parentCallId);
|
|
344
|
+
if (acc === undefined || acc.text === "") {
|
|
345
|
+
return;
|
|
346
|
+
}
|
|
347
|
+
const text = acc.text;
|
|
348
|
+
acc.text = "";
|
|
349
|
+
this.emit({
|
|
350
|
+
type: "message.completed",
|
|
351
|
+
data: { text, finishReason, parentCallId },
|
|
352
|
+
});
|
|
353
|
+
}
|
|
174
354
|
}
|
|
175
355
|
|
|
176
356
|
/**
|