ycodium-acp-executor 0.2.2488

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 (98) hide show
  1. package/README.md +127 -0
  2. package/dist/adapter-support.d.ts +26 -0
  3. package/dist/adapter-support.d.ts.map +1 -0
  4. package/dist/adapter-support.js +79 -0
  5. package/dist/adapter-support.js.map +1 -0
  6. package/dist/approvals.d.ts +39 -0
  7. package/dist/approvals.d.ts.map +1 -0
  8. package/dist/approvals.js +69 -0
  9. package/dist/approvals.js.map +1 -0
  10. package/dist/config-option-wiring.d.ts +71 -0
  11. package/dist/config-option-wiring.d.ts.map +1 -0
  12. package/dist/config-option-wiring.js +71 -0
  13. package/dist/config-option-wiring.js.map +1 -0
  14. package/dist/config-options.d.ts +75 -0
  15. package/dist/config-options.d.ts.map +1 -0
  16. package/dist/config-options.js +171 -0
  17. package/dist/config-options.js.map +1 -0
  18. package/dist/connection.d.ts +34 -0
  19. package/dist/connection.d.ts.map +1 -0
  20. package/dist/connection.js +374 -0
  21. package/dist/connection.js.map +1 -0
  22. package/dist/errors.d.ts +21 -0
  23. package/dist/errors.d.ts.map +1 -0
  24. package/dist/errors.js +41 -0
  25. package/dist/errors.js.map +1 -0
  26. package/dist/event-stream.d.ts +15 -0
  27. package/dist/event-stream.d.ts.map +1 -0
  28. package/dist/event-stream.js +81 -0
  29. package/dist/event-stream.js.map +1 -0
  30. package/dist/events.d.ts +69 -0
  31. package/dist/events.d.ts.map +1 -0
  32. package/dist/events.js +205 -0
  33. package/dist/events.js.map +1 -0
  34. package/dist/executor.d.ts +84 -0
  35. package/dist/executor.d.ts.map +1 -0
  36. package/dist/executor.js +1179 -0
  37. package/dist/executor.js.map +1 -0
  38. package/dist/handshake.d.ts +24 -0
  39. package/dist/handshake.d.ts.map +1 -0
  40. package/dist/handshake.js +26 -0
  41. package/dist/handshake.js.map +1 -0
  42. package/dist/index.d.ts +23 -0
  43. package/dist/index.d.ts.map +1 -0
  44. package/dist/index.js +15 -0
  45. package/dist/index.js.map +1 -0
  46. package/dist/jsonrpc.d.ts +12 -0
  47. package/dist/jsonrpc.d.ts.map +1 -0
  48. package/dist/jsonrpc.js +42 -0
  49. package/dist/jsonrpc.js.map +1 -0
  50. package/dist/line-buffer.d.ts +14 -0
  51. package/dist/line-buffer.d.ts.map +1 -0
  52. package/dist/line-buffer.js +51 -0
  53. package/dist/line-buffer.js.map +1 -0
  54. package/dist/mutex.d.ts +13 -0
  55. package/dist/mutex.d.ts.map +1 -0
  56. package/dist/mutex.js +44 -0
  57. package/dist/mutex.js.map +1 -0
  58. package/dist/probe.d.ts +74 -0
  59. package/dist/probe.d.ts.map +1 -0
  60. package/dist/probe.js +121 -0
  61. package/dist/probe.js.map +1 -0
  62. package/dist/protocol.d.ts +8 -0
  63. package/dist/protocol.d.ts.map +1 -0
  64. package/dist/protocol.js +6 -0
  65. package/dist/protocol.js.map +1 -0
  66. package/dist/runtime-mode.d.ts +49 -0
  67. package/dist/runtime-mode.d.ts.map +1 -0
  68. package/dist/runtime-mode.js +123 -0
  69. package/dist/runtime-mode.js.map +1 -0
  70. package/dist/runtime-model.d.ts +157 -0
  71. package/dist/runtime-model.d.ts.map +1 -0
  72. package/dist/runtime-model.js +601 -0
  73. package/dist/runtime-model.js.map +1 -0
  74. package/dist/session-update.d.ts +42 -0
  75. package/dist/session-update.d.ts.map +1 -0
  76. package/dist/session-update.js +63 -0
  77. package/dist/session-update.js.map +1 -0
  78. package/dist/tool-presentation.d.ts +17 -0
  79. package/dist/tool-presentation.d.ts.map +1 -0
  80. package/dist/tool-presentation.js +209 -0
  81. package/dist/tool-presentation.js.map +1 -0
  82. package/dist/turn-usage.d.ts +18 -0
  83. package/dist/turn-usage.d.ts.map +1 -0
  84. package/dist/turn-usage.js +59 -0
  85. package/dist/turn-usage.js.map +1 -0
  86. package/dist/types.d.ts +116 -0
  87. package/dist/types.d.ts.map +1 -0
  88. package/dist/types.js +6 -0
  89. package/dist/types.js.map +1 -0
  90. package/dist/util.d.ts +3 -0
  91. package/dist/util.d.ts.map +1 -0
  92. package/dist/util.js +11 -0
  93. package/dist/util.js.map +1 -0
  94. package/dist/vendor-hooks.d.ts +112 -0
  95. package/dist/vendor-hooks.d.ts.map +1 -0
  96. package/dist/vendor-hooks.js +4 -0
  97. package/dist/vendor-hooks.js.map +1 -0
  98. package/package.json +39 -0
@@ -0,0 +1,601 @@
1
+ import { deriveToolActivityPresentation } from "./tool-presentation.js";
2
+ import { isRecord } from "./util.js";
3
+ function isSessionModelState(value) {
4
+ if (!isRecord(value) || typeof value["currentModelId"] !== "string") {
5
+ return false;
6
+ }
7
+ if (!Array.isArray(value["availableModels"])) {
8
+ return false;
9
+ }
10
+ return value["availableModels"].every((model) => isRecord(model) &&
11
+ typeof model["modelId"] === "string" &&
12
+ typeof model["name"] === "string" &&
13
+ (model["description"] === undefined ||
14
+ model["description"] === null ||
15
+ typeof model["description"] === "string"));
16
+ }
17
+ function isSessionModeState(value) {
18
+ if (!isRecord(value) || typeof value["currentModeId"] !== "string") {
19
+ return false;
20
+ }
21
+ if (!Array.isArray(value["availableModes"])) {
22
+ return false;
23
+ }
24
+ return value["availableModes"].every((mode) => isRecord(mode) &&
25
+ typeof mode["id"] === "string" &&
26
+ typeof mode["name"] === "string" &&
27
+ (mode["description"] === undefined || typeof mode["description"] === "string"));
28
+ }
29
+ export function extractModelConfigId(sessionResponse) {
30
+ const configOptions = sessionResponse.configOptions;
31
+ if (!configOptions)
32
+ return undefined;
33
+ for (const opt of configOptions) {
34
+ if (opt.category === "model" && opt.id.trim().length > 0) {
35
+ return opt.id.trim();
36
+ }
37
+ }
38
+ return undefined;
39
+ }
40
+ export function findSessionConfigOption(configOptions, configId) {
41
+ if (!configOptions) {
42
+ return undefined;
43
+ }
44
+ const normalizedConfigId = configId.trim();
45
+ if (!normalizedConfigId) {
46
+ return undefined;
47
+ }
48
+ return configOptions.find((option) => option.id.trim() === normalizedConfigId);
49
+ }
50
+ export function collectSessionConfigOptionValues(configOption) {
51
+ if (configOption.type !== "select" || !configOption.options) {
52
+ return [];
53
+ }
54
+ return configOption.options.flatMap((entry) => "value" in entry ? [entry.value] : entry.options.map((option) => option.value));
55
+ }
56
+ /** `models`(UNSTABLE)里报的型号 id,即 `session/set_model` 肯收的那些值。 */
57
+ export function collectSessionModelIds(models) {
58
+ if (!isRecord(models) || !Array.isArray(models["availableModels"])) {
59
+ return [];
60
+ }
61
+ return models["availableModels"].flatMap((model) => isRecord(model) && typeof model["modelId"] === "string" ? [model["modelId"]] : []);
62
+ }
63
+ /**
64
+ * 目录里一个取值的「最后一段」:dsh 的 JSON 元组 `["deepseek-official","deepseek-flash"]`
65
+ * 取最后一个元素(至少两段),`provider/model` 取第一个斜杠之后。别的形状没有最后一段。
66
+ */
67
+ function catalogModelLastSegment(value) {
68
+ if (value.startsWith("[")) {
69
+ let parsed;
70
+ try {
71
+ parsed = JSON.parse(value);
72
+ }
73
+ catch {
74
+ return undefined;
75
+ }
76
+ if (!Array.isArray(parsed) || parsed.length < 2)
77
+ return undefined;
78
+ const last = parsed[parsed.length - 1];
79
+ return typeof last === "string" ? last : undefined;
80
+ }
81
+ const separator = value.indexOf("/");
82
+ return separator > 0 && separator < value.length - 1 ? value.slice(separator + 1) : undefined;
83
+ }
84
+ /**
85
+ * 请求的型号在手报的目录里对应哪一个取值;对不上返回 undefined,调用方据此不设型号。
86
+ *
87
+ * 规则的正本是 `@ycodium-ai/plugin-api/executor` 的 `matchCatalogModel`,理由写在那里:
88
+ * 先精确匹配,再按最后一段唯一匹配,两个取值最后一段相同就不猜。纯库不许依赖宿主包
89
+ * (ADR-0030 §3.2,`index.test.ts` 钉着),所以 ACP 这边带一份;两份在
90
+ * `plugins/agent-acp/src/catalogModelParity.test.ts` 按同一张表对拍,只改一边会红。
91
+ */
92
+ export function matchAdvertisedModelValue(requestedModelId, advertisedValues) {
93
+ const wanted = requestedModelId.trim();
94
+ if (!wanted)
95
+ return undefined;
96
+ if (advertisedValues.includes(wanted))
97
+ return wanted;
98
+ const byLastSegment = advertisedValues.filter((value) => catalogModelLastSegment(value) === wanted);
99
+ return byLastSegment.length === 1 ? byLastSegment[0] : undefined;
100
+ }
101
+ export function parseSessionModeState(sessionResponse) {
102
+ const modes = sessionResponse.modes;
103
+ if (!modes)
104
+ return undefined;
105
+ const currentModeId = modes.currentModeId.trim();
106
+ if (!currentModeId) {
107
+ return undefined;
108
+ }
109
+ const availableModes = [];
110
+ for (const mode of modes.availableModes) {
111
+ const id = mode.id.trim();
112
+ const name = mode.name.trim();
113
+ if (!id || !name) {
114
+ continue;
115
+ }
116
+ const description = mode.description?.trim() || undefined;
117
+ availableModes.push(description !== undefined
118
+ ? { id, name, description }
119
+ : { id, name });
120
+ }
121
+ if (availableModes.length === 0) {
122
+ return undefined;
123
+ }
124
+ return {
125
+ currentModeId,
126
+ availableModes,
127
+ };
128
+ }
129
+ export function parseAvailableCommandsUpdate(params) {
130
+ const update = params.update;
131
+ if (update["sessionUpdate"] !== "available_commands_update") {
132
+ return undefined;
133
+ }
134
+ const availableCommands = update["availableCommands"];
135
+ if (!Array.isArray(availableCommands)) {
136
+ return [];
137
+ }
138
+ const commands = [];
139
+ for (const command of availableCommands) {
140
+ if (!isRecord(command)) {
141
+ continue;
142
+ }
143
+ const name = typeof command["name"] === "string" ? command["name"].trim() : "";
144
+ if (!name) {
145
+ continue;
146
+ }
147
+ const description = typeof command["description"] === "string"
148
+ ? command["description"].trim() || undefined
149
+ : undefined;
150
+ const input = isRecord(command["input"]) ? command["input"] : undefined;
151
+ const inputHint = typeof input?.["hint"] === "string" ? input["hint"].trim() || undefined : undefined;
152
+ commands.push({
153
+ name,
154
+ ...(description ? { description } : {}),
155
+ ...(inputHint ? { inputHint } : {}),
156
+ });
157
+ }
158
+ return commands;
159
+ }
160
+ function normalizePlanStepStatus(raw) {
161
+ switch (raw) {
162
+ case "completed":
163
+ return "completed";
164
+ case "in_progress":
165
+ case "inProgress":
166
+ return "inProgress";
167
+ default:
168
+ return "pending";
169
+ }
170
+ }
171
+ function normalizeToolCallStatus(raw, fallback) {
172
+ switch (raw) {
173
+ case "pending":
174
+ return "pending";
175
+ case "in_progress":
176
+ case "inProgress":
177
+ return "inProgress";
178
+ case "completed":
179
+ return "completed";
180
+ case "failed":
181
+ return "failed";
182
+ default:
183
+ return fallback;
184
+ }
185
+ }
186
+ function normalizeCommandValue(value) {
187
+ if (typeof value === "string" && value.trim().length > 0) {
188
+ return value.trim();
189
+ }
190
+ if (!Array.isArray(value)) {
191
+ return undefined;
192
+ }
193
+ const parts = [];
194
+ for (const entry of value) {
195
+ if (typeof entry === "string") {
196
+ const part = entry.trim();
197
+ if (part.length > 0) {
198
+ parts.push(part);
199
+ }
200
+ }
201
+ }
202
+ return parts.length > 0 ? parts.join(" ") : undefined;
203
+ }
204
+ function extractCommandFromTitle(title) {
205
+ if (!title) {
206
+ return undefined;
207
+ }
208
+ const match = /`([^`]+)`/.exec(title);
209
+ return match?.[1]?.trim() || undefined;
210
+ }
211
+ function extractToolCallCommand(rawInput, title) {
212
+ if (isRecord(rawInput)) {
213
+ const directCommand = normalizeCommandValue(rawInput["command"]);
214
+ if (directCommand) {
215
+ return directCommand;
216
+ }
217
+ const executable = typeof rawInput["executable"] === "string" ? rawInput["executable"].trim() : "";
218
+ const args = normalizeCommandValue(rawInput["args"]);
219
+ if (executable && args) {
220
+ return `${executable} ${args}`;
221
+ }
222
+ if (executable) {
223
+ return executable;
224
+ }
225
+ }
226
+ return extractCommandFromTitle(title);
227
+ }
228
+ const TOOL_CALL_CONTENT_MAX_CHARS = 8_000;
229
+ const TOOL_CALL_CONTENT_TRUNCATION_MARKER = "[Earlier output truncated]\n\n";
230
+ function boundToolCallOutputText(text) {
231
+ if (text.length <= TOOL_CALL_CONTENT_MAX_CHARS) {
232
+ return text;
233
+ }
234
+ const tail = text.slice(text.length - TOOL_CALL_CONTENT_MAX_CHARS);
235
+ return `${TOOL_CALL_CONTENT_TRUNCATION_MARKER}${tail}`;
236
+ }
237
+ const RAW_OUTPUT_TEXT_FIELDS = ["content", "stdout", "stderr", "output"];
238
+ function boundToolCallRawOutput(rawOutput) {
239
+ if (!isRecord(rawOutput)) {
240
+ return rawOutput;
241
+ }
242
+ let changed = false;
243
+ const bounded = { ...rawOutput };
244
+ for (const field of RAW_OUTPUT_TEXT_FIELDS) {
245
+ const value = rawOutput[field];
246
+ if (typeof value === "string" && value.length > TOOL_CALL_CONTENT_MAX_CHARS) {
247
+ bounded[field] = boundToolCallOutputText(value);
248
+ changed = true;
249
+ }
250
+ }
251
+ return changed ? bounded : rawOutput;
252
+ }
253
+ function toolCallContentText(entry) {
254
+ if (entry.type !== "content" || entry.content?.type !== "text") {
255
+ return undefined;
256
+ }
257
+ return entry.content.text;
258
+ }
259
+ function extractTextContentFromToolCallContent(content) {
260
+ if (!Array.isArray(content)) {
261
+ return { text: undefined, content: undefined };
262
+ }
263
+ const typed = content;
264
+ const chunks = [];
265
+ for (const entry of typed) {
266
+ const text = toolCallContentText(entry)?.trim();
267
+ if (text) {
268
+ chunks.push(text);
269
+ }
270
+ }
271
+ if (chunks.length === 0) {
272
+ return { text: undefined, content: typed };
273
+ }
274
+ const joined = chunks.join("\n");
275
+ if (joined.length <= TOOL_CALL_CONTENT_MAX_CHARS) {
276
+ return { text: joined, content: typed };
277
+ }
278
+ const bounded = boundToolCallOutputText(joined);
279
+ const lastContributingTextIndex = typed.reduce((lastIndex, entry, index) => (toolCallContentText(entry)?.trim() ? index : lastIndex), -1);
280
+ const boundedContent = typed.flatMap((entry, index) => {
281
+ if (toolCallContentText(entry) === undefined) {
282
+ return [entry];
283
+ }
284
+ if (index !== lastContributingTextIndex) {
285
+ return [];
286
+ }
287
+ return [{ type: "content", content: { type: "text", text: bounded } }];
288
+ });
289
+ return { text: bounded, content: boundedContent };
290
+ }
291
+ function normalizeToolKind(kind) {
292
+ return typeof kind === "string" && kind.trim().length > 0 ? kind.trim() : undefined;
293
+ }
294
+ function canonicalItemTypeFromAcpToolKind(kind) {
295
+ switch (kind) {
296
+ case "execute":
297
+ return "command_execution";
298
+ case "edit":
299
+ case "delete":
300
+ case "move":
301
+ return "file_change";
302
+ case "search":
303
+ case "fetch":
304
+ return "web_search";
305
+ default:
306
+ return "dynamic_tool_call";
307
+ }
308
+ }
309
+ function makeToolCallState(input, options) {
310
+ const toolCallId = typeof input.toolCallId === "string" ? input.toolCallId.trim() : "";
311
+ if (!toolCallId) {
312
+ return undefined;
313
+ }
314
+ const title = typeof input.title === "string" ? input.title.trim() || undefined : undefined;
315
+ const command = extractToolCallCommand(input.rawInput, title);
316
+ const extractedContent = extractTextContentFromToolCallContent(input.content);
317
+ const textContent = extractedContent.text;
318
+ const normalizedTitle = title && title.toLowerCase() !== "terminal" && title.toLowerCase() !== "tool call"
319
+ ? title
320
+ : undefined;
321
+ const data = { toolCallId };
322
+ const kind = normalizeToolKind(input.kind);
323
+ if (kind) {
324
+ data["kind"] = kind;
325
+ }
326
+ if (command) {
327
+ data["command"] = command;
328
+ }
329
+ if (input.rawInput !== undefined) {
330
+ data["rawInput"] = input.rawInput;
331
+ }
332
+ if (input.rawOutput !== undefined) {
333
+ data["rawOutput"] = boundToolCallRawOutput(input.rawOutput);
334
+ }
335
+ if (input.content !== undefined) {
336
+ data["content"] = extractedContent.content ?? input.content;
337
+ }
338
+ if (input.locations !== undefined) {
339
+ data["locations"] = input.locations;
340
+ }
341
+ const fallbackDetail = command ?? normalizedTitle ?? textContent;
342
+ const hasPresentationSeed = title !== undefined ||
343
+ kind !== undefined ||
344
+ command !== undefined ||
345
+ normalizedTitle !== undefined ||
346
+ textContent !== undefined;
347
+ const presentation = hasPresentationSeed
348
+ ? deriveToolActivityPresentation({
349
+ itemType: canonicalItemTypeFromAcpToolKind(kind),
350
+ title,
351
+ detail: fallbackDetail,
352
+ data,
353
+ fallbackSummary: title ?? "Tool",
354
+ })
355
+ : undefined;
356
+ const status = normalizeToolCallStatus(input.status, options?.fallbackStatus);
357
+ return {
358
+ toolCallId,
359
+ ...(kind ? { kind } : {}),
360
+ ...(presentation?.summary ? { title: presentation.summary } : {}),
361
+ ...(status ? { status } : {}),
362
+ ...(command ? { command } : {}),
363
+ ...(presentation?.detail ? { detail: presentation.detail } : {}),
364
+ data,
365
+ };
366
+ }
367
+ export function mergeToolCallState(previous, next) {
368
+ const nextKind = typeof next.data["kind"] === "string" ? next.data["kind"] : undefined;
369
+ const kind = nextKind ?? previous?.kind;
370
+ const title = next.title ?? previous?.title;
371
+ const status = next.status ?? previous?.status;
372
+ const command = next.command ?? previous?.command;
373
+ const detail = next.detail ?? previous?.detail;
374
+ return {
375
+ toolCallId: next.toolCallId,
376
+ ...(kind ? { kind } : {}),
377
+ ...(title ? { title } : {}),
378
+ ...(status ? { status } : {}),
379
+ ...(command ? { command } : {}),
380
+ ...(detail ? { detail } : {}),
381
+ data: {
382
+ ...previous?.data,
383
+ ...next.data,
384
+ },
385
+ };
386
+ }
387
+ const TOOL_CALL_UPDATE_MIN_DETAIL_GROWTH_CHARS = 256;
388
+ const TOOL_CALL_UPDATE_COALESCE_LIMIT = 10;
389
+ export function decideToolCallUpdateEmission(input) {
390
+ const { previous, next, lastEmittedDetailLength, skippedSinceEmit } = input;
391
+ if (next.status === "completed" || next.status === "failed") {
392
+ return { emit: true, skippedSinceEmit: 0 };
393
+ }
394
+ if (!next.detail) {
395
+ return { emit: false, skippedSinceEmit };
396
+ }
397
+ if (previous === undefined || previous.title !== next.title) {
398
+ return { emit: true, skippedSinceEmit: 0 };
399
+ }
400
+ if (previous.detail === next.detail) {
401
+ return { emit: false, skippedSinceEmit };
402
+ }
403
+ const grewMeaningfully = lastEmittedDetailLength === undefined ||
404
+ Math.abs(next.detail.length - lastEmittedDetailLength) >=
405
+ TOOL_CALL_UPDATE_MIN_DETAIL_GROWTH_CHARS;
406
+ if (grewMeaningfully || skippedSinceEmit + 1 >= TOOL_CALL_UPDATE_COALESCE_LIMIT) {
407
+ return { emit: true, skippedSinceEmit: 0 };
408
+ }
409
+ return { emit: false, skippedSinceEmit: skippedSinceEmit + 1 };
410
+ }
411
+ export function parsePermissionRequest(params) {
412
+ const toolCall = makeToolCallState({
413
+ toolCallId: params.toolCall.toolCallId,
414
+ title: params.toolCall.title,
415
+ kind: params.toolCall.kind,
416
+ status: params.toolCall.status,
417
+ rawInput: params.toolCall.rawInput,
418
+ rawOutput: params.toolCall.rawOutput,
419
+ content: params.toolCall.content,
420
+ locations: params.toolCall.locations,
421
+ }, { fallbackStatus: "pending" });
422
+ const kind = normalizeToolKind(params.toolCall.kind) ?? "unknown";
423
+ const detail = toolCall?.command ??
424
+ toolCall?.title ??
425
+ toolCall?.detail ??
426
+ (typeof params.sessionId === "string" ? `Session ${params.sessionId}` : undefined);
427
+ return {
428
+ kind,
429
+ ...(detail ? { detail } : {}),
430
+ ...(toolCall ? { toolCall } : {}),
431
+ };
432
+ }
433
+ export function sessionUpdateIsReplay(params) {
434
+ const meta = params._meta;
435
+ return isRecord(meta) && meta["isReplay"] === true;
436
+ }
437
+ export function syntheticLoadSessionResponseFromInitialize(initializeResult) {
438
+ const meta = initializeResult._meta;
439
+ const modelState = isRecord(meta) ? meta["modelState"] : undefined;
440
+ const modeState = isRecord(meta) ? meta["modeState"] : undefined;
441
+ const models = isSessionModelState(modelState) ? modelState : undefined;
442
+ const modes = isSessionModeState(modeState) ? modeState : undefined;
443
+ return {
444
+ ...(models ? { models } : {}),
445
+ ...(modes
446
+ ? {
447
+ modes: {
448
+ currentModeId: modes.currentModeId,
449
+ availableModes: modes.availableModes.map((mode) => ({
450
+ id: String(mode["id"]),
451
+ name: String(mode["name"]),
452
+ ...(typeof mode["description"] === "string"
453
+ ? { description: mode["description"] }
454
+ : {}),
455
+ })),
456
+ },
457
+ }
458
+ : {}),
459
+ _meta: {
460
+ ycodiumSessionLoadReady: "replay_idle",
461
+ },
462
+ };
463
+ }
464
+ function boundToolCallRawPayload(params, update, toolCall) {
465
+ const boundedContent = toolCall.data["content"];
466
+ const boundedRawOutput = toolCall.data["rawOutput"];
467
+ const contentBounded = update["content"] !== undefined && boundedContent !== update["content"];
468
+ const rawOutputBounded = update["rawOutput"] !== undefined && boundedRawOutput !== update["rawOutput"];
469
+ if (!contentBounded && !rawOutputBounded) {
470
+ return params;
471
+ }
472
+ return {
473
+ ...params,
474
+ update: {
475
+ ...update,
476
+ ...(contentBounded ? { content: boundedContent } : {}),
477
+ ...(rawOutputBounded ? { rawOutput: boundedRawOutput } : {}),
478
+ },
479
+ };
480
+ }
481
+ function readAcpText(source, key) {
482
+ const value = source?.[key];
483
+ if (typeof value !== "string")
484
+ return undefined;
485
+ const trimmed = value.trim();
486
+ return trimmed.length > 0 ? trimmed : undefined;
487
+ }
488
+ export function parseSessionUpdateEvent(params) {
489
+ const upd = params.update;
490
+ const events = [];
491
+ let modeId;
492
+ const kind = upd["sessionUpdate"];
493
+ switch (kind) {
494
+ case "current_mode_update": {
495
+ modeId = readAcpText(upd, "currentModeId");
496
+ if (modeId) {
497
+ events.push({
498
+ _tag: "ModeChanged",
499
+ modeId,
500
+ });
501
+ }
502
+ break;
503
+ }
504
+ case "plan": {
505
+ const entries = Array.isArray(upd["entries"]) ? upd["entries"] : [];
506
+ const plan = entries.map((entry, index) => ({
507
+ step: readAcpText(entry, "content") ?? `Step ${index + 1}`,
508
+ status: normalizePlanStepStatus(isRecord(entry) ? entry["status"] : undefined),
509
+ }));
510
+ if (plan.length > 0) {
511
+ events.push({
512
+ _tag: "PlanUpdated",
513
+ payload: {
514
+ plan,
515
+ },
516
+ rawPayload: params,
517
+ });
518
+ }
519
+ break;
520
+ }
521
+ case "tool_call":
522
+ case "tool_call_update": {
523
+ const toolCall = makeToolCallState({
524
+ toolCallId: upd["toolCallId"],
525
+ title: typeof upd["title"] === "string" ? upd["title"] : undefined,
526
+ kind: upd["kind"],
527
+ status: upd["status"],
528
+ rawInput: upd["rawInput"],
529
+ rawOutput: upd["rawOutput"],
530
+ content: upd["content"],
531
+ locations: upd["locations"],
532
+ }, kind === "tool_call" ? { fallbackStatus: "pending" } : undefined);
533
+ if (toolCall) {
534
+ events.push({
535
+ _tag: "ToolCallUpdated",
536
+ toolCall,
537
+ rawPayload: boundToolCallRawPayload(params, upd, toolCall),
538
+ });
539
+ }
540
+ break;
541
+ }
542
+ case "agent_message_chunk":
543
+ case "agent_thought_chunk": {
544
+ const content = isRecord(upd["content"]) ? upd["content"] : undefined;
545
+ const contentType = content?.["type"];
546
+ const streamKind = kind === "agent_thought_chunk" ? "reasoning_text" : "assistant_text";
547
+ if (contentType === "text") {
548
+ const text = typeof content?.["text"] === "string" ? content["text"] : "";
549
+ if (text.length > 0) {
550
+ events.push({
551
+ _tag: "ContentDelta",
552
+ text,
553
+ streamKind,
554
+ rawPayload: params,
555
+ });
556
+ }
557
+ break;
558
+ }
559
+ // 思考块没有非文本形态可投影;正式回答的非音频块留给附件路径。
560
+ if (streamKind === "assistant_text" && content && contentType !== "audio") {
561
+ events.push({
562
+ _tag: "AssistantContentBlock",
563
+ content,
564
+ rawPayload: params,
565
+ });
566
+ }
567
+ break;
568
+ }
569
+ default:
570
+ break;
571
+ }
572
+ return { ...(modeId !== undefined ? { modeId } : {}), events };
573
+ }
574
+ export function updateModeState(modeState, nextModeId) {
575
+ const normalized = nextModeId.trim();
576
+ if (!normalized) {
577
+ return modeState;
578
+ }
579
+ return modeState.availableModes.some((mode) => mode.id === normalized)
580
+ ? {
581
+ ...modeState,
582
+ currentModeId: normalized,
583
+ }
584
+ : modeState;
585
+ }
586
+ export function filterMcpServersByAgentCapabilities(mcpServers, agentCapabilities) {
587
+ return mcpServers.filter((server) => {
588
+ if (!("type" in server) || server.type === undefined) {
589
+ return true;
590
+ }
591
+ switch (server.type) {
592
+ case "http":
593
+ return agentCapabilities?.mcpCapabilities?.http === true;
594
+ case "sse":
595
+ return agentCapabilities?.mcpCapabilities?.sse === true;
596
+ default:
597
+ return true;
598
+ }
599
+ });
600
+ }
601
+ //# sourceMappingURL=runtime-model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-model.js","sourceRoot":"","sources":["../src/runtime-model.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import type { SessionNotification } from "@agentclientprotocol/sdk";
2
+ /**
3
+ * `session/update` 信封:够路由就行,update 里的内容一概不校验。
4
+ * 对齐 `packages/effect-acp/src/protocol.ts` 的 `isSessionUpdateEnvelope`。
5
+ */
6
+ export type SessionUpdateEnvelope = {
7
+ readonly sessionId: string;
8
+ readonly update: {
9
+ readonly sessionUpdate: string;
10
+ readonly [key: string]: unknown;
11
+ };
12
+ readonly [key: string]: unknown;
13
+ };
14
+ export type SessionUpdateDecode = {
15
+ readonly status: "decoded";
16
+ readonly params: SessionNotification;
17
+ } | {
18
+ readonly status: "raw";
19
+ readonly params: SessionNotification;
20
+ } | {
21
+ readonly status: "dropped";
22
+ };
23
+ /**
24
+ * 已知的 `session/update` 变体名。
25
+ *
26
+ * **这是一份手抄名单,SDK 没有把它导出成运行时值**(`zSessionUpdate` 不在包的公开
27
+ * 导出里,`types.gen.d.ts` 只有类型)。抄一份就有分叉风险:SDK 升级新增变体时这里
28
+ * 不更新,那个变体会走 `raw` 而不是 `decoded`——不丢消息,但少一层形状校验。
29
+ *
30
+ * `session-update.test.ts` 有一条对拍:数量与 SDK 类型文件里的 `sessionUpdate: "…"`
31
+ * 字面量个数必须相等,升级后对不上就红。
32
+ */
33
+ export declare const KNOWN_SESSION_UPDATES: Set<string>;
34
+ export declare function isSessionUpdateEnvelope(payload: unknown): payload is SessionUpdateEnvelope;
35
+ /**
36
+ * 先按已知变体形状解码;失败时信封对得上就原样投递,信封不对才丢。
37
+ *
38
+ * SDK 高层 `onNotification("session/update")` 会 `.parse()` 丢掉未知变体和残缺
39
+ * 已知变体,所以这一步必须在 JSON-RPC 路由层自己做。
40
+ */
41
+ export declare function decodeSessionUpdate(payload: unknown): SessionUpdateDecode;
42
+ //# sourceMappingURL=session-update.d.ts.map