@agentclientprotocol/claude-agent-acp 0.77.1-preview.1 → 0.77.1-preview.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/acp-agent.d.ts +4 -0
- package/dist/acp-agent.d.ts.map +1 -1
- package/dist/acp-agent.js +94 -21
- package/dist/air-extension.d.ts +1 -0
- package/dist/air-extension.d.ts.map +1 -1
- package/dist/air-extension.js +1 -0
- package/dist/context-compaction.d.ts +96 -10
- package/dist/context-compaction.d.ts.map +1 -1
- package/dist/context-compaction.js +264 -70
- package/dist/diff.d.ts +13 -0
- package/dist/diff.d.ts.map +1 -0
- package/dist/diff.js +131 -0
- package/dist/tools.d.ts +0 -11
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +0 -73
- package/package.json +1 -1
package/dist/acp-agent.d.ts
CHANGED
|
@@ -13,6 +13,7 @@ import { ContextCompactionMetadata } from "./context-compaction-meta.js";
|
|
|
13
13
|
import { type SessionFailureState } from "./session-failure-extension.js";
|
|
14
14
|
import { type ClaudeSubscriptionGuardState } from "./hide-claude-auth.js";
|
|
15
15
|
import { type FileChangeAuditSupport, type FileChangeAuditTurnState } from "./file-change-audit.js";
|
|
16
|
+
import { ContextCompactionLifecycle } from "./context-compaction.js";
|
|
16
17
|
import { TaskState } from "./tools.js";
|
|
17
18
|
import { Pushable } from "./utils.js";
|
|
18
19
|
import { MODE_CONFIG_ID } from "./session-mode.js";
|
|
@@ -513,6 +514,9 @@ export type Session = {
|
|
|
513
514
|
/** Session-owned async task controller. Prompt cancellation intentionally
|
|
514
515
|
* does not finish it because background work may outlive a prompt. */
|
|
515
516
|
asyncTaskRuntime?: AsyncTaskRuntime;
|
|
517
|
+
/** The consumer's compaction lifecycle, exposed so the PostCompact hook can
|
|
518
|
+
* hand it the retained summary. */
|
|
519
|
+
contextCompaction?: ContextCompactionLifecycle;
|
|
516
520
|
/** Whether any top-level assistant text reached the client since the last
|
|
517
521
|
* stretch boundary. Set as a side effect of sending in the consumer's
|
|
518
522
|
* `sendUpdate`, never at an emission site; read at the terminal `result`
|
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
|
@@ -28,8 +28,9 @@ import { SettingsManager } from "./settings.js";
|
|
|
28
28
|
import { activeUsageLimitMessage, airSessionFailureCapabilityMeta, assistantMessageText, createSessionFailureState, isSyntheticUsageLimitMessage, providerFailureCategory, SessionFailureController, sessionFailureMeta, supportsAirSessionFailures, } from "./session-failure-extension.js";
|
|
29
29
|
import { billsClaudeSubscription, CLAUDE_SUBSCRIPTION_NOT_SUPPORTED_MESSAGE, CLAUDE_SUBSCRIPTION_NOT_SUPPORTED_REASON, claudeLoginRequiredError, claudeSubscriptionNotSupportedError, holdsNonSubscriptionCredential, refuseClaudeSubscriptionTurn, shouldHideClaudeAuth, warnClaudeSubscriptionGuardDegraded, } from "./hide-claude-auth.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
|
-
import { ContextCompactionLifecycle, contextCompactionMetadataFromBoundary, } from "./context-compaction.js";
|
|
32
|
-
import { applyTaskCreate, applyTaskList, applyTaskUpdate, clearHookCallbacks, completeHookCallback, createPostToolUseHook, createTaskHook, parseTaskCreateOutput, parseTaskListOutput, parseTaskUpdateOutput, planEntries, registerHookCallback, taskStateToPlanEntries, toolInfoFromToolUse,
|
|
31
|
+
import { ContextCompactionLifecycle, clientSupportsCompactionUpdates, contextCompactionMetadataFromBoundary, isCompactSummaryMessage, } from "./context-compaction.js";
|
|
32
|
+
import { applyTaskCreate, applyTaskList, applyTaskUpdate, clearHookCallbacks, completeHookCallback, createPostToolUseHook, createTaskHook, parseTaskCreateOutput, parseTaskListOutput, parseTaskUpdateOutput, planEntries, registerHookCallback, taskStateToPlanEntries, toolInfoFromToolUse, toolUpdateFromToolResult, unregisterHookCallback, } from "./tools.js";
|
|
33
|
+
import { toolUpdateFromDiffToolResponse } from "./diff.js";
|
|
33
34
|
import { nodeToWebReadable, nodeToWebWritable, Pushable, unreachable } from "./utils.js";
|
|
34
35
|
import { acceptedPlanToolResult, ExitPlanCoordinator, executionDiagnostic, exitPlanModeRawOutput, observeExitPlanToolResults, } from "./exit-plan.js";
|
|
35
36
|
import { parseToolResultMeta } from "./tool-result-meta.js";
|
|
@@ -1888,7 +1889,14 @@ export class ClaudeAcpAgent {
|
|
|
1888
1889
|
* as the turn's answer. */
|
|
1889
1890
|
const subagents = (session.nativeSubagentRuntime ??= new NativeSubagentRuntime(clientSupportsSubagents(this.clientCapabilities), params.sessionId, session, async (notification) => this.client.sessionUpdate(asSdkSessionNotification(notification)), this.logger));
|
|
1890
1891
|
const asyncTasks = (session.asyncTaskRuntime ??= new AsyncTaskRuntime(clientSupportsAsyncTasks(this.clientCapabilities), params.sessionId, async (notification) => this.client.sessionUpdate(asSdkSessionNotification(notification))));
|
|
1891
|
-
const compaction = new ContextCompactionLifecycle((notification) => sendUpdate(notification)
|
|
1892
|
+
const compaction = new ContextCompactionLifecycle((notification) => sendUpdate(notification), {
|
|
1893
|
+
sessionId: params.sessionId,
|
|
1894
|
+
presentation: clientSupportsCompactionUpdates(this.clientCapabilities)
|
|
1895
|
+
? "compaction_update"
|
|
1896
|
+
: "tool_call",
|
|
1897
|
+
logError: (message, error) => this.logger.error(message, error),
|
|
1898
|
+
});
|
|
1899
|
+
session.contextCompaction = compaction;
|
|
1892
1900
|
const sendUpdate = async (notification) => {
|
|
1893
1901
|
const { update } = notification;
|
|
1894
1902
|
const claudeMeta = update._meta?.claudeCode;
|
|
@@ -1913,7 +1921,9 @@ export class ClaudeAcpAgent {
|
|
|
1913
1921
|
update.sessionUpdate === "agent_thought_chunk" ||
|
|
1914
1922
|
update.sessionUpdate === "user_message_chunk" ||
|
|
1915
1923
|
update.sessionUpdate === "tool_call" ||
|
|
1916
|
-
update.sessionUpdate === "tool_call_update"
|
|
1924
|
+
update.sessionUpdate === "tool_call_update" ||
|
|
1925
|
+
update.sessionUpdate === "compaction_update" ||
|
|
1926
|
+
update.sessionUpdate === "compaction_summary_chunk")) {
|
|
1917
1927
|
return;
|
|
1918
1928
|
}
|
|
1919
1929
|
if (update.sessionUpdate === "agent_message_chunk") {
|
|
@@ -2723,13 +2733,13 @@ export class ClaudeAcpAgent {
|
|
|
2723
2733
|
break;
|
|
2724
2734
|
case "status": {
|
|
2725
2735
|
if (message.status === "compacting") {
|
|
2726
|
-
await compaction.start(message.
|
|
2736
|
+
await compaction.start(message.uuid);
|
|
2727
2737
|
}
|
|
2728
2738
|
else if (message.compact_result === "success") {
|
|
2729
|
-
await compaction.finish(message.
|
|
2739
|
+
await compaction.finish(message.uuid, "completed");
|
|
2730
2740
|
}
|
|
2731
2741
|
else if (message.compact_result === "failed") {
|
|
2732
|
-
await compaction.finish(message.
|
|
2742
|
+
await compaction.finish(message.uuid, "failed", {
|
|
2733
2743
|
...(message.compact_error ? { error: message.compact_error } : {}),
|
|
2734
2744
|
});
|
|
2735
2745
|
}
|
|
@@ -2752,7 +2762,7 @@ export class ClaudeAcpAgent {
|
|
|
2752
2762
|
// window.
|
|
2753
2763
|
//
|
|
2754
2764
|
const compactMetadata = message.compact_metadata;
|
|
2755
|
-
await compaction.finish(message.
|
|
2765
|
+
await compaction.finish(message.uuid, "completed", compactMetadata ? contextCompactionMetadataFromBoundary(compactMetadata) : {}, true);
|
|
2756
2766
|
const usedTokens = compactMetadata?.post_tokens ?? 0;
|
|
2757
2767
|
lastAssistantUsage = null;
|
|
2758
2768
|
lastAssistantTotalUsage = usedTokens;
|
|
@@ -2839,7 +2849,7 @@ export class ClaudeAcpAgent {
|
|
|
2839
2849
|
// the interrupted turn's tokens entirely (issue #844). Zero
|
|
2840
2850
|
// when the cancel pre-empted the result (wedge/force-cancel).
|
|
2841
2851
|
if (session.cancelled && session.activeTurn && !session.activeTurn.settled) {
|
|
2842
|
-
compaction.reset();
|
|
2852
|
+
await compaction.reset();
|
|
2843
2853
|
settleActive(turnOutcome(session, "cancelled"));
|
|
2844
2854
|
// An interrupt can pre-empt the turn's result entirely
|
|
2845
2855
|
// (nothing ran the result-case `finally`), so close the
|
|
@@ -2904,7 +2914,7 @@ export class ClaudeAcpAgent {
|
|
|
2904
2914
|
else if (!session.cancelled &&
|
|
2905
2915
|
session.activeTurn &&
|
|
2906
2916
|
!session.activeTurn.settled) {
|
|
2907
|
-
compaction.reset();
|
|
2917
|
+
await compaction.reset();
|
|
2908
2918
|
// Deliberately only the ACTIVE turn: a queued turn that
|
|
2909
2919
|
// was never echoed is NOT failed here, because an idle
|
|
2910
2920
|
// can legitimately precede the SDK picking up freshly
|
|
@@ -3795,6 +3805,17 @@ export class ClaudeAcpAgent {
|
|
|
3795
3805
|
// then, so both branches no-op); cancellation is left to the
|
|
3796
3806
|
// idle/abort path. settleActive is idempotent, so a duplicate
|
|
3797
3807
|
// idle is a no-op.
|
|
3808
|
+
//
|
|
3809
|
+
// A result also closes this compaction lifecycle — before the
|
|
3810
|
+
// settle, so a `cancelled` terminal for an entity the runtime
|
|
3811
|
+
// left open lands inside the prompt response rather than after
|
|
3812
|
+
// it (clients may stop consuming at the response). Reset here
|
|
3813
|
+
// rather than at idle: an owed idle from this turn can arrive
|
|
3814
|
+
// after the next turn has already started and must not erase
|
|
3815
|
+
// that turn's compaction state.
|
|
3816
|
+
if (!isAutonomousResult) {
|
|
3817
|
+
await compaction.reset();
|
|
3818
|
+
}
|
|
3798
3819
|
if (!session.cancelled) {
|
|
3799
3820
|
settleOrDefer(turnOutcome(session, stopReason));
|
|
3800
3821
|
}
|
|
@@ -3802,22 +3823,29 @@ export class ClaudeAcpAgent {
|
|
|
3802
3823
|
finally {
|
|
3803
3824
|
if (!isAutonomousResult) {
|
|
3804
3825
|
session.emittedAssistantText = false;
|
|
3805
|
-
//
|
|
3806
|
-
//
|
|
3807
|
-
|
|
3808
|
-
// turn's compaction state.
|
|
3809
|
-
compaction.reset();
|
|
3826
|
+
// The early exits above (cancelled guard, refusal) skip the
|
|
3827
|
+
// pre-settle reset; idempotent, so a no-op on the normal path.
|
|
3828
|
+
await compaction.reset();
|
|
3810
3829
|
}
|
|
3811
3830
|
}
|
|
3812
3831
|
break;
|
|
3813
3832
|
}
|
|
3814
3833
|
case "stream_event": {
|
|
3815
|
-
|
|
3816
|
-
|
|
3817
|
-
|
|
3818
|
-
|
|
3819
|
-
|
|
3820
|
-
|
|
3834
|
+
// The API's compaction block streams the retained summary text;
|
|
3835
|
+
// `content` is null on the opening block and on a failed compaction.
|
|
3836
|
+
// Only the root conversation's compaction is the session's: a
|
|
3837
|
+
// subagent compacting its own context must not touch it.
|
|
3838
|
+
const compactionBlock = message.parent_tool_use_id !== null
|
|
3839
|
+
? undefined
|
|
3840
|
+
: message.event.type === "content_block_start" &&
|
|
3841
|
+
message.event.content_block.type === "compaction"
|
|
3842
|
+
? message.event.content_block
|
|
3843
|
+
: message.event.type === "content_block_delta" &&
|
|
3844
|
+
message.event.delta.type === "compaction_delta"
|
|
3845
|
+
? message.event.delta
|
|
3846
|
+
: undefined;
|
|
3847
|
+
if (compactionBlock) {
|
|
3848
|
+
await compaction.heartbeat(message.uuid, compactionBlock.content ?? undefined);
|
|
3821
3849
|
}
|
|
3822
3850
|
// `message_start` carries the Anthropic API message id; capture it
|
|
3823
3851
|
// so the streamed chunks that follow (whose delta events don't carry
|
|
@@ -4725,6 +4753,7 @@ export class ClaudeAcpAgent {
|
|
|
4725
4753
|
}
|
|
4726
4754
|
session.queryClosed = true;
|
|
4727
4755
|
session.consumer = undefined;
|
|
4756
|
+
session.contextCompaction = undefined;
|
|
4728
4757
|
session.settingsManager.dispose();
|
|
4729
4758
|
session.input.end();
|
|
4730
4759
|
session.query.close();
|
|
@@ -4897,6 +4926,7 @@ export class ClaudeAcpAgent {
|
|
|
4897
4926
|
let replayingFileChangeAudit = false;
|
|
4898
4927
|
const replayFileChangeAuditToolUseIds = new Set();
|
|
4899
4928
|
const nativeReplayEnabled = clientSupportsSubagents(this.clientCapabilities);
|
|
4929
|
+
const replayCompactionUpdates = clientSupportsCompactionUpdates(this.clientCapabilities);
|
|
4900
4930
|
const replayTerminalStates = new Map();
|
|
4901
4931
|
const replayChildren = new Map();
|
|
4902
4932
|
if (nativeReplayEnabled) {
|
|
@@ -5097,6 +5127,29 @@ export class ClaudeAcpAgent {
|
|
|
5097
5127
|
continue;
|
|
5098
5128
|
}
|
|
5099
5129
|
}
|
|
5130
|
+
// Claude persists the retained summary as a user message framed with
|
|
5131
|
+
// continuation instructions for the model. Clients on the compaction
|
|
5132
|
+
// contract get it materialized as the completed compaction entity at
|
|
5133
|
+
// this transcript position (the boundary's own system record comes back
|
|
5134
|
+
// from getSessionMessages without its metadata, so the summary message
|
|
5135
|
+
// is the one durable marker); other clients keep the transcript text.
|
|
5136
|
+
// The entity is keyed by the summary message's uuid, which differs from
|
|
5137
|
+
// the live id (the `compacting` status uuid) — replay is terminal-first
|
|
5138
|
+
// by the RFD, and no client merges a replay into a live entity store.
|
|
5139
|
+
// A subagent's own compaction summary is not the root session's, and a
|
|
5140
|
+
// summary whose framing is unrecognized stays visible as transcript
|
|
5141
|
+
// text rather than vanishing behind a summary-less entity.
|
|
5142
|
+
if (replayCompactionUpdates &&
|
|
5143
|
+
isCompactSummaryMessage(message) &&
|
|
5144
|
+
parentToolUseId === null &&
|
|
5145
|
+
typeof message.uuid === "string" &&
|
|
5146
|
+
message.uuid.length > 0) {
|
|
5147
|
+
const replayCompaction = new ContextCompactionLifecycle((notification) => this.client.sessionUpdate(notification), { sessionId, presentation: "compaction_update" });
|
|
5148
|
+
if (replayCompaction.recordSummary(assistantMessageText(message.message))) {
|
|
5149
|
+
await replayCompaction.finish(message.uuid, "completed");
|
|
5150
|
+
continue;
|
|
5151
|
+
}
|
|
5152
|
+
}
|
|
5100
5153
|
for (const notification of toAcpNotifications(
|
|
5101
5154
|
// @ts-expect-error - untyped in SDK but we handle all of these
|
|
5102
5155
|
content,
|
|
@@ -6168,6 +6221,26 @@ export class ClaudeAcpAgent {
|
|
|
6168
6221
|
],
|
|
6169
6222
|
},
|
|
6170
6223
|
],
|
|
6224
|
+
// The retained summary reaches the SDK stream only as the persisted
|
|
6225
|
+
// user message that frames it with model-facing continuation
|
|
6226
|
+
// instructions; the hook carries the raw summary for the ACP
|
|
6227
|
+
// compaction_update. The CLI awaits this hook before emitting the
|
|
6228
|
+
// compaction's terminal frames, so the summary is normally recorded
|
|
6229
|
+
// while the entity is still in progress and rides on the terminal
|
|
6230
|
+
// update. Subagent compactions stay out of the root session's entity.
|
|
6231
|
+
PostCompact: [
|
|
6232
|
+
...(userProvidedOptions?.hooks?.PostCompact || []),
|
|
6233
|
+
{
|
|
6234
|
+
hooks: [
|
|
6235
|
+
async (input) => {
|
|
6236
|
+
if (input.hook_event_name === "PostCompact" && !input.agent_id) {
|
|
6237
|
+
this.sessions[sessionId]?.contextCompaction?.recordSummary(input.compact_summary);
|
|
6238
|
+
}
|
|
6239
|
+
return { continue: true };
|
|
6240
|
+
},
|
|
6241
|
+
],
|
|
6242
|
+
},
|
|
6243
|
+
],
|
|
6171
6244
|
...(fileChangeAuditSupport
|
|
6172
6245
|
? {
|
|
6173
6246
|
Stop: [
|
package/dist/air-extension.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ export declare const AIR_NATIVE_SUBAGENT_SESSIONS_CAPABILITY = "nativeSubagentSe
|
|
|
2
2
|
export declare const AIR_ASYNC_TASKS_CAPABILITY = "asyncTasks";
|
|
3
3
|
export declare const AIR_SESSION_FAILURE_CAPABILITY = "sessionFailure";
|
|
4
4
|
export declare const AIR_RECOMMENDED_CONFIG_VALUE_CAPABILITY = "recommendedValue";
|
|
5
|
+
export declare const AIR_DIFF_STATS_KEY = "diffStats";
|
|
5
6
|
/** The capability list this side advertises, as its own `_meta` object. */
|
|
6
7
|
export declare function airCapabilityMeta(...capabilities: string[]): Record<string, unknown>;
|
|
7
8
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"air-extension.d.ts","sourceRoot":"","sources":["../src/air-extension.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uCAAuC,2BAA2B,CAAC;AAChF,eAAO,MAAM,0BAA0B,eAAe,CAAC;AACvD,eAAO,MAAM,8BAA8B,mBAAmB,CAAC;AAC/D,eAAO,MAAM,uCAAuC,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"air-extension.d.ts","sourceRoot":"","sources":["../src/air-extension.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uCAAuC,2BAA2B,CAAC;AAChF,eAAO,MAAM,0BAA0B,eAAe,CAAC;AACvD,eAAO,MAAM,8BAA8B,mBAAmB,CAAC;AAC/D,eAAO,MAAM,uCAAuC,qBAAqB,CAAC;AAC1E,eAAO,MAAM,kBAAkB,cAAc,CAAC;AAQ9C,2EAA2E;AAC3E,wBAAgB,iBAAiB,CAAC,GAAG,YAAY,EAAE,MAAM,EAAE,2BAE1D;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,EAChD,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,OAAO,GACf,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAczB;AAED,2FAA2F;AAC3F,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAKnF;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAY9F"}
|
package/dist/air-extension.js
CHANGED
|
@@ -2,6 +2,7 @@ export const AIR_NATIVE_SUBAGENT_SESSIONS_CAPABILITY = "nativeSubagentSessions";
|
|
|
2
2
|
export const AIR_ASYNC_TASKS_CAPABILITY = "asyncTasks";
|
|
3
3
|
export const AIR_SESSION_FAILURE_CAPABILITY = "sessionFailure";
|
|
4
4
|
export const AIR_RECOMMENDED_CONFIG_VALUE_CAPABILITY = "recommendedValue";
|
|
5
|
+
export const AIR_DIFF_STATS_KEY = "diffStats";
|
|
5
6
|
const JETBRAINS_META_KEY = "jetbrains";
|
|
6
7
|
const AIR_META_KEY = "air";
|
|
7
8
|
const AIR_EXTENSION_VERSION_KEY = "version";
|
|
@@ -1,14 +1,52 @@
|
|
|
1
|
-
import { SessionNotification } from "@agentclientprotocol/sdk";
|
|
1
|
+
import { ClientCapabilities, SessionNotification } from "@agentclientprotocol/sdk";
|
|
2
2
|
import { ContextCompactionMetadata } from "./context-compaction-meta.js";
|
|
3
3
|
type CompactionStatus = "completed" | "failed";
|
|
4
|
+
type TerminalStatus = CompactionStatus | "cancelled";
|
|
5
|
+
/**
|
|
6
|
+
* How compaction reaches the client.
|
|
7
|
+
*
|
|
8
|
+
* - `compaction_update`: the ACP session-compaction contract (ID-addressed
|
|
9
|
+
* `compaction_update` / `compaction_summary_chunk`), used when the v1 client
|
|
10
|
+
* advertises `clientCapabilities.session.compaction`.
|
|
11
|
+
* - `tool_call`: the legacy synthetic "Compact conversation" tool call, kept
|
|
12
|
+
* for clients that do not advertise the capability.
|
|
13
|
+
*/
|
|
14
|
+
export type CompactionPresentation = "tool_call" | "compaction_update";
|
|
4
15
|
type CompactionState = {
|
|
5
|
-
toolCallId
|
|
6
|
-
|
|
16
|
+
/** Doubles as the toolCallId under the legacy presentation. */
|
|
17
|
+
compactionId: string;
|
|
18
|
+
terminalStatus?: TerminalStatus;
|
|
7
19
|
heartbeatSent: boolean;
|
|
20
|
+
/** User-displayable summary reported by the PostCompact hook. While the
|
|
21
|
+
* compaction is in progress it awaits the terminal update; on a `completed`
|
|
22
|
+
* state it has been sent. */
|
|
23
|
+
summary?: string;
|
|
8
24
|
};
|
|
9
25
|
type SendUpdate = (notification: SessionNotification) => Promise<void>;
|
|
26
|
+
export type ContextCompactionLifecycleOptions = {
|
|
27
|
+
sessionId: string;
|
|
28
|
+
presentation?: CompactionPresentation;
|
|
29
|
+
/** Receives failures of the send that must not propagate: the turn-boundary
|
|
30
|
+
* `cancelled` terminal. */
|
|
31
|
+
logError?: (message: string, error: unknown) => void;
|
|
32
|
+
};
|
|
33
|
+
export declare function clientSupportsCompactionUpdates(capabilities?: ClientCapabilities | null): boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Reduce Claude's compaction output to the user-displayable summary.
|
|
36
|
+
*
|
|
37
|
+
* The PostCompact hook reports the model's raw output, which wraps the
|
|
38
|
+
* summary in `<summary>` tags (often preceded by an `<analysis>` block). The
|
|
39
|
+
* persisted transcript instead frames the same summary with continuation
|
|
40
|
+
* instructions for the model. Neither framing belongs in the ACP `summary`,
|
|
41
|
+
* and a continuation prompt whose framing is not recognized yields no summary
|
|
42
|
+
* at all rather than model-facing instructions.
|
|
43
|
+
*/
|
|
44
|
+
export declare function compactionSummaryText(raw: string): string | undefined;
|
|
45
|
+
/** True for the post-compaction user message Claude Code persists (and
|
|
46
|
+
* `getSessionMessages` returns) with the summary of the dropped history. */
|
|
47
|
+
export declare function isCompactSummaryMessage(message: unknown): boolean;
|
|
10
48
|
/**
|
|
11
|
-
* Translates Claude's compaction signals into one idempotent ACP
|
|
49
|
+
* Translates Claude's compaction signals into one idempotent ACP lifecycle.
|
|
12
50
|
*
|
|
13
51
|
* The SDK can duplicate terminal compact_result messages and can omit the
|
|
14
52
|
* opening status on replay. State therefore lives until the owning turn's
|
|
@@ -20,18 +58,66 @@ export declare class ContextCompactionLifecycle {
|
|
|
20
58
|
private activeCompaction;
|
|
21
59
|
private outputDelivered;
|
|
22
60
|
private duplicateErrorOutput;
|
|
23
|
-
|
|
61
|
+
/** Summary reported by PostCompact before the opening status was consumed.
|
|
62
|
+
* Deliberately survives `reset()`: the CLI awaits the hook before emitting
|
|
63
|
+
* the compaction's terminal frames, so a pending summary always belongs to
|
|
64
|
+
* a compaction whose frames are still ahead of the consumer — possibly
|
|
65
|
+
* queued behind a previous turn's result. */
|
|
66
|
+
private pendingSummary;
|
|
67
|
+
private readonly sessionId;
|
|
68
|
+
readonly presentation: CompactionPresentation;
|
|
69
|
+
private readonly logError;
|
|
70
|
+
constructor(sendUpdate: SendUpdate, options: ContextCompactionLifecycleOptions);
|
|
24
71
|
get hasDeliveredOutput(): boolean;
|
|
25
|
-
|
|
72
|
+
/**
|
|
73
|
+
* Close the lifecycle at a turn boundary (result, cancel, idle-abandon).
|
|
74
|
+
*
|
|
75
|
+
* A `compaction_update` entity still `in_progress` here never received its
|
|
76
|
+
* terminal signal from the runtime and gets its one terminal status,
|
|
77
|
+
* `cancelled`. The legacy tool call is deliberately left as it was (an
|
|
78
|
+
* `in_progress` call): ACP `ToolCallStatus` has no cancelled state and that
|
|
79
|
+
* presentation's behavior predates this lifecycle. Never throws — a failed
|
|
80
|
+
* send is logged, so callers can settle the turn unconditionally.
|
|
81
|
+
*/
|
|
82
|
+
reset(): Promise<void>;
|
|
26
83
|
/**
|
|
27
84
|
* Claude also emits a failed manual compaction's error as local-command
|
|
28
|
-
* stdout. Consume that one duplicate after the
|
|
85
|
+
* stdout. Consume that one duplicate after the lifecycle carried it,
|
|
29
86
|
* without hiding unrelated command output.
|
|
30
87
|
*/
|
|
31
88
|
consumeDuplicateErrorOutput(content: string): boolean;
|
|
32
|
-
start(
|
|
33
|
-
|
|
34
|
-
|
|
89
|
+
start(compactionId: string): Promise<CompactionState>;
|
|
90
|
+
/**
|
|
91
|
+
* Streaming progress from the API's compaction content block.
|
|
92
|
+
*
|
|
93
|
+
* Under `compaction_update` the block's text is the retained summary and
|
|
94
|
+
* streams as `compaction_summary_chunk`s — but only into an entity the CLI
|
|
95
|
+
* announced with its `compacting` status. The block alone carries no
|
|
96
|
+
* terminal signal, so opening an entity from it would leave nothing but the
|
|
97
|
+
* turn-boundary `cancelled` to close a compaction that succeeded. The legacy
|
|
98
|
+
* tool call keeps its historical behavior: open on first sight, re-assert
|
|
99
|
+
* `in_progress` once.
|
|
100
|
+
*/
|
|
101
|
+
heartbeat(fallbackId: string, summaryChunk?: string): Promise<void>;
|
|
102
|
+
/**
|
|
103
|
+
* The PostCompact hook's summary. The CLI awaits the hook before emitting
|
|
104
|
+
* the compaction's terminal frames, so the summary lands while its
|
|
105
|
+
* compaction is `in_progress` and rides on the terminal update. Anything
|
|
106
|
+
* else — no entity yet, or the entity is a previous, already-terminal
|
|
107
|
+
* compaction of the same turn whose status frame the consumer is still
|
|
108
|
+
* catching up to — belongs to the compaction whose frames are ahead of the
|
|
109
|
+
* consumer, and waits for it. Only the `compaction_update` presentation
|
|
110
|
+
* carries the summary; the legacy tool call never exposed it. Never throws:
|
|
111
|
+
* it runs detached from a hook callback. Returns whether a summary was
|
|
112
|
+
* retained.
|
|
113
|
+
*/
|
|
114
|
+
recordSummary(rawSummary: unknown): boolean;
|
|
115
|
+
finish(compactionId: string, status: CompactionStatus, metadata?: Omit<ContextCompactionMetadata, "version">, enrichTerminal?: boolean): Promise<void>;
|
|
116
|
+
/** Make `compactionId` the active entity, moving a pending hook summary onto
|
|
117
|
+
* it, and mark compaction output as delivered for the owning turn. */
|
|
118
|
+
private open;
|
|
119
|
+
private send;
|
|
120
|
+
private sendQuietly;
|
|
35
121
|
}
|
|
36
122
|
export declare function contextCompactionMetadataFromBoundary(compactMetadata: {
|
|
37
123
|
trigger: "manual" | "auto";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-compaction.d.ts","sourceRoot":"","sources":["../src/context-compaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"context-compaction.d.ts","sourceRoot":"","sources":["../src/context-compaction.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,87 @@
|
|
|
1
1
|
import { createContextCompactionMeta, } from "./context-compaction-meta.js";
|
|
2
|
+
export function clientSupportsCompactionUpdates(capabilities) {
|
|
3
|
+
const compaction = capabilities?.session?.compaction;
|
|
4
|
+
return typeof compaction === "object" && compaction !== null && !Array.isArray(compaction);
|
|
5
|
+
}
|
|
6
|
+
/** Tags on their own line, as the model emits them; a summary that merely
|
|
7
|
+
* quotes `<summary>` mid-sentence must not be truncated at the mention. */
|
|
8
|
+
const SUMMARY_OPEN_LINE = /^[ \t]*<summary>[ \t]*\r?\n/gim;
|
|
9
|
+
const SUMMARY_CLOSE_LINE = /^[ \t]*<\/summary>[ \t]*$/gim;
|
|
10
|
+
/** The model's private reasoning block that precedes the summary; stripped
|
|
11
|
+
* first so a `<summary>` it merely mentions cannot anchor the summary span,
|
|
12
|
+
* and even when the summary tags themselves are missing. Own-line tags
|
|
13
|
+
* anywhere; inline tags only as a leading block, since a summary body may
|
|
14
|
+
* quote both tag names. */
|
|
15
|
+
const ANALYSIS_BLOCKS = [
|
|
16
|
+
/^[ \t]*<analysis>[ \t]*\r?\n[\s\S]*?\n[ \t]*<\/analysis>[ \t]*$/gim,
|
|
17
|
+
/^\s*<analysis>[\s\S]*?<\/analysis>/i,
|
|
18
|
+
];
|
|
19
|
+
/** The framing Claude Code wraps around the retained summary when it persists
|
|
20
|
+
* it as the post-compaction user message. */
|
|
21
|
+
const CONTINUATION_PREAMBLE = /^\s*This session is being continued from a previous conversation/i;
|
|
22
|
+
const PERSISTED_PREAMBLE = /^\s*This session is being continued from a previous conversation[^\n]*\n+Summary:[ \t]*\r?\n/;
|
|
23
|
+
const PERSISTED_TRAILERS = [
|
|
24
|
+
/\n+If you need specific details from before compaction[\s\S]*$/,
|
|
25
|
+
/\n+(?:Please )?[Cc]ontinue the conversation from where it left (?:it )?off[\s\S]*$/,
|
|
26
|
+
];
|
|
2
27
|
/**
|
|
3
|
-
*
|
|
28
|
+
* Reduce Claude's compaction output to the user-displayable summary.
|
|
29
|
+
*
|
|
30
|
+
* The PostCompact hook reports the model's raw output, which wraps the
|
|
31
|
+
* summary in `<summary>` tags (often preceded by an `<analysis>` block). The
|
|
32
|
+
* persisted transcript instead frames the same summary with continuation
|
|
33
|
+
* instructions for the model. Neither framing belongs in the ACP `summary`,
|
|
34
|
+
* and a continuation prompt whose framing is not recognized yields no summary
|
|
35
|
+
* at all rather than model-facing instructions.
|
|
36
|
+
*/
|
|
37
|
+
export function compactionSummaryText(raw) {
|
|
38
|
+
let text = raw;
|
|
39
|
+
for (const block of ANALYSIS_BLOCKS) {
|
|
40
|
+
text = text.replace(block, "");
|
|
41
|
+
}
|
|
42
|
+
const tagged = taggedSummary(text);
|
|
43
|
+
if (tagged !== undefined) {
|
|
44
|
+
text = tagged;
|
|
45
|
+
}
|
|
46
|
+
else if (CONTINUATION_PREAMBLE.test(text)) {
|
|
47
|
+
const body = text.replace(PERSISTED_PREAMBLE, "");
|
|
48
|
+
if (body === text)
|
|
49
|
+
return undefined;
|
|
50
|
+
text = body;
|
|
51
|
+
for (const trailer of PERSISTED_TRAILERS) {
|
|
52
|
+
text = text.replace(trailer, "");
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
text = text.trim();
|
|
56
|
+
return text.length > 0 ? text : undefined;
|
|
57
|
+
}
|
|
58
|
+
function taggedSummary(raw) {
|
|
59
|
+
const close = [...raw.matchAll(SUMMARY_CLOSE_LINE)].at(-1);
|
|
60
|
+
if (close?.index !== undefined) {
|
|
61
|
+
const open = [...raw.slice(0, close.index).matchAll(SUMMARY_OPEN_LINE)].at(-1);
|
|
62
|
+
if (open?.index !== undefined) {
|
|
63
|
+
return raw.slice(open.index + open[0].length, close.index);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
// Inline tags: the widest span, so a quoted `</summary>` inside the body
|
|
67
|
+
// does not end it early. Plain index scans keep an unterminated tag linear.
|
|
68
|
+
const openInline = raw.search(/<summary>/i);
|
|
69
|
+
const closeInline = raw.toLowerCase().lastIndexOf("</summary>");
|
|
70
|
+
if (openInline >= 0 && closeInline > openInline) {
|
|
71
|
+
return raw.slice(openInline + "<summary>".length, closeInline);
|
|
72
|
+
}
|
|
73
|
+
return undefined;
|
|
74
|
+
}
|
|
75
|
+
/** True for the post-compaction user message Claude Code persists (and
|
|
76
|
+
* `getSessionMessages` returns) with the summary of the dropped history. */
|
|
77
|
+
export function isCompactSummaryMessage(message) {
|
|
78
|
+
return (typeof message === "object" &&
|
|
79
|
+
message !== null &&
|
|
80
|
+
message.type === "user" &&
|
|
81
|
+
message.isCompactSummary === true);
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Translates Claude's compaction signals into one idempotent ACP lifecycle.
|
|
4
85
|
*
|
|
5
86
|
* The SDK can duplicate terminal compact_result messages and can omit the
|
|
6
87
|
* opening status on replay. State therefore lives until the owning turn's
|
|
@@ -12,20 +93,51 @@ export class ContextCompactionLifecycle {
|
|
|
12
93
|
activeCompaction;
|
|
13
94
|
outputDelivered = false;
|
|
14
95
|
duplicateErrorOutput;
|
|
15
|
-
|
|
96
|
+
/** Summary reported by PostCompact before the opening status was consumed.
|
|
97
|
+
* Deliberately survives `reset()`: the CLI awaits the hook before emitting
|
|
98
|
+
* the compaction's terminal frames, so a pending summary always belongs to
|
|
99
|
+
* a compaction whose frames are still ahead of the consumer — possibly
|
|
100
|
+
* queued behind a previous turn's result. */
|
|
101
|
+
pendingSummary;
|
|
102
|
+
sessionId;
|
|
103
|
+
presentation;
|
|
104
|
+
logError;
|
|
105
|
+
constructor(sendUpdate, options) {
|
|
16
106
|
this.sendUpdate = sendUpdate;
|
|
107
|
+
this.sessionId = options.sessionId;
|
|
108
|
+
this.presentation = options.presentation ?? "tool_call";
|
|
109
|
+
this.logError = options.logError ?? (() => { });
|
|
17
110
|
}
|
|
18
111
|
get hasDeliveredOutput() {
|
|
19
112
|
return this.outputDelivered;
|
|
20
113
|
}
|
|
21
|
-
|
|
114
|
+
/**
|
|
115
|
+
* Close the lifecycle at a turn boundary (result, cancel, idle-abandon).
|
|
116
|
+
*
|
|
117
|
+
* A `compaction_update` entity still `in_progress` here never received its
|
|
118
|
+
* terminal signal from the runtime and gets its one terminal status,
|
|
119
|
+
* `cancelled`. The legacy tool call is deliberately left as it was (an
|
|
120
|
+
* `in_progress` call): ACP `ToolCallStatus` has no cancelled state and that
|
|
121
|
+
* presentation's behavior predates this lifecycle. Never throws — a failed
|
|
122
|
+
* send is logged, so callers can settle the turn unconditionally.
|
|
123
|
+
*/
|
|
124
|
+
async reset() {
|
|
125
|
+
const state = this.activeCompaction;
|
|
22
126
|
this.activeCompaction = undefined;
|
|
23
127
|
this.outputDelivered = false;
|
|
24
128
|
this.duplicateErrorOutput = undefined;
|
|
129
|
+
if (!state || state.terminalStatus || this.presentation !== "compaction_update")
|
|
130
|
+
return;
|
|
131
|
+
state.terminalStatus = "cancelled";
|
|
132
|
+
await this.sendQuietly({
|
|
133
|
+
sessionUpdate: "compaction_update",
|
|
134
|
+
compactionId: state.compactionId,
|
|
135
|
+
status: "cancelled",
|
|
136
|
+
}, "cancelled compaction");
|
|
25
137
|
}
|
|
26
138
|
/**
|
|
27
139
|
* Claude also emits a failed manual compaction's error as local-command
|
|
28
|
-
* stdout. Consume that one duplicate after the
|
|
140
|
+
* stdout. Consume that one duplicate after the lifecycle carried it,
|
|
29
141
|
* without hiding unrelated command output.
|
|
30
142
|
*/
|
|
31
143
|
consumeDuplicateErrorOutput(content) {
|
|
@@ -36,92 +148,174 @@ export class ContextCompactionLifecycle {
|
|
|
36
148
|
this.duplicateErrorOutput = undefined;
|
|
37
149
|
return true;
|
|
38
150
|
}
|
|
39
|
-
async start(
|
|
151
|
+
async start(compactionId) {
|
|
40
152
|
if (this.activeCompaction && !this.activeCompaction.terminalStatus) {
|
|
41
153
|
return this.activeCompaction;
|
|
42
154
|
}
|
|
43
|
-
|
|
44
|
-
this.
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
sessionUpdate: "tool_call",
|
|
49
|
-
toolCallId,
|
|
50
|
-
title: "Compact conversation",
|
|
51
|
-
kind: "think",
|
|
155
|
+
const state = this.open(compactionId);
|
|
156
|
+
if (this.presentation === "compaction_update") {
|
|
157
|
+
await this.send({
|
|
158
|
+
sessionUpdate: "compaction_update",
|
|
159
|
+
compactionId,
|
|
52
160
|
status: "in_progress",
|
|
53
|
-
_meta:
|
|
54
|
-
}
|
|
161
|
+
_meta: createContextCompactionMeta(),
|
|
162
|
+
});
|
|
163
|
+
return state;
|
|
164
|
+
}
|
|
165
|
+
await this.send({
|
|
166
|
+
sessionUpdate: "tool_call",
|
|
167
|
+
toolCallId: compactionId,
|
|
168
|
+
title: "Compact conversation",
|
|
169
|
+
kind: "think",
|
|
170
|
+
status: "in_progress",
|
|
171
|
+
_meta: compactionToolMeta(),
|
|
55
172
|
});
|
|
56
|
-
return
|
|
173
|
+
return state;
|
|
57
174
|
}
|
|
58
|
-
|
|
59
|
-
|
|
175
|
+
/**
|
|
176
|
+
* Streaming progress from the API's compaction content block.
|
|
177
|
+
*
|
|
178
|
+
* Under `compaction_update` the block's text is the retained summary and
|
|
179
|
+
* streams as `compaction_summary_chunk`s — but only into an entity the CLI
|
|
180
|
+
* announced with its `compacting` status. The block alone carries no
|
|
181
|
+
* terminal signal, so opening an entity from it would leave nothing but the
|
|
182
|
+
* turn-boundary `cancelled` to close a compaction that succeeded. The legacy
|
|
183
|
+
* tool call keeps its historical behavior: open on first sight, re-assert
|
|
184
|
+
* `in_progress` once.
|
|
185
|
+
*/
|
|
186
|
+
async heartbeat(fallbackId, summaryChunk) {
|
|
187
|
+
if (this.presentation === "compaction_update") {
|
|
188
|
+
const state = this.activeCompaction;
|
|
189
|
+
if (!state || state.terminalStatus || !summaryChunk)
|
|
190
|
+
return;
|
|
191
|
+
await this.send({
|
|
192
|
+
sessionUpdate: "compaction_summary_chunk",
|
|
193
|
+
compactionId: state.compactionId,
|
|
194
|
+
content: { type: "text", text: summaryChunk },
|
|
195
|
+
});
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
const state = this.activeCompaction ?? (await this.start(fallbackId));
|
|
60
199
|
if (state.terminalStatus || state.heartbeatSent)
|
|
61
200
|
return;
|
|
62
201
|
state.heartbeatSent = true;
|
|
63
|
-
await this.
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
status: "in_progress",
|
|
69
|
-
_meta: compactionToolMeta(),
|
|
70
|
-
},
|
|
202
|
+
await this.send({
|
|
203
|
+
sessionUpdate: "tool_call_update",
|
|
204
|
+
toolCallId: state.compactionId,
|
|
205
|
+
status: "in_progress",
|
|
206
|
+
_meta: compactionToolMeta(),
|
|
71
207
|
});
|
|
72
208
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
kind: "think",
|
|
92
|
-
status,
|
|
93
|
-
...(status === "failed" && metadata.error
|
|
94
|
-
? { content: [compactionErrorContent(metadata.error)] }
|
|
95
|
-
: {}),
|
|
96
|
-
...(rawOutput ? { rawOutput } : {}),
|
|
97
|
-
_meta: compactionToolMeta(metadata),
|
|
98
|
-
},
|
|
99
|
-
});
|
|
100
|
-
return;
|
|
101
|
-
}
|
|
209
|
+
/**
|
|
210
|
+
* The PostCompact hook's summary. The CLI awaits the hook before emitting
|
|
211
|
+
* the compaction's terminal frames, so the summary lands while its
|
|
212
|
+
* compaction is `in_progress` and rides on the terminal update. Anything
|
|
213
|
+
* else — no entity yet, or the entity is a previous, already-terminal
|
|
214
|
+
* compaction of the same turn whose status frame the consumer is still
|
|
215
|
+
* catching up to — belongs to the compaction whose frames are ahead of the
|
|
216
|
+
* consumer, and waits for it. Only the `compaction_update` presentation
|
|
217
|
+
* carries the summary; the legacy tool call never exposed it. Never throws:
|
|
218
|
+
* it runs detached from a hook callback. Returns whether a summary was
|
|
219
|
+
* retained.
|
|
220
|
+
*/
|
|
221
|
+
recordSummary(rawSummary) {
|
|
222
|
+
if (this.presentation !== "compaction_update" || typeof rawSummary !== "string")
|
|
223
|
+
return false;
|
|
224
|
+
const summary = compactionSummaryText(rawSummary);
|
|
225
|
+
if (!summary)
|
|
226
|
+
return false;
|
|
102
227
|
const state = this.activeCompaction;
|
|
103
|
-
if (state
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
228
|
+
if (state && !state.terminalStatus) {
|
|
229
|
+
state.summary = summary;
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
this.pendingSummary = summary;
|
|
233
|
+
}
|
|
234
|
+
return true;
|
|
235
|
+
}
|
|
236
|
+
async finish(compactionId, status, metadata = {}, enrichTerminal = false) {
|
|
237
|
+
// The opening status can be missed (replay, or a terminal-only runtime):
|
|
238
|
+
// the first update for the ID is then already terminal.
|
|
239
|
+
const opened = this.activeCompaction === undefined;
|
|
240
|
+
const firstTerminal = !this.activeCompaction?.terminalStatus;
|
|
241
|
+
const state = this.activeCompaction ?? this.open(compactionId, status);
|
|
242
|
+
if (firstTerminal) {
|
|
107
243
|
state.terminalStatus = status;
|
|
244
|
+
}
|
|
245
|
+
else if (!enrichTerminal) {
|
|
246
|
+
return;
|
|
247
|
+
}
|
|
108
248
|
if (status === "failed" && metadata.error) {
|
|
109
249
|
this.duplicateErrorOutput = metadata.error;
|
|
110
250
|
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
251
|
+
const terminalStatus = state.terminalStatus ?? status;
|
|
252
|
+
const hasMetadata = Object.keys(metadata).length > 0;
|
|
253
|
+
if (this.presentation === "compaction_update") {
|
|
254
|
+
const summary = firstTerminal && terminalStatus === "completed" ? state.summary : undefined;
|
|
255
|
+
await this.send({
|
|
256
|
+
sessionUpdate: "compaction_update",
|
|
257
|
+
compactionId: state.compactionId,
|
|
258
|
+
status: terminalStatus,
|
|
259
|
+
...(summary !== undefined ? { summary: [{ type: "text", text: summary }] } : {}),
|
|
260
|
+
...(terminalStatus === "failed" && metadata.error ? { error: metadata.error } : {}),
|
|
261
|
+
// `_meta` is a replace-patch: seed it with the first terminal, then
|
|
262
|
+
// only re-send it when the boundary adds facts, so a status-only
|
|
263
|
+
// duplicate can't wipe the token counts.
|
|
264
|
+
...(firstTerminal || hasMetadata ? { _meta: createContextCompactionMeta(metadata) } : {}),
|
|
265
|
+
});
|
|
266
|
+
return;
|
|
267
|
+
}
|
|
268
|
+
const rawOutput = hasMetadata ? metadata : undefined;
|
|
269
|
+
const errorContent = status === "failed" && metadata.error
|
|
270
|
+
? { content: [compactionErrorContent(metadata.error)] }
|
|
271
|
+
: {};
|
|
272
|
+
if (opened) {
|
|
273
|
+
await this.send({
|
|
274
|
+
sessionUpdate: "tool_call",
|
|
275
|
+
toolCallId: state.compactionId,
|
|
276
|
+
title: "Compact conversation",
|
|
277
|
+
kind: "think",
|
|
278
|
+
status,
|
|
279
|
+
...errorContent,
|
|
120
280
|
...(rawOutput ? { rawOutput } : {}),
|
|
121
281
|
_meta: compactionToolMeta(metadata),
|
|
122
|
-
}
|
|
282
|
+
});
|
|
283
|
+
return;
|
|
284
|
+
}
|
|
285
|
+
await this.send({
|
|
286
|
+
sessionUpdate: "tool_call_update",
|
|
287
|
+
toolCallId: state.compactionId,
|
|
288
|
+
...(firstTerminal ? { status } : {}),
|
|
289
|
+
...errorContent,
|
|
290
|
+
...(rawOutput ? { rawOutput } : {}),
|
|
291
|
+
_meta: compactionToolMeta(metadata),
|
|
123
292
|
});
|
|
124
293
|
}
|
|
294
|
+
/** Make `compactionId` the active entity, moving a pending hook summary onto
|
|
295
|
+
* it, and mark compaction output as delivered for the owning turn. */
|
|
296
|
+
open(compactionId, terminalStatus) {
|
|
297
|
+
const state = {
|
|
298
|
+
compactionId,
|
|
299
|
+
heartbeatSent: false,
|
|
300
|
+
...(terminalStatus ? { terminalStatus } : {}),
|
|
301
|
+
...(this.pendingSummary !== undefined ? { summary: this.pendingSummary } : {}),
|
|
302
|
+
};
|
|
303
|
+
this.pendingSummary = undefined;
|
|
304
|
+
this.activeCompaction = state;
|
|
305
|
+
this.outputDelivered = true;
|
|
306
|
+
return state;
|
|
307
|
+
}
|
|
308
|
+
send(update) {
|
|
309
|
+
return this.sendUpdate({ sessionId: this.sessionId, update });
|
|
310
|
+
}
|
|
311
|
+
async sendQuietly(update, what) {
|
|
312
|
+
try {
|
|
313
|
+
await this.send(update);
|
|
314
|
+
}
|
|
315
|
+
catch (error) {
|
|
316
|
+
this.logError(`Failed to send the ${what} update for session ${this.sessionId}`, error);
|
|
317
|
+
}
|
|
318
|
+
}
|
|
125
319
|
}
|
|
126
320
|
export function contextCompactionMetadataFromBoundary(compactMetadata) {
|
|
127
321
|
return {
|
package/dist/diff.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ToolCallContent, ToolCallLocation } from "@agentclientprotocol/sdk";
|
|
2
|
+
/**
|
|
3
|
+
* Builds diff ToolUpdate content from the structured toolResponse provided by
|
|
4
|
+
* the PostToolUse hook for diff-producing tools (Edit, Write). Unlike parsing
|
|
5
|
+
* the plain unified diff string, this uses the pre-parsed structuredPatch
|
|
6
|
+
* which supports multiple replacement sites (replaceAll) and always includes
|
|
7
|
+
* context lines for better readability.
|
|
8
|
+
*/
|
|
9
|
+
export declare function toolUpdateFromDiffToolResponse(toolResponse: unknown): {
|
|
10
|
+
content?: ToolCallContent[];
|
|
11
|
+
locations?: ToolCallLocation[];
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=diff.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../src/diff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAwB7E;;;;;;GAMG;AACH,wBAAgB,8BAA8B,CAAC,YAAY,EAAE,OAAO,GAAG;IACrE,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;IAC5B,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;CAChC,CA2HA"}
|
package/dist/diff.js
ADDED
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { AIR_DIFF_STATS_KEY, withAirMeta } from "./air-extension.js";
|
|
2
|
+
/**
|
|
3
|
+
* Builds diff ToolUpdate content from the structured toolResponse provided by
|
|
4
|
+
* the PostToolUse hook for diff-producing tools (Edit, Write). Unlike parsing
|
|
5
|
+
* the plain unified diff string, this uses the pre-parsed structuredPatch
|
|
6
|
+
* which supports multiple replacement sites (replaceAll) and always includes
|
|
7
|
+
* context lines for better readability.
|
|
8
|
+
*/
|
|
9
|
+
export function toolUpdateFromDiffToolResponse(toolResponse) {
|
|
10
|
+
if (!toolResponse || typeof toolResponse !== "object")
|
|
11
|
+
return {};
|
|
12
|
+
const response = toolResponse;
|
|
13
|
+
if (!response.filePath || !Array.isArray(response.structuredPatch))
|
|
14
|
+
return {};
|
|
15
|
+
const content = [];
|
|
16
|
+
const locations = [];
|
|
17
|
+
let previousOldEnd = 0;
|
|
18
|
+
let previousNewEnd = 0;
|
|
19
|
+
let accumulatedDelta = 0;
|
|
20
|
+
let coordinatesRemainConsistent = true;
|
|
21
|
+
for (const { lines, oldStart, newStart, oldLines, newLines } of response.structuredPatch) {
|
|
22
|
+
const oldText = [];
|
|
23
|
+
const newText = [];
|
|
24
|
+
let added = 0;
|
|
25
|
+
let removed = 0;
|
|
26
|
+
let validPrefixes = true;
|
|
27
|
+
let validEofMarkers = true;
|
|
28
|
+
const oldPosition = oldStart + (oldLines === 0 ? 1 : 0);
|
|
29
|
+
const newPosition = newStart + (newLines === 0 ? 1 : 0);
|
|
30
|
+
const oldEnd = oldPosition + oldLines;
|
|
31
|
+
const newEnd = newPosition + newLines;
|
|
32
|
+
const nextDelta = accumulatedDelta + newLines - oldLines;
|
|
33
|
+
const validCoordinates = coordinatesRemainConsistent &&
|
|
34
|
+
Number.isSafeInteger(oldStart) &&
|
|
35
|
+
Number.isSafeInteger(newStart) &&
|
|
36
|
+
Number.isSafeInteger(oldLines) &&
|
|
37
|
+
Number.isSafeInteger(newLines) &&
|
|
38
|
+
oldStart >= (oldLines === 0 ? 0 : 1) &&
|
|
39
|
+
newStart >= (newLines === 0 ? 0 : 1) &&
|
|
40
|
+
oldLines >= 0 &&
|
|
41
|
+
newLines >= 0 &&
|
|
42
|
+
Number.isSafeInteger(oldPosition) &&
|
|
43
|
+
Number.isSafeInteger(newPosition) &&
|
|
44
|
+
Number.isSafeInteger(oldEnd) &&
|
|
45
|
+
Number.isSafeInteger(newEnd) &&
|
|
46
|
+
Number.isSafeInteger(nextDelta) &&
|
|
47
|
+
oldPosition >= previousOldEnd &&
|
|
48
|
+
newPosition >= previousNewEnd &&
|
|
49
|
+
newPosition - oldPosition === accumulatedDelta;
|
|
50
|
+
coordinatesRemainConsistent = validCoordinates;
|
|
51
|
+
if (validCoordinates) {
|
|
52
|
+
previousOldEnd = oldEnd;
|
|
53
|
+
previousNewEnd = newEnd;
|
|
54
|
+
accumulatedDelta = nextDelta;
|
|
55
|
+
}
|
|
56
|
+
for (const [index, line] of lines.entries()) {
|
|
57
|
+
if (line.startsWith("-")) {
|
|
58
|
+
oldText.push(line.slice(1));
|
|
59
|
+
removed++;
|
|
60
|
+
}
|
|
61
|
+
else if (line.startsWith("+")) {
|
|
62
|
+
newText.push(line.slice(1));
|
|
63
|
+
added++;
|
|
64
|
+
}
|
|
65
|
+
else if (line === "\") {
|
|
66
|
+
const previousLine = lines[index - 1];
|
|
67
|
+
if (typeof previousLine !== "string" ||
|
|
68
|
+
(!previousLine.startsWith("-") &&
|
|
69
|
+
!previousLine.startsWith("+") &&
|
|
70
|
+
!previousLine.startsWith(" "))) {
|
|
71
|
+
validEofMarkers = false;
|
|
72
|
+
}
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
if (!line.startsWith(" "))
|
|
77
|
+
validPrefixes = false;
|
|
78
|
+
oldText.push(line.slice(1));
|
|
79
|
+
newText.push(line.slice(1));
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
if (oldText.length > 0 || newText.length > 0) {
|
|
83
|
+
locations.push({ path: response.filePath, line: newStart });
|
|
84
|
+
content.push({
|
|
85
|
+
type: "diff",
|
|
86
|
+
path: response.filePath,
|
|
87
|
+
oldText: oldText.join("\n") || null,
|
|
88
|
+
newText: newText.join("\n"),
|
|
89
|
+
...(validCoordinates &&
|
|
90
|
+
validPrefixes &&
|
|
91
|
+
validEofMarkers &&
|
|
92
|
+
oldText.length === oldLines &&
|
|
93
|
+
newText.length === newLines
|
|
94
|
+
? { _meta: withAirMeta(undefined, AIR_DIFF_STATS_KEY, { version: 1, added, removed }) }
|
|
95
|
+
: {}),
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
// A Write `update` can arrive with an empty structuredPatch — nothing
|
|
100
|
+
// changed, the diff timed out, or the previous content was too large to
|
|
101
|
+
// diff (originalFile null; SDK 0.3.252 documents the lane). Returning `{}`
|
|
102
|
+
// would leave Write's optimistic tool_use-time content standing, and that
|
|
103
|
+
// was built with `oldText: null` — "creation" semantics — so an overwrite
|
|
104
|
+
// of a large existing file would render as creating it. Emit a truthful
|
|
105
|
+
// replacement instead. Gated on `type` so Edit (whose output carries no
|
|
106
|
+
// `type` and whose optimistic old/new diff is already truthful) keeps the
|
|
107
|
+
// empty-return behavior.
|
|
108
|
+
if (content.length === 0 && response.type === "update" && typeof response.content === "string") {
|
|
109
|
+
locations.push({ path: response.filePath });
|
|
110
|
+
content.push(typeof response.originalFile === "string"
|
|
111
|
+
? {
|
|
112
|
+
type: "diff",
|
|
113
|
+
path: response.filePath,
|
|
114
|
+
oldText: response.originalFile,
|
|
115
|
+
newText: response.content,
|
|
116
|
+
}
|
|
117
|
+
: {
|
|
118
|
+
type: "content",
|
|
119
|
+
content: {
|
|
120
|
+
type: "text",
|
|
121
|
+
text: `Updated \`${response.filePath}\` (previous content too large to diff)`,
|
|
122
|
+
},
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
const result = {};
|
|
126
|
+
if (content.length > 0)
|
|
127
|
+
result.content = content;
|
|
128
|
+
if (locations.length > 0)
|
|
129
|
+
result.locations = locations;
|
|
130
|
+
return result;
|
|
131
|
+
}
|
package/dist/tools.d.ts
CHANGED
|
@@ -65,17 +65,6 @@ export declare function applyTaskUpdate(state: TaskState, input: TaskUpdateInput
|
|
|
65
65
|
export declare function applyTaskList(state: TaskState, output: TaskListOutput): void;
|
|
66
66
|
export declare function taskStateToPlanEntries(state: TaskState): PlanEntry[];
|
|
67
67
|
export declare function markdownEscape(text: string): string;
|
|
68
|
-
/**
|
|
69
|
-
* Builds diff ToolUpdate content from the structured toolResponse provided by
|
|
70
|
-
* the PostToolUse hook for diff-producing tools (Edit, Write). Unlike parsing
|
|
71
|
-
* the plain unified diff string, this uses the pre-parsed structuredPatch
|
|
72
|
-
* which supports multiple replacement sites (replaceAll) and always includes
|
|
73
|
-
* context lines for better readability.
|
|
74
|
-
*/
|
|
75
|
-
export declare function toolUpdateFromDiffToolResponse(toolResponse: unknown): {
|
|
76
|
-
content?: ToolCallContent[];
|
|
77
|
-
locations?: ToolCallLocation[];
|
|
78
|
-
};
|
|
79
68
|
export declare const registerHookCallback: (toolUseID: string, { onPostToolUseHook, }: {
|
|
80
69
|
onPostToolUseHook?: (toolUseID: string, toolInput: unknown, toolResponse: unknown) => Promise<void>;
|
|
81
70
|
}, ownerId?: string) => void;
|
package/dist/tools.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
|
package/dist/tools.js
CHANGED
|
@@ -1093,79 +1093,6 @@ export function markdownEscape(text) {
|
|
|
1093
1093
|
}
|
|
1094
1094
|
return escape + "\n" + text + (text.endsWith("\n") ? "" : "\n") + escape;
|
|
1095
1095
|
}
|
|
1096
|
-
/**
|
|
1097
|
-
* Builds diff ToolUpdate content from the structured toolResponse provided by
|
|
1098
|
-
* the PostToolUse hook for diff-producing tools (Edit, Write). Unlike parsing
|
|
1099
|
-
* the plain unified diff string, this uses the pre-parsed structuredPatch
|
|
1100
|
-
* which supports multiple replacement sites (replaceAll) and always includes
|
|
1101
|
-
* context lines for better readability.
|
|
1102
|
-
*/
|
|
1103
|
-
export function toolUpdateFromDiffToolResponse(toolResponse) {
|
|
1104
|
-
if (!toolResponse || typeof toolResponse !== "object")
|
|
1105
|
-
return {};
|
|
1106
|
-
const response = toolResponse;
|
|
1107
|
-
if (!response.filePath || !Array.isArray(response.structuredPatch))
|
|
1108
|
-
return {};
|
|
1109
|
-
const content = [];
|
|
1110
|
-
const locations = [];
|
|
1111
|
-
for (const { lines, newStart } of response.structuredPatch) {
|
|
1112
|
-
const oldText = [];
|
|
1113
|
-
const newText = [];
|
|
1114
|
-
for (const line of lines) {
|
|
1115
|
-
if (line.startsWith("-")) {
|
|
1116
|
-
oldText.push(line.slice(1));
|
|
1117
|
-
}
|
|
1118
|
-
else if (line.startsWith("+")) {
|
|
1119
|
-
newText.push(line.slice(1));
|
|
1120
|
-
}
|
|
1121
|
-
else {
|
|
1122
|
-
oldText.push(line.slice(1));
|
|
1123
|
-
newText.push(line.slice(1));
|
|
1124
|
-
}
|
|
1125
|
-
}
|
|
1126
|
-
if (oldText.length > 0 || newText.length > 0) {
|
|
1127
|
-
locations.push({ path: response.filePath, line: newStart });
|
|
1128
|
-
content.push({
|
|
1129
|
-
type: "diff",
|
|
1130
|
-
path: response.filePath,
|
|
1131
|
-
oldText: oldText.join("\n") || null,
|
|
1132
|
-
newText: newText.join("\n"),
|
|
1133
|
-
});
|
|
1134
|
-
}
|
|
1135
|
-
}
|
|
1136
|
-
// A Write `update` can arrive with an empty structuredPatch — nothing
|
|
1137
|
-
// changed, the diff timed out, or the previous content was too large to
|
|
1138
|
-
// diff (originalFile null; SDK 0.3.252 documents the lane). Returning `{}`
|
|
1139
|
-
// would leave Write's optimistic tool_use-time content standing, and that
|
|
1140
|
-
// was built with `oldText: null` — "creation" semantics — so an overwrite
|
|
1141
|
-
// of a large existing file would render as creating it. Emit a truthful
|
|
1142
|
-
// replacement instead. Gated on `type` so Edit (whose output carries no
|
|
1143
|
-
// `type` and whose optimistic old/new diff is already truthful) keeps the
|
|
1144
|
-
// empty-return behavior.
|
|
1145
|
-
if (content.length === 0 && response.type === "update" && typeof response.content === "string") {
|
|
1146
|
-
locations.push({ path: response.filePath });
|
|
1147
|
-
content.push(typeof response.originalFile === "string"
|
|
1148
|
-
? {
|
|
1149
|
-
type: "diff",
|
|
1150
|
-
path: response.filePath,
|
|
1151
|
-
oldText: response.originalFile,
|
|
1152
|
-
newText: response.content,
|
|
1153
|
-
}
|
|
1154
|
-
: {
|
|
1155
|
-
type: "content",
|
|
1156
|
-
content: {
|
|
1157
|
-
type: "text",
|
|
1158
|
-
text: `Updated \`${response.filePath}\` (previous content too large to diff)`,
|
|
1159
|
-
},
|
|
1160
|
-
});
|
|
1161
|
-
}
|
|
1162
|
-
const result = {};
|
|
1163
|
-
if (content.length > 0)
|
|
1164
|
-
result.content = content;
|
|
1165
|
-
if (locations.length > 0)
|
|
1166
|
-
result.locations = locations;
|
|
1167
|
-
return result;
|
|
1168
|
-
}
|
|
1169
1096
|
/* Callbacks are keyed globally because the SDK hook is process-wide, but each
|
|
1170
1097
|
* entry retains its owning ACP session so cancellation/teardown can release it. */
|
|
1171
1098
|
const toolUseCallbacks = new Map();
|
package/package.json
CHANGED