@agentclientprotocol/claude-agent-acp 0.85.2-preview.9 → 0.86.1-preview.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/dist/acp-agent.d.ts +67 -21
- package/dist/acp-agent.d.ts.map +1 -1
- package/dist/acp-agent.js +264 -68
- package/dist/async-tasks.d.ts +52 -3
- package/dist/async-tasks.d.ts.map +1 -1
- package/dist/async-tasks.js +185 -42
- package/dist/clear-context-coordinator.d.ts +1 -0
- package/dist/clear-context-coordinator.d.ts.map +1 -1
- package/dist/clear-context-coordinator.js +2 -1
- package/dist/diff.d.ts +45 -8
- package/dist/diff.d.ts.map +1 -1
- package/dist/diff.js +111 -30
- package/dist/native-subagents.d.ts +7 -4
- package/dist/native-subagents.d.ts.map +1 -1
- package/dist/native-subagents.js +22 -5
- package/dist/permissions/presentation.d.ts +17 -2
- package/dist/permissions/presentation.d.ts.map +1 -1
- package/dist/permissions/presentation.js +4 -0
- package/dist/session-config-ids.d.ts +1 -0
- package/dist/session-config-ids.d.ts.map +1 -1
- package/dist/session-config-ids.js +1 -0
- package/dist/tool-calls/background.d.ts +5 -2
- package/dist/tool-calls/background.d.ts.map +1 -1
- package/dist/tool-calls/background.js +6 -11
- package/dist/tool-calls/client-capabilities.d.ts +20 -2
- package/dist/tool-calls/client-capabilities.d.ts.map +1 -1
- package/dist/tool-calls/client-capabilities.js +14 -4
- package/dist/tool-calls/facts.d.ts +8 -1
- package/dist/tool-calls/facts.d.ts.map +1 -1
- package/dist/tool-calls/renderer.d.ts +5 -1
- package/dist/tool-calls/renderer.d.ts.map +1 -1
- package/dist/tool-calls/renderer.js +14 -3
- package/dist/tool-calls/reporters/bash.d.ts.map +1 -1
- package/dist/tool-calls/reporters/bash.js +32 -5
- package/dist/tool-calls/reporters/file-edit.d.ts +1 -1
- package/dist/tool-calls/reporters/file-edit.d.ts.map +1 -1
- package/dist/tool-calls/reporters/file-edit.js +20 -14
- package/dist/v2/agent.d.ts +2 -0
- package/dist/v2/agent.d.ts.map +1 -1
- package/dist/v2/agent.js +109 -14
- package/dist/v2/initialize.d.ts +2 -5
- package/dist/v2/initialize.d.ts.map +1 -1
- package/dist/v2/initialize.js +42 -11
- package/dist/v2/permission.d.ts +25 -0
- package/dist/v2/permission.d.ts.map +1 -0
- package/dist/v2/permission.js +38 -0
- package/dist/v2/session-update.d.ts +6 -0
- package/dist/v2/session-update.d.ts.map +1 -1
- package/dist/v2/session-update.js +19 -0
- package/dist/v2/session.d.ts +29 -4
- package/dist/v2/session.d.ts.map +1 -1
- package/dist/v2/session.js +41 -6
- package/dist/v2/terminal.d.ts +42 -0
- package/dist/v2/terminal.d.ts.map +1 -0
- package/dist/v2/terminal.js +95 -0
- package/dist/v2/tool-call.d.ts +38 -0
- package/dist/v2/tool-call.d.ts.map +1 -0
- package/dist/v2/tool-call.js +49 -0
- package/package.json +1 -1
package/dist/diff.js
CHANGED
|
@@ -37,14 +37,14 @@ const NO_NEWLINE_MARKER = "\";
|
|
|
37
37
|
* normalizes quotes or fails.
|
|
38
38
|
*
|
|
39
39
|
* A Write always gets content that shows the change: the patch, the standard
|
|
40
|
-
* diff of a text that cannot have an exact patch, or
|
|
41
|
-
* overwrites a file that the adapter cannot show.
|
|
40
|
+
* diff (in v2, the change alone) of a text that cannot have an exact patch, or
|
|
41
|
+
* a notice that the Write overwrites a file that the adapter cannot show.
|
|
42
42
|
*
|
|
43
43
|
* The preview uses the tool input as it is. Claude can still remove the
|
|
44
44
|
* trailing whitespace of a line before it writes. The PostToolUse hook then
|
|
45
45
|
* sends the patch of the written file.
|
|
46
46
|
*/
|
|
47
|
-
export async function previewPatchContent(toolName, input, cwd) {
|
|
47
|
+
export async function previewPatchContent(toolName, input, cwd, form = "air") {
|
|
48
48
|
if (toolName === "Edit") {
|
|
49
49
|
const edit = input;
|
|
50
50
|
if (typeof edit.file_path !== "string" ||
|
|
@@ -67,7 +67,7 @@ export async function previewPatchContent(toolName, input, cwd) {
|
|
|
67
67
|
if (oldText !== null && (oldText.trim() !== "" || oldText.includes("\uFEFF"))) {
|
|
68
68
|
return undefined;
|
|
69
69
|
}
|
|
70
|
-
return
|
|
70
|
+
return exactPatch(filePath, oldText, newString, form);
|
|
71
71
|
}
|
|
72
72
|
if (oldText === null)
|
|
73
73
|
return undefined;
|
|
@@ -78,7 +78,7 @@ export async function previewPatchContent(toolName, input, cwd) {
|
|
|
78
78
|
return undefined;
|
|
79
79
|
}
|
|
80
80
|
const newText = replacedText(oldText, oldString, newString, edit.replace_all === true);
|
|
81
|
-
return
|
|
81
|
+
return exactPatch(filePath, oldText, newText, form);
|
|
82
82
|
}
|
|
83
83
|
if (toolName === "Write") {
|
|
84
84
|
const write = normalizeWriteInput(input);
|
|
@@ -104,12 +104,14 @@ export async function previewPatchContent(toolName, input, cwd) {
|
|
|
104
104
|
if (oldText === content)
|
|
105
105
|
return undefined;
|
|
106
106
|
const standard = [
|
|
107
|
-
|
|
107
|
+
form === "v2"
|
|
108
|
+
? v2DiffContent(filePath, oldText === null ? "create" : "update")
|
|
109
|
+
: { type: "diff", path: write.file_path, oldText, newText: content },
|
|
108
110
|
];
|
|
109
111
|
if (!isPatchableText(content))
|
|
110
112
|
return standard;
|
|
111
113
|
// A dense change can exceed the diff budget. The approval then shows the standard diff.
|
|
112
|
-
return
|
|
114
|
+
return exactPatch(filePath, oldText, content, form) ?? standard;
|
|
113
115
|
}
|
|
114
116
|
return undefined;
|
|
115
117
|
}
|
|
@@ -151,7 +153,7 @@ function replacedText(fileText, oldString, newString, replaceAll) {
|
|
|
151
153
|
* A written file that contains a CR or a byte order mark is declined, because
|
|
152
154
|
* Claude removed those bytes from `originalFile`.
|
|
153
155
|
*/
|
|
154
|
-
export async function patchUpdateFromDiffToolResponse(toolResponse) {
|
|
156
|
+
export async function patchUpdateFromDiffToolResponse(toolResponse, form = "air") {
|
|
155
157
|
if (!toolResponse || typeof toolResponse !== "object")
|
|
156
158
|
return undefined;
|
|
157
159
|
const response = toolResponse;
|
|
@@ -185,11 +187,11 @@ export async function patchUpdateFromDiffToolResponse(toolResponse) {
|
|
|
185
187
|
return undefined;
|
|
186
188
|
if (response.type === "create" && newText !== response.content)
|
|
187
189
|
return undefined;
|
|
188
|
-
const patch = filePatch(
|
|
190
|
+
const patch = filePatch(oldText, newText);
|
|
189
191
|
if (!patch)
|
|
190
192
|
return undefined;
|
|
191
193
|
return {
|
|
192
|
-
content: [patch
|
|
194
|
+
content: [patchContent(response.filePath, patch, form)],
|
|
193
195
|
// A created file keeps the location of its Write tool call.
|
|
194
196
|
locations: oldText === null
|
|
195
197
|
? [{ path: response.filePath }]
|
|
@@ -274,26 +276,75 @@ export function toolUpdateFromDiffToolResponse(toolResponse) {
|
|
|
274
276
|
result.locations = locations;
|
|
275
277
|
return result;
|
|
276
278
|
}
|
|
279
|
+
/**
|
|
280
|
+
* The ACP v2 diff of a finished Edit or Write: the exact patch of
|
|
281
|
+
* {@link patchUpdateFromDiffToolResponse} when it can be built, else the
|
|
282
|
+
* change with a patch from what the toolResponse holds.
|
|
283
|
+
*
|
|
284
|
+
* The fallback patch of an update comes from the `structuredPatch`, which is
|
|
285
|
+
* display data (see {@link patchUpdateFromDiffToolResponse}). That is enough
|
|
286
|
+
* for a v2 patch, which is renderable text, not a patch to apply. An update
|
|
287
|
+
* without hunks, such as one whose previous content was too large to diff,
|
|
288
|
+
* gets the change alone. An Edit with an empty `old_string` reports the same
|
|
289
|
+
* response for a created file and a filled empty one, so it gets no diff.
|
|
290
|
+
*/
|
|
291
|
+
export async function v2UpdateFromDiffToolResponse(toolResponse) {
|
|
292
|
+
const exact = await patchUpdateFromDiffToolResponse(toolResponse, "v2");
|
|
293
|
+
if (exact)
|
|
294
|
+
return exact;
|
|
295
|
+
if (!toolResponse || typeof toolResponse !== "object")
|
|
296
|
+
return {};
|
|
297
|
+
const response = toolResponse;
|
|
298
|
+
const filePath = response.filePath;
|
|
299
|
+
if (typeof filePath !== "string")
|
|
300
|
+
return {};
|
|
301
|
+
if (response.type === "create") {
|
|
302
|
+
const hunk = typeof response.content === "string" && isPatchableText(response.content)
|
|
303
|
+
? wholeFileHunk(response.content)
|
|
304
|
+
: undefined;
|
|
305
|
+
return {
|
|
306
|
+
content: [v2DiffContent(filePath, "create", hunk && [hunk])],
|
|
307
|
+
locations: [{ path: filePath }],
|
|
308
|
+
};
|
|
309
|
+
}
|
|
310
|
+
if (response.type === undefined && response.oldString === "" && response.originalFile === "") {
|
|
311
|
+
return {};
|
|
312
|
+
}
|
|
313
|
+
// A Write whose content is the previous text changed nothing.
|
|
314
|
+
if (response.type === "update" && response.content === response.originalFile)
|
|
315
|
+
return {};
|
|
316
|
+
const hunks = Array.isArray(response.structuredPatch) && response.structuredPatch.length > 0
|
|
317
|
+
? response.structuredPatch
|
|
318
|
+
: undefined;
|
|
319
|
+
return {
|
|
320
|
+
content: [v2DiffContent(filePath, "update", hunks)],
|
|
321
|
+
locations: hunks
|
|
322
|
+
? hunks.map(({ newStart }) => ({ path: filePath, line: newStart }))
|
|
323
|
+
: [{ path: filePath }],
|
|
324
|
+
};
|
|
325
|
+
}
|
|
277
326
|
/**
|
|
278
327
|
* The text of one git patch for `filePath`.
|
|
279
328
|
*
|
|
280
|
-
* The headers follow `git diff`: the path
|
|
281
|
-
*
|
|
282
|
-
*
|
|
329
|
+
* The headers follow `git diff`: the path is quoted when git would quote it,
|
|
330
|
+
* and a created file gets its mode line and a `/dev/null` side. With `git`
|
|
331
|
+
* paths, the path loses its leading slash and gets the `a/` and `b/` prefixes.
|
|
283
332
|
*/
|
|
284
|
-
export function gitPatchText(filePath, change, hunks) {
|
|
333
|
+
export function gitPatchText(filePath, change, hunks, paths = "git") {
|
|
285
334
|
return [
|
|
286
|
-
...gitPatchHeader(filePath, change),
|
|
335
|
+
...gitPatchHeader(filePath, change, paths),
|
|
287
336
|
...hunks.flatMap((hunk) => [hunkHeader(hunk), ...hunk.lines]),
|
|
288
337
|
"",
|
|
289
338
|
].join("\n");
|
|
290
339
|
}
|
|
291
|
-
function gitPatchHeader(filePath, change) {
|
|
292
|
-
//
|
|
293
|
-
//
|
|
294
|
-
const
|
|
295
|
-
|
|
296
|
-
const
|
|
340
|
+
function gitPatchHeader(filePath, change, paths) {
|
|
341
|
+
// A Windows path gets forward slashes so the header names the same file on
|
|
342
|
+
// every platform.
|
|
343
|
+
const slashed = filePath.replaceAll("\\", "/");
|
|
344
|
+
// git drops one leading slash of an absolute path.
|
|
345
|
+
const name = paths === "git" ? slashed.replace(/^\/+/u, "") : slashed;
|
|
346
|
+
const oldName = quoteGitPath(paths === "git" ? "a/" : "", name);
|
|
347
|
+
const newName = quoteGitPath(paths === "git" ? "b/" : "", name);
|
|
297
348
|
// git ends a ---/+++ name that contains a space with a tab, for GNU patch.
|
|
298
349
|
const tab = name.includes(" ") ? "\t" : "";
|
|
299
350
|
return [
|
|
@@ -400,15 +451,15 @@ function textLines(text) {
|
|
|
400
451
|
return text.match(/[^\n]*\n|[^\n]+$/g) ?? [];
|
|
401
452
|
}
|
|
402
453
|
/**
|
|
403
|
-
* The
|
|
404
|
-
* nothing changed or the diff runs out of
|
|
454
|
+
* The patch of a change from `oldText`, null for a missing file, to
|
|
455
|
+
* `newText`. Returns undefined when nothing changed or the diff runs out of
|
|
456
|
+
* its time budget.
|
|
405
457
|
*/
|
|
406
|
-
function filePatch(
|
|
458
|
+
function filePatch(oldText, newText) {
|
|
407
459
|
const hunks = diffHunks(oldText, newText);
|
|
408
460
|
if (!hunks || hunks.length === 0)
|
|
409
461
|
return undefined;
|
|
410
|
-
|
|
411
|
-
return { content: patchContent(filePath, gitPatchText(filePath, change, hunks)), hunks };
|
|
462
|
+
return { change: oldText === null ? "create" : "update", hunks };
|
|
412
463
|
}
|
|
413
464
|
/**
|
|
414
465
|
* Reads a file as patch input.
|
|
@@ -472,8 +523,16 @@ function isPatchableText(text) {
|
|
|
472
523
|
!text.includes("\0") &&
|
|
473
524
|
!text.includes("\r"));
|
|
474
525
|
}
|
|
475
|
-
|
|
476
|
-
|
|
526
|
+
/** The exact patch content of a change, or undefined when it has no patch. */
|
|
527
|
+
function exactPatch(filePath, oldText, newText, form) {
|
|
528
|
+
const patch = filePatch(oldText, newText);
|
|
529
|
+
return patch && [patchContent(filePath, patch, form)];
|
|
530
|
+
}
|
|
531
|
+
/** The content that carries a patch, in the given form. */
|
|
532
|
+
function patchContent(filePath, patch, form) {
|
|
533
|
+
return form === "v2"
|
|
534
|
+
? v2DiffContent(filePath, patch.change, patch.hunks)
|
|
535
|
+
: airPatchContent(filePath, patch);
|
|
477
536
|
}
|
|
478
537
|
/**
|
|
479
538
|
* A diff block in the AIR patch form.
|
|
@@ -481,7 +540,7 @@ function optionalContent(content) {
|
|
|
481
540
|
* `oldText: null` and `newText: ""` only satisfy the ACP schema. The adapter
|
|
482
541
|
* sends this form only to a client that advertised `diffPatch`.
|
|
483
542
|
*/
|
|
484
|
-
function
|
|
543
|
+
function airPatchContent(filePath, { change, hunks }) {
|
|
485
544
|
return {
|
|
486
545
|
type: "diff",
|
|
487
546
|
path: filePath,
|
|
@@ -490,10 +549,32 @@ function patchContent(filePath, text) {
|
|
|
490
549
|
_meta: withAirMeta(undefined, AIR_DIFF_PATCH_CAPABILITY, {
|
|
491
550
|
version: 1,
|
|
492
551
|
format: "git_patch",
|
|
493
|
-
text,
|
|
552
|
+
text: gitPatchText(filePath, change, hunks),
|
|
494
553
|
}),
|
|
495
554
|
};
|
|
496
555
|
}
|
|
556
|
+
/**
|
|
557
|
+
* The ACP v2 diff of a change to the text file `filePath`: the change and,
|
|
558
|
+
* given hunks, its git patch.
|
|
559
|
+
*
|
|
560
|
+
* The agent builds tool call content in v1 types, and v1 cannot express a v2
|
|
561
|
+
* diff, so the diff travels as v1 content. Nothing in the agent reads inside a
|
|
562
|
+
* diff, and only a v2 client gets one: the v2 surface sends it as it is
|
|
563
|
+
* (`src/v2/tool-call.ts`).
|
|
564
|
+
*/
|
|
565
|
+
export function v2DiffContent(filePath, change, hunks) {
|
|
566
|
+
const fileChange = change === "create"
|
|
567
|
+
? { operation: "add", path: filePath, fileType: "text" }
|
|
568
|
+
: { operation: "modify", path: filePath, fileType: "text" };
|
|
569
|
+
const diff = {
|
|
570
|
+
type: "diff",
|
|
571
|
+
changes: [fileChange],
|
|
572
|
+
...(hunks?.length
|
|
573
|
+
? { patch: { format: "git_patch", text: gitPatchText(filePath, change, hunks, "absolute") } }
|
|
574
|
+
: {}),
|
|
575
|
+
};
|
|
576
|
+
return diff;
|
|
577
|
+
}
|
|
497
578
|
function resolveToolPath(filePath, cwd) {
|
|
498
579
|
return path.isAbsolute(filePath) ? filePath : path.resolve(cwd ?? process.cwd(), filePath);
|
|
499
580
|
}
|
|
@@ -81,10 +81,13 @@ export declare class NativeSubagentRuntime {
|
|
|
81
81
|
/**
|
|
82
82
|
* The route of the work that a child tool call started, for example an async
|
|
83
83
|
* task. The route sends each update to the child generation that owned the
|
|
84
|
-
* tool call when the work started
|
|
85
|
-
*
|
|
86
|
-
*
|
|
87
|
-
*
|
|
84
|
+
* tool call when the work started. An async task can outlive that child: a
|
|
85
|
+
* subagent can start a background command and end its turn. So the route
|
|
86
|
+
* still sends `async_task_spawned`, `async_task_progress` and
|
|
87
|
+
* `async_task_state_update` to the child generation after it finished. The route drops every other update
|
|
88
|
+
* after the child finished. `undefined` means that the root session owns the
|
|
89
|
+
* tool call. `eagerSessionId` is the session where a permission request
|
|
90
|
+
* created the tool call before the stream routed it.
|
|
88
91
|
*/
|
|
89
92
|
routeOfToolCall(toolCallId: string, eagerSessionId?: string): ((notification: AcpSessionNotification) => AcpSessionNotification | null) | undefined;
|
|
90
93
|
private rememberToolCallOwner;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native-subagents.d.ts","sourceRoot":"","sources":["../src/native-subagents.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"native-subagents.d.ts","sourceRoot":"","sources":["../src/native-subagents.ts"],"names":[],"mappings":"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"}
|
package/dist/native-subagents.js
CHANGED
|
@@ -242,17 +242,23 @@ export class NativeSubagentRuntime {
|
|
|
242
242
|
/**
|
|
243
243
|
* The route of the work that a child tool call started, for example an async
|
|
244
244
|
* task. The route sends each update to the child generation that owned the
|
|
245
|
-
* tool call when the work started
|
|
246
|
-
*
|
|
247
|
-
*
|
|
248
|
-
*
|
|
245
|
+
* tool call when the work started. An async task can outlive that child: a
|
|
246
|
+
* subagent can start a background command and end its turn. So the route
|
|
247
|
+
* still sends `async_task_spawned`, `async_task_progress` and
|
|
248
|
+
* `async_task_state_update` to the child generation after it finished. The route drops every other update
|
|
249
|
+
* after the child finished. `undefined` means that the root session owns the
|
|
250
|
+
* tool call. `eagerSessionId` is the session where a permission request
|
|
251
|
+
* created the tool call before the stream routed it.
|
|
249
252
|
*/
|
|
250
253
|
routeOfToolCall(toolCallId, eagerSessionId) {
|
|
251
254
|
if (!this.enabled)
|
|
252
255
|
return undefined;
|
|
253
256
|
const owner = this.childByToolCall.get(toolCallId) ??
|
|
254
257
|
(eagerSessionId ? this.childOfSession(eagerSessionId) : undefined);
|
|
255
|
-
return owner &&
|
|
258
|
+
return (owner &&
|
|
259
|
+
((notification) => isLateAsyncTaskUpdate(notification)
|
|
260
|
+
? { ...notification, sessionId: owner.sessionId }
|
|
261
|
+
: this.toChild(owner, notification, undefined)));
|
|
256
262
|
}
|
|
257
263
|
rememberToolCallOwner(toolCallId, child) {
|
|
258
264
|
this.childByToolCall.delete(toolCallId);
|
|
@@ -473,6 +479,17 @@ export function isNativeSubagentControlUpdate(update) {
|
|
|
473
479
|
export function isNativeSubagentControlTool(toolName) {
|
|
474
480
|
return toolName === "Agent" || toolName === "Task";
|
|
475
481
|
}
|
|
482
|
+
/**
|
|
483
|
+
* An async task update that may reach a child generation after it finished.
|
|
484
|
+
* The spawn is one of them: a held task can get its tool call id, and so its
|
|
485
|
+
* spawn, after the child finished.
|
|
486
|
+
*/
|
|
487
|
+
function isLateAsyncTaskUpdate(notification) {
|
|
488
|
+
const kind = notification.update.sessionUpdate;
|
|
489
|
+
return (kind === "async_task_spawned" ||
|
|
490
|
+
kind === "async_task_progress" ||
|
|
491
|
+
kind === "async_task_state_update");
|
|
492
|
+
}
|
|
476
493
|
function isFailedToolCallUpdate(update) {
|
|
477
494
|
return ((update.sessionUpdate === "tool_call" || update.sessionUpdate === "tool_call_update") &&
|
|
478
495
|
update.status === "failed");
|
|
@@ -1,12 +1,24 @@
|
|
|
1
1
|
import type { RequestPermissionRequest, ToolCallContent } from "@agentclientprotocol/sdk";
|
|
2
2
|
import { ClientCapabilities } from "../tool-calls/client-capabilities.js";
|
|
3
|
+
/**
|
|
4
|
+
* A permission request as the agent builds it. For a v2 client it also
|
|
5
|
+
* carries the heading and the explanation of the prompt, which ACP v2 sends as
|
|
6
|
+
* the request's `title` and `description`. v1 has no field for them; AIR gets
|
|
7
|
+
* them in `_meta`.
|
|
8
|
+
*/
|
|
9
|
+
export type AcpPermissionRequest = RequestPermissionRequest & {
|
|
10
|
+
/** The heading of the prompt. It is not the title of the tool call. */
|
|
11
|
+
title?: string;
|
|
12
|
+
/** Why the permission is asked. */
|
|
13
|
+
description?: string;
|
|
14
|
+
};
|
|
3
15
|
export interface ClaudePermissionPresentationInput {
|
|
4
16
|
toolName: string;
|
|
5
17
|
input: Record<string, unknown>;
|
|
6
18
|
toolUseID: string;
|
|
7
19
|
cwd?: string;
|
|
8
20
|
capabilities?: ClientCapabilities;
|
|
9
|
-
/** The exact patch of the change to approve, for a negotiated `diffPatch` client. */
|
|
21
|
+
/** The exact patch of the change to approve, for a negotiated `diffPatch` client or a v2 client. */
|
|
10
22
|
previewContent?: ToolCallContent[];
|
|
11
23
|
blockedPath?: string;
|
|
12
24
|
title?: string;
|
|
@@ -22,6 +34,9 @@ export interface ClaudePermissionPresentationInput {
|
|
|
22
34
|
* adapter emits the `tool_call` before the request, so the client already
|
|
23
35
|
* holds the rest. The request adds only what it shows new: the exact preview
|
|
24
36
|
* patch, and the blocked path when the tool call has no such location.
|
|
37
|
+
*
|
|
38
|
+
* The heading and the explanation of the prompt go to AIR in `_meta`, and to a
|
|
39
|
+
* v2 client as `title` and `description`.
|
|
25
40
|
*/
|
|
26
|
-
export declare function buildClaudePermissionPresentation(value: ClaudePermissionPresentationInput): Pick<
|
|
41
|
+
export declare function buildClaudePermissionPresentation(value: ClaudePermissionPresentationInput): Pick<AcpPermissionRequest, "toolCall" | "_meta" | "title" | "description">;
|
|
27
42
|
//# sourceMappingURL=presentation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presentation.d.ts","sourceRoot":"","sources":["../../src/permissions/presentation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE1F,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAG1E,MAAM,WAAW,iCAAiC;IAChD,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,
|
|
1
|
+
{"version":3,"file":"presentation.d.ts","sourceRoot":"","sources":["../../src/permissions/presentation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE1F,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAG1E;;;;;GAKG;AACH,MAAM,MAAM,oBAAoB,GAAG,wBAAwB,GAAG;IAC5D,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mCAAmC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,WAAW,iCAAiC;IAChD,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,oGAAoG;IACpG,cAAc,CAAC,EAAE,eAAe,EAAE,CAAC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AA0BD;;;;;;;;;;GAUG;AACH,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,iCAAiC,GACvC,IAAI,CAAC,oBAAoB,EAAE,UAAU,GAAG,OAAO,GAAG,OAAO,GAAG,aAAa,CAAC,CAiE5E"}
|
|
@@ -29,6 +29,9 @@ function compactText(value) {
|
|
|
29
29
|
* adapter emits the `tool_call` before the request, so the client already
|
|
30
30
|
* holds the rest. The request adds only what it shows new: the exact preview
|
|
31
31
|
* patch, and the blocked path when the tool call has no such location.
|
|
32
|
+
*
|
|
33
|
+
* The heading and the explanation of the prompt go to AIR in `_meta`, and to a
|
|
34
|
+
* v2 client as `title` and `description`.
|
|
32
35
|
*/
|
|
33
36
|
export function buildClaudePermissionPresentation(value) {
|
|
34
37
|
const capabilities = value.capabilities ?? new ClientCapabilities();
|
|
@@ -89,5 +92,6 @@ export function buildClaudePermissionPresentation(value) {
|
|
|
89
92
|
}),
|
|
90
93
|
}
|
|
91
94
|
: {}),
|
|
95
|
+
...(capabilities.v2 ? { title, ...(description ? { description } : {}) } : {}),
|
|
92
96
|
};
|
|
93
97
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/** Shared sentinels and ids for session preferences managed by the adapter. */
|
|
2
2
|
export declare const DEFAULT_MODEL_ID = "default";
|
|
3
|
+
export declare const DEFAULT_AGENT_ID = "default";
|
|
3
4
|
export declare const EFFORT_CONFIG_ID = "effort";
|
|
4
5
|
//# sourceMappingURL=session-config-ids.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-config-ids.d.ts","sourceRoot":"","sources":["../src/session-config-ids.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,eAAO,MAAM,gBAAgB,YAAY,CAAC;AAC1C,eAAO,MAAM,gBAAgB,WAAW,CAAC"}
|
|
1
|
+
{"version":3,"file":"session-config-ids.d.ts","sourceRoot":"","sources":["../src/session-config-ids.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,eAAO,MAAM,gBAAgB,YAAY,CAAC;AAC1C,eAAO,MAAM,gBAAgB,YAAY,CAAC;AAC1C,eAAO,MAAM,gBAAgB,WAAW,CAAC"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { SessionNotification } from "@agentclientprotocol/sdk";
|
|
2
|
-
import type { AsyncTaskStarted } from "../async-tasks.js";
|
|
3
2
|
/**
|
|
4
3
|
* Marks the Bash `tool_call_update` whose command detached into the background.
|
|
5
4
|
*
|
|
@@ -10,11 +9,15 @@ import type { AsyncTaskStarted } from "../async-tasks.js";
|
|
|
10
9
|
* rides the update the tool result already emits, so it costs no extra
|
|
11
10
|
* notification and cannot arrive out of order.
|
|
12
11
|
*
|
|
12
|
+
* Only structured data marks a call: the `backgroundTaskId` of the tool
|
|
13
|
+
* result, an SDK task of the call that went to the background, or a
|
|
14
|
+
* `run_in_background` input. The text of the result never marks a call.
|
|
15
|
+
*
|
|
13
16
|
* The command's own lifecycle -- progress, completion, the stop control -- is
|
|
14
17
|
* published separately as an async task; this says only that the card has one.
|
|
15
18
|
* Hence the AIR namespace rather than `claudeCode`: to a client without the
|
|
16
19
|
* `asyncTasks` capability, which is never sent that lifecycle, the marker would
|
|
17
20
|
* promise a card state it has no way to ever resolve.
|
|
18
21
|
*/
|
|
19
|
-
export declare function backgroundedBashToolCall(notification: SessionNotification,
|
|
22
|
+
export declare function backgroundedBashToolCall(notification: SessionNotification, backgroundedToolCallIds: ReadonlySet<string>, asyncTasksSupported: boolean): SessionNotification;
|
|
20
23
|
//# sourceMappingURL=background.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"background.d.ts","sourceRoot":"","sources":["../../src/tool-calls/background.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"background.d.ts","sourceRoot":"","sources":["../../src/tool-calls/background.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAGpE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,wBAAwB,CACtC,YAAY,EAAE,mBAAmB,EACjC,uBAAuB,EAAE,WAAW,CAAC,MAAM,CAAC,EAC5C,mBAAmB,EAAE,OAAO,GAC3B,mBAAmB,CAgBrB"}
|
|
@@ -9,19 +9,21 @@ import { AIR_ASYNC_TASKS_CAPABILITY, withAirMeta } from "../air-extension.js";
|
|
|
9
9
|
* rides the update the tool result already emits, so it costs no extra
|
|
10
10
|
* notification and cannot arrive out of order.
|
|
11
11
|
*
|
|
12
|
+
* Only structured data marks a call: the `backgroundTaskId` of the tool
|
|
13
|
+
* result, an SDK task of the call that went to the background, or a
|
|
14
|
+
* `run_in_background` input. The text of the result never marks a call.
|
|
15
|
+
*
|
|
12
16
|
* The command's own lifecycle -- progress, completion, the stop control -- is
|
|
13
17
|
* published separately as an async task; this says only that the card has one.
|
|
14
18
|
* Hence the AIR namespace rather than `claudeCode`: to a client without the
|
|
15
19
|
* `asyncTasks` capability, which is never sent that lifecycle, the marker would
|
|
16
20
|
* promise a card state it has no way to ever resolve.
|
|
17
21
|
*/
|
|
18
|
-
export function backgroundedBashToolCall(notification,
|
|
22
|
+
export function backgroundedBashToolCall(notification, backgroundedToolCallIds, asyncTasksSupported) {
|
|
19
23
|
const update = notification.update;
|
|
20
|
-
const toolCallId = task ? nonBlankTaskField(task.toolCallId ?? task.tool_use_id) : undefined;
|
|
21
24
|
if (!asyncTasksSupported ||
|
|
22
|
-
!toolCallId ||
|
|
23
25
|
update.sessionUpdate !== "tool_call_update" ||
|
|
24
|
-
update.toolCallId
|
|
26
|
+
!backgroundedToolCallIds.has(update.toolCallId)) {
|
|
25
27
|
return notification;
|
|
26
28
|
}
|
|
27
29
|
return {
|
|
@@ -32,10 +34,3 @@ export function backgroundedBashToolCall(notification, task, asyncTasksSupported
|
|
|
32
34
|
},
|
|
33
35
|
};
|
|
34
36
|
}
|
|
35
|
-
/** The task fields arrive as `unknown` off the wire; only non-blank strings carry a link. */
|
|
36
|
-
function nonBlankTaskField(value) {
|
|
37
|
-
if (typeof value !== "string")
|
|
38
|
-
return undefined;
|
|
39
|
-
const trimmed = value.trim();
|
|
40
|
-
return trimmed ? trimmed : undefined;
|
|
41
|
-
}
|
|
@@ -16,6 +16,14 @@ export declare class ClientCapabilities {
|
|
|
16
16
|
readonly diffPatch: boolean;
|
|
17
17
|
/** The capabilities that only JetBrains AIR declares. */
|
|
18
18
|
readonly air: AirCapabilities;
|
|
19
|
+
/**
|
|
20
|
+
* The client speaks ACP v2. Its diffs carry structured `changes` and an
|
|
21
|
+
* optional git patch, which a v1 diff cannot express. Only the v2 surface
|
|
22
|
+
* sets this, never the capabilities that a client sends. A v2 client also
|
|
23
|
+
* takes the terminal extension (`terminalOutput`), which the v2 surface
|
|
24
|
+
* sends as display terminals.
|
|
25
|
+
*/
|
|
26
|
+
readonly v2: boolean;
|
|
19
27
|
constructor(
|
|
20
28
|
/** The client renders a terminal from `_meta.terminal_info`, `terminal_output`, and `terminal_exit`. */
|
|
21
29
|
terminalOutput?: boolean,
|
|
@@ -24,8 +32,18 @@ export declare class ClientCapabilities {
|
|
|
24
32
|
/** The client accepts an exact git patch in a diff (`jetbrains.air` `diffPatch`). */
|
|
25
33
|
diffPatch?: boolean,
|
|
26
34
|
/** The capabilities that only JetBrains AIR declares. */
|
|
27
|
-
air?: AirCapabilities
|
|
28
|
-
|
|
35
|
+
air?: AirCapabilities,
|
|
36
|
+
/**
|
|
37
|
+
* The client speaks ACP v2. Its diffs carry structured `changes` and an
|
|
38
|
+
* optional git patch, which a v1 diff cannot express. Only the v2 surface
|
|
39
|
+
* sets this, never the capabilities that a client sends. A v2 client also
|
|
40
|
+
* takes the terminal extension (`terminalOutput`), which the v2 surface
|
|
41
|
+
* sends as display terminals.
|
|
42
|
+
*/
|
|
43
|
+
v2?: boolean);
|
|
44
|
+
static from(capabilities: AcpClientCapabilities | null | undefined, { v2 }?: {
|
|
45
|
+
v2?: boolean;
|
|
46
|
+
}): ClientCapabilities;
|
|
29
47
|
}
|
|
30
48
|
/** The capabilities of JetBrains AIR, read from `_meta.jetbrains.air`. */
|
|
31
49
|
export interface AirCapabilities {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-capabilities.d.ts","sourceRoot":"","sources":["../../src/tool-calls/client-capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,IAAI,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAS5F;;;;;;;GAOG;AACH,qBAAa,kBAAkB;IAE3B,wGAAwG;IACxG,QAAQ,CAAC,cAAc,EAAE,OAAO;IAChC,4FAA4F;IAC5F,QAAQ,CAAC,mBAAmB,EAAE,OAAO;IACrC,qFAAqF;IACrF,QAAQ,CAAC,SAAS,EAAE,OAAO;IAC3B,yDAAyD;IACzD,QAAQ,CAAC,GAAG,EAAE,eAAe;;
|
|
1
|
+
{"version":3,"file":"client-capabilities.d.ts","sourceRoot":"","sources":["../../src/tool-calls/client-capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,IAAI,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAS5F;;;;;;;GAOG;AACH,qBAAa,kBAAkB;IAE3B,wGAAwG;IACxG,QAAQ,CAAC,cAAc,EAAE,OAAO;IAChC,4FAA4F;IAC5F,QAAQ,CAAC,mBAAmB,EAAE,OAAO;IACrC,qFAAqF;IACrF,QAAQ,CAAC,SAAS,EAAE,OAAO;IAC3B,yDAAyD;IACzD,QAAQ,CAAC,GAAG,EAAE,eAAe;IAC7B;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,EAAE,OAAO;;IAfpB,wGAAwG;IAC/F,cAAc,GAAE,OAAe;IACxC,4FAA4F;IACnF,mBAAmB,GAAE,OAAe;IAC7C,qFAAqF;IAC5E,SAAS,GAAE,OAAe;IACnC,yDAAyD;IAChD,GAAG,GAAE,eAAwB;IACtC;;;;;;OAMG;IACM,EAAE,GAAE,OAAe;IAG9B,MAAM,CAAC,IAAI,CACT,YAAY,EAAE,qBAAqB,GAAG,IAAI,GAAG,SAAS,EACtD,EAAE,EAAU,EAAE,GAAE;QAAE,EAAE,CAAC,EAAE,OAAO,CAAA;KAAO,GACpC,kBAAkB;CAkBtB;AAED,0EAA0E;AAC1E,MAAM,WAAW,eAAe;IAC9B;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB;;;OAGG;IACH,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC;IACpC;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B"}
|
|
@@ -12,6 +12,7 @@ export class ClientCapabilities {
|
|
|
12
12
|
terminalOutputDelta;
|
|
13
13
|
diffPatch;
|
|
14
14
|
air;
|
|
15
|
+
v2;
|
|
15
16
|
constructor(
|
|
16
17
|
/** The client renders a terminal from `_meta.terminal_info`, `terminal_output`, and `terminal_exit`. */
|
|
17
18
|
terminalOutput = false,
|
|
@@ -20,20 +21,29 @@ export class ClientCapabilities {
|
|
|
20
21
|
/** The client accepts an exact git patch in a diff (`jetbrains.air` `diffPatch`). */
|
|
21
22
|
diffPatch = false,
|
|
22
23
|
/** The capabilities that only JetBrains AIR declares. */
|
|
23
|
-
air = NO_AIR
|
|
24
|
+
air = NO_AIR,
|
|
25
|
+
/**
|
|
26
|
+
* The client speaks ACP v2. Its diffs carry structured `changes` and an
|
|
27
|
+
* optional git patch, which a v1 diff cannot express. Only the v2 surface
|
|
28
|
+
* sets this, never the capabilities that a client sends. A v2 client also
|
|
29
|
+
* takes the terminal extension (`terminalOutput`), which the v2 surface
|
|
30
|
+
* sends as display terminals.
|
|
31
|
+
*/
|
|
32
|
+
v2 = false) {
|
|
24
33
|
this.terminalOutput = terminalOutput;
|
|
25
34
|
this.terminalOutputDelta = terminalOutputDelta;
|
|
26
35
|
this.diffPatch = diffPatch;
|
|
27
36
|
this.air = air;
|
|
37
|
+
this.v2 = v2;
|
|
28
38
|
}
|
|
29
|
-
static from(capabilities) {
|
|
39
|
+
static from(capabilities, { v2 = false } = {}) {
|
|
30
40
|
const meta = capabilities?._meta;
|
|
31
41
|
const terminalOutputDelta = meta?.["terminal_output_delta"] === true;
|
|
32
|
-
return new ClientCapabilities(terminalOutputDelta || meta?.["terminal_output"] === true, terminalOutputDelta, clientSupportsAirCapability(capabilities, AIR_DIFF_PATCH_CAPABILITY), {
|
|
42
|
+
return new ClientCapabilities(v2 || terminalOutputDelta || meta?.["terminal_output"] === true, terminalOutputDelta, clientSupportsAirCapability(capabilities, AIR_DIFF_PATCH_CAPABILITY), {
|
|
33
43
|
client: isAirClient(capabilities),
|
|
34
44
|
rawInputRendering: clientSupportsAirCapability(capabilities, AIR_RAW_INPUT_RENDERING_CAPABILITY),
|
|
35
45
|
planFile: clientSupportsAirCapability(capabilities, AIR_PLAN_FILE_CAPABILITY),
|
|
36
|
-
});
|
|
46
|
+
}, v2);
|
|
37
47
|
}
|
|
38
48
|
}
|
|
39
49
|
const NO_AIR = {
|
|
@@ -41,7 +41,14 @@ export interface ToolUseFacts {
|
|
|
41
41
|
/** The output of a command, for the terminal channel. */
|
|
42
42
|
export interface CommandOutput {
|
|
43
43
|
output: string;
|
|
44
|
-
|
|
44
|
+
/**
|
|
45
|
+
* The exit code of the command, when the tool result says it. Absent when it
|
|
46
|
+
* does not: a failure that names no code, an interrupted or backgrounded
|
|
47
|
+
* command, or a non-zero code that Claude Code accepted as a success.
|
|
48
|
+
*/
|
|
49
|
+
exitCode?: number;
|
|
50
|
+
/** The command was interrupted before it ended. */
|
|
51
|
+
interrupted?: boolean;
|
|
45
52
|
}
|
|
46
53
|
/**
|
|
47
54
|
* The facts of a tool result, read once from the SDK tool_result.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"facts.d.ts","sourceRoot":"","sources":["../../src/tool-calls/facts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAC5F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAEnE,wCAAwC;AACxC,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,uDAAuD;IACvD,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC/B,6DAA6D;IAC7D,MAAM,CAAC,EAAE,eAAe,EAAE,CAAC;IAC3B;;;;OAIG;IACH,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC;;;;OAIG;IACH,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;IAC5B,wEAAwE;IACxE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,yDAAyD;AACzD,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"facts.d.ts","sourceRoot":"","sources":["../../src/tool-calls/facts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAC5F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAEnE,wCAAwC;AACxC,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,uDAAuD;IACvD,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC/B,6DAA6D;IAC7D,MAAM,CAAC,EAAE,eAAe,EAAE,CAAC;IAC3B;;;;OAIG;IACH,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC;;;;OAIG;IACH,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;IAC5B,wEAAwE;IACxE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,yDAAyD;AACzD,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mDAAmD;IACnD,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0BAA0B;IAC1B,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;IAC5B,sCAAsC;IACtC,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC/B,+BAA+B;IAC/B,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,yCAAyC;IACzC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,sFAAsF;IACtF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,+DAA+D;AAC/D,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,kBAAkB,CAAC;IACjC;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,qDAAqD;AACrD,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,iCAAiC;IACjC,MAAM,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/E,6EAA6E;IAC7E,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,kBAAkB,CAAC;CAClC;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,GAAG,YAAY,CAAC;IAC/D;;;OAGG;IACH,UAAU,CAAC,CAAC,OAAO,EAAE,iBAAiB,GAAG,eAAe,CAAC;IACzD;;;OAGG;IACH,WAAW,CAAC,CAAC,OAAO,EAAE,iBAAiB,GAAG,eAAe,GAAG,SAAS,CAAC;IACtE;;;OAGG;IACH,UAAU,CAAC,CAAC,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;CACvF"}
|
|
@@ -41,7 +41,11 @@ export type ToolUpdateMeta = {
|
|
|
41
41
|
};
|
|
42
42
|
terminal_exit?: {
|
|
43
43
|
terminal_id: string;
|
|
44
|
-
|
|
44
|
+
/**
|
|
45
|
+
* Null when the agent does not know the code, as in `TerminalExitStatus`.
|
|
46
|
+
* AIR always gets a number.
|
|
47
|
+
*/
|
|
48
|
+
exit_code: number | null;
|
|
45
49
|
signal: string | null;
|
|
46
50
|
};
|
|
47
51
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/tool-calls/renderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,IAAI,qBAAqB,EAC3C,wBAAwB,EACxB,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EACjB,MAAM,0BAA0B,CAAC;AAQlC,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAI5F,MAAM,MAAM,cAAc,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;AAK3D,yCAAyC;AACzC,MAAM,MAAM,cAAc,GAAG;IAC3B,UAAU,CAAC,EAAE;QAIX,QAAQ,CAAC,EAAE,MAAM,CAAC;QAIlB,YAAY,CAAC,EAAE,OAAO,CAAC;QAIvB,eAAe,CAAC,EAAE,MAAM,CAAC;QAMzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAG1B,YAAY,CAAC,EAAE,MAAM,CAAC;QAEtB,SAAS,CAAC,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;KAC9C,CAAC;IAEF,SAAS,CAAC,EAAE;QACV,GAAG,CAAC,EAAE;YACJ,OAAO,CAAC,EAAE,MAAM,CAAC;YAGjB,YAAY,CAAC,EAAE,MAAM,CAAC;YAGtB,QAAQ,CAAC,EAAE,IAAI,CAAC;YAGhB,KAAK,CAAC,EAAE;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,IAAI,CAAC,EAAE,MAAM,CAAA;aAAE,CAAC;YACxC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;SACxB,CAAC;KACH,CAAC;IAEF,gBAAgB,CAAC,EAAE,IAAI,CAAC;IAExB,aAAa,CAAC,EAAE;QACd,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,eAAe,CAAC,EAAE;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,qBAAqB,CAAC,EAAE;QACtB,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,aAAa,CAAC,EAAE;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/tool-calls/renderer.ts"],"names":[],"mappings":"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"}
|