zcode-acp-server 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +98 -1
- package/README.zh-CN.md +81 -1
- package/dist/backend/client.d.ts +12 -4
- package/dist/backend/client.d.ts.map +1 -1
- package/dist/backend/client.js +72 -7
- package/dist/backend/client.js.map +1 -1
- package/dist/backend/credentials.d.ts.map +1 -1
- package/dist/backend/credentials.js +2 -1
- package/dist/backend/credentials.js.map +1 -1
- package/dist/backend/listener.d.ts +12 -4
- package/dist/backend/listener.d.ts.map +1 -1
- package/dist/backend/listener.js +68 -12
- package/dist/backend/listener.js.map +1 -1
- package/dist/backend/types.d.ts +1 -1
- package/dist/backend/types.d.ts.map +1 -1
- package/dist/bin/quota.d.ts +54 -0
- package/dist/bin/quota.d.ts.map +1 -0
- package/dist/bin/quota.js +333 -0
- package/dist/bin/quota.js.map +1 -0
- package/dist/config/auto-compact.d.ts +23 -0
- package/dist/config/auto-compact.d.ts.map +1 -0
- package/dist/config/auto-compact.js +67 -0
- package/dist/config/auto-compact.js.map +1 -0
- package/dist/config/mcp-discovery.d.ts +34 -0
- package/dist/config/mcp-discovery.d.ts.map +1 -0
- package/dist/config/mcp-discovery.js +153 -0
- package/dist/config/mcp-discovery.js.map +1 -0
- package/dist/config/model-cache.d.ts +12 -1
- package/dist/config/model-cache.d.ts.map +1 -1
- package/dist/config/model-cache.js +30 -8
- package/dist/config/model-cache.js.map +1 -1
- package/dist/config/options.d.ts +87 -9
- package/dist/config/options.d.ts.map +1 -1
- package/dist/config/options.js +248 -45
- package/dist/config/options.js.map +1 -1
- package/dist/config/plugin-commands.d.ts +24 -0
- package/dist/config/plugin-commands.d.ts.map +1 -0
- package/dist/config/plugin-commands.js +107 -0
- package/dist/config/plugin-commands.js.map +1 -0
- package/dist/config/provider-registry.d.ts +60 -0
- package/dist/config/provider-registry.d.ts.map +1 -0
- package/dist/config/provider-registry.js +128 -0
- package/dist/config/provider-registry.js.map +1 -0
- package/dist/config/runtime-model.d.ts +54 -18
- package/dist/config/runtime-model.d.ts.map +1 -1
- package/dist/config/runtime-model.js +105 -61
- package/dist/config/runtime-model.js.map +1 -1
- package/dist/config/skill-discovery.d.ts +35 -0
- package/dist/config/skill-discovery.d.ts.map +1 -0
- package/dist/config/skill-discovery.js +188 -0
- package/dist/config/skill-discovery.js.map +1 -0
- package/dist/handlers/background-tasks.d.ts +72 -0
- package/dist/handlers/background-tasks.d.ts.map +1 -0
- package/dist/handlers/background-tasks.js +330 -0
- package/dist/handlers/background-tasks.js.map +1 -0
- package/dist/handlers/dispatch.d.ts.map +1 -1
- package/dist/handlers/dispatch.js +134 -22
- package/dist/handlers/dispatch.js.map +1 -1
- package/dist/handlers/extensions.d.ts +15 -0
- package/dist/handlers/extensions.d.ts.map +1 -1
- package/dist/handlers/extensions.js +43 -27
- package/dist/handlers/extensions.js.map +1 -1
- package/dist/handlers/io.d.ts +11 -2
- package/dist/handlers/io.d.ts.map +1 -1
- package/dist/handlers/io.js +51 -7
- package/dist/handlers/io.js.map +1 -1
- package/dist/handlers/server-requests.d.ts +20 -4
- package/dist/handlers/server-requests.d.ts.map +1 -1
- package/dist/handlers/server-requests.js +293 -63
- package/dist/handlers/server-requests.js.map +1 -1
- package/dist/handlers/session.d.ts +113 -10
- package/dist/handlers/session.d.ts.map +1 -1
- package/dist/handlers/session.js +876 -220
- package/dist/handlers/session.js.map +1 -1
- package/dist/handlers/slash.d.ts +14 -0
- package/dist/handlers/slash.d.ts.map +1 -1
- package/dist/handlers/slash.js +80 -6
- package/dist/handlers/slash.js.map +1 -1
- package/dist/index.js +38 -4
- package/dist/index.js.map +1 -1
- package/dist/interaction/adapter.d.ts +19 -33
- package/dist/interaction/adapter.d.ts.map +1 -1
- package/dist/interaction/adapter.js +80 -79
- package/dist/interaction/adapter.js.map +1 -1
- package/dist/lazy-sessions.d.ts +35 -0
- package/dist/lazy-sessions.d.ts.map +1 -0
- package/dist/lazy-sessions.js +98 -0
- package/dist/lazy-sessions.js.map +1 -0
- package/dist/quota/cache.d.ts +18 -0
- package/dist/quota/cache.d.ts.map +1 -0
- package/dist/quota/cache.js +32 -0
- package/dist/quota/cache.js.map +1 -0
- package/dist/quota/client.d.ts +30 -0
- package/dist/quota/client.d.ts.map +1 -0
- package/dist/quota/client.js +57 -0
- package/dist/quota/client.js.map +1 -0
- package/dist/quota/color.d.ts +58 -0
- package/dist/quota/color.d.ts.map +1 -0
- package/dist/quota/color.js +95 -0
- package/dist/quota/color.js.map +1 -0
- package/dist/quota/combined.d.ts +66 -0
- package/dist/quota/combined.d.ts.map +1 -0
- package/dist/quota/combined.js +179 -0
- package/dist/quota/combined.js.map +1 -0
- package/dist/quota/format.d.ts +105 -0
- package/dist/quota/format.d.ts.map +1 -0
- package/dist/quota/format.js +219 -0
- package/dist/quota/format.js.map +1 -0
- package/dist/quota/index.d.ts +23 -0
- package/dist/quota/index.d.ts.map +1 -0
- package/dist/quota/index.js +42 -0
- package/dist/quota/index.js.map +1 -0
- package/dist/quota/opencode-go/cache.d.ts +17 -0
- package/dist/quota/opencode-go/cache.d.ts.map +1 -0
- package/dist/quota/opencode-go/cache.js +31 -0
- package/dist/quota/opencode-go/cache.js.map +1 -0
- package/dist/quota/opencode-go/client.d.ts +28 -0
- package/dist/quota/opencode-go/client.d.ts.map +1 -0
- package/dist/quota/opencode-go/client.js +48 -0
- package/dist/quota/opencode-go/client.js.map +1 -0
- package/dist/quota/opencode-go/config.d.ts +37 -0
- package/dist/quota/opencode-go/config.d.ts.map +1 -0
- package/dist/quota/opencode-go/config.js +58 -0
- package/dist/quota/opencode-go/config.js.map +1 -0
- package/dist/quota/opencode-go/format.d.ts +36 -0
- package/dist/quota/opencode-go/format.d.ts.map +1 -0
- package/dist/quota/opencode-go/format.js +87 -0
- package/dist/quota/opencode-go/format.js.map +1 -0
- package/dist/quota/opencode-go/index.d.ts +30 -0
- package/dist/quota/opencode-go/index.d.ts.map +1 -0
- package/dist/quota/opencode-go/index.js +108 -0
- package/dist/quota/opencode-go/index.js.map +1 -0
- package/dist/quota/opencode-go/parse.d.ts +41 -0
- package/dist/quota/opencode-go/parse.d.ts.map +1 -0
- package/dist/quota/opencode-go/parse.js +75 -0
- package/dist/quota/opencode-go/parse.js.map +1 -0
- package/dist/quota/opencode-go/types.d.ts +48 -0
- package/dist/quota/opencode-go/types.d.ts.map +1 -0
- package/dist/quota/opencode-go/types.js +11 -0
- package/dist/quota/opencode-go/types.js.map +1 -0
- package/dist/quota/parse.d.ts +33 -0
- package/dist/quota/parse.d.ts.map +1 -0
- package/dist/quota/parse.js +200 -0
- package/dist/quota/parse.js.map +1 -0
- package/dist/quota/types.d.ts +72 -0
- package/dist/quota/types.d.ts.map +1 -0
- package/dist/quota/types.js +10 -0
- package/dist/quota/types.js.map +1 -0
- package/dist/server.d.ts +104 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +119 -2
- package/dist/server.js.map +1 -1
- package/dist/tasks-index.d.ts +14 -4
- package/dist/tasks-index.d.ts.map +1 -1
- package/dist/tasks-index.js +145 -46
- package/dist/tasks-index.js.map +1 -1
- package/dist/translators/event-translator.d.ts +33 -0
- package/dist/translators/event-translator.d.ts.map +1 -1
- package/dist/translators/event-translator.js +101 -0
- package/dist/translators/event-translator.js.map +1 -1
- package/dist/translators/index.d.ts +1 -1
- package/dist/translators/index.d.ts.map +1 -1
- package/dist/translators/index.js +1 -1
- package/dist/translators/index.js.map +1 -1
- package/dist/translators/projection-differ.d.ts +8 -0
- package/dist/translators/projection-differ.d.ts.map +1 -1
- package/dist/translators/projection-differ.js +19 -9
- package/dist/translators/projection-differ.js.map +1 -1
- package/dist/translators/tool-helpers.d.ts +28 -0
- package/dist/translators/tool-helpers.d.ts.map +1 -1
- package/dist/translators/tool-helpers.js +104 -0
- package/dist/translators/tool-helpers.js.map +1 -1
- package/dist/translators/types.d.ts +38 -1
- package/dist/translators/types.d.ts.map +1 -1
- package/dist/translators/types.js.map +1 -1
- package/dist/utils.d.ts +35 -6
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +52 -4
- package/dist/utils.js.map +1 -1
- package/docs/ARCHITECTURE.md +96 -38
- package/docs/BACKLOG.md +57 -0
- package/docs/DEVELOPMENT.md +5 -0
- package/docs/PROTOCOL.md +270 -5
- package/docs/TROUBLESHOOTING.md +98 -14
- package/docs/agents/domain.md +51 -0
- package/docs/agents/issue-tracker.md +22 -0
- package/docs/agents/triage-labels.md +15 -0
- package/package.json +6 -5
|
@@ -1,18 +1,35 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Session lifecycle handlers: initialize, new, list, resume, load, prompt, cancel.
|
|
3
3
|
*
|
|
4
|
-
* These map ACP session methods to ZCode app-server calls. `session/
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* These map ACP session methods to ZCode app-server calls. `session/new` is
|
|
5
|
+
* lazy: it returns a placeholder id and defers zcode `session/create` to the
|
|
6
|
+
* session's first use (`ensureRealSession`), so an editor startup that never
|
|
7
|
+
* prompts leaves no empty session in the backend or the App's task index.
|
|
8
|
+
* `session/prompt` runs the event-driven turn loop (subscribe-before-send
|
|
9
|
+
* ordering, no-progress timeout, stall reconciliation). ZCode events are
|
|
10
|
+
* translated via EventTranslator and dispatched as ACP `session/update`
|
|
11
|
+
* notifications.
|
|
8
12
|
*/
|
|
9
13
|
import type * as acp from "@agentclientprotocol/sdk";
|
|
10
14
|
import type { ZcodeAcpServer } from "../server.js";
|
|
11
|
-
/**
|
|
15
|
+
/**
|
|
16
|
+
* `session/new` → local placeholder id. The real zcode `session/create` is
|
|
17
|
+
* deferred to first use (`ensureRealSession`) so an editor startup that never
|
|
18
|
+
* sends a message leaves no empty session in the backend or the App's task
|
|
19
|
+
* index. The created session uses mode yolo (hardcoded).
|
|
20
|
+
*/
|
|
12
21
|
export declare function newSession(server: ZcodeAcpServer, params: acp.NewSessionRequest): Promise<acp.NewSessionResponse>;
|
|
22
|
+
/**
|
|
23
|
+
* Materialize a lazy `session/new` placeholder into a real backend session on
|
|
24
|
+
* first use (prompt / set_config_option / extension methods). Idempotent:
|
|
25
|
+
* returns the existing mapping for already-created sessions, and concurrent
|
|
26
|
+
* first-uses share a single `session/create` via the pending entry's `creating`
|
|
27
|
+
* promise. Unknown ids throw.
|
|
28
|
+
*/
|
|
29
|
+
export declare function ensureRealSession(server: ZcodeAcpServer, acpSid: string): Promise<string>;
|
|
13
30
|
/** `session/list` → zcode `session/list`. */
|
|
14
31
|
export declare function listSessions(server: ZcodeAcpServer, params: acp.ListSessionsRequest): Promise<acp.ListSessionsResponse>;
|
|
15
|
-
/** `session/resume` → zcode `session/resume` (with runtimeModel overlay
|
|
32
|
+
/** `session/resume` → zcode `session/resume` (with runtimeModel overlay). */
|
|
16
33
|
export declare function resumeSession(server: ZcodeAcpServer, params: acp.ResumeSessionRequest, cx: acp.AgentContext): Promise<acp.ResumeSessionResponse>;
|
|
17
34
|
/**
|
|
18
35
|
* `session/load` → zcode `session/resume` + stream conversation history back as
|
|
@@ -27,12 +44,89 @@ export declare function prompt(server: ZcodeAcpServer, params: acp.PromptRequest
|
|
|
27
44
|
*/
|
|
28
45
|
export declare function setConfigOptionHandler(server: ZcodeAcpServer, params: acp.SetSessionConfigOptionRequest, cx: acp.AgentContext): Promise<acp.SetSessionConfigOptionResponse>;
|
|
29
46
|
/**
|
|
30
|
-
* `session/cancel` →
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
47
|
+
* `session/cancel` → stop the in-flight turn immediately. Mirrors the ZCode
|
|
48
|
+
* App's stop button, which sends a stop command directly (there is no
|
|
49
|
+
* "cancel" concept on the client — only stop).
|
|
50
|
+
*
|
|
51
|
+
* We fire `session/stop` here instead of deferring it to the turn loop. The
|
|
52
|
+
* loop is blocked for seconds at a time behind awaits (handleServerRequests
|
|
53
|
+
* waiting on a permission popup; dispatchEvent running per-event; the
|
|
54
|
+
* tool-result path awaiting dispatchEditDiff/dispatchPlanIfChanged backend
|
|
55
|
+
* calls with up to 8s timeouts). A deferred stop only fires once the loop
|
|
56
|
+
* finishes whatever await it is stuck in, so the user's press of stop can lag
|
|
57
|
+
* by the full remaining await window — the turn visibly "keeps running".
|
|
58
|
+
* `session/stop` is fire-and-forget and fully idempotent (the backend no-ops
|
|
59
|
+
* on a session with no active turn, and on a turn already aborted), so firing
|
|
60
|
+
* it eagerly is safe; the loop's `stopSent` guard prevents a second send.
|
|
61
|
+
*
|
|
62
|
+
* `turn.cancelled` is still set so the turn loop switches to its silent-drain
|
|
63
|
+
* path (translate to detect turnDone, but discard every internal event — no
|
|
64
|
+
* text/tool/usage is pushed after the user stopped).
|
|
34
65
|
*/
|
|
35
66
|
export declare function cancel(server: ZcodeAcpServer, params: acp.CancelNotification): Promise<void>;
|
|
67
|
+
/**
|
|
68
|
+
* Cancel any other in-flight turn for this zcodeSid: fire `session/stop` and
|
|
69
|
+
* signal the old turn to stop retrying, then return immediately.
|
|
70
|
+
*
|
|
71
|
+
* We do NOT wait for the old turn's runEventTurn to exit. Previously this spun
|
|
72
|
+
* on `pendingTurns` deletion (the old turn's finally), but that signal only
|
|
73
|
+
* proves "the old turn's loop returned" — NOT "the backend is ready for a new
|
|
74
|
+
* turn". Waiting on it blocked the new prompt in a long loading state while
|
|
75
|
+
* the backend's stop-recovery window elapsed, and it still didn't prevent the
|
|
76
|
+
* next send from racing the backend. The backend's prompt lock is the only
|
|
77
|
+
* authoritative readiness signal: the new prompt's `session/send` retries
|
|
78
|
+
* until the lock releases, so there is nothing useful to wait for here.
|
|
79
|
+
*
|
|
80
|
+
* The old turn's runEventTurn ends on its own once it sees a terminal event
|
|
81
|
+
* from the backend (turn.completed/turn.failed after stop). Until then it
|
|
82
|
+
* keeps dispatching whatever the backend sends for this session — which is
|
|
83
|
+
* correct, because within a single session the backend is the single source
|
|
84
|
+
* of truth and its events should reach the client.
|
|
85
|
+
*
|
|
86
|
+
* Exported for unit tests (multi-turn pendingTurns scenarios).
|
|
87
|
+
*/
|
|
88
|
+
export declare function preemptInFlightTurn(server: ZcodeAcpServer, zcodeSid: string, selfRequestId: number): boolean;
|
|
89
|
+
/** Concatenate text from ACP ContentBlock[] into a prompt string.
|
|
90
|
+
* Exported for unit testing (the resource_link path is easy to break). */
|
|
91
|
+
export declare function extractPromptText(blocks: acp.ContentBlock[] | undefined): string;
|
|
92
|
+
/**
|
|
93
|
+
* ACP `ContentBlock::Image` → zcode `session/send` attachment.
|
|
94
|
+
*
|
|
95
|
+
* zcode's per-attachment normalizer accepts either a `localPath` (absolute FS
|
|
96
|
+
* path, preferred) or `dataBase64` + `mimeType` (raw base64, no data: prefix).
|
|
97
|
+
* ACP `ImageContent` carries `data` (base64) and an optional `uri`; when the
|
|
98
|
+
* uri is a file:// pointer we send localPath so the backend streams from disk
|
|
99
|
+
* instead of re-encoding.
|
|
100
|
+
*/
|
|
101
|
+
export interface ImageAttachment {
|
|
102
|
+
kind: "image";
|
|
103
|
+
filename: string;
|
|
104
|
+
mimeType: string;
|
|
105
|
+
sizeBytes?: number;
|
|
106
|
+
dataBase64?: string;
|
|
107
|
+
localPath?: string;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Extract image attachments from ACP ContentBlock[]. Non-image blocks are
|
|
111
|
+
* ignored (text/resource_link/resource stay owned by `extractPromptText`).
|
|
112
|
+
* Exported for unit testing.
|
|
113
|
+
*/
|
|
114
|
+
export declare function extractAttachments(blocks: acp.ContentBlock[] | undefined): ImageAttachment[];
|
|
115
|
+
/**
|
|
116
|
+
* Turn-attribution gate decision (pure, exported for tests): whether an event
|
|
117
|
+
* observed before this turn's own `turn.started` should be dropped as leftover
|
|
118
|
+
* residue of a prior turn.
|
|
119
|
+
*
|
|
120
|
+
* Residue only exists when this send preempted/cancelled another prompt (its
|
|
121
|
+
* finalising events land in the new listener's queue). Without preemption the
|
|
122
|
+
* queue can only carry events of a backend-owned turn already active at send
|
|
123
|
+
* time — e.g. the main-branch turn auto-resumed after a compaction — which
|
|
124
|
+
* this send was steered into and which emits no new `turn.started`; dropping
|
|
125
|
+
* those events would silently swallow the whole turn's output in the UI.
|
|
126
|
+
*/
|
|
127
|
+
export declare function shouldDropEventForTurnAttribution(ev: {
|
|
128
|
+
type: string;
|
|
129
|
+
}, turnStarted: boolean, preempted: boolean): boolean;
|
|
36
130
|
/**
|
|
37
131
|
* Flatten the todos payload from `session/read`. Prefers the top-level `todos`;
|
|
38
132
|
* when empty, flattens `todoGroups` — the real backend dump carries todos as a
|
|
@@ -43,4 +137,13 @@ export declare function flattenTodos(todos: unknown[] | undefined, todoGroups: A
|
|
|
43
137
|
entries?: unknown[];
|
|
44
138
|
todos?: unknown[];
|
|
45
139
|
}> | undefined): unknown[];
|
|
140
|
+
/**
|
|
141
|
+
* Re-read the authoritative session mode and, if it changed since the last
|
|
142
|
+
* value advertised to the client, emit `current_mode_update` +
|
|
143
|
+
* `config_option_update`. Covers in-turn mode switches performed by internal
|
|
144
|
+
* tools (EnterPlanMode/ExitPlanMode) that bypass `session/setMode` and thus
|
|
145
|
+
* emit no notification of their own. Best-effort: failures are logged and
|
|
146
|
+
* swallowed so they never break the turn-completion path.
|
|
147
|
+
*/
|
|
148
|
+
export declare function emitModeIfChanged(server: ZcodeAcpServer, cx: acp.AgentContext, acpSid: string, zcodeSid: string): Promise<void>;
|
|
46
149
|
//# sourceMappingURL=session.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/handlers/session.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/handlers/session.ts"],"names":[],"mappings":"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"}
|