@lucascouts/claude-agent-acp-plus 0.28.0 → 0.30.0
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 +81 -24
- package/dist/acp-agent.d.ts.map +1 -1
- package/dist/acp-agent.js +232 -28
- package/dist/tools.d.ts +17 -1
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +129 -21
- package/dist/usage-markdown.d.ts.map +1 -1
- package/dist/usage-markdown.js +57 -0
- package/package.json +11 -11
package/dist/acp-agent.d.ts
CHANGED
|
@@ -126,6 +126,14 @@ export declare const USAGE_CAPABILITY_VERSION = 1;
|
|
|
126
126
|
* and a sample most of an interval old is exactly what the poll already
|
|
127
127
|
* showed them. */
|
|
128
128
|
export declare const USAGE_REFRESH_MAX_SAMPLE_AGE_MS = 5000;
|
|
129
|
+
/** Parity item 106 (upstream issue #1284): how long a turn held for its
|
|
130
|
+
* background subagents (see `Turn.deferredSettle`) waits, once none of them is
|
|
131
|
+
* live and Claude Code is idle, for the followup cycle a task_notification
|
|
132
|
+
* would start. A notification that is lost starts none, and with no further
|
|
133
|
+
* idle nothing else would ever answer the prompt. A followup starts within
|
|
134
|
+
* milliseconds of its notification (the CLI flushes them together), so the
|
|
135
|
+
* bound only ever expires on a lost one. */
|
|
136
|
+
export declare const HELD_TURN_DRAIN_GRACE_MS = 5000;
|
|
129
137
|
export type UsageRefreshRequest = {
|
|
130
138
|
sessionId: string;
|
|
131
139
|
};
|
|
@@ -266,16 +274,20 @@ type Turn = {
|
|
|
266
274
|
* cancel or the next turn's echo hand-off settles it earlier, so a
|
|
267
275
|
* long-running subagent never holds the prompt hostage.
|
|
268
276
|
*
|
|
269
|
-
*
|
|
270
|
-
*
|
|
271
|
-
*
|
|
272
|
-
*
|
|
273
|
-
*
|
|
274
|
-
*
|
|
275
|
-
*
|
|
276
|
-
*
|
|
277
|
-
*
|
|
278
|
-
*
|
|
277
|
+
* A subagent that ends WITHOUT waking the model — its task_notification
|
|
278
|
+
* lost or skipped (only the terminal task_updated patch is guaranteed per
|
|
279
|
+
* transition) — leaves no followup result, and when its end comes after
|
|
280
|
+
* the turn's only idle, no further idle either. Settling at the prune
|
|
281
|
+
* sites would preempt the followup summary in the normal ordering (prunes
|
|
282
|
+
* precede the notification), so a prune that drains the turn while Claude
|
|
283
|
+
* Code is idle arms a bounded grace instead (`HELD_TURN_DRAIN_GRACE_MS`,
|
|
284
|
+
* parity item 106, upstream issue #1284); it settles only if no followup
|
|
285
|
+
* started meanwhile. A subagent whose every end signal is lost — the
|
|
286
|
+
* bookends AND the `background_tasks_changed` level — is indistinguishable
|
|
287
|
+
* from a live one and still parks the turn until `session/cancel` or the
|
|
288
|
+
* next prompt.
|
|
289
|
+
*
|
|
290
|
+
* Accepted residual: drained-ness is judged by live-task
|
|
279
291
|
* membership only: with parallel subagents, a notification that prunes
|
|
280
292
|
* the last task during an earlier task's still-streaming followup lets
|
|
281
293
|
* that followup's result settle the turn before the LAST task's summary
|
|
@@ -285,13 +297,16 @@ type Turn = {
|
|
|
285
297
|
deferredSettle?: PromptResponse;
|
|
286
298
|
/** Uuids of `steer()`-injected messages the SDK has not replayed back yet.
|
|
287
299
|
*
|
|
288
|
-
* A steer is normally delivered at {@link STEER_PRIORITY_NOW}
|
|
289
|
-
*
|
|
290
|
-
* indistinguishable from a turn's terminal one — and the steered
|
|
291
|
-
* as a SECOND cycle
|
|
292
|
-
*
|
|
293
|
-
*
|
|
294
|
-
*
|
|
300
|
+
* A steer is normally delivered at {@link STEER_PRIORITY_NOW}. Up to CLI
|
|
301
|
+
* 2.1.285 that ABORTED the running cycle: it emitted its own human-origin
|
|
302
|
+
* `result` — indistinguishable from a turn's terminal one — and the steered
|
|
303
|
+
* message ran as a SECOND cycle (CLI 2.1.220). Since SDK 0.3.286 (CLI
|
|
304
|
+
* 2.1.286) a `now` message instead joins the running turn, moving running
|
|
305
|
+
* shells, agents and MCP calls to the background, so usually only one
|
|
306
|
+
* `result` follows. Either way a result seen while the steered echo is
|
|
307
|
+
* pending is not proof the steered work ran, so a steered turn's results
|
|
308
|
+
* only RECORD their outcome (`steeredSettle`) and it settles at the SDK's
|
|
309
|
+
* `idle`, the one signal that is correct under both behaviours.
|
|
295
310
|
*
|
|
296
311
|
* A non-empty set at an idle means the steered cycle hasn't started — the CLI
|
|
297
312
|
* replays a message only when it picks it up, always after the interrupted
|
|
@@ -711,6 +726,21 @@ export type Session = {
|
|
|
711
726
|
* entry on its two-activation clock. */
|
|
712
727
|
endedPerLevel?: "ended" | "sweep-armed";
|
|
713
728
|
}>;
|
|
729
|
+
/** Parity item 92 (upstream #1312): the display terminals of commands sent
|
|
730
|
+
* to the background that still run, by the id of the command's task — the
|
|
731
|
+
* Bash tool call whose terminal it is, and the subagent tool call that ran
|
|
732
|
+
* it, if any. The tool result's `terminal_exit` is withheld for these (the
|
|
733
|
+
* call returns as soon as the command detaches); the exit goes out when the
|
|
734
|
+
* task ends. Only for a client that renders terminals. */
|
|
735
|
+
backgroundTerminals?: Map<string, {
|
|
736
|
+
toolCallId: string;
|
|
737
|
+
parentToolUseId?: string;
|
|
738
|
+
}>;
|
|
739
|
+
/** The latest `run_id` seen on each task's events, so a late frame of an
|
|
740
|
+
* earlier run is dropped (see `isLateTaskRun`, upstream #1271). Run ids are
|
|
741
|
+
* per CLI process, so a query recreate clears it. Bounded by
|
|
742
|
+
* `MAX_TASK_RUN_IDS`, oldest first. */
|
|
743
|
+
taskRunIds?: Map<string, string>;
|
|
714
744
|
/** The task feed (story 012): every task message folded into the
|
|
715
745
|
* `_claude/tasks` snapshot, published through `taskFeedPublisher`. Both
|
|
716
746
|
* live as long as the SESSION, not the consumer — a query recreate keeps
|
|
@@ -913,7 +943,8 @@ export type ToolUpdateMeta = {
|
|
|
913
943
|
};
|
|
914
944
|
terminal_exit?: {
|
|
915
945
|
terminal_id: string;
|
|
916
|
-
|
|
946
|
+
/** Null when the code is not known (as in `TerminalExitStatus`). */
|
|
947
|
+
exit_code: number | null;
|
|
917
948
|
signal: string | null;
|
|
918
949
|
};
|
|
919
950
|
};
|
|
@@ -1148,17 +1179,20 @@ export declare class ClaudeAcpAgent {
|
|
|
1148
1179
|
* into the in-flight turn. The injected message's echo carries a uuid that
|
|
1149
1180
|
* matches no queued turn, so the consumer drops it as an unrelated replay
|
|
1150
1181
|
* without promoting/settling anything. It is normally delivered at {@link
|
|
1151
|
-
* STEER_PRIORITY_NOW}
|
|
1152
|
-
*
|
|
1153
|
-
*
|
|
1182
|
+
* STEER_PRIORITY_NOW}, which since SDK 0.3.286 joins the running turn
|
|
1183
|
+
* (running shells, agents and MCP calls move to the background) rather than
|
|
1184
|
+
* stopping it. While a permission or elicitation is awaiting user input it uses
|
|
1154
1185
|
* {@link STEER_PRIORITY_LATER} instead, because interrupting that SDK
|
|
1155
1186
|
* callback cancels the ACP request and can strand the prompt (IJAI-1191).
|
|
1156
1187
|
* The steered message's own output streams via `session/update`, not this
|
|
1157
1188
|
* response.
|
|
1158
1189
|
*
|
|
1159
|
-
*
|
|
1160
|
-
* own
|
|
1161
|
-
* (`Turn.steeredEchoes`) to settle at the
|
|
1190
|
+
* Before 0.3.286 delivering `now` ABORTED the cycle, which emitted a `result`
|
|
1191
|
+
* of its own before the steered message ran as a second one; since then it
|
|
1192
|
+
* joins the turn. The turn is marked (`Turn.steeredEchoes`) to settle at the
|
|
1193
|
+
* SDK's `idle` instead of at a result in both cases, so either CLI behaviour
|
|
1194
|
+
* settles once, after the steered work. Zeo sends no ACP steering, so none
|
|
1195
|
+
* of this is reachable from it.
|
|
1162
1196
|
*
|
|
1163
1197
|
* When the session is idle, the opt-in path returns `promptRequired` WITHOUT
|
|
1164
1198
|
* calling `prompt()`, pushing SDK input, or mutating `turnQueue`: the content
|
|
@@ -1334,6 +1368,13 @@ export declare class ClaudeAcpAgent {
|
|
|
1334
1368
|
* Not written to `contextWindowCache` — that stays keyed to the
|
|
1335
1369
|
* `result.modelUsage` spellings — and a result still overwrites it.
|
|
1336
1370
|
* Ported from upstream #1186.
|
|
1371
|
+
*
|
|
1372
|
+
* Asks for the `summary` detail (parity item 97, upstream #1258): the
|
|
1373
|
+
* default `full` breakdown issues one `messages/count_tokens` call per
|
|
1374
|
+
* category, and only `rawMaxTokens` is read here. The two other callers
|
|
1375
|
+
* (`readResumedLiveModel`, `fetchContextUsedTokens`) read `totalTokens`,
|
|
1376
|
+
* which `summary` takes from the last response's usage plus local
|
|
1377
|
+
* estimates instead of counting — not the same number, so they keep `full`.
|
|
1337
1378
|
*/
|
|
1338
1379
|
private refreshContextWindowInBackground;
|
|
1339
1380
|
private applyConfigOptionValue;
|
|
@@ -1611,4 +1652,20 @@ export declare function runAcp(logger?: Logger): {
|
|
|
1611
1652
|
connection: import("@agentclientprotocol/sdk").AgentConnection;
|
|
1612
1653
|
agent: ClaudeAcpAgent;
|
|
1613
1654
|
};
|
|
1655
|
+
/**
|
|
1656
|
+
* Drops `terminal_exit` from the tool result update of `toolCallId`: the Bash
|
|
1657
|
+
* call returned as soon as its command detached, and the exit would mark the
|
|
1658
|
+
* terminal as ended while the command still runs.
|
|
1659
|
+
*/
|
|
1660
|
+
export declare function withRunningTerminal(notification: SessionNotification, toolCallId: string | undefined): SessionNotification;
|
|
1661
|
+
/**
|
|
1662
|
+
* The exit code of a background command whose task ended, from what the task's
|
|
1663
|
+
* ending says. Claude Code's summary reads `Background command "<d>" completed
|
|
1664
|
+
* (exit code N[: note])` or `… failed with exit code N` (CLI 2.1.285); an
|
|
1665
|
+
* ending names a code only at its end, so a description holding the words
|
|
1666
|
+
* cannot be mistaken for it. A completion with a non-zero code is one Claude
|
|
1667
|
+
* Code accepted as a success (grep's "No matches found"), so it goes out as
|
|
1668
|
+
* null; a failure or stop that names no code goes out as 1, never null.
|
|
1669
|
+
*/
|
|
1670
|
+
export declare function backgroundExitCode(status: string | undefined, text: string | undefined): number | null;
|
|
1614
1671
|
//# sourceMappingURL=acp-agent.d.ts.map
|
package/dist/acp-agent.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acp-agent.d.ts","sourceRoot":"","sources":["../src/acp-agent.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acp-agent.d.ts","sourceRoot":"","sources":["../src/acp-agent.ts"],"names":[],"mappings":"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"}
|
package/dist/acp-agent.js
CHANGED
|
@@ -29,7 +29,7 @@ import { decodeClaudePermissionResponse } from "./permissions/response.js";
|
|
|
29
29
|
import { activeUsageLimitMessage, airSessionFailureCapabilityMeta, assistantMessageText, createSessionFailureState, isSyntheticUsageLimitMessage, providerFailureCategory, SessionFailureController, sessionFailureMeta, supportsAirSessionFailures, } from "./session-failure-extension.js";
|
|
30
30
|
import { AGENT_FILE_CHANGE_REPORT_CAPABILITY, agentFileChangeReportMeta, agentFileChangeReportRequestId, containsFileChangeAuditMarker, createFileChangeAuditSupport, createFileChangeAuditTurnState, FILE_CHANGE_AUDIT_SERVER_NAME, isFileChangeAuditReportPhase, isFileChangeAuditTool, supportsAgentFileChangeReport, } from "./file-change-audit.js";
|
|
31
31
|
import { clientSupportsNotices, MAX_NOTICE_TITLE_LENGTH, normalizeNoticeText, noticeOrTranscriptUpdate, sentenceCase, splitNoticeText, } from "./session-notices.js";
|
|
32
|
-
import { applyTaskCreate, applyTaskList, applyTaskUpdate, createPostToolUseHook, createTaskHook, parseTaskCreateOutput, parseTaskListOutput, parseTaskUpdateOutput, planEntries, registerHookCallback, taskStateToPlanEntries, toolInfoFromToolUse, toolUpdateFromDiffToolResponse, toolUpdateFromToolResult, } from "./tools.js";
|
|
32
|
+
import { applyTaskCreate, applyTaskList, applyTaskUpdate, createPostToolUseHook, createTaskHook, parseTaskCreateOutput, parseTaskListOutput, parseTaskUpdateOutput, planEntries, registerHookCallback, shellDescription, taskStateToPlanEntries, toolInfoFromToolUse, toolUpdateFromDiffToolResponse, toolUpdateFromToolResult, } from "./tools.js";
|
|
33
33
|
import { nodeToWebReadable, nodeToWebWritable, Pushable, unreachable } from "./utils.js";
|
|
34
34
|
import { acceptedPlanToolResult, ExitPlanCoordinator, exitPlanModeRawOutput, isExitPlanInterruptionResult, observeExitPlanToolResults, } from "./exit-plan.js";
|
|
35
35
|
import { DEFAULT_AGENT_ID, EFFORT_CONFIG_ID } from "./session-config-ids.js";
|
|
@@ -88,9 +88,12 @@ const TURN_NO_RESULT_MESSAGE = "The turn ended without a result: the agent went
|
|
|
88
88
|
const STEER_METHOD = "_session/steering";
|
|
89
89
|
/** How urgently the SDK delivers a steered message relative to the running
|
|
90
90
|
* turn — an internal Claude implementation detail, not part of the wire
|
|
91
|
-
* contract. `now`
|
|
92
|
-
*
|
|
93
|
-
*
|
|
91
|
+
* contract. `now` hands the message to the running turn at once: since SDK
|
|
92
|
+
* 0.3.286 (CLI 2.1.286) it moves running shell commands, agents and MCP calls
|
|
93
|
+
* to the background and JOINS the running turn instead of stopping it (before
|
|
94
|
+
* 0.3.286 it aborted the cycle and ran the message as a second one; a
|
|
95
|
+
* WebFetch/WebSearch it steps past reports `{ detachedToolCall: true }` from
|
|
96
|
+
* 0.3.287). `later` waits for a pending
|
|
94
97
|
* permission/elicitation callback to settle instead of cancelling its ACP
|
|
95
98
|
* request and hiding the client's user-input card (IJAI-1191). Maps to
|
|
96
99
|
* `SDKUserMessage.priority`; injected steering uses `now` unless the session is
|
|
@@ -174,6 +177,14 @@ export const USAGE_CAPABILITY_VERSION = 1;
|
|
|
174
177
|
* and a sample most of an interval old is exactly what the poll already
|
|
175
178
|
* showed them. */
|
|
176
179
|
export const USAGE_REFRESH_MAX_SAMPLE_AGE_MS = 5_000;
|
|
180
|
+
/** Parity item 106 (upstream issue #1284): how long a turn held for its
|
|
181
|
+
* background subagents (see `Turn.deferredSettle`) waits, once none of them is
|
|
182
|
+
* live and Claude Code is idle, for the followup cycle a task_notification
|
|
183
|
+
* would start. A notification that is lost starts none, and with no further
|
|
184
|
+
* idle nothing else would ever answer the prompt. A followup starts within
|
|
185
|
+
* milliseconds of its notification (the CLI flushes them together), so the
|
|
186
|
+
* bound only ever expires on a lost one. */
|
|
187
|
+
export const HELD_TURN_DRAIN_GRACE_MS = 5_000;
|
|
177
188
|
/** The SDK's own text for a rejected control request, passed through to the
|
|
178
189
|
* client as the internal error's message (R2.4). */
|
|
179
190
|
function errorMessage(error) {
|
|
@@ -300,6 +311,32 @@ const AUTONOMOUS_RESULT_ORIGINS = new Set([
|
|
|
300
311
|
* held for background subagents it spawned (see Turn.deferredSettle). The
|
|
301
312
|
* single spelling of the hold predicate, shared by the consumer's settle
|
|
302
313
|
* lanes and cancel(). */
|
|
314
|
+
/** The number of tasks whose latest run a session remembers (see
|
|
315
|
+
* `Session.taskRunIds`). */
|
|
316
|
+
const MAX_TASK_RUN_IDS = 1024;
|
|
317
|
+
/** Records `runId` as the latest run of `taskId`, and returns true when it
|
|
318
|
+
* names a run that opened before the latest one seen. Such a frame is late:
|
|
319
|
+
* a resumed task keeps its `task_id` and gets a new `run_id` (SDK 0.3.292+),
|
|
320
|
+
* and a queued `task_notification` of the finished run can arrive after the
|
|
321
|
+
* resume. Applied, it would close the new run. Run ids of one task sort in
|
|
322
|
+
* run order by plain string comparison. Frames without one (older CLIs) are
|
|
323
|
+
* never late. Ported from upstream #1271. */
|
|
324
|
+
function isLateTaskRun(session, taskId, runId) {
|
|
325
|
+
if (runId === undefined)
|
|
326
|
+
return false;
|
|
327
|
+
const runs = (session.taskRunIds ??= new Map());
|
|
328
|
+
const latest = runs.get(taskId);
|
|
329
|
+
if (latest !== undefined && runId < latest)
|
|
330
|
+
return true;
|
|
331
|
+
runs.delete(taskId);
|
|
332
|
+
runs.set(taskId, runId);
|
|
333
|
+
if (runs.size > MAX_TASK_RUN_IDS) {
|
|
334
|
+
const oldest = runs.keys().next().value;
|
|
335
|
+
if (oldest !== undefined)
|
|
336
|
+
runs.delete(oldest);
|
|
337
|
+
}
|
|
338
|
+
return false;
|
|
339
|
+
}
|
|
303
340
|
function isHeldOpen(turn) {
|
|
304
341
|
return turn != null && turn.deferredSettle !== undefined && !turn.settled;
|
|
305
342
|
}
|
|
@@ -359,14 +396,12 @@ function stripSubagentTextAndThinking(content) {
|
|
|
359
396
|
!("type" in item) ||
|
|
360
397
|
(item.type !== "text" && item.type !== "thinking"));
|
|
361
398
|
}
|
|
362
|
-
/** A cached tool call's `description` input, when it is a string
|
|
399
|
+
/** A cached tool call's `description` input, when it is a string — or, for a
|
|
400
|
+
* shell call, its `command_description` alias (CLI 2.1.295+, upstream #1330). */
|
|
363
401
|
function toolDescriptionOf(cache, toolUseId) {
|
|
364
402
|
if (typeof toolUseId !== "string")
|
|
365
403
|
return undefined;
|
|
366
|
-
|
|
367
|
-
if (typeof input !== "object" || input === null || !("description" in input))
|
|
368
|
-
return undefined;
|
|
369
|
-
return typeof input.description === "string" ? input.description : undefined;
|
|
404
|
+
return shellDescription(cache[toolUseId]?.input);
|
|
370
405
|
}
|
|
371
406
|
/**
|
|
372
407
|
* Advance the lexer state across the fragment appended since the last delta:
|
|
@@ -1614,17 +1649,20 @@ export class ClaudeAcpAgent {
|
|
|
1614
1649
|
* into the in-flight turn. The injected message's echo carries a uuid that
|
|
1615
1650
|
* matches no queued turn, so the consumer drops it as an unrelated replay
|
|
1616
1651
|
* without promoting/settling anything. It is normally delivered at {@link
|
|
1617
|
-
* STEER_PRIORITY_NOW}
|
|
1618
|
-
*
|
|
1619
|
-
*
|
|
1652
|
+
* STEER_PRIORITY_NOW}, which since SDK 0.3.286 joins the running turn
|
|
1653
|
+
* (running shells, agents and MCP calls move to the background) rather than
|
|
1654
|
+
* stopping it. While a permission or elicitation is awaiting user input it uses
|
|
1620
1655
|
* {@link STEER_PRIORITY_LATER} instead, because interrupting that SDK
|
|
1621
1656
|
* callback cancels the ACP request and can strand the prompt (IJAI-1191).
|
|
1622
1657
|
* The steered message's own output streams via `session/update`, not this
|
|
1623
1658
|
* response.
|
|
1624
1659
|
*
|
|
1625
|
-
*
|
|
1626
|
-
* own
|
|
1627
|
-
* (`Turn.steeredEchoes`) to settle at the
|
|
1660
|
+
* Before 0.3.286 delivering `now` ABORTED the cycle, which emitted a `result`
|
|
1661
|
+
* of its own before the steered message ran as a second one; since then it
|
|
1662
|
+
* joins the turn. The turn is marked (`Turn.steeredEchoes`) to settle at the
|
|
1663
|
+
* SDK's `idle` instead of at a result in both cases, so either CLI behaviour
|
|
1664
|
+
* settles once, after the steered work. Zeo sends no ACP steering, so none
|
|
1665
|
+
* of this is reachable from it.
|
|
1628
1666
|
*
|
|
1629
1667
|
* When the session is idle, the opt-in path returns `promptRequired` WITHOUT
|
|
1630
1668
|
* calling `prompt()`, pushing SDK input, or mutating `turnQueue`: the content
|
|
@@ -2329,6 +2367,34 @@ export class ClaudeAcpAgent {
|
|
|
2329
2367
|
* while true, the turn's settlement stays deferred so the subagent's
|
|
2330
2368
|
* output and permission requests land inside it (see
|
|
2331
2369
|
* Turn.deferredSettle). */
|
|
2370
|
+
/** Ends the display terminal of a command that went to the background,
|
|
2371
|
+
* once its task ends (see `Session.backgroundTerminals`). The code is the
|
|
2372
|
+
* one Claude Code's summary names, else 1 for a failed or stopped task —
|
|
2373
|
+
* a known failure never goes out as null — and null for a completion
|
|
2374
|
+
* that names none. */
|
|
2375
|
+
const endBackgroundTerminal = async (taskId, exitCode) => {
|
|
2376
|
+
const terminal = session.backgroundTerminals?.get(taskId);
|
|
2377
|
+
if (!terminal)
|
|
2378
|
+
return;
|
|
2379
|
+
session.backgroundTerminals.delete(taskId);
|
|
2380
|
+
await sendUpdate({
|
|
2381
|
+
sessionId: params.sessionId,
|
|
2382
|
+
update: {
|
|
2383
|
+
sessionUpdate: "tool_call_update",
|
|
2384
|
+
toolCallId: terminal.toolCallId,
|
|
2385
|
+
_meta: {
|
|
2386
|
+
...(terminal.parentToolUseId
|
|
2387
|
+
? { claudeCode: { parentToolUseId: terminal.parentToolUseId } }
|
|
2388
|
+
: {}),
|
|
2389
|
+
terminal_exit: {
|
|
2390
|
+
terminal_id: terminal.toolCallId,
|
|
2391
|
+
exit_code: exitCode,
|
|
2392
|
+
signal: null,
|
|
2393
|
+
},
|
|
2394
|
+
},
|
|
2395
|
+
},
|
|
2396
|
+
});
|
|
2397
|
+
};
|
|
2332
2398
|
const turnAwaitingSubagents = (turn) => {
|
|
2333
2399
|
if (!turn.spawnedTaskIds?.size) {
|
|
2334
2400
|
return false;
|
|
@@ -2356,6 +2422,33 @@ export class ClaudeAcpAgent {
|
|
|
2356
2422
|
settleActive(turn.deferredSettle);
|
|
2357
2423
|
}
|
|
2358
2424
|
};
|
|
2425
|
+
/** Item 106: arms the drain grace (see `HELD_TURN_DRAIN_GRACE_MS`) when a
|
|
2426
|
+
* prune leaves the held turn with no live subagent while Claude Code is
|
|
2427
|
+
* idle — the state in which a lost task_notification parks the turn. At
|
|
2428
|
+
* expiry the turn settles only if nothing moved: same turn, still held,
|
|
2429
|
+
* still drained, still idle. A followup that started meanwhile (state
|
|
2430
|
+
* `running`) settles the turn itself at its result or idle. */
|
|
2431
|
+
let drainGrace;
|
|
2432
|
+
const armDrainGrace = () => {
|
|
2433
|
+
const turn = session.activeTurn;
|
|
2434
|
+
if (drainGrace !== undefined ||
|
|
2435
|
+
!isHeldOpen(turn) ||
|
|
2436
|
+
turnAwaitingSubagents(turn) ||
|
|
2437
|
+
session.lastSessionState !== "idle") {
|
|
2438
|
+
return;
|
|
2439
|
+
}
|
|
2440
|
+
drainGrace = setTimeout(() => {
|
|
2441
|
+
drainGrace = undefined;
|
|
2442
|
+
if (session.activeTurn === turn &&
|
|
2443
|
+
isHeldOpen(turn) &&
|
|
2444
|
+
!turnAwaitingSubagents(turn) &&
|
|
2445
|
+
session.lastSessionState === "idle") {
|
|
2446
|
+
this.logger.log(`[held-turn] settled after the drain grace: no followup came (task_notification lost?) session=${params.sessionId}`);
|
|
2447
|
+
settleDeferredIfDrained();
|
|
2448
|
+
}
|
|
2449
|
+
}, HELD_TURN_DRAIN_GRACE_MS);
|
|
2450
|
+
drainGrace.unref?.();
|
|
2451
|
+
};
|
|
2359
2452
|
/** Settle the active turn with `outcome` now — unless subagents it
|
|
2360
2453
|
* spawned are still live, in which case store the outcome and hold the
|
|
2361
2454
|
* turn open (see Turn.deferredSettle). Every result-time settle of a
|
|
@@ -3270,9 +3363,17 @@ export class ClaudeAcpAgent {
|
|
|
3270
3363
|
case "files_persisted":
|
|
3271
3364
|
break;
|
|
3272
3365
|
case "task_progress":
|
|
3366
|
+
if (isLateTaskRun(session, message.task_id, message.run_id)) {
|
|
3367
|
+
this.logger.log(`[task/late-run] dropped=task_progress task=${message.task_id} run=${message.run_id}`);
|
|
3368
|
+
break;
|
|
3369
|
+
}
|
|
3273
3370
|
session.taskFeedPublisher?.notify(session.taskFeed.onProgress(message));
|
|
3274
3371
|
break;
|
|
3275
3372
|
case "task_started":
|
|
3373
|
+
if (isLateTaskRun(session, message.task_id, message.run_id)) {
|
|
3374
|
+
this.logger.log(`[task/late-run] dropped=task_started task=${message.task_id} run=${message.run_id}`);
|
|
3375
|
+
break;
|
|
3376
|
+
}
|
|
3276
3377
|
// For subagent tasks `task_id` is the subagent's agent id (the
|
|
3277
3378
|
// SDK keys its task registry by agent id) and `tool_use_id` is
|
|
3278
3379
|
// the Agent/Task tool_use that spawned it — recorded so the
|
|
@@ -3305,9 +3406,15 @@ export class ClaudeAcpAgent {
|
|
|
3305
3406
|
session.taskFeedPublisher?.notify(session.taskFeed.onStarted(message, toolDescriptionOf(session.toolUseCache, message.tool_use_id)));
|
|
3306
3407
|
break;
|
|
3307
3408
|
case "task_notification":
|
|
3409
|
+
if (isLateTaskRun(session, message.task_id, message.run_id)) {
|
|
3410
|
+
this.logger.log(`[task/late-run] dropped=task_notification task=${message.task_id} run=${message.run_id}`);
|
|
3411
|
+
break;
|
|
3412
|
+
}
|
|
3308
3413
|
// The task settled — no further tool calls can originate
|
|
3309
3414
|
// from it, so its registry entry can be dropped.
|
|
3310
3415
|
session.liveBackgroundTasks.delete(message.task_id);
|
|
3416
|
+
await endBackgroundTerminal(message.task_id, backgroundExitCode(message.status, message.summary));
|
|
3417
|
+
armDrainGrace();
|
|
3311
3418
|
if (session.taskFeed && session.taskFeedPublisher) {
|
|
3312
3419
|
const readable = await endingOutputReadable(session, message.task_id, message.output_file);
|
|
3313
3420
|
const change = session.taskFeed.onNotification(message);
|
|
@@ -3318,6 +3425,10 @@ export class ClaudeAcpAgent {
|
|
|
3318
3425
|
}
|
|
3319
3426
|
break;
|
|
3320
3427
|
case "task_updated":
|
|
3428
|
+
if (isLateTaskRun(session, message.task_id, message.run_id)) {
|
|
3429
|
+
this.logger.log(`[task/late-run] dropped=task_updated task=${message.task_id} run=${message.run_id}`);
|
|
3430
|
+
break;
|
|
3431
|
+
}
|
|
3321
3432
|
// terminal-status task_updated patch and a (deduplicated)
|
|
3322
3433
|
// task_notification when a task settles, but only the patch is
|
|
3323
3434
|
// guaranteed per transition — prune on it too so the registry
|
|
@@ -3327,6 +3438,10 @@ export class ClaudeAcpAgent {
|
|
|
3327
3438
|
message.patch.status === "failed" ||
|
|
3328
3439
|
message.patch.status === "killed") {
|
|
3329
3440
|
session.liveBackgroundTasks.delete(message.task_id);
|
|
3441
|
+
// Usually first: the notification with its summary follows
|
|
3442
|
+
// but is not guaranteed, so the terminal ends here.
|
|
3443
|
+
await endBackgroundTerminal(message.task_id, backgroundExitCode(message.patch.status, message.patch.error));
|
|
3444
|
+
armDrainGrace();
|
|
3330
3445
|
}
|
|
3331
3446
|
if (session.taskFeed && session.taskFeedPublisher) {
|
|
3332
3447
|
// The CLI queues the terminal patch BEFORE the
|
|
@@ -3526,6 +3641,7 @@ export class ClaudeAcpAgent {
|
|
|
3526
3641
|
session.liveBackgroundTasks.delete(taskId);
|
|
3527
3642
|
}
|
|
3528
3643
|
}
|
|
3644
|
+
armDrainGrace();
|
|
3529
3645
|
}
|
|
3530
3646
|
// The same level, forwarded: once the turn has settled the
|
|
3531
3647
|
// client reads the thread as idle, and a background shell or
|
|
@@ -3845,11 +3961,13 @@ export class ClaudeAcpAgent {
|
|
|
3845
3961
|
settleOrDefer({ stopReason: "refusal", usage: sessionUsage(session) });
|
|
3846
3962
|
break;
|
|
3847
3963
|
}
|
|
3848
|
-
//
|
|
3849
|
-
// interrupted cycle with an error-shaped
|
|
3850
|
-
// before it
|
|
3851
|
-
//
|
|
3852
|
-
//
|
|
3964
|
+
// Up to CLI 2.1.285 a priority:'now' steer could make the SDK
|
|
3965
|
+
// terminate the interrupted cycle with an error-shaped
|
|
3966
|
+
// diagnostic result before it replayed the injected message's
|
|
3967
|
+
// echo (since 0.3.286 the message joins the turn instead, so
|
|
3968
|
+
// this lane is kept for older CLIs). That result is not the
|
|
3969
|
+
// steered command's outcome: keep it on the steer lane and let
|
|
3970
|
+
// the cycle after the pending echo decide the turn.
|
|
3853
3971
|
if (message.is_error &&
|
|
3854
3972
|
isSteering(session.activeTurn) &&
|
|
3855
3973
|
session.activeTurn.steeredEchoes.size > 0) {
|
|
@@ -4468,6 +4586,19 @@ export class ClaudeAcpAgent {
|
|
|
4468
4586
|
// Before toAcpNotifications, which prunes the tool_use cache entry
|
|
4469
4587
|
// that says the result is a Bash call's.
|
|
4470
4588
|
observeBackgroundBashResult(message, content, session);
|
|
4589
|
+
// The command's terminal runs until its task ends, unless the task
|
|
4590
|
+
// has ended already (a fast command can end before its result).
|
|
4591
|
+
const runningTerminal = this.clientCapabilities?._meta?.["terminal_output"] === true
|
|
4592
|
+
? backgroundBashTerminal(message, content, session)
|
|
4593
|
+
: undefined;
|
|
4594
|
+
if (runningTerminal && session.liveBackgroundTasks.has(runningTerminal.taskId)) {
|
|
4595
|
+
(session.backgroundTerminals ??= new Map()).set(runningTerminal.taskId, {
|
|
4596
|
+
toolCallId: runningTerminal.toolCallId,
|
|
4597
|
+
...(message.parent_tool_use_id
|
|
4598
|
+
? { parentToolUseId: message.parent_tool_use_id }
|
|
4599
|
+
: {}),
|
|
4600
|
+
});
|
|
4601
|
+
}
|
|
4471
4602
|
for (const notification of toAcpNotifications(content, message.message.role, params.sessionId, session.toolUseCache, this.client, this.logger, {
|
|
4472
4603
|
clientCapabilities: this.clientCapabilities,
|
|
4473
4604
|
parentToolUseId: message.parent_tool_use_id,
|
|
@@ -4495,7 +4626,9 @@ export class ClaudeAcpAgent {
|
|
|
4495
4626
|
// filtered out of `content` above; blocks that do pass through
|
|
4496
4627
|
// (e.g. a subagent image) carry the stamped parentToolUseId
|
|
4497
4628
|
// meta and are excluded there.
|
|
4498
|
-
await sendUpdate(acceptedPlanToolResult(notification, acceptedPlanToolUseId))
|
|
4629
|
+
await sendUpdate(withRunningTerminal(acceptedPlanToolResult(notification, acceptedPlanToolUseId), runningTerminal && session.backgroundTerminals?.has(runningTerminal.taskId)
|
|
4630
|
+
? runningTerminal.toolCallId
|
|
4631
|
+
: undefined));
|
|
4499
4632
|
}
|
|
4500
4633
|
break;
|
|
4501
4634
|
}
|
|
@@ -5749,6 +5882,13 @@ export class ClaudeAcpAgent {
|
|
|
5749
5882
|
* Not written to `contextWindowCache` — that stays keyed to the
|
|
5750
5883
|
* `result.modelUsage` spellings — and a result still overwrites it.
|
|
5751
5884
|
* Ported from upstream #1186.
|
|
5885
|
+
*
|
|
5886
|
+
* Asks for the `summary` detail (parity item 97, upstream #1258): the
|
|
5887
|
+
* default `full` breakdown issues one `messages/count_tokens` call per
|
|
5888
|
+
* category, and only `rawMaxTokens` is read here. The two other callers
|
|
5889
|
+
* (`readResumedLiveModel`, `fetchContextUsedTokens`) read `totalTokens`,
|
|
5890
|
+
* which `summary` takes from the last response's usage plus local
|
|
5891
|
+
* estimates instead of counting — not the same number, so they keep `full`.
|
|
5752
5892
|
*/
|
|
5753
5893
|
refreshContextWindowInBackground(sessionId, session) {
|
|
5754
5894
|
if (session.contextWindowAuthoritative)
|
|
@@ -5760,7 +5900,7 @@ export class ClaudeAcpAgent {
|
|
|
5760
5900
|
session.models.currentModelId === modelId;
|
|
5761
5901
|
// A synchronous throw must not fail the caller either.
|
|
5762
5902
|
Promise.resolve()
|
|
5763
|
-
.then(() => query.getContextUsage())
|
|
5903
|
+
.then(() => query.getContextUsage({ detail: "summary" }))
|
|
5764
5904
|
.then((usage) => {
|
|
5765
5905
|
if (!stillCurrent() || session.contextWindowAuthoritative)
|
|
5766
5906
|
return;
|
|
@@ -6225,6 +6365,9 @@ export class ClaudeAcpAgent {
|
|
|
6225
6365
|
session.query = newQuery;
|
|
6226
6366
|
session.input = newInput;
|
|
6227
6367
|
session.queryOptions = options;
|
|
6368
|
+
// Run ids are per CLI process: the replacement's must not be judged
|
|
6369
|
+
// against the old process's (see isLateTaskRun).
|
|
6370
|
+
session.taskRunIds = undefined;
|
|
6228
6371
|
// The superseded consumer exits via its guards without touching the
|
|
6229
6372
|
// session; drop its handle so the caller's ensureConsumer starts a
|
|
6230
6373
|
// fresh consumer for the new query.
|
|
@@ -8234,12 +8377,8 @@ function shouldEmitToolCall(toolName) {
|
|
|
8234
8377
|
* clients may use as the shell command preview, while still giving clients
|
|
8235
8378
|
* access to Claude's concise human-readable title. */
|
|
8236
8379
|
function claudeCodeMetaFromToolUse(toolUse, cwd) {
|
|
8237
|
-
const description =
|
|
8238
|
-
toolUse.input
|
|
8239
|
-
typeof toolUse.input === "object" &&
|
|
8240
|
-
"description" in toolUse.input &&
|
|
8241
|
-
typeof toolUse.input.description === "string"
|
|
8242
|
-
? toolUse.input.description
|
|
8380
|
+
const description = toolUse.name === "Bash" || toolUse.name === "PowerShell"
|
|
8381
|
+
? shellDescription(toolUse.input)
|
|
8243
8382
|
: undefined;
|
|
8244
8383
|
const skillName = toolUse.name === "Skill"
|
|
8245
8384
|
? toolUse.input?.skill
|
|
@@ -9077,6 +9216,71 @@ function getMatchingModelUsage(modelUsage, currentModel) {
|
|
|
9077
9216
|
return { key: bestKey, usage: modelUsage[bestKey] };
|
|
9078
9217
|
}
|
|
9079
9218
|
}
|
|
9219
|
+
/**
|
|
9220
|
+
* Parity item 92: the Bash tool call and task of a command this result sent to
|
|
9221
|
+
* the background — the structured `BashOutput` carries `backgroundTaskId`, and
|
|
9222
|
+
* the message holds exactly one tool_result, of a Bash call.
|
|
9223
|
+
*/
|
|
9224
|
+
function backgroundBashTerminal(message, content, session) {
|
|
9225
|
+
if (message.type !== "user" || !Array.isArray(content))
|
|
9226
|
+
return undefined;
|
|
9227
|
+
const result = message.tool_use_result;
|
|
9228
|
+
if (typeof result !== "object" || result === null || !("backgroundTaskId" in result)) {
|
|
9229
|
+
return undefined;
|
|
9230
|
+
}
|
|
9231
|
+
const taskId = result.backgroundTaskId;
|
|
9232
|
+
if (typeof taskId !== "string" || taskId === "")
|
|
9233
|
+
return undefined;
|
|
9234
|
+
const blocks = content.filter((c) => typeof c === "object" && c !== null && c.type === "tool_result");
|
|
9235
|
+
if (blocks.length !== 1)
|
|
9236
|
+
return undefined;
|
|
9237
|
+
const toolCallId = blocks[0].tool_use_id;
|
|
9238
|
+
if (session.toolUseCache[toolCallId]?.name !== "Bash")
|
|
9239
|
+
return undefined;
|
|
9240
|
+
return { taskId, toolCallId };
|
|
9241
|
+
}
|
|
9242
|
+
/**
|
|
9243
|
+
* Drops `terminal_exit` from the tool result update of `toolCallId`: the Bash
|
|
9244
|
+
* call returned as soon as its command detached, and the exit would mark the
|
|
9245
|
+
* terminal as ended while the command still runs.
|
|
9246
|
+
*/
|
|
9247
|
+
export function withRunningTerminal(notification, toolCallId) {
|
|
9248
|
+
const update = notification.update;
|
|
9249
|
+
if (toolCallId === undefined ||
|
|
9250
|
+
update.sessionUpdate !== "tool_call_update" ||
|
|
9251
|
+
update.toolCallId !== toolCallId ||
|
|
9252
|
+
!update._meta ||
|
|
9253
|
+
!("terminal_exit" in update._meta)) {
|
|
9254
|
+
return notification;
|
|
9255
|
+
}
|
|
9256
|
+
const meta = { ...update._meta };
|
|
9257
|
+
delete meta.terminal_exit;
|
|
9258
|
+
const next = { ...update, _meta: meta };
|
|
9259
|
+
if (Object.keys(meta).length === 0)
|
|
9260
|
+
delete next._meta;
|
|
9261
|
+
return { ...notification, update: next };
|
|
9262
|
+
}
|
|
9263
|
+
/**
|
|
9264
|
+
* The exit code of a background command whose task ended, from what the task's
|
|
9265
|
+
* ending says. Claude Code's summary reads `Background command "<d>" completed
|
|
9266
|
+
* (exit code N[: note])` or `… failed with exit code N` (CLI 2.1.285); an
|
|
9267
|
+
* ending names a code only at its end, so a description holding the words
|
|
9268
|
+
* cannot be mistaken for it. A completion with a non-zero code is one Claude
|
|
9269
|
+
* Code accepted as a success (grep's "No matches found"), so it goes out as
|
|
9270
|
+
* null; a failure or stop that names no code goes out as 1, never null.
|
|
9271
|
+
*/
|
|
9272
|
+
export function backgroundExitCode(status, text) {
|
|
9273
|
+
const failed = status === "failed" || status === "killed" || status === "stopped";
|
|
9274
|
+
const said = typeof text === "string" ? text : "";
|
|
9275
|
+
if (failed) {
|
|
9276
|
+
const match = /exit code (\d+)\s*$/.exec(said);
|
|
9277
|
+
return match ? Number(match[1]) : 1;
|
|
9278
|
+
}
|
|
9279
|
+
const match = /\(exit code (\d+)(?::[^)]*)?\)\s*$/.exec(said);
|
|
9280
|
+
if (match && Number(match[1]) === 0)
|
|
9281
|
+
return 0;
|
|
9282
|
+
return null;
|
|
9283
|
+
}
|
|
9080
9284
|
/**
|
|
9081
9285
|
* Story 041 (R1.1, R1.6): a backgrounded Bash call's result names the file the
|
|
9082
9286
|
* CLI writes its output to. When the structured `BashOutput` carries
|
package/dist/tools.d.ts
CHANGED
|
@@ -23,7 +23,8 @@ interface ToolUpdate {
|
|
|
23
23
|
};
|
|
24
24
|
terminal_exit?: {
|
|
25
25
|
terminal_id: string;
|
|
26
|
-
|
|
26
|
+
/** Null when the code is not known (as in `TerminalExitStatus`). */
|
|
27
|
+
exit_code: number | null;
|
|
27
28
|
signal: string | null;
|
|
28
29
|
};
|
|
29
30
|
};
|
|
@@ -33,6 +34,15 @@ interface ToolUpdate {
|
|
|
33
34
|
* Returns the original path if it's outside the project directory or if no cwd is provided.
|
|
34
35
|
*/
|
|
35
36
|
export declare function toDisplayPath(filePath: string, cwd?: string): string;
|
|
37
|
+
/** Read a Bash or PowerShell input's description the way the CLI validates it.
|
|
38
|
+
* Since CLI 2.1.295 the CLI accepts `command_description` for `description`,
|
|
39
|
+
* but the streamed tool_use block keeps the key the model sent. The canonical
|
|
40
|
+
* key wins when both spellings are present. (Upstream #1330.) */
|
|
41
|
+
export declare function shellDescription(input: unknown): string | undefined;
|
|
42
|
+
/** Read a Grep input's path the way the CLI validates it. Since CLI 2.1.292 the
|
|
43
|
+
* CLI accepts `file_path` for `path`; the canonical key wins when both are
|
|
44
|
+
* present. (Upstream #1271.) */
|
|
45
|
+
export declare function grepPath(input: unknown): string | undefined;
|
|
36
46
|
export declare function toolInfoFromToolUse(toolUse: any, supportsTerminalOutput?: boolean, cwd?: string): ToolInfo;
|
|
37
47
|
export declare function toolUpdateFromToolResult(toolResult: ToolResultBlockParam | BetaToolResultBlockParam | BetaWebSearchToolResultBlockParam | BetaWebFetchToolResultBlockParam | WebSearchToolResultBlockParam | BetaCodeExecutionToolResultBlockParam | BetaBashCodeExecutionToolResultBlockParam | BetaTextEditorCodeExecutionToolResultBlockParam | BetaRequestMCPToolResultBlockParam | BetaToolSearchToolResultBlockParam, toolUse: any | undefined, supportsTerminalOutput?: boolean, toolUseResult?: unknown): ToolUpdate;
|
|
38
48
|
export type ClaudePlanEntry = {
|
|
@@ -40,6 +50,12 @@ export type ClaudePlanEntry = {
|
|
|
40
50
|
status: "pending" | "in_progress" | "completed";
|
|
41
51
|
activeForm: string;
|
|
42
52
|
};
|
|
53
|
+
/**
|
|
54
|
+
* The exit code the text of a failed command names. Claude Code starts the text
|
|
55
|
+
* of a command that exited with a failing code with `Exit code N`; other
|
|
56
|
+
* failures, such as a denial or a command that could not start, name none.
|
|
57
|
+
*/
|
|
58
|
+
export declare function failureExitCode(text: string): number | undefined;
|
|
43
59
|
export declare function planEntries(input: {
|
|
44
60
|
todos: ClaudePlanEntry[];
|
|
45
61
|
} | undefined): PlanEntry[];
|
package/dist/tools.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,SAAS,EACT,eAAe,EACf,gBAAgB,EAChB,QAAQ,EACT,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAaL,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,gBAAgB,EAKjB,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAGL,oBAAoB,EAEpB,6BAA6B,EAE9B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAEL,yCAAyC,EAGzC,qCAAqC,EAGrC,kCAAkC,EAGlC,+CAA+C,EAI/C,wBAAwB,EACxB,kCAAkC,EAIlC,gCAAgC,EAEhC,iCAAiC,EAClC,MAAM,sCAAsC,CAAC;AA2B9C,UAAU,QAAQ;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;CAChC;AAED,UAAU,UAAU;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;IAC5B,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC/B,KAAK,CAAC,EAAE;QACN,aAAa,CAAC,EAAE;YACd,WAAW,EAAE,MAAM,CAAC;SACrB,CAAC;QACF,eAAe,CAAC,EAAE;YAChB,WAAW,EAAE,MAAM,CAAC;YACpB,IAAI,EAAE,MAAM,CAAC;SACd,CAAC;QACF,aAAa,CAAC,EAAE;YACd,WAAW,EAAE,MAAM,CAAC;YACpB,SAAS,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
|
package/dist/tools.js
CHANGED
|
@@ -4,6 +4,10 @@ import path from "node:path";
|
|
|
4
4
|
* Returns the original path if it's outside the project directory or if no cwd is provided.
|
|
5
5
|
*/
|
|
6
6
|
export function toDisplayPath(filePath, cwd) {
|
|
7
|
+
// `path.resolve` throws on a non-string (upstream issue #1308); the type says
|
|
8
|
+
// string, but the value is a model's tool input.
|
|
9
|
+
if (typeof filePath !== "string")
|
|
10
|
+
return displayValueOf(filePath) ?? "";
|
|
7
11
|
if (!cwd)
|
|
8
12
|
return filePath;
|
|
9
13
|
const resolvedCwd = path.resolve(cwd);
|
|
@@ -13,6 +17,30 @@ export function toDisplayPath(filePath, cwd) {
|
|
|
13
17
|
}
|
|
14
18
|
return filePath;
|
|
15
19
|
}
|
|
20
|
+
/** A tool input's path, when it is one: a non-empty string. Anything else — a
|
|
21
|
+
* model can emit `{"file_path": 12345}`, which Claude Code rejects — is no
|
|
22
|
+
* path, so it is neither resolved nor sent as a location or a diff target
|
|
23
|
+
* (parity item 104, upstream issue #1308). */
|
|
24
|
+
function pathOf(value) {
|
|
25
|
+
return typeof value === "string" && value.length > 0 ? value : undefined;
|
|
26
|
+
}
|
|
27
|
+
/** How a tool input value that is not a path still shows in a title: a number
|
|
28
|
+
* or boolean as its text, so the failed call names what the model sent;
|
|
29
|
+
* anything else (an object, null) as nothing. */
|
|
30
|
+
function displayValueOf(value) {
|
|
31
|
+
if (typeof value === "string")
|
|
32
|
+
return value.length > 0 ? value : undefined;
|
|
33
|
+
if (typeof value === "number" || typeof value === "boolean" || typeof value === "bigint") {
|
|
34
|
+
return String(value);
|
|
35
|
+
}
|
|
36
|
+
return undefined;
|
|
37
|
+
}
|
|
38
|
+
/** The title form of a tool input's path: project-relative when it is a path
|
|
39
|
+
* under `cwd`, the value's text when it is a scalar that is not a path. */
|
|
40
|
+
function displayPathOf(value, cwd) {
|
|
41
|
+
const filePath = pathOf(value);
|
|
42
|
+
return filePath !== undefined ? toDisplayPath(filePath, cwd) : displayValueOf(value);
|
|
43
|
+
}
|
|
16
44
|
/** Read a Write tool_use input the way the CLI validates it. Since 2.1.280 the
|
|
17
45
|
* CLI accepts `path` for `file_path` and `file_text`/`file_content` for
|
|
18
46
|
* `content` when a model sends those spellings, but the streamed tool_use
|
|
@@ -26,14 +54,57 @@ function normalizeWriteInput(input) {
|
|
|
26
54
|
const content = raw.content ?? raw.file_text ?? raw.file_content;
|
|
27
55
|
return { ...raw, file_path: filePath, content };
|
|
28
56
|
}
|
|
57
|
+
/** Read a Bash or PowerShell input's description the way the CLI validates it.
|
|
58
|
+
* Since CLI 2.1.295 the CLI accepts `command_description` for `description`,
|
|
59
|
+
* but the streamed tool_use block keeps the key the model sent. The canonical
|
|
60
|
+
* key wins when both spellings are present. (Upstream #1330.) */
|
|
61
|
+
export function shellDescription(input) {
|
|
62
|
+
if (!input || typeof input !== "object")
|
|
63
|
+
return undefined;
|
|
64
|
+
const raw = input;
|
|
65
|
+
if (typeof raw.description === "string")
|
|
66
|
+
return raw.description;
|
|
67
|
+
return typeof raw.command_description === "string" ? raw.command_description : undefined;
|
|
68
|
+
}
|
|
69
|
+
/** Read a Grep input's path the way the CLI validates it. Since CLI 2.1.292 the
|
|
70
|
+
* CLI accepts `file_path` for `path`; the canonical key wins when both are
|
|
71
|
+
* present. (Upstream #1271.) */
|
|
72
|
+
export function grepPath(input) {
|
|
73
|
+
if (!input || typeof input !== "object")
|
|
74
|
+
return undefined;
|
|
75
|
+
const raw = input;
|
|
76
|
+
if (typeof raw.path === "string")
|
|
77
|
+
return raw.path;
|
|
78
|
+
return typeof raw.file_path === "string" ? raw.file_path : undefined;
|
|
79
|
+
}
|
|
80
|
+
/** Read a Grep input's output mode the way the CLI validates it. Since CLI
|
|
81
|
+
* 2.1.295 the CLI reads a `-l` or `-c` flag (`true` or `"true"`) as
|
|
82
|
+
* `output_mode: "files_with_matches"` or `"count"` when `output_mode` is
|
|
83
|
+
* unset. (Upstream #1330.) */
|
|
84
|
+
function grepOutputMode(input) {
|
|
85
|
+
if (!input || typeof input !== "object")
|
|
86
|
+
return undefined;
|
|
87
|
+
const raw = input;
|
|
88
|
+
if (typeof raw.output_mode === "string")
|
|
89
|
+
return raw.output_mode;
|
|
90
|
+
if (raw["-l"] === true || raw["-l"] === "true")
|
|
91
|
+
return "files_with_matches";
|
|
92
|
+
if (raw["-c"] === true || raw["-c"] === "true")
|
|
93
|
+
return "count";
|
|
94
|
+
return undefined;
|
|
95
|
+
}
|
|
29
96
|
export function toolInfoFromToolUse(toolUse, supportsTerminalOutput = false, cwd) {
|
|
30
97
|
const name = toolUse.name;
|
|
31
98
|
switch (name) {
|
|
32
99
|
case "Agent":
|
|
33
100
|
case "Task": {
|
|
34
101
|
const input = toolUse.input;
|
|
102
|
+
// `effort` is set only when the user asked for one (CLI 2.1.292+).
|
|
103
|
+
const effort = input && "effort" in input && typeof input.effort === "string"
|
|
104
|
+
? ` (${input.effort} effort)`
|
|
105
|
+
: "";
|
|
35
106
|
return {
|
|
36
|
-
title: input?.description ? input.description : "Task",
|
|
107
|
+
title: (input?.description ? input.description : "Task") + effort,
|
|
37
108
|
kind: "think",
|
|
38
109
|
content: input && "prompt" in input
|
|
39
110
|
? [
|
|
@@ -48,16 +119,17 @@ export function toolInfoFromToolUse(toolUse, supportsTerminalOutput = false, cwd
|
|
|
48
119
|
case "Bash":
|
|
49
120
|
case "PowerShell": {
|
|
50
121
|
const input = toolUse.input;
|
|
122
|
+
const description = shellDescription(input);
|
|
51
123
|
return {
|
|
52
124
|
title: input?.command ? input.command : "Terminal",
|
|
53
125
|
kind: "execute",
|
|
54
126
|
content: supportsTerminalOutput
|
|
55
127
|
? [{ type: "terminal", terminalId: toolUse.id }]
|
|
56
|
-
:
|
|
128
|
+
: description
|
|
57
129
|
? [
|
|
58
130
|
{
|
|
59
131
|
type: "content",
|
|
60
|
-
content: { type: "text", text:
|
|
132
|
+
content: { type: "text", text: description },
|
|
61
133
|
},
|
|
62
134
|
]
|
|
63
135
|
: [],
|
|
@@ -72,15 +144,16 @@ export function toolInfoFromToolUse(toolUse, supportsTerminalOutput = false, cwd
|
|
|
72
144
|
else if (input?.offset) {
|
|
73
145
|
limit = " (from line " + input.offset + ")";
|
|
74
146
|
}
|
|
75
|
-
const
|
|
147
|
+
const filePath = pathOf(input?.file_path);
|
|
148
|
+
const displayPath = displayPathOf(input?.file_path, cwd) ?? "File";
|
|
76
149
|
return {
|
|
77
150
|
title: "Read " + displayPath + limit,
|
|
78
151
|
kind: "read",
|
|
79
|
-
locations:
|
|
152
|
+
locations: filePath
|
|
80
153
|
? [
|
|
81
154
|
{
|
|
82
|
-
path:
|
|
83
|
-
line: input
|
|
155
|
+
path: filePath,
|
|
156
|
+
line: input?.offset ?? 1,
|
|
84
157
|
},
|
|
85
158
|
]
|
|
86
159
|
: [],
|
|
@@ -89,12 +162,13 @@ export function toolInfoFromToolUse(toolUse, supportsTerminalOutput = false, cwd
|
|
|
89
162
|
}
|
|
90
163
|
case "Write": {
|
|
91
164
|
const input = normalizeWriteInput(toolUse.input);
|
|
165
|
+
const filePath = pathOf(input?.file_path);
|
|
92
166
|
let content = [];
|
|
93
|
-
if (input &&
|
|
167
|
+
if (input && filePath) {
|
|
94
168
|
content = [
|
|
95
169
|
{
|
|
96
170
|
type: "diff",
|
|
97
|
-
path:
|
|
171
|
+
path: filePath,
|
|
98
172
|
oldText: null,
|
|
99
173
|
newText: input.content,
|
|
100
174
|
},
|
|
@@ -108,37 +182,39 @@ export function toolInfoFromToolUse(toolUse, supportsTerminalOutput = false, cwd
|
|
|
108
182
|
},
|
|
109
183
|
];
|
|
110
184
|
}
|
|
111
|
-
const displayPath = input?.file_path
|
|
185
|
+
const displayPath = displayPathOf(input?.file_path, cwd);
|
|
112
186
|
return {
|
|
113
187
|
title: displayPath ? `Write ${displayPath}` : "Preparing file…",
|
|
114
188
|
kind: "edit",
|
|
115
189
|
content,
|
|
116
|
-
locations:
|
|
190
|
+
locations: filePath ? [{ path: filePath }] : [],
|
|
117
191
|
};
|
|
118
192
|
}
|
|
119
193
|
case "Edit": {
|
|
120
194
|
const input = toolUse.input;
|
|
195
|
+
const filePath = pathOf(input?.file_path);
|
|
121
196
|
let content = [];
|
|
122
|
-
if (input &&
|
|
197
|
+
if (input && filePath && (input.old_string || input.new_string)) {
|
|
123
198
|
content = [
|
|
124
199
|
{
|
|
125
200
|
type: "diff",
|
|
126
|
-
path:
|
|
201
|
+
path: filePath,
|
|
127
202
|
oldText: input.old_string || null,
|
|
128
203
|
newText: input.new_string ?? "",
|
|
129
204
|
},
|
|
130
205
|
];
|
|
131
206
|
}
|
|
132
|
-
const displayPath = input?.file_path
|
|
207
|
+
const displayPath = displayPathOf(input?.file_path, cwd);
|
|
133
208
|
return {
|
|
134
209
|
title: displayPath ? `Edit ${displayPath}` : "Edit",
|
|
135
210
|
kind: "edit",
|
|
136
211
|
content,
|
|
137
|
-
locations:
|
|
212
|
+
locations: filePath ? [{ path: filePath }] : [],
|
|
138
213
|
};
|
|
139
214
|
}
|
|
140
215
|
case "Glob": {
|
|
141
216
|
const input = toolUse.input;
|
|
217
|
+
const globPath = pathOf(input?.path);
|
|
142
218
|
let label = "Find";
|
|
143
219
|
if (input?.path) {
|
|
144
220
|
label += ` \`${input.path}\``;
|
|
@@ -150,7 +226,7 @@ export function toolInfoFromToolUse(toolUse, supportsTerminalOutput = false, cwd
|
|
|
150
226
|
title: label,
|
|
151
227
|
kind: "search",
|
|
152
228
|
content: [],
|
|
153
|
-
locations:
|
|
229
|
+
locations: globPath ? [{ path: globPath }] : [],
|
|
154
230
|
};
|
|
155
231
|
}
|
|
156
232
|
case "Grep": {
|
|
@@ -171,8 +247,9 @@ export function toolInfoFromToolUse(toolUse, supportsTerminalOutput = false, cwd
|
|
|
171
247
|
if (input?.["-C"] !== undefined) {
|
|
172
248
|
label += ` -C ${input["-C"]}`;
|
|
173
249
|
}
|
|
174
|
-
|
|
175
|
-
|
|
250
|
+
const outputMode = grepOutputMode(input);
|
|
251
|
+
if (outputMode) {
|
|
252
|
+
switch (outputMode) {
|
|
176
253
|
case "files_with_matches":
|
|
177
254
|
label += " -l";
|
|
178
255
|
break;
|
|
@@ -199,8 +276,9 @@ export function toolInfoFromToolUse(toolUse, supportsTerminalOutput = false, cwd
|
|
|
199
276
|
if (input?.pattern) {
|
|
200
277
|
label += ` "${input.pattern}"`;
|
|
201
278
|
}
|
|
202
|
-
|
|
203
|
-
|
|
279
|
+
const searchPath = grepPath(input);
|
|
280
|
+
if (searchPath) {
|
|
281
|
+
label += ` ${searchPath}`;
|
|
204
282
|
}
|
|
205
283
|
return {
|
|
206
284
|
title: label,
|
|
@@ -210,8 +288,10 @@ export function toolInfoFromToolUse(toolUse, supportsTerminalOutput = false, cwd
|
|
|
210
288
|
}
|
|
211
289
|
case "WebFetch": {
|
|
212
290
|
const input = toolUse.input;
|
|
291
|
+
// `offset` reads on through a page too long for one call (CLI 2.1.290+).
|
|
292
|
+
const from = input?.offset ? ` (from char ${input.offset})` : "";
|
|
213
293
|
return {
|
|
214
|
-
title: input?.url ? `Fetch ${input.url}` : "Fetch",
|
|
294
|
+
title: input?.url ? `Fetch ${input.url}${from}` : "Fetch",
|
|
215
295
|
kind: "fetch",
|
|
216
296
|
content: input && input.prompt
|
|
217
297
|
? [
|
|
@@ -546,7 +626,13 @@ export function toolUpdateFromToolResult(toolResult, toolUse, supportsTerminalOu
|
|
|
546
626
|
// or [{ type: "image", source: {...} }] when the local Bash tool
|
|
547
627
|
// produces an image, e.g. piping a base64 data URI)
|
|
548
628
|
let output = "";
|
|
629
|
+
// Parity item 92 (upstream #1252): the code is the one the result names.
|
|
630
|
+
// `null` means "not known" — `TerminalExitStatus` allows it — and is used
|
|
631
|
+
// only where the command did NOT fail: a client such as Zeo marks a
|
|
632
|
+
// command failed only on a non-null, non-zero code, so a known failure
|
|
633
|
+
// keeps a number (the `Exit code N` the text names, else 1).
|
|
549
634
|
let exitCode = isError ? 1 : 0;
|
|
635
|
+
let codeFromResult = false;
|
|
550
636
|
const structuredBash = structuredResult(toolUseResult);
|
|
551
637
|
if (structuredBash &&
|
|
552
638
|
typeof structuredBash.stdout === "string" &&
|
|
@@ -563,6 +649,11 @@ export function toolUpdateFromToolResult(toolResult, toolUse, supportsTerminalOu
|
|
|
563
649
|
output = [output, "[Command was aborted before completion]"].filter(Boolean).join("\n");
|
|
564
650
|
exitCode = 1;
|
|
565
651
|
}
|
|
652
|
+
else if (structuredBash.returnCodeInterpretation !== undefined && !isError) {
|
|
653
|
+
// Claude Code accepted a non-zero code as a success (grep's "No
|
|
654
|
+
// matches found"); the result does not carry which code it was.
|
|
655
|
+
exitCode = null;
|
|
656
|
+
}
|
|
566
657
|
// Structured stdout is clipped (~30k chars) when the full output was
|
|
567
658
|
// persisted to disk; without this note the clip is silent and the
|
|
568
659
|
// path to the full output is lost.
|
|
@@ -585,6 +676,7 @@ export function toolUpdateFromToolResult(toolResult, toolUse, supportsTerminalOu
|
|
|
585
676
|
const bashResult = result;
|
|
586
677
|
output = [bashResult.stdout, bashResult.stderr].filter(Boolean).join("\n");
|
|
587
678
|
exitCode = bashResult.return_code;
|
|
679
|
+
codeFromResult = true;
|
|
588
680
|
}
|
|
589
681
|
else if (typeof result === "string") {
|
|
590
682
|
output = result;
|
|
@@ -603,6 +695,13 @@ export function toolUpdateFromToolResult(toolResult, toolUse, supportsTerminalOu
|
|
|
603
695
|
return toAcpContentUpdate(result, isError);
|
|
604
696
|
}
|
|
605
697
|
}
|
|
698
|
+
if (isError && !codeFromResult)
|
|
699
|
+
exitCode = failureExitCode(output) ?? 1;
|
|
700
|
+
// A command sent to the background is still running: the result only
|
|
701
|
+
// announces it. The consumer withholds this exit while the task is live
|
|
702
|
+
// and sends the real one when the task ends (`backgroundTerminals`).
|
|
703
|
+
if (structuredBash?.backgroundTaskId !== undefined)
|
|
704
|
+
exitCode = null;
|
|
606
705
|
// Without a terminal id there is nothing the client can reconcile these
|
|
607
706
|
// metas against, and emitting them anyway strands the output: a client that
|
|
608
707
|
// buffers output/exit for terminals it has not been told about (Zed keeps
|
|
@@ -816,6 +915,15 @@ function toAcpContentBlock(content, isError) {
|
|
|
816
915
|
return wrapText(JSON.stringify(content));
|
|
817
916
|
}
|
|
818
917
|
}
|
|
918
|
+
/**
|
|
919
|
+
* The exit code the text of a failed command names. Claude Code starts the text
|
|
920
|
+
* of a command that exited with a failing code with `Exit code N`; other
|
|
921
|
+
* failures, such as a denial or a command that could not start, name none.
|
|
922
|
+
*/
|
|
923
|
+
export function failureExitCode(text) {
|
|
924
|
+
const match = /^Exit code (\d+)(?:\n|$)/.exec(text);
|
|
925
|
+
return match ? Number(match[1]) : undefined;
|
|
926
|
+
}
|
|
819
927
|
export function planEntries(input) {
|
|
820
928
|
return (input?.todos ?? []).map((todo) => ({
|
|
821
929
|
content: todo.status === "in_progress" && todo.activeForm ? todo.activeForm : todo.content,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage-markdown.d.ts","sourceRoot":"","sources":["../src/usage-markdown.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAKxF;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,OAAQ,CAAC;AA6DjD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,0BAA0B,GAAG,IAAI,CAOpF;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAExD;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAU1E;
|
|
1
|
+
{"version":3,"file":"usage-markdown.d.ts","sourceRoot":"","sources":["../src/usage-markdown.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAKxF;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,OAAQ,CAAC;AA6DjD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,0BAA0B,GAAG,IAAI,CAOpF;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAExD;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAU1E;AAmSD,wEAAwE;AACxE,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,0BAA0B,GAAG,MAAM,CAS7E;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,gBAAgB,GAAG,IAAI,CACjC,KAAK,EACL,2DAA2D,CAC5D,CAAC;AAEF,0DAA0D;AAC1D,MAAM,MAAM,mBAAmB,GAAG;IAAE,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,CAAC;AAQvE;;;;;;;;;GASG;AACH,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,gBAAgB,EACvB,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,mBAAmB,GAC1B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAwDxB"}
|
package/dist/usage-markdown.js
CHANGED
|
@@ -227,8 +227,65 @@ function appendLimit(lines, label, window) {
|
|
|
227
227
|
}
|
|
228
228
|
/** How many MCP servers one contribution table lists. */
|
|
229
229
|
const TOP_CONTRIBUTIONS = 3;
|
|
230
|
+
/**
|
|
231
|
+
* Labels for the usage patterns (`behaviors[].key`) the pinned SDK types
|
|
232
|
+
* define, worded as Claude Code's own `/usage` dialog words them (CLI 2.1.285:
|
|
233
|
+
* "41% of your usage hit a >100k-token cache miss"). A key not listed here — a
|
|
234
|
+
* newer CLI adds them ahead of the SDK types — renders from its own name, so it
|
|
235
|
+
* shows without a code change.
|
|
236
|
+
*/
|
|
237
|
+
const BEHAVIOR_LABELS = {
|
|
238
|
+
cache_miss: "Hit a >100k-token cache miss",
|
|
239
|
+
long_context: "At >150k context",
|
|
240
|
+
subagent_heavy: "Subagent-heavy sessions",
|
|
241
|
+
high_parallel: "While 4+ sessions ran in parallel",
|
|
242
|
+
cron: "Sessions active for 8+ hours",
|
|
243
|
+
};
|
|
244
|
+
/** `max_effort` -> "Max effort", escaped: the key is the CLI's, not ours. */
|
|
245
|
+
function behaviorLabel(key) {
|
|
246
|
+
const known = BEHAVIOR_LABELS[key];
|
|
247
|
+
if (known !== undefined)
|
|
248
|
+
return known;
|
|
249
|
+
const words = key.replace(/_+/g, " ").trim();
|
|
250
|
+
return escapeMarkdown(words.charAt(0).toUpperCase() + words.slice(1));
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* A period's usage patterns, read defensively: the schema does not validate
|
|
254
|
+
* `behaviors[]`, so a report from a CLI that reshaped it still renders
|
|
255
|
+
* everything else. An entry with no usable key or share is skipped, and so is
|
|
256
|
+
* one with no share at all — the CLI sends every pattern it knows, most at 0%.
|
|
257
|
+
*/
|
|
258
|
+
function readBehaviors(period) {
|
|
259
|
+
const raw = period?.behaviors;
|
|
260
|
+
if (!Array.isArray(raw))
|
|
261
|
+
return [];
|
|
262
|
+
const rows = [];
|
|
263
|
+
for (const entry of raw) {
|
|
264
|
+
if (typeof entry !== "object" || entry === null)
|
|
265
|
+
continue;
|
|
266
|
+
const { key, pct, count } = entry;
|
|
267
|
+
if (typeof key !== "string" || key.trim() === "")
|
|
268
|
+
continue;
|
|
269
|
+
if (typeof pct !== "number" || !Number.isFinite(pct) || pct <= 0)
|
|
270
|
+
continue;
|
|
271
|
+
rows.push({
|
|
272
|
+
key,
|
|
273
|
+
pct,
|
|
274
|
+
count: typeof count === "number" && Number.isFinite(count) && count >= 0 ? count : null,
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
return rows.sort((a, b) => b.pct - a.pct);
|
|
278
|
+
}
|
|
230
279
|
function appendContributions(lines, label, period) {
|
|
231
280
|
lines.push("", `**${label}** \u00b7 ${period.request_count} requests \u00b7 ${period.session_count} sessions`);
|
|
281
|
+
const behaviors = readBehaviors(period);
|
|
282
|
+
if (behaviors.length > 0) {
|
|
283
|
+
lines.push("", "| Usage pattern | Usage | Requests |", "|:--|--:|--:|");
|
|
284
|
+
for (const behavior of behaviors) {
|
|
285
|
+
const bar = usageBar(normalizeUtilization(behavior.pct) ?? 0);
|
|
286
|
+
lines.push(`| ${behaviorLabel(behavior.key)} | \`${bar}\` ${behavior.pct}% | ${behavior.count ?? "\u2014"} |`);
|
|
287
|
+
}
|
|
288
|
+
}
|
|
232
289
|
if (period.mcp_servers.length === 0) {
|
|
233
290
|
return;
|
|
234
291
|
}
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"publishConfig": {
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
|
-
"version": "0.
|
|
6
|
+
"version": "0.30.0",
|
|
7
7
|
"description": "Claude Code in Zed and other ACP clients with the VS Code extension's UX — multi-select questions, refusal consent, live quota windows, background tasks, Ultracode effort and session notices. Fork of claude-agent-acp.",
|
|
8
8
|
"main": "dist/lib.js",
|
|
9
9
|
"types": "dist/lib.d.ts",
|
|
@@ -69,23 +69,23 @@
|
|
|
69
69
|
"node": ">=24"
|
|
70
70
|
},
|
|
71
71
|
"dependencies": {
|
|
72
|
-
"@agentclientprotocol/sdk": "1.
|
|
73
|
-
"@anthropic-ai/claude-agent-sdk": "0.3.
|
|
72
|
+
"@agentclientprotocol/sdk": "1.8.0",
|
|
73
|
+
"@anthropic-ai/claude-agent-sdk": "0.3.296",
|
|
74
74
|
"zod": "^4.0.0"
|
|
75
75
|
},
|
|
76
76
|
"devDependencies": {
|
|
77
|
-
"@anthropic-ai/sdk": "0.
|
|
77
|
+
"@anthropic-ai/sdk": "0.132.0",
|
|
78
78
|
"@eslint/js": "10.0.1",
|
|
79
79
|
"@tsconfig/node24": "24.0.5",
|
|
80
|
-
"@types/node": "26.6.
|
|
81
|
-
"@typescript-eslint/eslint-plugin": "8.
|
|
82
|
-
"@typescript-eslint/parser": "8.
|
|
83
|
-
"eslint": "10.
|
|
80
|
+
"@types/node": "26.6.4",
|
|
81
|
+
"@typescript-eslint/eslint-plugin": "8.71.1",
|
|
82
|
+
"@typescript-eslint/parser": "8.71.1",
|
|
83
|
+
"eslint": "10.12.0",
|
|
84
84
|
"eslint-config-prettier": "10.1.8",
|
|
85
|
-
"globals": "17.
|
|
86
|
-
"prettier": "3.9.
|
|
85
|
+
"globals": "17.13.0",
|
|
86
|
+
"prettier": "3.9.9",
|
|
87
87
|
"ts-node": "10.9.2",
|
|
88
88
|
"typescript": "6.0.3",
|
|
89
|
-
"vitest": "5.0.
|
|
89
|
+
"vitest": "5.0.3"
|
|
90
90
|
}
|
|
91
91
|
}
|