@agentclientprotocol/claude-agent-acp 0.75.0 → 0.75.2-preview.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -0
- package/dist/acp-agent.d.ts +6 -7
- package/dist/acp-agent.d.ts.map +1 -1
- package/dist/acp-agent.js +82 -109
- package/dist/fork-session.d.ts +3 -0
- package/dist/fork-session.d.ts.map +1 -1
- package/dist/fork-session.js +113 -11
- package/dist/resumed-session.d.ts +19 -0
- package/dist/resumed-session.d.ts.map +1 -0
- package/dist/resumed-session.js +42 -0
- package/dist/session-timing.d.ts +15 -0
- package/dist/session-timing.d.ts.map +1 -0
- package/dist/session-timing.js +20 -0
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -22,6 +22,14 @@ This tool implements an ACP agent by using the official [Claude Agent SDK](https
|
|
|
22
22
|
|
|
23
23
|
Learn more about the [Agent Client Protocol](https://agentclientprotocol.com/).
|
|
24
24
|
|
|
25
|
+
To try changes that have landed on `main` but are not released yet, install from the
|
|
26
|
+
`preview` channel — every push to `main` publishes one. See
|
|
27
|
+
[`docs/RELEASES.md`](docs/RELEASES.md#preview-releases).
|
|
28
|
+
|
|
29
|
+
```sh
|
|
30
|
+
npm install @agentclientprotocol/claude-agent-acp@preview
|
|
31
|
+
```
|
|
32
|
+
|
|
25
33
|
### Subagent sessions
|
|
26
34
|
|
|
27
35
|
Subagents are exposed only after bilateral capability negotiation. Until the released ACP SDKs
|
package/dist/acp-agent.d.ts
CHANGED
|
@@ -389,17 +389,16 @@ export type Session = {
|
|
|
389
389
|
* prompts so mid-stream usage_update notifications report a correct `size`
|
|
390
390
|
* before the turn's first result message arrives. Seeded synchronously at
|
|
391
391
|
* session creation and on model switches from the per-model cache or the
|
|
392
|
-
* text heuristic (DEFAULT_CONTEXT_WINDOW when both miss
|
|
393
|
-
*
|
|
394
|
-
* `
|
|
395
|
-
*
|
|
396
|
-
* fresh session it stalls until the first turn runs (see the seeding call
|
|
392
|
+
* text heuristic (DEFAULT_CONTEXT_WINDOW when both miss), then confirmed —
|
|
393
|
+
* and the cache populated — by each result's modelUsage. No extra
|
|
394
|
+
* `getContextUsage` IPC is on these paths: before the first turn it can add
|
|
395
|
+
* tens of seconds to both fresh and resumed sessions (see the seeding call
|
|
397
396
|
* sites and `contextWindowCache`). */
|
|
398
397
|
contextWindowSize: number;
|
|
399
398
|
contextUsedTokens?: number;
|
|
400
399
|
/** Whether `contextWindowSize` came from an authoritative source (the
|
|
401
|
-
* cross-session cache
|
|
402
|
-
*
|
|
400
|
+
* cross-session cache or a `result.modelUsage`) rather than the text
|
|
401
|
+
* heuristic / default. Guards the
|
|
403
402
|
* mid-stream `message_start` heuristic upgrade: an authoritative window that
|
|
404
403
|
* happens to equal DEFAULT_CONTEXT_WINDOW must not be mistaken for "unseeded"
|
|
405
404
|
* and clobbered by a "1m" text match. */
|
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
|
@@ -17,6 +17,8 @@ import { promisify } from "node:util";
|
|
|
17
17
|
import packageJson from "../package.json" with { type: "json" };
|
|
18
18
|
import { applyAskElicitationResponse, askUserQuestionsToCreateRequest, createElicitationResponseToElicitResult, extractAskUserQuestions, extractRefusalFallbackPrompt, mcpElicitationToCreateRequest, REFUSAL_FALLBACK_DIALOG_KIND, refusalFallbackResultFromResponse, refusalFallbackToCreateRequest, } from "./elicitation.js";
|
|
19
19
|
import { forkSession } from "./fork-session.js";
|
|
20
|
+
import { readResumedSession } from "./resumed-session.js";
|
|
21
|
+
import { SessionTiming } from "./session-timing.js";
|
|
20
22
|
import { ALLOW_BYPASS, resolvePermissionMode } from "./permissions/modes.js";
|
|
21
23
|
import { normalizeDurablePermissionChangeSet } from "./permissions/normalization.js";
|
|
22
24
|
import { buildClaudePermissionOptions } from "./permissions/options.js";
|
|
@@ -969,6 +971,7 @@ export class ClaudeAcpAgent {
|
|
|
969
971
|
await this.providerUpdate;
|
|
970
972
|
return forkSession(params, {
|
|
971
973
|
liveMessageIdToUuid: this.sessions[params.sessionId]?.messageIdToUuid,
|
|
974
|
+
logger: this.logger,
|
|
972
975
|
messageIdForGrouping,
|
|
973
976
|
});
|
|
974
977
|
}
|
|
@@ -984,10 +987,14 @@ export class ClaudeAcpAgent {
|
|
|
984
987
|
return result;
|
|
985
988
|
}
|
|
986
989
|
async loadSession(params) {
|
|
990
|
+
const timing = new SessionTiming(this.logger, "load", params.sessionId);
|
|
987
991
|
if (this.providerUpdate)
|
|
988
992
|
await this.providerUpdate;
|
|
989
|
-
const
|
|
990
|
-
await this.
|
|
993
|
+
const resumedSession = await readResumedSession(params.sessionId, this.logger);
|
|
994
|
+
const result = await this.getOrCreateSession(params, resumedSession);
|
|
995
|
+
timing.phase("session-ready");
|
|
996
|
+
await this.replaySessionHistory(params.sessionId, resumedSession.messages);
|
|
997
|
+
timing.phase("replay");
|
|
991
998
|
// Send available commands after replay so it doesn't interleave with history
|
|
992
999
|
setTimeout(() => {
|
|
993
1000
|
this.sendAvailableCommandsUpdate(params.sessionId);
|
|
@@ -2720,14 +2727,11 @@ export class ClaudeAcpAgent {
|
|
|
2720
2727
|
// right after the user sees "Compacting completed", which is
|
|
2721
2728
|
// confusing and wrong.
|
|
2722
2729
|
//
|
|
2723
|
-
//
|
|
2724
|
-
//
|
|
2725
|
-
//
|
|
2726
|
-
//
|
|
2727
|
-
//
|
|
2728
|
-
// used:0 approximation: directionally correct (context just
|
|
2729
|
-
// dropped dramatically) and replaced within seconds by the next
|
|
2730
|
-
// result message.
|
|
2730
|
+
// The compact boundary already carries the retained token
|
|
2731
|
+
// count. Prefer it over a getContextUsage control request,
|
|
2732
|
+
// which can block the live query for tens of seconds. Older
|
|
2733
|
+
// SDK frames without post_tokens fall back to used:0 and are
|
|
2734
|
+
// corrected by the next result message.
|
|
2731
2735
|
//
|
|
2732
2736
|
// `size` keeps coming from session.contextWindowSize —
|
|
2733
2737
|
// compaction frees occupancy, it doesn't change the model's
|
|
@@ -2735,10 +2739,10 @@ export class ClaudeAcpAgent {
|
|
|
2735
2739
|
//
|
|
2736
2740
|
const compactMetadata = message.compact_metadata;
|
|
2737
2741
|
await compaction.finish(message.session_id, message.uuid, "completed", compactMetadata ? contextCompactionMetadataFromBoundary(compactMetadata) : {}, true);
|
|
2738
|
-
const usedTokens =
|
|
2742
|
+
const usedTokens = compactMetadata?.post_tokens ?? 0;
|
|
2739
2743
|
lastAssistantUsage = null;
|
|
2740
|
-
lastAssistantTotalUsage = usedTokens
|
|
2741
|
-
session.contextUsedTokens = usedTokens
|
|
2744
|
+
lastAssistantTotalUsage = usedTokens;
|
|
2745
|
+
session.contextUsedTokens = usedTokens;
|
|
2742
2746
|
await sendUpdate({
|
|
2743
2747
|
sessionId: message.session_id,
|
|
2744
2748
|
update: {
|
|
@@ -4820,9 +4824,12 @@ export class ClaudeAcpAgent {
|
|
|
4820
4824
|
await this.applyConfigOptionValue(params.sessionId, session, params.configId, effectiveValue);
|
|
4821
4825
|
return { configOptions: session.configOptions };
|
|
4822
4826
|
}
|
|
4823
|
-
async replaySessionHistory(sessionId) {
|
|
4827
|
+
async replaySessionHistory(sessionId, resumedMessages) {
|
|
4828
|
+
const replayStartedAt = performance.now();
|
|
4824
4829
|
const toolUseCache = {};
|
|
4825
|
-
const messages = await getSessionMessages(sessionId);
|
|
4830
|
+
const messages = resumedMessages ?? (await getSessionMessages(sessionId));
|
|
4831
|
+
const historyLoadedAt = performance.now();
|
|
4832
|
+
this.logger.log(`[session/replay] sessionId=${sessionId} phase=read durationMs=${Math.round(historyLoadedAt - replayStartedAt)} messages=${messages.length}`);
|
|
4826
4833
|
const session = this.sessions[sessionId];
|
|
4827
4834
|
const forwardSubagentText = session?.forwardSubagentText ?? supportsSubagentTranscript(this.clientCapabilities);
|
|
4828
4835
|
const supportsTypedFailures = supportsAirSessionFailures(this.clientCapabilities);
|
|
@@ -5091,6 +5098,8 @@ export class ClaudeAcpAgent {
|
|
|
5091
5098
|
}));
|
|
5092
5099
|
}
|
|
5093
5100
|
}
|
|
5101
|
+
const replayFinishedAt = performance.now();
|
|
5102
|
+
this.logger.log(`[session/replay] sessionId=${sessionId} phase=publish durationMs=${Math.round(replayFinishedAt - historyLoadedAt)} totalMs=${Math.round(replayFinishedAt - replayStartedAt)} messages=${messages.length}`);
|
|
5094
5103
|
}
|
|
5095
5104
|
async readTextFile(params) {
|
|
5096
5105
|
const response = await this.client.readTextFile(params);
|
|
@@ -5696,7 +5705,7 @@ export class ClaudeAcpAgent {
|
|
|
5696
5705
|
},
|
|
5697
5706
|
});
|
|
5698
5707
|
}
|
|
5699
|
-
async getOrCreateSession(params) {
|
|
5708
|
+
async getOrCreateSession(params, resumedSession) {
|
|
5700
5709
|
const existingSession = this.sessions[params.sessionId];
|
|
5701
5710
|
if (existingSession) {
|
|
5702
5711
|
const fingerprint = computeSessionFingerprint(params);
|
|
@@ -5712,6 +5721,9 @@ export class ClaudeAcpAgent {
|
|
|
5712
5721
|
// recreate it so the underlying Query process picks up the new values.
|
|
5713
5722
|
await this.teardownSession(params.sessionId);
|
|
5714
5723
|
}
|
|
5724
|
+
const resumedModelHint = resumedSession
|
|
5725
|
+
? resumedSession.model
|
|
5726
|
+
: (await readResumedSession(params.sessionId, this.logger)).model;
|
|
5715
5727
|
const response = await this.createSession({
|
|
5716
5728
|
cwd: params.cwd,
|
|
5717
5729
|
mcpServers: params.mcpServers ?? [],
|
|
@@ -5719,6 +5731,7 @@ export class ClaudeAcpAgent {
|
|
|
5719
5731
|
_meta: params._meta,
|
|
5720
5732
|
}, {
|
|
5721
5733
|
resume: params.sessionId,
|
|
5734
|
+
resumedModelHint,
|
|
5722
5735
|
});
|
|
5723
5736
|
return {
|
|
5724
5737
|
sessionId: response.sessionId,
|
|
@@ -5748,6 +5761,7 @@ export class ClaudeAcpAgent {
|
|
|
5748
5761
|
}
|
|
5749
5762
|
}
|
|
5750
5763
|
async createSession(params, creationOpts = {}) {
|
|
5764
|
+
const createStartedAt = performance.now();
|
|
5751
5765
|
// Validate `cwd` up front. The ACP spec requires an absolute path, and the
|
|
5752
5766
|
// directory must actually exist on the machine running the agent. Without
|
|
5753
5767
|
// this check a session is created against a missing directory and the
|
|
@@ -5775,11 +5789,26 @@ export class ClaudeAcpAgent {
|
|
|
5775
5789
|
else {
|
|
5776
5790
|
sessionId = randomUUID();
|
|
5777
5791
|
}
|
|
5792
|
+
const timing = new SessionTiming(this.logger, "create", sessionId, createStartedAt);
|
|
5793
|
+
timing.phase("validate-cwd");
|
|
5794
|
+
// Most session/load calls already carry a transcript snapshot so history
|
|
5795
|
+
// replay and model restoration share one local read. A few resume paths
|
|
5796
|
+
// intentionally call createSession directly (legacy session/new metadata,
|
|
5797
|
+
// sign-out respawn, provider rerouting), so fill the same fast local hint
|
|
5798
|
+
// here when the caller did not provide it. Never fall back to the slow
|
|
5799
|
+
// getContextUsage control request.
|
|
5800
|
+
let resumedModelHint = creationOpts.resumedModelHint;
|
|
5801
|
+
if (creationOpts.resume !== undefined &&
|
|
5802
|
+
!Object.prototype.hasOwnProperty.call(creationOpts, "resumedModelHint")) {
|
|
5803
|
+
resumedModelHint = (await readResumedSession(creationOpts.resume, this.logger)).model;
|
|
5804
|
+
timing.phase("resume-transcript");
|
|
5805
|
+
}
|
|
5778
5806
|
const input = new Pushable();
|
|
5779
5807
|
const settingsManager = new SettingsManager(params.cwd, {
|
|
5780
5808
|
logger: this.logger,
|
|
5781
5809
|
});
|
|
5782
5810
|
await settingsManager.initialize();
|
|
5811
|
+
timing.phase("settings");
|
|
5783
5812
|
const mcpServers = {};
|
|
5784
5813
|
if (Array.isArray(params.mcpServers)) {
|
|
5785
5814
|
for (const server of params.mcpServers) {
|
|
@@ -6007,7 +6036,7 @@ export class ClaudeAcpAgent {
|
|
|
6007
6036
|
// switches the session's model with no refusal-fallback frame, and
|
|
6008
6037
|
// the client's picker silently drifts. `source: 'sdk'` is the
|
|
6009
6038
|
// adapter's own setModel (applyConfigOptionValue already synced it),
|
|
6010
|
-
// and 'resume' restores are read
|
|
6039
|
+
// and 'resume' restores are read from the transcript before startup, so
|
|
6011
6040
|
// only the remaining sources sync here (CLI 2.1.251+; older CLIs
|
|
6012
6041
|
// never fire the hook and keep the pre-hook behavior).
|
|
6013
6042
|
PostModelSwitch: [
|
|
@@ -6089,6 +6118,7 @@ export class ClaudeAcpAgent {
|
|
|
6089
6118
|
prompt: input,
|
|
6090
6119
|
options,
|
|
6091
6120
|
});
|
|
6121
|
+
timing.phase("prepare-query");
|
|
6092
6122
|
// `query()` spawns the CLI at once. Any throw between here and the
|
|
6093
6123
|
// registration in `this.sessions` would leave that child process running
|
|
6094
6124
|
// with nobody holding the query, so discard it before propagating.
|
|
@@ -6106,6 +6136,7 @@ export class ClaudeAcpAgent {
|
|
|
6106
6136
|
}
|
|
6107
6137
|
throw error;
|
|
6108
6138
|
}
|
|
6139
|
+
timing.phase("sdk-initialize");
|
|
6109
6140
|
// Publish the identity BEFORE the guard can refuse this session. A
|
|
6110
6141
|
// refusal is exactly when the client most needs to know which account it
|
|
6111
6142
|
// was refused for.
|
|
@@ -6143,7 +6174,8 @@ export class ClaudeAcpAgent {
|
|
|
6143
6174
|
const allowedModels = Array.isArray(settingsAvailableModels)
|
|
6144
6175
|
? applyAvailableModelsAllowlist(initializationResult.models, settingsAvailableModels, settingsModelOverrides)
|
|
6145
6176
|
: initializationResult.models;
|
|
6146
|
-
const
|
|
6177
|
+
const models = await getAvailableModels(q, allowedModels, initializationResult.models, settingsManager, this.logger, creationOpts.resume !== undefined, sessionId, resumedModelHint);
|
|
6178
|
+
timing.phase("models");
|
|
6147
6179
|
// Resolve the current model's capabilities separately from the stable
|
|
6148
6180
|
// permission-mode catalog advertised to ACP clients.
|
|
6149
6181
|
// A resumed session can be running a model outside the `availableModels`
|
|
@@ -6185,7 +6217,9 @@ export class ClaudeAcpAgent {
|
|
|
6185
6217
|
currentModelInfo,
|
|
6186
6218
|
currentModelId: models.currentModelId,
|
|
6187
6219
|
});
|
|
6220
|
+
timing.phase("modes");
|
|
6188
6221
|
const agents = await discoverCustomAgents(q);
|
|
6222
|
+
timing.phase("agents");
|
|
6189
6223
|
// Only adopt the requested agent as the selected value if it's one we
|
|
6190
6224
|
// actually surface in the picker. A built-in (filtered out above) or
|
|
6191
6225
|
// otherwise-unknown name would leave the config option's `currentValue`
|
|
@@ -6223,18 +6257,13 @@ export class ClaudeAcpAgent {
|
|
|
6223
6257
|
// model switch. Only a user's explicit ACP picker choice pins the flag
|
|
6224
6258
|
// (see applyConfigOptionValue / Session.effortPinnedByUser).
|
|
6225
6259
|
const configOptions = buildConfigOptions(modes, models, modelInfos, settingsEffortForModel(settingsManager.getSettings(), currentModelInfo), agents, currentAgent, fastMode);
|
|
6226
|
-
// Seed the context window
|
|
6227
|
-
//
|
|
6228
|
-
//
|
|
6229
|
-
//
|
|
6230
|
-
//
|
|
6231
|
-
//
|
|
6232
|
-
//
|
|
6233
|
-
// deliberately do NOT issue a getContextUsage call here: on a fresh
|
|
6234
|
-
// session that control request is not serviced until the first prompt
|
|
6235
|
-
// turn runs, so awaiting it — as 0.59.0 did — made session/new take ~15s
|
|
6236
|
-
// (issues #886/#880). The authoritative window arrives on the first
|
|
6237
|
-
// `result.modelUsage` and is cached from there.
|
|
6260
|
+
// Seed the context window without extra IPC. The cached authoritative
|
|
6261
|
+
// window from a prior turn wins (`result.modelUsage`, cross-session),
|
|
6262
|
+
// then the text heuristic, then the default. We deliberately do NOT issue
|
|
6263
|
+
// a getContextUsage call here: before the first prompt turn that control
|
|
6264
|
+
// request can take tens of seconds, on resumed as well as fresh sessions.
|
|
6265
|
+
// The authoritative window arrives on the first `result.modelUsage` and
|
|
6266
|
+
// is cached from there.
|
|
6238
6267
|
//
|
|
6239
6268
|
// Text inference alone misses aliases that resolve to extended-context
|
|
6240
6269
|
// models with no "1m" token anywhere in their id or description (e.g.
|
|
@@ -6242,17 +6271,14 @@ export class ClaudeAcpAgent {
|
|
|
6242
6271
|
// `usage_update.size: 200000` until the first result's modelUsage corrects
|
|
6243
6272
|
// it — but the cache means only the FIRST session to ever run a turn on such
|
|
6244
6273
|
// a model eats that window, not every fresh session after a process
|
|
6245
|
-
// restart (issue #596
|
|
6246
|
-
// resumed report above).
|
|
6274
|
+
// restart (issue #596).
|
|
6247
6275
|
//
|
|
6248
6276
|
// The inference fallback is deliberately keyed to the allowlisted entry: a
|
|
6249
6277
|
// fallback-resolved sibling's resolvedModel/displayName/description can
|
|
6250
6278
|
// describe a different context lane than the verbatim live id (e.g. an
|
|
6251
6279
|
// "opus[1m]" row matched for a bare 200k id), so on the fallback path only
|
|
6252
6280
|
// the id itself is a trustworthy window signal.
|
|
6253
|
-
const seededWindow =
|
|
6254
|
-
? { size: resumedContextWindow, authoritative: true }
|
|
6255
|
-
: immediateContextWindow(providerCacheKey, models.currentModelId, allowlistedModelInfo);
|
|
6281
|
+
const seededWindow = immediateContextWindow(providerCacheKey, models.currentModelId, allowlistedModelInfo);
|
|
6256
6282
|
this.sessions[sessionId] = {
|
|
6257
6283
|
query: q,
|
|
6258
6284
|
input: input,
|
|
@@ -6303,6 +6329,7 @@ export class ClaudeAcpAgent {
|
|
|
6303
6329
|
fileChangeReportRequestIds: new Set(),
|
|
6304
6330
|
fileChangeAuditSupport,
|
|
6305
6331
|
};
|
|
6332
|
+
timing.phase("register");
|
|
6306
6333
|
return {
|
|
6307
6334
|
sessionId,
|
|
6308
6335
|
modes,
|
|
@@ -7179,17 +7206,6 @@ export function applyAvailableModelsAllowlist(sdkModels, allowlist, settingsMode
|
|
|
7179
7206
|
}
|
|
7180
7207
|
return result;
|
|
7181
7208
|
}
|
|
7182
|
-
/** Read the model a resumed session is actually running (via the
|
|
7183
|
-
* `getContextUsage` control request — the same source `/context` prints) and
|
|
7184
|
-
* map it onto the picker, along with the report's authoritative context
|
|
7185
|
-
* window (`rawMaxTokens`). Resumed sessions get this request serviced before
|
|
7186
|
-
* any turn runs in the new process — unlike fresh sessions, where it stalls
|
|
7187
|
-
* until the first prompt turn (issues #886/#880) — so the same response that
|
|
7188
|
-
* restores the live model (issue #845) also seeds the window for free,
|
|
7189
|
-
* covering post-restart reloads of models the text heuristic misses (issue
|
|
7190
|
-
* #596). Best-effort: a control-request failure is logged and returns nulls
|
|
7191
|
-
* so callers keep their current choice; failing the whole session/load over
|
|
7192
|
-
* an unreadable report would be worse. */
|
|
7193
7209
|
/** Whether a rejected `setModel` was vetoed by a user-configured
|
|
7194
7210
|
* PreModelSwitch hook. The CLI's rejection message is the stable,
|
|
7195
7211
|
* distinguishable marker ("Model switch blocked by a PreModelSwitch hook:
|
|
@@ -7198,28 +7214,10 @@ export function applyAvailableModelsAllowlist(sdkModels, allowlist, settingsMode
|
|
|
7198
7214
|
function isPreModelSwitchHookBlock(error) {
|
|
7199
7215
|
return error instanceof Error && error.message.includes("blocked by a PreModelSwitch hook");
|
|
7200
7216
|
}
|
|
7201
|
-
async function
|
|
7202
|
-
try {
|
|
7203
|
-
const usage = await query.getContextUsage();
|
|
7204
|
-
return {
|
|
7205
|
-
model: usage.model ? matchResumedModel(models, usage.model) : null,
|
|
7206
|
-
contextWindow: usage.rawMaxTokens > 0 ? usage.rawMaxTokens : null,
|
|
7207
|
-
};
|
|
7208
|
-
}
|
|
7209
|
-
catch (error) {
|
|
7210
|
-
logger.error("Failed to read the resumed session's live model:", error);
|
|
7211
|
-
return { model: null, contextWindow: null };
|
|
7212
|
-
}
|
|
7213
|
-
}
|
|
7214
|
-
async function getAvailableModels(query, models, sdkModels, settingsManager, logger, isResumedSession) {
|
|
7217
|
+
async function getAvailableModels(query, models, sdkModels, settingsManager, logger, isResumedSession, sessionId, resumedModelHint) {
|
|
7215
7218
|
const settings = settingsManager.getSettings();
|
|
7216
7219
|
let currentModel = models[0];
|
|
7217
7220
|
let resolvedFromInput;
|
|
7218
|
-
// The context window reported alongside a resumed session's live model.
|
|
7219
|
-
// Only ever non-null on the paths where `currentModel` IS the live model
|
|
7220
|
-
// (no override, or a failed override re-assert), so the window always
|
|
7221
|
-
// describes the model the session actually runs.
|
|
7222
|
-
let resumedContextWindow = null;
|
|
7223
7221
|
// Model priority (highest to lowest):
|
|
7224
7222
|
// 1. ANTHROPIC_MODEL environment variable
|
|
7225
7223
|
// 2. settings.model (user configuration)
|
|
@@ -7239,17 +7237,14 @@ async function getAvailableModels(query, models, sdkModels, settingsManager, log
|
|
|
7239
7237
|
resolvedFromInput = settings.model;
|
|
7240
7238
|
}
|
|
7241
7239
|
}
|
|
7242
|
-
// A resumed session restores the model
|
|
7243
|
-
//
|
|
7244
|
-
//
|
|
7245
|
-
//
|
|
7246
|
-
//
|
|
7247
|
-
//
|
|
7248
|
-
// (e.g. "opus[1m]") could change the live model rather than describe it.
|
|
7240
|
+
// A resumed session restores the model from its last real assistant
|
|
7241
|
+
// transcript record. Use that same local record instead of getContextUsage:
|
|
7242
|
+
// the latter is a control request to the live CLI process and can add tens
|
|
7243
|
+
// of seconds to session/load before its first turn. No `setModel` here: the
|
|
7244
|
+
// SDK is already running this model, and pushing a picker alias back (e.g.
|
|
7245
|
+
// "opus[1m]") could change the live model rather than describe it.
|
|
7249
7246
|
if (resolvedFromInput === undefined && isResumedSession) {
|
|
7250
|
-
|
|
7251
|
-
currentModel = live.model ?? currentModel;
|
|
7252
|
-
resumedContextWindow = live.contextWindow;
|
|
7247
|
+
currentModel = resumedModelHint ? matchResumedModel(models, resumedModelHint) : currentModel;
|
|
7253
7248
|
}
|
|
7254
7249
|
// Skip the setModel round-trip when we can prove the SDK has already landed
|
|
7255
7250
|
// on the same model. Two cases qualify:
|
|
@@ -7268,10 +7263,13 @@ async function getAvailableModels(query, models, sdkModels, settingsManager, log
|
|
|
7268
7263
|
const skipSetModel = resolvedFromInput === undefined ||
|
|
7269
7264
|
(!isResumedSession && currentModel.value === resolvedFromInput && sdkSawSameValue);
|
|
7270
7265
|
if (!skipSetModel) {
|
|
7266
|
+
const setModelStartedAt = performance.now();
|
|
7271
7267
|
try {
|
|
7272
7268
|
await query.setModel(currentModel.value);
|
|
7269
|
+
logger.log(`[session/models] sessionId=${sessionId} phase=set-model durationMs=${Math.round(performance.now() - setModelStartedAt)} model=${currentModel.value} outcome=success`);
|
|
7273
7270
|
}
|
|
7274
7271
|
catch (error) {
|
|
7272
|
+
logger.log(`[session/models] sessionId=${sessionId} phase=set-model durationMs=${Math.round(performance.now() - setModelStartedAt)} model=${currentModel.value} outcome=error`);
|
|
7275
7273
|
// On a fresh session the pin is a defining option — fail loudly. A
|
|
7276
7274
|
// resumed session already runs fine on the transcript's model, so
|
|
7277
7275
|
// failing the whole session/load over the re-assert would be worse
|
|
@@ -7298,22 +7296,17 @@ async function getAvailableModels(query, models, sdkModels, settingsManager, log
|
|
|
7298
7296
|
}
|
|
7299
7297
|
else {
|
|
7300
7298
|
logger.error(`Failed to re-assert model "${currentModel.value}" on resume:`, error);
|
|
7301
|
-
|
|
7302
|
-
currentModel = live.model ?? currentModel;
|
|
7303
|
-
resumedContextWindow = live.contextWindow;
|
|
7299
|
+
currentModel = resumedModelHint ? matchResumedModel(models, resumedModelHint) : models[0];
|
|
7304
7300
|
}
|
|
7305
7301
|
}
|
|
7306
7302
|
}
|
|
7307
7303
|
return {
|
|
7308
|
-
|
|
7309
|
-
|
|
7310
|
-
|
|
7311
|
-
|
|
7312
|
-
|
|
7313
|
-
|
|
7314
|
-
currentModelId: currentModel.value,
|
|
7315
|
-
},
|
|
7316
|
-
resumedContextWindow,
|
|
7304
|
+
availableModels: models.map((model) => ({
|
|
7305
|
+
modelId: model.value,
|
|
7306
|
+
name: model.displayName,
|
|
7307
|
+
description: model.description,
|
|
7308
|
+
})),
|
|
7309
|
+
currentModelId: currentModel.value,
|
|
7317
7310
|
};
|
|
7318
7311
|
}
|
|
7319
7312
|
function getAvailableSlashCommands(commands,
|
|
@@ -8243,30 +8236,13 @@ function commonPrefixLength(a, b) {
|
|
|
8243
8236
|
* models with no "1m" anywhere (e.g. `sonnet` → claude-sonnet-5, natively
|
|
8244
8237
|
* ~1M). Such a miss falls back to the default window and is corrected by
|
|
8245
8238
|
* `result.modelUsage` (and cached) within one turn. We do NOT consult the
|
|
8246
|
-
* SDK's `getContextUsage` to close that gap:
|
|
8247
|
-
*
|
|
8248
|
-
* `contextWindowCache`; resumed sessions do get it, via
|
|
8249
|
-
* `readResumedLiveModel`). */
|
|
8239
|
+
* SDK's `getContextUsage` to close that gap: before the first prompt turn it
|
|
8240
|
+
* can take tens of seconds (issues #886/#880, see `contextWindowCache`). */
|
|
8250
8241
|
function inferContextWindowFromModel(...texts) {
|
|
8251
8242
|
if (texts.some((text) => text != null && /\b1m\b/i.test(text)))
|
|
8252
8243
|
return 1_000_000;
|
|
8253
8244
|
return null;
|
|
8254
8245
|
}
|
|
8255
|
-
/** Fetch the SDK's authoritative context-window occupancy via the
|
|
8256
|
-
* `getContextUsage` control request. Unlike the per-message API usage numbers
|
|
8257
|
-
* (which only count message tokens), this `totalTokens` includes the system
|
|
8258
|
-
* prompt, tool schemas, MCP tools, and memory-file overhead — the real
|
|
8259
|
-
* occupancy the user sees. Returns `null` on any control-request failure. */
|
|
8260
|
-
async function fetchContextUsedTokens(query, logger) {
|
|
8261
|
-
try {
|
|
8262
|
-
const usage = await query.getContextUsage();
|
|
8263
|
-
return usage.totalTokens;
|
|
8264
|
-
}
|
|
8265
|
-
catch (error) {
|
|
8266
|
-
logger.error("Failed to fetch context usage from SDK:", error);
|
|
8267
|
-
return null;
|
|
8268
|
-
}
|
|
8269
|
-
}
|
|
8270
8246
|
/** Cross-session cache of authoritative context windows, keyed by
|
|
8271
8247
|
* `${providerCacheKey}\0${modelId}` (see {@link contextWindowCacheKey}).
|
|
8272
8248
|
* The window is a property of (model id, backend): the same resolved model id
|
|
@@ -8287,9 +8263,6 @@ async function fetchContextUsedTokens(query, logger) {
|
|
|
8287
8263
|
* has run the control request is not serviced (it stalls ~15s, and serializes
|
|
8288
8264
|
* ahead of an awaited `setModel` — issues #886/#880, regressed in 0.59.0), so
|
|
8289
8265
|
* it can neither beat the first `result` nor be issued cheaply before one.
|
|
8290
|
-
* Resumed sessions are the exception — their report IS serviced pre-turn, and
|
|
8291
|
-
* the session/load path seeds (but does not cache) the window from the same
|
|
8292
|
-
* response that restores the live model, see `readResumedLiveModel`.
|
|
8293
8266
|
* Cleared on `logout`: 1M-context entitlement can differ per account/tier, so
|
|
8294
8267
|
* windows learned under one login must not seed sessions under the next. */
|
|
8295
8268
|
const contextWindowCache = new Map();
|
package/dist/fork-session.d.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { ForkSessionRequest, ForkSessionResponse } from "@agentclientprotocol/sdk";
|
|
2
2
|
type ForkSessionDependencies = {
|
|
3
3
|
liveMessageIdToUuid?: ReadonlyMap<string, string>;
|
|
4
|
+
logger?: {
|
|
5
|
+
log: (...args: unknown[]) => void;
|
|
6
|
+
};
|
|
4
7
|
messageIdForGrouping: (message: {
|
|
5
8
|
type?: string;
|
|
6
9
|
uuid?: string | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fork-session.d.ts","sourceRoot":"","sources":["../src/fork-session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAgB,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"fork-session.d.ts","sourceRoot":"","sources":["../src/fork-session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAgB,MAAM,0BAA0B,CAAC;AA0BjG,KAAK,uBAAuB,GAAG;IAC7B,mBAAmB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClD,MAAM,CAAC,EAAE;QAAE,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAA;KAAE,CAAC;IAC/C,oBAAoB,EAAE,CAAC,OAAO,EAAE;QAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACrB,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,KAAK,MAAM,GAAG,SAAS,CAAC;CAC1B,CAAC;AA+IF,wBAAsB,WAAW,CAC/B,MAAM,EAAE,kBAAkB,EAC1B,YAAY,EAAE,uBAAuB,GACpC,OAAO,CAAC,mBAAmB,CAAC,CAsD9B"}
|
package/dist/fork-session.js
CHANGED
|
@@ -1,41 +1,143 @@
|
|
|
1
1
|
import { RequestError } from "@agentclientprotocol/sdk";
|
|
2
|
-
import { forkSession as forkClaudeSession, getSessionMessages, } from "@anthropic-ai/claude-agent-sdk";
|
|
3
|
-
|
|
2
|
+
import { forkSession as forkClaudeSession, getSessionMessages, importSessionToStore, } from "@anthropic-ai/claude-agent-sdk";
|
|
3
|
+
import { createHash } from "node:crypto";
|
|
4
|
+
import { assistantMessageText } from "./session-failure-extension.js";
|
|
5
|
+
import { SessionTiming } from "./session-timing.js";
|
|
6
|
+
function forkPoint(meta) {
|
|
4
7
|
const fork = meta?.jetbrains?.air?.fork;
|
|
5
8
|
if (fork?.version !== 1)
|
|
6
9
|
return undefined;
|
|
7
10
|
const messageId = fork.messageId?.trim();
|
|
8
|
-
|
|
11
|
+
if (!messageId)
|
|
12
|
+
return undefined;
|
|
13
|
+
const messageFingerprint = fork.messageFingerprint?.trim();
|
|
14
|
+
const messageOccurrence = fork.messageOccurrence;
|
|
15
|
+
return {
|
|
16
|
+
messageId,
|
|
17
|
+
...(messageFingerprint ? { messageFingerprint } : {}),
|
|
18
|
+
// AIR computes this with count(...) over the visible prefix, so it is 1-based.
|
|
19
|
+
...(typeof messageOccurrence === "number" &&
|
|
20
|
+
Number.isSafeInteger(messageOccurrence) &&
|
|
21
|
+
messageOccurrence > 0
|
|
22
|
+
? { messageOccurrence }
|
|
23
|
+
: {}),
|
|
24
|
+
};
|
|
9
25
|
}
|
|
10
26
|
function forkPointMessageIdCandidates(messageId) {
|
|
11
27
|
// Older AIR builds sent their visible segment id. Prefer the exact id before its ACP source id.
|
|
12
28
|
const protocolMessageId = messageId.replace(/:segment:\d+$/, "");
|
|
13
29
|
return protocolMessageId === messageId ? [messageId] : [messageId, protocolMessageId];
|
|
14
30
|
}
|
|
31
|
+
async function loadFullSessionHistory(sessionId, cwd) {
|
|
32
|
+
// getSessionMessages returns only the active parentUuid chain. The import keeps inactive branches that AIR can still reference.
|
|
33
|
+
const entries = [];
|
|
34
|
+
const store = {
|
|
35
|
+
append: async (_key, batch) => {
|
|
36
|
+
entries.push(...batch);
|
|
37
|
+
},
|
|
38
|
+
load: async () => null,
|
|
39
|
+
};
|
|
40
|
+
await importSessionToStore(sessionId, store, { dir: cwd, includeSubagents: false });
|
|
41
|
+
return entries;
|
|
42
|
+
}
|
|
43
|
+
function assistantGroups(entries, messageIdForGrouping) {
|
|
44
|
+
const groups = new Map();
|
|
45
|
+
for (const entry of entries) {
|
|
46
|
+
if (entry.type !== "assistant" ||
|
|
47
|
+
entry.isSidechain === true ||
|
|
48
|
+
entry.parent_tool_use_id != null ||
|
|
49
|
+
entry.parent_agent_id != null) {
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
const messageId = messageIdForGrouping(entry);
|
|
53
|
+
if (!messageId)
|
|
54
|
+
continue;
|
|
55
|
+
const group = groups.get(messageId) ?? { text: "" };
|
|
56
|
+
if (typeof entry.uuid === "string" && entry.uuid.length > 0)
|
|
57
|
+
group.uuid = entry.uuid;
|
|
58
|
+
group.text += assistantMessageText(entry.message) ?? "";
|
|
59
|
+
groups.set(messageId, group);
|
|
60
|
+
}
|
|
61
|
+
return groups;
|
|
62
|
+
}
|
|
63
|
+
function fingerprint(text) {
|
|
64
|
+
return `sha256:${createHash("sha256").update(text).digest("hex")}`;
|
|
65
|
+
}
|
|
66
|
+
function fingerprintOccurrenceOnBranch(targetUuid, expectedFingerprint, entries, groups, messageIdForGrouping) {
|
|
67
|
+
const entriesByUuid = new Map(entries.flatMap((entry) => (typeof entry.uuid === "string" ? [[entry.uuid, entry]] : [])));
|
|
68
|
+
const seenGroups = new Set();
|
|
69
|
+
let occurrence = 0;
|
|
70
|
+
let cursor = targetUuid;
|
|
71
|
+
while (cursor) {
|
|
72
|
+
const entry = entriesByUuid.get(cursor);
|
|
73
|
+
if (!entry)
|
|
74
|
+
break;
|
|
75
|
+
if (entry.type === "assistant" &&
|
|
76
|
+
entry.isSidechain !== true &&
|
|
77
|
+
entry.parent_tool_use_id == null &&
|
|
78
|
+
entry.parent_agent_id == null) {
|
|
79
|
+
const messageId = messageIdForGrouping(entry);
|
|
80
|
+
if (messageId && !seenGroups.has(messageId)) {
|
|
81
|
+
seenGroups.add(messageId);
|
|
82
|
+
const group = groups.get(messageId);
|
|
83
|
+
if (group && fingerprint(group.text) === expectedFingerprint)
|
|
84
|
+
occurrence++;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
cursor = typeof entry.parentUuid === "string" ? entry.parentUuid : undefined;
|
|
88
|
+
}
|
|
89
|
+
return occurrence;
|
|
90
|
+
}
|
|
91
|
+
function resolveFromFullHistory(entries, candidates, point, messageIdForGrouping) {
|
|
92
|
+
const groups = assistantGroups(entries, messageIdForGrouping);
|
|
93
|
+
const exact = candidates.map((candidate) => groups.get(candidate)?.uuid).find(Boolean);
|
|
94
|
+
if (exact)
|
|
95
|
+
return exact;
|
|
96
|
+
if (!point.messageFingerprint || !point.messageOccurrence)
|
|
97
|
+
return undefined;
|
|
98
|
+
const fingerprintMatches = [...groups.values()].filter((group) => group.uuid && fingerprint(group.text) === point.messageFingerprint);
|
|
99
|
+
// If only one persisted message has this content, the fingerprint already
|
|
100
|
+
// identifies it even when an older client supplied an incompatible index.
|
|
101
|
+
if (fingerprintMatches.length === 1)
|
|
102
|
+
return fingerprintMatches[0]?.uuid;
|
|
103
|
+
const occurrenceMatches = fingerprintMatches.filter((group) => group.uuid &&
|
|
104
|
+
fingerprintOccurrenceOnBranch(group.uuid, point.messageFingerprint, entries, groups, messageIdForGrouping) === point.messageOccurrence);
|
|
105
|
+
return occurrenceMatches.length === 1 ? occurrenceMatches[0]?.uuid : undefined;
|
|
106
|
+
}
|
|
15
107
|
export async function forkSession(params, dependencies) {
|
|
16
|
-
const
|
|
17
|
-
|
|
108
|
+
const timing = new SessionTiming(dependencies.logger, "fork", params.sessionId);
|
|
109
|
+
const point = forkPoint(params._meta);
|
|
110
|
+
if (!point) {
|
|
18
111
|
const forked = await forkClaudeSession(params.sessionId, { dir: params.cwd });
|
|
112
|
+
timing.phase("sdk-fork", " resolution=latest");
|
|
19
113
|
return { sessionId: forked.sessionId };
|
|
20
114
|
}
|
|
21
|
-
const candidateIds = forkPointMessageIdCandidates(messageId);
|
|
115
|
+
const candidateIds = forkPointMessageIdCandidates(point.messageId);
|
|
22
116
|
const liveUuid = candidateIds
|
|
23
117
|
.map((candidateId) => dependencies.liveMessageIdToUuid?.get(candidateId))
|
|
24
118
|
.find(Boolean);
|
|
25
119
|
const history = liveUuid
|
|
26
120
|
? undefined
|
|
27
121
|
: await getSessionMessages(params.sessionId, { dir: params.cwd });
|
|
122
|
+
timing.phase("active-history", ` resolution=${liveUuid ? "live" : "pending"}`);
|
|
28
123
|
const messageUuid = liveUuid ??
|
|
29
124
|
candidateIds
|
|
30
|
-
.map((candidateId) => history
|
|
31
|
-
?.
|
|
125
|
+
.map((candidateId) => history
|
|
126
|
+
?.slice()
|
|
127
|
+
.reverse()
|
|
128
|
+
.find((message) => dependencies.messageIdForGrouping(message) === candidateId)?.uuid)
|
|
32
129
|
.find(Boolean);
|
|
33
|
-
|
|
34
|
-
|
|
130
|
+
const fullHistoryUuid = messageUuid
|
|
131
|
+
? undefined
|
|
132
|
+
: resolveFromFullHistory(await loadFullSessionHistory(params.sessionId, params.cwd), candidateIds, point, dependencies.messageIdForGrouping);
|
|
133
|
+
timing.phase("full-history", ` resolution=${liveUuid ? "live" : messageUuid ? "active" : fullHistoryUuid ? "full" : "missing"}`);
|
|
134
|
+
if (!messageUuid && !fullHistoryUuid) {
|
|
135
|
+
throw RequestError.invalidParams({ messageId: point.messageId }, `Fork point message ${point.messageId} was not found in session ${params.sessionId}`);
|
|
35
136
|
}
|
|
36
137
|
const forked = await forkClaudeSession(params.sessionId, {
|
|
37
138
|
dir: params.cwd,
|
|
38
|
-
upToMessageId: messageUuid,
|
|
139
|
+
upToMessageId: messageUuid ?? fullHistoryUuid,
|
|
39
140
|
});
|
|
141
|
+
timing.phase("sdk-fork");
|
|
40
142
|
return { sessionId: forked.sessionId };
|
|
41
143
|
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type SessionMessage } from "@anthropic-ai/claude-agent-sdk";
|
|
2
|
+
type ResumeLogger = {
|
|
3
|
+
log: (...args: unknown[]) => void;
|
|
4
|
+
error: (...args: unknown[]) => void;
|
|
5
|
+
};
|
|
6
|
+
export type ResumedSessionSnapshot = {
|
|
7
|
+
messages?: SessionMessage[];
|
|
8
|
+
model?: string;
|
|
9
|
+
};
|
|
10
|
+
/** Return the concrete model recorded by the last real assistant response.
|
|
11
|
+
* Claude Code restores a resumed query from this same transcript field.
|
|
12
|
+
* Synthetic assistant records use angle-bracket placeholders and do not
|
|
13
|
+
* describe a model the resumed query can run. */
|
|
14
|
+
export declare function resumedModelFromTranscript(messages: SessionMessage[]): string | undefined;
|
|
15
|
+
/** Read the resume model from the local transcript without starting a Claude
|
|
16
|
+
* control request. This is intentionally on the load critical path. */
|
|
17
|
+
export declare function readResumedSession(sessionId: string, logger?: ResumeLogger): Promise<ResumedSessionSnapshot>;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=resumed-session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resumed-session.d.ts","sourceRoot":"","sources":["../src/resumed-session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAGzF,KAAK,YAAY,GAAG;IAClB,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IAClC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;iDAGiD;AACjD,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,MAAM,GAAG,SAAS,CAkBzF;AAED;uEACuE;AACvE,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,YAAY,GACpB,OAAO,CAAC,sBAAsB,CAAC,CAejC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { getSessionMessages } from "@anthropic-ai/claude-agent-sdk";
|
|
2
|
+
import { SessionTiming } from "./session-timing.js";
|
|
3
|
+
/** Return the concrete model recorded by the last real assistant response.
|
|
4
|
+
* Claude Code restores a resumed query from this same transcript field.
|
|
5
|
+
* Synthetic assistant records use angle-bracket placeholders and do not
|
|
6
|
+
* describe a model the resumed query can run. */
|
|
7
|
+
export function resumedModelFromTranscript(messages) {
|
|
8
|
+
for (let index = messages.length - 1; index >= 0; index--) {
|
|
9
|
+
const entry = messages[index];
|
|
10
|
+
if (entry?.type !== "assistant" ||
|
|
11
|
+
entry.parent_tool_use_id != null ||
|
|
12
|
+
entry.parent_agent_id != null ||
|
|
13
|
+
!entry.message ||
|
|
14
|
+
typeof entry.message !== "object") {
|
|
15
|
+
continue;
|
|
16
|
+
}
|
|
17
|
+
const model = entry.message.model;
|
|
18
|
+
if (typeof model === "string" && model.trim().length > 0 && !/^<[^>]+>$/.test(model.trim())) {
|
|
19
|
+
return model.trim();
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return undefined;
|
|
23
|
+
}
|
|
24
|
+
/** Read the resume model from the local transcript without starting a Claude
|
|
25
|
+
* control request. This is intentionally on the load critical path. */
|
|
26
|
+
export async function readResumedSession(sessionId, logger) {
|
|
27
|
+
const timing = new SessionTiming(logger, "models", sessionId);
|
|
28
|
+
try {
|
|
29
|
+
// Deliberately search all project directories, matching replaySessionHistory.
|
|
30
|
+
// A client may reopen a session from a worktree or normalized path that is
|
|
31
|
+
// different from the directory under which Claude persisted the transcript.
|
|
32
|
+
const messages = await getSessionMessages(sessionId);
|
|
33
|
+
const model = resumedModelFromTranscript(messages);
|
|
34
|
+
timing.phase("read-transcript", ` messages=${messages.length} model=${model ?? "unknown"}`);
|
|
35
|
+
return { messages, model };
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
timing.phase("read-transcript", " outcome=error");
|
|
39
|
+
logger?.error(`Failed to read transcript for resumed session ${sessionId}:`, error);
|
|
40
|
+
return {};
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
type TimingLogger = {
|
|
2
|
+
log: (...args: unknown[]) => void;
|
|
3
|
+
};
|
|
4
|
+
/** Small phase timer for session lifecycle diagnostics. */
|
|
5
|
+
export declare class SessionTiming {
|
|
6
|
+
private readonly logger;
|
|
7
|
+
private readonly operation;
|
|
8
|
+
private readonly sessionId;
|
|
9
|
+
private readonly startedAt;
|
|
10
|
+
private phaseStartedAt;
|
|
11
|
+
constructor(logger: TimingLogger | undefined, operation: string, sessionId: string, startedAt?: number);
|
|
12
|
+
phase(name: string, detail?: string): void;
|
|
13
|
+
}
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=session-timing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-timing.d.ts","sourceRoot":"","sources":["../src/session-timing.ts"],"names":[],"mappings":"AAAA,KAAK,YAAY,GAAG;IAClB,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;CACnC,CAAC;AAEF,2DAA2D;AAC3D,qBAAa,aAAa;IAKtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAN5B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,cAAc,CAAS;gBAGZ,MAAM,EAAE,YAAY,GAAG,SAAS,EAChC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EAClC,SAAS,SAAoB;IAM/B,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,SAAK,GAAG,IAAI;CAOvC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/** Small phase timer for session lifecycle diagnostics. */
|
|
2
|
+
export class SessionTiming {
|
|
3
|
+
logger;
|
|
4
|
+
operation;
|
|
5
|
+
sessionId;
|
|
6
|
+
startedAt;
|
|
7
|
+
phaseStartedAt;
|
|
8
|
+
constructor(logger, operation, sessionId, startedAt = performance.now()) {
|
|
9
|
+
this.logger = logger;
|
|
10
|
+
this.operation = operation;
|
|
11
|
+
this.sessionId = sessionId;
|
|
12
|
+
this.startedAt = startedAt;
|
|
13
|
+
this.phaseStartedAt = startedAt;
|
|
14
|
+
}
|
|
15
|
+
phase(name, detail = "") {
|
|
16
|
+
const finishedAt = performance.now();
|
|
17
|
+
this.logger?.log(`[session/${this.operation}] sessionId=${this.sessionId} phase=${name} durationMs=${Math.round(finishedAt - this.phaseStartedAt)} totalMs=${Math.round(finishedAt - this.startedAt)}${detail}`);
|
|
18
|
+
this.phaseStartedAt = finishedAt;
|
|
19
|
+
}
|
|
20
|
+
}
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"publishConfig": {
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
|
-
"version": "0.75.
|
|
6
|
+
"version": "0.75.2-preview.1",
|
|
7
7
|
"description": "An ACP-compatible coding agent powered by the Claude Agent SDK (TypeScript)",
|
|
8
8
|
"main": "dist/lib.js",
|
|
9
9
|
"types": "dist/lib.d.ts",
|
|
@@ -82,6 +82,6 @@
|
|
|
82
82
|
"prettier": "3.9.6",
|
|
83
83
|
"ts-node": "10.9.2",
|
|
84
84
|
"typescript": "6.0.3",
|
|
85
|
-
"vitest": "
|
|
85
|
+
"vitest": "5.0.0"
|
|
86
86
|
}
|
|
87
87
|
}
|