zcode-acp-server 0.43.2 → 0.43.4
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 +1 -1
- package/dist/bin/quota.d.ts.map +1 -1
- package/dist/bin/quota.js +4 -3
- package/dist/bin/quota.js.map +1 -1
- package/dist/code-fingerprint.json +1 -1
- package/dist/config/user-config.d.ts +3 -0
- package/dist/config/user-config.d.ts.map +1 -1
- package/dist/config/user-config.js +1 -0
- package/dist/config/user-config.js.map +1 -1
- package/dist/handlers/session.d.ts +29 -2
- package/dist/handlers/session.d.ts.map +1 -1
- package/dist/handlers/session.js +107 -22
- package/dist/handlers/session.js.map +1 -1
- package/dist/quota/format.d.ts.map +1 -1
- package/dist/quota/format.js +6 -2
- package/dist/quota/format.js.map +1 -1
- package/dist/quota/opencode-go/client.d.ts +17 -16
- package/dist/quota/opencode-go/client.d.ts.map +1 -1
- package/dist/quota/opencode-go/client.js +25 -27
- package/dist/quota/opencode-go/client.js.map +1 -1
- package/dist/quota/opencode-go/config.d.ts +14 -9
- package/dist/quota/opencode-go/config.d.ts.map +1 -1
- package/dist/quota/opencode-go/config.js +14 -9
- package/dist/quota/opencode-go/config.js.map +1 -1
- package/dist/quota/opencode-go/format.js +2 -2
- package/dist/quota/opencode-go/format.js.map +1 -1
- package/dist/quota/opencode-go/index.d.ts +10 -10
- package/dist/quota/opencode-go/index.d.ts.map +1 -1
- package/dist/quota/opencode-go/index.js +42 -28
- package/dist/quota/opencode-go/index.js.map +1 -1
- package/dist/quota/opencode-go/parse.d.ts +17 -28
- package/dist/quota/opencode-go/parse.d.ts.map +1 -1
- package/dist/quota/opencode-go/parse.js +52 -66
- package/dist/quota/opencode-go/parse.js.map +1 -1
- package/dist/quota/opencode-go/types.d.ts +8 -9
- package/dist/quota/opencode-go/types.d.ts.map +1 -1
- package/dist/quota/opencode-go/types.js +6 -5
- package/dist/quota/opencode-go/types.js.map +1 -1
- package/dist/remote/endpoint.d.ts.map +1 -1
- package/dist/remote/endpoint.js +10 -0
- package/dist/remote/endpoint.js.map +1 -1
- package/dist/remote/hub-server.d.ts.map +1 -1
- package/dist/remote/hub-server.js +54 -20
- package/dist/remote/hub-server.js.map +1 -1
- package/docs/PROTOCOL.md +11 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -244,7 +244,7 @@ Thanks to everyone who has contributed (updated automatically from the
|
|
|
244
244
|
<a href="https://github.com/william0wang/zcode-acp/graphs/contributors">
|
|
245
245
|
<!-- release-please re-stamps &v= on every release: the new URL busts the
|
|
246
246
|
contrib.rocks and GitHub camo image caches. -->
|
|
247
|
-
<img src="https://contrib.rocks/image?repo=william0wang/zcode-acp&v=0.43.
|
|
247
|
+
<img src="https://contrib.rocks/image?repo=william0wang/zcode-acp&v=0.43.4" alt="Contributors" /> <!-- x-release-please-version -->
|
|
248
248
|
</a>
|
|
249
249
|
|
|
250
250
|
## Related Projects
|
package/dist/bin/quota.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quota.d.ts","sourceRoot":"","sources":["../../src/bin/quota.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;;GAiBG;AAKH,OAAO,EAIL,KAAK,QAAQ,EACd,MAAM,sBAAsB,CAAC;AAwB9B,qDAAqD;AACrD,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,+EAA+E;IAC/E,eAAe,EAAE,OAAO,CAAC;IACzB,qEAAqE;IACrE,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,uFAAuF;IACvF,QAAQ,EAAE,QAAQ,CAAC;IACnB,2EAA2E;IAC3E,KAAK,EAAE,OAAO,CAAC;CAChB;
|
|
1
|
+
{"version":3,"file":"quota.d.ts","sourceRoot":"","sources":["../../src/bin/quota.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;;GAiBG;AAKH,OAAO,EAIL,KAAK,QAAQ,EACd,MAAM,sBAAsB,CAAC;AAwB9B,qDAAqD;AACrD,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,+EAA+E;IAC/E,eAAe,EAAE,OAAO,CAAC;IACzB,qEAAqE;IACrE,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,uFAAuF;IACvF,QAAQ,EAAE,QAAQ,CAAC;IACnB,2EAA2E;IAC3E,KAAK,EAAE,OAAO,CAAC;CAChB;AA8CD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAM/F;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,UAAU,CAiE7D;AAqKD;;;;;;GAMG;AACH,wBAAsB,IAAI,CAAC,IAAI,GAAE,SAAS,MAAM,EAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBzF"}
|
package/dist/bin/quota.js
CHANGED
|
@@ -54,13 +54,14 @@ Providers:
|
|
|
54
54
|
GLM credentials: read from ~/.zcode/v2/config.json (created by the ZCode app).
|
|
55
55
|
Non-GLM credentials resolve per field, highest precedence first:
|
|
56
56
|
1. ~/.config/zcode-acp/config.json "quota" section, e.g.
|
|
57
|
-
{"quota":{"ollamaApiKey":"…","opencodeGoWorkspaceId":"wrk_…","opencodeGoAuthCookie":"Fe26.2**…"}}
|
|
57
|
+
{"quota":{"ollamaApiKey":"…","opencodeGoWorkspaceId":"wrk_…","opencodeGoAuthCookie":"Fe26.2**…","opencodeGoSessionToken":"st_…"}}
|
|
58
58
|
2. Environment variables (one-off overrides)
|
|
59
59
|
3. ~/.pi/agent/opencode-go.json (legacy Pi-extension reuse, Opencode Go only)
|
|
60
|
-
Opencode Go
|
|
60
|
+
Opencode Go (log in at https://opencode.ai/console first, then DevTools →
|
|
61
|
+
Application → Cookies → opencode.ai):
|
|
61
62
|
OPENCODE_GO_WORKSPACE_ID e.g. wrk_abc123 (from the opencode.ai workspace URL)
|
|
62
63
|
OPENCODE_GO_AUTH_COOKIE the "auth" cookie value (starts with Fe26.2**)
|
|
63
|
-
|
|
64
|
+
OPENCODE_GO_SESSION_TOKEN the "__Host-console_session" cookie value (st_…)
|
|
64
65
|
Ollama Cloud:
|
|
65
66
|
OLLAMA_API_KEY an Ollama Cloud API key (cloud.ollama.ai → API keys)
|
|
66
67
|
|
package/dist/bin/quota.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quota.js","sourceRoot":"","sources":["../../src/bin/quota.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,OAAO,EAAE,UAAU,IAAI,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,aAAa,GAEd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAE7D,+EAA+E;AAC/E,SAAS,cAAc;IACrB,aAAa,EAAE,CAAC;IAChB,YAAY,EAAE,CAAC;IACf,YAAY,EAAE,CAAC;AACjB,CAAC;AAED,+DAA+D;AAC/D,MAAM,eAAe,GAAG,MAAM,CAAC;AAC/B,mCAAmC;AACnC,MAAM,mBAAmB,GAAG,MAAM,CAAC;AAEnC,4EAA4E;AAC5E,MAAM,IAAI,GAAG;IACX,WAAW,EAAE,eAAe,EAAE,sBAAsB;IACpD,SAAS,EAAE,SAAS,EAAE,gCAAgC;IACtD,UAAU,EAAE,WAAW;IACvB,UAAU,EAAE,WAAW;CACf,CAAC;AAiBX,iCAAiC;AACjC,MAAM,SAAS,GAAG
|
|
1
|
+
{"version":3,"file":"quota.js","sourceRoot":"","sources":["../../src/bin/quota.ts"],"names":[],"mappings":"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"}
|
|
@@ -48,6 +48,9 @@ export interface QuotaUserConfig {
|
|
|
48
48
|
opencodeGoWorkspaceId?: string;
|
|
49
49
|
/** Opencode Go `auth` cookie value (`Fe26.2**…`). */
|
|
50
50
|
opencodeGoAuthCookie?: string;
|
|
51
|
+
/** Opencode Go `__Host-console_session` cookie value (`st_…`) — required
|
|
52
|
+
* since the 2026-09 console migration (the API 401s the auth cookie alone). */
|
|
53
|
+
opencodeGoSessionToken?: string;
|
|
51
54
|
}
|
|
52
55
|
export interface UserConfig {
|
|
53
56
|
remote?: RemoteUserConfig;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-config.d.ts","sourceRoot":"","sources":["../../src/config/user-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAQH,4EAA4E;AAC5E,MAAM,WAAW,aAAa;IAC5B,wEAAwE;IACxE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,kFAAkF;IAClF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,kFAAkF;IAClF,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,oDAAoD;AACpD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,aAAa,CAAC;CAC1B;AAED,mDAAmD;AACnD,MAAM,WAAW,eAAe;IAC9B,6EAA6E;IAC7E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mEAAmE;IACnE,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,qDAAqD;IACrD,oBAAoB,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"user-config.d.ts","sourceRoot":"","sources":["../../src/config/user-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAQH,4EAA4E;AAC5E,MAAM,WAAW,aAAa;IAC5B,wEAAwE;IACxE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,kFAAkF;IAClF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,kFAAkF;IAClF,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,oDAAoD;AACpD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,aAAa,CAAC;CAC1B;AAED,mDAAmD;AACnD,MAAM,WAAW,eAAe;IAC9B,6EAA6E;IAC7E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mEAAmE;IACnE,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,qDAAqD;IACrD,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B;mFAC+E;IAC/E,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,KAAK,CAAC,EAAE,eAAe,CAAC;CACzB;AAED,uFAAuF;AACvF,wBAAgB,cAAc,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAG3E;AAMD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,UAAU,CAgD/E"}
|
|
@@ -75,6 +75,7 @@ export function loadUserConfig(env = process.env) {
|
|
|
75
75
|
["ollamaApiKey", "ollamaApiKey"],
|
|
76
76
|
["opencodeGoWorkspaceId", "opencodeGoWorkspaceId"],
|
|
77
77
|
["opencodeGoAuthCookie", "opencodeGoAuthCookie"],
|
|
78
|
+
["opencodeGoSessionToken", "opencodeGoSessionToken"],
|
|
78
79
|
]) {
|
|
79
80
|
const v = quota[jsonKey];
|
|
80
81
|
if (typeof v === "string" && v.trim())
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-config.js","sourceRoot":"","sources":["../../src/config/user-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"user-config.js","sourceRoot":"","sources":["../../src/config/user-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -57,8 +57,15 @@ export declare function newSession(server: ZcodeAcpServer, params: acp.NewSessio
|
|
|
57
57
|
* returns the existing mapping for already-created sessions, and concurrent
|
|
58
58
|
* first-uses share a single `session/create` via the pending entry's `creating`
|
|
59
59
|
* promise. Unknown ids throw.
|
|
60
|
+
*
|
|
61
|
+
* `{ensureResident:false}` (resolveResumeTarget only) skips the eviction
|
|
62
|
+
* guard for store-recovered mappings — that caller resumes the session itself
|
|
63
|
+
* immediately after, and its resume must be the one carrying the client's
|
|
64
|
+
* freshly declared mcpServers (#193).
|
|
60
65
|
*/
|
|
61
|
-
export declare function ensureRealSession(server: ZcodeAcpServer, acpSid: string
|
|
66
|
+
export declare function ensureRealSession(server: ZcodeAcpServer, acpSid: string, opts?: {
|
|
67
|
+
ensureResident?: boolean;
|
|
68
|
+
}): Promise<string>;
|
|
62
69
|
/** `session/list` → zcode `session/list`. */
|
|
63
70
|
export declare function listSessions(server: ZcodeAcpServer, params: acp.ListSessionsRequest): Promise<acp.ListSessionsResponse>;
|
|
64
71
|
/** `session/resume` → zcode `session/resume` (with runtimeModel overlay). */
|
|
@@ -306,6 +313,14 @@ export declare function fetchMessagesSettled(server: ZcodeAcpServer, zcodeSid: s
|
|
|
306
313
|
* plus a generic English form.
|
|
307
314
|
*/
|
|
308
315
|
export declare function isTransientSendError(message: string): boolean;
|
|
316
|
+
/**
|
|
317
|
+
* A failure proving the backend no longer STORES the session at all — as
|
|
318
|
+
* opposed to "Session is not active", which only means the resident runtime
|
|
319
|
+
* was evicted and a session/resume reloads it. Matches both spellings the
|
|
320
|
+
* builds in the wild produce ("Session not found: <sid>", "Session ID 不存在"),
|
|
321
|
+
* mirroring translateResumeFailure's match.
|
|
322
|
+
*/
|
|
323
|
+
export declare function isSessionGoneError(e: unknown): boolean;
|
|
309
324
|
/**
|
|
310
325
|
* Map the backend's merged per-turn usage (`EventTranslator.turnUsage`) onto
|
|
311
326
|
* the ACP `PromptResponse.usage` shape (UNSTABLE in agent-client-protocol;
|
|
@@ -314,6 +329,17 @@ export declare function isTransientSendError(message: string): boolean;
|
|
|
314
329
|
* reducer 0-fills them); the optional ones pass through as null when
|
|
315
330
|
* unreported. Field renames: reasoningTokens→thoughtTokens,
|
|
316
331
|
* cacheRead/cacheWriteTokens→cachedRead/cachedWriteTokens.
|
|
332
|
+
*
|
|
333
|
+
* The backend's inputTokens is OpenAI-style: it ALREADY contains the cache
|
|
334
|
+
* read+write tokens (verified live 2026-09-18: totalTokens == inputTokens +
|
|
335
|
+
* outputTokens on a real turn.completed frame). ACP's de-facto convention —
|
|
336
|
+
* claude-agent-acp passthrough and DeepSeek's dsh-token-meter four-bucket
|
|
337
|
+
* model alike — reports inputTokens EXCLUDING cache, and clients (martty's
|
|
338
|
+
* stats-view, Zed) compute cache hit rate as cachedRead / (input + cachedRead
|
|
339
|
+
* + cachedWrite). Forwarding the inclusive number double-counts the cache in
|
|
340
|
+
* their denominator, so normalize: inputTokens here is cache-exclusive,
|
|
341
|
+
* clamped at 0. totalTokens passes through unchanged — the backend's
|
|
342
|
+
* input+output sum IS the convention's four-bucket total, arithmetically.
|
|
317
343
|
*/
|
|
318
344
|
export declare function toAcpTurnUsage(u: Record<string, unknown> | null): acp.Usage | undefined;
|
|
319
345
|
/**
|
|
@@ -321,7 +347,8 @@ export declare function toAcpTurnUsage(u: Record<string, unknown> | null): acp.U
|
|
|
321
347
|
* turn's usage when the backend reported one (absent otherwise — no synthetic
|
|
322
348
|
* zeros). Spec fields carry the standard counters; backend extras (source,
|
|
323
349
|
* modelRequestCount, web request counts) ride in `_meta.zcode.usage` per the
|
|
324
|
-
* bridge's extension policy
|
|
350
|
+
* bridge's extension policy, plus `rawInputTokens` whenever normalization
|
|
351
|
+
* changed it (reconciliation/diagnostics).
|
|
325
352
|
*/
|
|
326
353
|
export declare function turnResult(translator: EventTranslator, stopReason: acp.StopReason): acp.PromptResponse;
|
|
327
354
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/handlers/session.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,OAAO,KAAK,KAAK,GAAG,MAAM,0BAA0B,CAAC;AAGrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1E,OAAO,KAAK,EAGV,YAAY,EAGb,MAAM,qBAAqB,CAAC;AA2B7B,OAAO,EAEL,eAAe,EAKf,gBAAgB,EACjB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAmJhE;;;;GAIG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,GAAG,IAAI,CAIvD;AAqBD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,mBAAmB,mBAAmB,CAAC;AAEpD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,GAAG,CAAC,iBAAiB,EAC7B,MAAM,CAAC,EAAE,GAAG,CAAC,YAAY,GACxB,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAgJjC;
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/handlers/session.ts"],"names":[],"mappings":"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"}
|
package/dist/handlers/session.js
CHANGED
|
@@ -386,36 +386,60 @@ function emitBootUsageUpdate(server, acpSid) {
|
|
|
386
386
|
})();
|
|
387
387
|
});
|
|
388
388
|
}
|
|
389
|
+
/**
|
|
390
|
+
* Reload the session into the backend when the resident verification went
|
|
391
|
+
* stale — the backend evicts idle resident runtimes (~10min idle + LRU), and
|
|
392
|
+
* every session-scoped RPC on a non-resident session fails with "Session is
|
|
393
|
+
* not active". Skipped while a turn is in flight (a running turn proves the
|
|
394
|
+
* resident is live).
|
|
395
|
+
*
|
|
396
|
+
* Fail-safe on ordinary reload failures (the caller surfaces the backend's
|
|
397
|
+
* own error downstream, as before) — but a session the backend no longer
|
|
398
|
+
* STORES throws the actionable evicted-session error: continuing with the
|
|
399
|
+
* dead mapping would defer the failure to the next RPC with the misleading
|
|
400
|
+
* "Session is not active" wording (observed 2026-09-18: every model/thought
|
|
401
|
+
* switch on a deleted thread failed that way instead of saying the session
|
|
402
|
+
* was gone).
|
|
403
|
+
*/
|
|
404
|
+
async function ensureBackendResident(server, acpSid, zcodeSid) {
|
|
405
|
+
if (server.isBackendSessionLive(acpSid))
|
|
406
|
+
return;
|
|
407
|
+
const turnInFlight = [...server.pendingTurns.values()].some((t) => t.zcodeSid === zcodeSid);
|
|
408
|
+
if (turnInFlight)
|
|
409
|
+
return;
|
|
410
|
+
try {
|
|
411
|
+
log(`ensureRealSession: ${acpSid} possibly evicted from backend — reloading`);
|
|
412
|
+
await reloadBackendSession(server, acpSid, zcodeSid);
|
|
413
|
+
}
|
|
414
|
+
catch (e) {
|
|
415
|
+
if (isSessionGoneError(e)) {
|
|
416
|
+
warn(`ensureRealSession: ${acpSid} → backend session ${zcodeSid} no longer exists`);
|
|
417
|
+
throw new Error(messages().sessionEvicted(acpSid));
|
|
418
|
+
}
|
|
419
|
+
log(`ensureRealSession: reload failed, continuing with existing mapping ` +
|
|
420
|
+
`(${e instanceof Error ? e.message : String(e)})`);
|
|
421
|
+
}
|
|
422
|
+
}
|
|
389
423
|
/**
|
|
390
424
|
* Materialize a lazy `session/new` placeholder into a real backend session on
|
|
391
425
|
* first use (prompt / set_config_option / extension methods). Idempotent:
|
|
392
426
|
* returns the existing mapping for already-created sessions, and concurrent
|
|
393
427
|
* first-uses share a single `session/create` via the pending entry's `creating`
|
|
394
428
|
* promise. Unknown ids throw.
|
|
429
|
+
*
|
|
430
|
+
* `{ensureResident:false}` (resolveResumeTarget only) skips the eviction
|
|
431
|
+
* guard for store-recovered mappings — that caller resumes the session itself
|
|
432
|
+
* immediately after, and its resume must be the one carrying the client's
|
|
433
|
+
* freshly declared mcpServers (#193).
|
|
395
434
|
*/
|
|
396
|
-
export async function ensureRealSession(server, acpSid) {
|
|
435
|
+
export async function ensureRealSession(server, acpSid, opts = {}) {
|
|
397
436
|
const existing = server.resolveSid(acpSid);
|
|
398
437
|
if (existing) {
|
|
399
438
|
// The mapping exists, but the backend may have evicted the resident
|
|
400
439
|
// runtime since it was loaded (~10min idle timeout + LRU cap): every
|
|
401
440
|
// session-scoped RPC would then fail with "Session is not active"
|
|
402
|
-
// (-32004). Reload via session/resume when the verification went stale
|
|
403
|
-
|
|
404
|
-
// Fail-safe: a failed reload just returns the mapping — the subsequent
|
|
405
|
-
// RPC surfaces the backend's real error, same as before this guard.
|
|
406
|
-
if (server.isBackendSessionLive(acpSid))
|
|
407
|
-
return existing;
|
|
408
|
-
const turnInFlight = [...server.pendingTurns.values()].some((t) => t.zcodeSid === existing);
|
|
409
|
-
if (!turnInFlight) {
|
|
410
|
-
try {
|
|
411
|
-
log(`ensureRealSession: ${acpSid} possibly evicted from backend — reloading`);
|
|
412
|
-
await reloadBackendSession(server, acpSid, existing);
|
|
413
|
-
}
|
|
414
|
-
catch (e) {
|
|
415
|
-
log(`ensureRealSession: reload failed, continuing with existing mapping ` +
|
|
416
|
-
`(${e instanceof Error ? e.message : String(e)})`);
|
|
417
|
-
}
|
|
418
|
-
}
|
|
441
|
+
// (-32004). Reload via session/resume when the verification went stale.
|
|
442
|
+
await ensureBackendResident(server, acpSid, existing);
|
|
419
443
|
return existing;
|
|
420
444
|
}
|
|
421
445
|
let pending = server.pendingSessions.get(acpSid);
|
|
@@ -438,6 +462,20 @@ export async function ensureRealSession(server, acpSid) {
|
|
|
438
462
|
}
|
|
439
463
|
if (record?.zcodeSid) {
|
|
440
464
|
server.registerSession(acpSid, record.zcodeSid);
|
|
465
|
+
// Seed the cwd the reload's resume needs — this process never saw the
|
|
466
|
+
// session/new that recorded it, and the resume workspace would
|
|
467
|
+
// otherwise fall back to the bridge's own process cwd.
|
|
468
|
+
const recordCwd = server.serveMode ? process.cwd() : record.cwd;
|
|
469
|
+
if (recordCwd && recordCwd !== "/" && !server.sessionCwds.has(acpSid)) {
|
|
470
|
+
server.sessionCwds.set(acpSid, recordCwd);
|
|
471
|
+
}
|
|
472
|
+
// Same eviction guard as in-memory mappings: a store-recovered session
|
|
473
|
+
// is NOT resident in this backend until resumed — the first switch or
|
|
474
|
+
// prompt on it would fail with "Session is not active" (observed
|
|
475
|
+
// 2026-09-18: the first model switch after a bridge restart).
|
|
476
|
+
if (opts.ensureResident !== false) {
|
|
477
|
+
await ensureBackendResident(server, acpSid, record.zcodeSid);
|
|
478
|
+
}
|
|
441
479
|
return record.zcodeSid;
|
|
442
480
|
}
|
|
443
481
|
if (record) {
|
|
@@ -642,8 +680,11 @@ async function resolveResumeTarget(server, acpSid) {
|
|
|
642
680
|
if (record) {
|
|
643
681
|
// ensureRealSession recovers the record: with a zcodeSid it re-registers
|
|
644
682
|
// the alias (no create), without one it materializes a fresh session.
|
|
683
|
+
// The eviction guard is SKIPPED here ({ensureResident:false}): this
|
|
684
|
+
// caller resumes the session itself right below — and its resume is the
|
|
685
|
+
// one that carries the client's freshly declared mcpServers (#193).
|
|
645
686
|
return {
|
|
646
|
-
zcodeSid: await ensureRealSession(server, acpSid),
|
|
687
|
+
zcodeSid: await ensureRealSession(server, acpSid, { ensureResident: false }),
|
|
647
688
|
alreadyLive: !record.zcodeSid,
|
|
648
689
|
origin: "placeholder",
|
|
649
690
|
};
|
|
@@ -2258,12 +2299,28 @@ async function resumePreservingModel(server, zcParams) {
|
|
|
2258
2299
|
result = await resumeBackendSession(server, zcParams);
|
|
2259
2300
|
}
|
|
2260
2301
|
catch (err) {
|
|
2302
|
+
// A session the backend no longer stores cannot be repaired by ANY
|
|
2303
|
+
// overlay — rethrow the honest cause instead of retrying (3.12+
|
|
2304
|
+
// backends reject the runtimeModel key outright, so the retry would
|
|
2305
|
+
// surface "Unrecognized key" and mask the real not-found failure).
|
|
2306
|
+
if (isSessionGoneError(err))
|
|
2307
|
+
throw err;
|
|
2261
2308
|
const overlay = buildResumeRuntimeModel();
|
|
2262
2309
|
if (overlay === null)
|
|
2263
2310
|
throw err;
|
|
2264
2311
|
warn(`resume failed (${err instanceof Error ? err.message : String(err)}); ` +
|
|
2265
2312
|
`retrying with default-model overlay`);
|
|
2266
|
-
|
|
2313
|
+
try {
|
|
2314
|
+
result = await resumeBackendSession(server, { ...zcParams, runtimeModel: overlay });
|
|
2315
|
+
}
|
|
2316
|
+
catch (overlayErr) {
|
|
2317
|
+
// Schema drift (3.12+ "Unrecognized key: runtimeModel"): the overlay
|
|
2318
|
+
// fallback is dead on that build — propagate the ORIGINAL failure.
|
|
2319
|
+
if (overlayErr instanceof Error && /unrecognized key/i.test(overlayErr.message)) {
|
|
2320
|
+
throw err;
|
|
2321
|
+
}
|
|
2322
|
+
throw overlayErr;
|
|
2323
|
+
}
|
|
2267
2324
|
}
|
|
2268
2325
|
// The settle rides the flight (see the docstring): joiners awaiting this
|
|
2269
2326
|
// promise are ordered after hydration, not merely after the RPC.
|
|
@@ -2367,6 +2424,17 @@ export function isTransientSendError(message) {
|
|
|
2367
2424
|
const m = message.toLowerCase();
|
|
2368
2425
|
return m.includes("模型已不可用") || /model .*(unavailable|no longer available)/.test(m);
|
|
2369
2426
|
}
|
|
2427
|
+
/**
|
|
2428
|
+
* A failure proving the backend no longer STORES the session at all — as
|
|
2429
|
+
* opposed to "Session is not active", which only means the resident runtime
|
|
2430
|
+
* was evicted and a session/resume reloads it. Matches both spellings the
|
|
2431
|
+
* builds in the wild produce ("Session not found: <sid>", "Session ID 不存在"),
|
|
2432
|
+
* mirroring translateResumeFailure's match.
|
|
2433
|
+
*/
|
|
2434
|
+
export function isSessionGoneError(e) {
|
|
2435
|
+
const raw = e instanceof Error ? e.message : String(e);
|
|
2436
|
+
return /不存在|not\s*found/i.test(raw);
|
|
2437
|
+
}
|
|
2370
2438
|
/** Get or create the session-level ProjectionDiffer (persists across turns). */
|
|
2371
2439
|
function getOrCreateDiffer(server, zcodeSid) {
|
|
2372
2440
|
let d = server.differs.get(zcodeSid);
|
|
@@ -2386,15 +2454,28 @@ function getOrCreateDiffer(server, zcodeSid) {
|
|
|
2386
2454
|
* reducer 0-fills them); the optional ones pass through as null when
|
|
2387
2455
|
* unreported. Field renames: reasoningTokens→thoughtTokens,
|
|
2388
2456
|
* cacheRead/cacheWriteTokens→cachedRead/cachedWriteTokens.
|
|
2457
|
+
*
|
|
2458
|
+
* The backend's inputTokens is OpenAI-style: it ALREADY contains the cache
|
|
2459
|
+
* read+write tokens (verified live 2026-09-18: totalTokens == inputTokens +
|
|
2460
|
+
* outputTokens on a real turn.completed frame). ACP's de-facto convention —
|
|
2461
|
+
* claude-agent-acp passthrough and DeepSeek's dsh-token-meter four-bucket
|
|
2462
|
+
* model alike — reports inputTokens EXCLUDING cache, and clients (martty's
|
|
2463
|
+
* stats-view, Zed) compute cache hit rate as cachedRead / (input + cachedRead
|
|
2464
|
+
* + cachedWrite). Forwarding the inclusive number double-counts the cache in
|
|
2465
|
+
* their denominator, so normalize: inputTokens here is cache-exclusive,
|
|
2466
|
+
* clamped at 0. totalTokens passes through unchanged — the backend's
|
|
2467
|
+
* input+output sum IS the convention's four-bucket total, arithmetically.
|
|
2389
2468
|
*/
|
|
2390
2469
|
export function toAcpTurnUsage(u) {
|
|
2391
2470
|
if (!u)
|
|
2392
2471
|
return undefined;
|
|
2393
2472
|
const num = (k) => (typeof u[k] === "number" ? u[k] : 0);
|
|
2394
2473
|
const numOrNull = (k) => typeof u[k] === "number" ? u[k] : null;
|
|
2474
|
+
const cacheRead = numOrNull("cacheReadTokens") ?? 0;
|
|
2475
|
+
const cacheWrite = numOrNull("cacheWriteTokens") ?? 0;
|
|
2395
2476
|
return {
|
|
2396
2477
|
totalTokens: num("totalTokens"),
|
|
2397
|
-
inputTokens: num("inputTokens"),
|
|
2478
|
+
inputTokens: Math.max(0, num("inputTokens") - cacheRead - cacheWrite),
|
|
2398
2479
|
outputTokens: num("outputTokens"),
|
|
2399
2480
|
thoughtTokens: numOrNull("reasoningTokens"),
|
|
2400
2481
|
cachedReadTokens: numOrNull("cacheReadTokens"),
|
|
@@ -2406,7 +2487,8 @@ export function toAcpTurnUsage(u) {
|
|
|
2406
2487
|
* turn's usage when the backend reported one (absent otherwise — no synthetic
|
|
2407
2488
|
* zeros). Spec fields carry the standard counters; backend extras (source,
|
|
2408
2489
|
* modelRequestCount, web request counts) ride in `_meta.zcode.usage` per the
|
|
2409
|
-
* bridge's extension policy
|
|
2490
|
+
* bridge's extension policy, plus `rawInputTokens` whenever normalization
|
|
2491
|
+
* changed it (reconciliation/diagnostics).
|
|
2410
2492
|
*/
|
|
2411
2493
|
export function turnResult(translator, stopReason) {
|
|
2412
2494
|
const raw = translator.turnUsage;
|
|
@@ -2418,6 +2500,9 @@ export function turnResult(translator, stopReason) {
|
|
|
2418
2500
|
if (raw[k] !== undefined)
|
|
2419
2501
|
extras[k] = raw[k];
|
|
2420
2502
|
}
|
|
2503
|
+
if (typeof raw["inputTokens"] === "number" && raw["inputTokens"] !== usage.inputTokens) {
|
|
2504
|
+
extras.rawInputTokens = raw["inputTokens"];
|
|
2505
|
+
}
|
|
2421
2506
|
return {
|
|
2422
2507
|
stopReason,
|
|
2423
2508
|
usage,
|