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.
Files changed (188) hide show
  1. package/README.md +98 -1
  2. package/README.zh-CN.md +81 -1
  3. package/dist/backend/client.d.ts +12 -4
  4. package/dist/backend/client.d.ts.map +1 -1
  5. package/dist/backend/client.js +72 -7
  6. package/dist/backend/client.js.map +1 -1
  7. package/dist/backend/credentials.d.ts.map +1 -1
  8. package/dist/backend/credentials.js +2 -1
  9. package/dist/backend/credentials.js.map +1 -1
  10. package/dist/backend/listener.d.ts +12 -4
  11. package/dist/backend/listener.d.ts.map +1 -1
  12. package/dist/backend/listener.js +68 -12
  13. package/dist/backend/listener.js.map +1 -1
  14. package/dist/backend/types.d.ts +1 -1
  15. package/dist/backend/types.d.ts.map +1 -1
  16. package/dist/bin/quota.d.ts +54 -0
  17. package/dist/bin/quota.d.ts.map +1 -0
  18. package/dist/bin/quota.js +333 -0
  19. package/dist/bin/quota.js.map +1 -0
  20. package/dist/config/auto-compact.d.ts +23 -0
  21. package/dist/config/auto-compact.d.ts.map +1 -0
  22. package/dist/config/auto-compact.js +67 -0
  23. package/dist/config/auto-compact.js.map +1 -0
  24. package/dist/config/mcp-discovery.d.ts +34 -0
  25. package/dist/config/mcp-discovery.d.ts.map +1 -0
  26. package/dist/config/mcp-discovery.js +153 -0
  27. package/dist/config/mcp-discovery.js.map +1 -0
  28. package/dist/config/model-cache.d.ts +12 -1
  29. package/dist/config/model-cache.d.ts.map +1 -1
  30. package/dist/config/model-cache.js +30 -8
  31. package/dist/config/model-cache.js.map +1 -1
  32. package/dist/config/options.d.ts +87 -9
  33. package/dist/config/options.d.ts.map +1 -1
  34. package/dist/config/options.js +248 -45
  35. package/dist/config/options.js.map +1 -1
  36. package/dist/config/plugin-commands.d.ts +24 -0
  37. package/dist/config/plugin-commands.d.ts.map +1 -0
  38. package/dist/config/plugin-commands.js +107 -0
  39. package/dist/config/plugin-commands.js.map +1 -0
  40. package/dist/config/provider-registry.d.ts +60 -0
  41. package/dist/config/provider-registry.d.ts.map +1 -0
  42. package/dist/config/provider-registry.js +128 -0
  43. package/dist/config/provider-registry.js.map +1 -0
  44. package/dist/config/runtime-model.d.ts +54 -18
  45. package/dist/config/runtime-model.d.ts.map +1 -1
  46. package/dist/config/runtime-model.js +105 -61
  47. package/dist/config/runtime-model.js.map +1 -1
  48. package/dist/config/skill-discovery.d.ts +35 -0
  49. package/dist/config/skill-discovery.d.ts.map +1 -0
  50. package/dist/config/skill-discovery.js +188 -0
  51. package/dist/config/skill-discovery.js.map +1 -0
  52. package/dist/handlers/background-tasks.d.ts +72 -0
  53. package/dist/handlers/background-tasks.d.ts.map +1 -0
  54. package/dist/handlers/background-tasks.js +330 -0
  55. package/dist/handlers/background-tasks.js.map +1 -0
  56. package/dist/handlers/dispatch.d.ts.map +1 -1
  57. package/dist/handlers/dispatch.js +134 -22
  58. package/dist/handlers/dispatch.js.map +1 -1
  59. package/dist/handlers/extensions.d.ts +15 -0
  60. package/dist/handlers/extensions.d.ts.map +1 -1
  61. package/dist/handlers/extensions.js +43 -27
  62. package/dist/handlers/extensions.js.map +1 -1
  63. package/dist/handlers/io.d.ts +11 -2
  64. package/dist/handlers/io.d.ts.map +1 -1
  65. package/dist/handlers/io.js +51 -7
  66. package/dist/handlers/io.js.map +1 -1
  67. package/dist/handlers/server-requests.d.ts +20 -4
  68. package/dist/handlers/server-requests.d.ts.map +1 -1
  69. package/dist/handlers/server-requests.js +293 -63
  70. package/dist/handlers/server-requests.js.map +1 -1
  71. package/dist/handlers/session.d.ts +113 -10
  72. package/dist/handlers/session.d.ts.map +1 -1
  73. package/dist/handlers/session.js +876 -220
  74. package/dist/handlers/session.js.map +1 -1
  75. package/dist/handlers/slash.d.ts +14 -0
  76. package/dist/handlers/slash.d.ts.map +1 -1
  77. package/dist/handlers/slash.js +80 -6
  78. package/dist/handlers/slash.js.map +1 -1
  79. package/dist/index.js +38 -4
  80. package/dist/index.js.map +1 -1
  81. package/dist/interaction/adapter.d.ts +19 -33
  82. package/dist/interaction/adapter.d.ts.map +1 -1
  83. package/dist/interaction/adapter.js +80 -79
  84. package/dist/interaction/adapter.js.map +1 -1
  85. package/dist/lazy-sessions.d.ts +35 -0
  86. package/dist/lazy-sessions.d.ts.map +1 -0
  87. package/dist/lazy-sessions.js +98 -0
  88. package/dist/lazy-sessions.js.map +1 -0
  89. package/dist/quota/cache.d.ts +18 -0
  90. package/dist/quota/cache.d.ts.map +1 -0
  91. package/dist/quota/cache.js +32 -0
  92. package/dist/quota/cache.js.map +1 -0
  93. package/dist/quota/client.d.ts +30 -0
  94. package/dist/quota/client.d.ts.map +1 -0
  95. package/dist/quota/client.js +57 -0
  96. package/dist/quota/client.js.map +1 -0
  97. package/dist/quota/color.d.ts +58 -0
  98. package/dist/quota/color.d.ts.map +1 -0
  99. package/dist/quota/color.js +95 -0
  100. package/dist/quota/color.js.map +1 -0
  101. package/dist/quota/combined.d.ts +66 -0
  102. package/dist/quota/combined.d.ts.map +1 -0
  103. package/dist/quota/combined.js +179 -0
  104. package/dist/quota/combined.js.map +1 -0
  105. package/dist/quota/format.d.ts +105 -0
  106. package/dist/quota/format.d.ts.map +1 -0
  107. package/dist/quota/format.js +219 -0
  108. package/dist/quota/format.js.map +1 -0
  109. package/dist/quota/index.d.ts +23 -0
  110. package/dist/quota/index.d.ts.map +1 -0
  111. package/dist/quota/index.js +42 -0
  112. package/dist/quota/index.js.map +1 -0
  113. package/dist/quota/opencode-go/cache.d.ts +17 -0
  114. package/dist/quota/opencode-go/cache.d.ts.map +1 -0
  115. package/dist/quota/opencode-go/cache.js +31 -0
  116. package/dist/quota/opencode-go/cache.js.map +1 -0
  117. package/dist/quota/opencode-go/client.d.ts +28 -0
  118. package/dist/quota/opencode-go/client.d.ts.map +1 -0
  119. package/dist/quota/opencode-go/client.js +48 -0
  120. package/dist/quota/opencode-go/client.js.map +1 -0
  121. package/dist/quota/opencode-go/config.d.ts +37 -0
  122. package/dist/quota/opencode-go/config.d.ts.map +1 -0
  123. package/dist/quota/opencode-go/config.js +58 -0
  124. package/dist/quota/opencode-go/config.js.map +1 -0
  125. package/dist/quota/opencode-go/format.d.ts +36 -0
  126. package/dist/quota/opencode-go/format.d.ts.map +1 -0
  127. package/dist/quota/opencode-go/format.js +87 -0
  128. package/dist/quota/opencode-go/format.js.map +1 -0
  129. package/dist/quota/opencode-go/index.d.ts +30 -0
  130. package/dist/quota/opencode-go/index.d.ts.map +1 -0
  131. package/dist/quota/opencode-go/index.js +108 -0
  132. package/dist/quota/opencode-go/index.js.map +1 -0
  133. package/dist/quota/opencode-go/parse.d.ts +41 -0
  134. package/dist/quota/opencode-go/parse.d.ts.map +1 -0
  135. package/dist/quota/opencode-go/parse.js +75 -0
  136. package/dist/quota/opencode-go/parse.js.map +1 -0
  137. package/dist/quota/opencode-go/types.d.ts +48 -0
  138. package/dist/quota/opencode-go/types.d.ts.map +1 -0
  139. package/dist/quota/opencode-go/types.js +11 -0
  140. package/dist/quota/opencode-go/types.js.map +1 -0
  141. package/dist/quota/parse.d.ts +33 -0
  142. package/dist/quota/parse.d.ts.map +1 -0
  143. package/dist/quota/parse.js +200 -0
  144. package/dist/quota/parse.js.map +1 -0
  145. package/dist/quota/types.d.ts +72 -0
  146. package/dist/quota/types.d.ts.map +1 -0
  147. package/dist/quota/types.js +10 -0
  148. package/dist/quota/types.js.map +1 -0
  149. package/dist/server.d.ts +104 -0
  150. package/dist/server.d.ts.map +1 -1
  151. package/dist/server.js +119 -2
  152. package/dist/server.js.map +1 -1
  153. package/dist/tasks-index.d.ts +14 -4
  154. package/dist/tasks-index.d.ts.map +1 -1
  155. package/dist/tasks-index.js +145 -46
  156. package/dist/tasks-index.js.map +1 -1
  157. package/dist/translators/event-translator.d.ts +33 -0
  158. package/dist/translators/event-translator.d.ts.map +1 -1
  159. package/dist/translators/event-translator.js +101 -0
  160. package/dist/translators/event-translator.js.map +1 -1
  161. package/dist/translators/index.d.ts +1 -1
  162. package/dist/translators/index.d.ts.map +1 -1
  163. package/dist/translators/index.js +1 -1
  164. package/dist/translators/index.js.map +1 -1
  165. package/dist/translators/projection-differ.d.ts +8 -0
  166. package/dist/translators/projection-differ.d.ts.map +1 -1
  167. package/dist/translators/projection-differ.js +19 -9
  168. package/dist/translators/projection-differ.js.map +1 -1
  169. package/dist/translators/tool-helpers.d.ts +28 -0
  170. package/dist/translators/tool-helpers.d.ts.map +1 -1
  171. package/dist/translators/tool-helpers.js +104 -0
  172. package/dist/translators/tool-helpers.js.map +1 -1
  173. package/dist/translators/types.d.ts +38 -1
  174. package/dist/translators/types.d.ts.map +1 -1
  175. package/dist/translators/types.js.map +1 -1
  176. package/dist/utils.d.ts +35 -6
  177. package/dist/utils.d.ts.map +1 -1
  178. package/dist/utils.js +52 -4
  179. package/dist/utils.js.map +1 -1
  180. package/docs/ARCHITECTURE.md +96 -38
  181. package/docs/BACKLOG.md +57 -0
  182. package/docs/DEVELOPMENT.md +5 -0
  183. package/docs/PROTOCOL.md +270 -5
  184. package/docs/TROUBLESHOOTING.md +98 -14
  185. package/docs/agents/domain.md +51 -0
  186. package/docs/agents/issue-tracker.md +22 -0
  187. package/docs/agents/triage-labels.md +15 -0
  188. package/package.json +6 -5
@@ -9,8 +9,9 @@
9
9
  */
10
10
  import { randomUUID } from "node:crypto";
11
11
  import { currentModelCached } from "../config/model-cache.js";
12
- import { modelContextWindow } from "../config/options.js";
13
- import { extractExitCode, TOOL_KIND_MAP } from "../translators/tool-helpers.js";
12
+ import { buildConfigOptions, formatModelValue, modelContextWindow, parseModelValue, } from "../config/options.js";
13
+ import { extractExitCode, parseSubagentMetadata, TOOL_KIND_MAP, } from "../translators/tool-helpers.js";
14
+ import { warn } from "../utils.js";
14
15
  import { sendSessionUpdate } from "./io.js";
15
16
  /** Dispatch one internal event to the ACP client as a session/update. */
16
17
  export async function dispatchEvent(server, cx, acpSid, ev, chunkMsgId) {
@@ -47,6 +48,52 @@ export async function dispatchEvent(server, cx, acpSid, ev, chunkMsgId) {
47
48
  case "FilesChanged":
48
49
  await dispatchFilesChanged(cx, acpSid, ev);
49
50
  break;
51
+ case "ConfigChanged":
52
+ await dispatchConfigChanged(server, cx, acpSid, ev);
53
+ break;
54
+ }
55
+ }
56
+ /**
57
+ * Session settings changed (model/mode/thoughtLevel switch). Push the rebuilt
58
+ * configOptions (+ current_mode_update for mode) so the editor UI follows the
59
+ * switch immediately — even mid-turn, without waiting for turn completion.
60
+ *
61
+ * Builds the option structures from the session's authoritative settings
62
+ * (`session/read` via buildConfigOptions), then overlays the values from the
63
+ * event patch. A state.updated patch only carries the fields that actually
64
+ * changed, so building from the null defaults instead would reset every
65
+ * untouched field — most visibly the model dropdown jumping back to the
66
+ * default model mid-conversation.
67
+ * Best-effort: failures are logged and swallowed, never thrown into the loop.
68
+ */
69
+ async function dispatchConfigChanged(server, cx, acpSid, ev) {
70
+ try {
71
+ // Fall back to null (defaults) only if the session mapping isn't live yet —
72
+ // events routed through a registered turn loop always have it.
73
+ const zcodeSid = server.resolveSid(acpSid) ?? null;
74
+ const options = await buildConfigOptions(server, zcodeSid);
75
+ if (ev.model)
76
+ options[0].currentValue = formatModelValue(ev.model.providerId, ev.model.modelId);
77
+ if (ev.mode !== undefined)
78
+ options[1].currentValue = ev.mode;
79
+ if (ev.thought !== undefined)
80
+ options[2].currentValue = ev.thought;
81
+ await sendSessionUpdate(cx, acpSid, {
82
+ sessionUpdate: "config_option_update",
83
+ configOptions: options,
84
+ });
85
+ if (ev.mode !== undefined) {
86
+ // Mirror the advertised mode so turn-completion reconciliation
87
+ // (emitModeIfChanged) doesn't re-emit the same value.
88
+ server.lastMode.set(acpSid, ev.mode);
89
+ await sendSessionUpdate(cx, acpSid, {
90
+ sessionUpdate: "current_mode_update",
91
+ currentModeId: ev.mode,
92
+ });
93
+ }
94
+ }
95
+ catch (e) {
96
+ warn(`dispatch: ConfigChanged failed (${e instanceof Error ? e.message : String(e)})`);
50
97
  }
51
98
  }
52
99
  function dispatchToolCallNew(server, cx, acpSid, ev) {
@@ -54,6 +101,9 @@ function dispatchToolCallNew(server, cx, acpSid, ev) {
54
101
  const meta = { claudeCode: { toolName: ev.tool } };
55
102
  if (termSupported)
56
103
  meta["terminal_info"] = { terminal_id: ev.callId };
104
+ // Mark sub-agent dispatch cards so editors can badge them from creation.
105
+ if (ev.tool === "Agent" || ev.tool === "Task")
106
+ meta["subagent"] = true;
57
107
  const update = {
58
108
  sessionUpdate: "tool_call",
59
109
  toolCallId: ev.callId,
@@ -80,8 +130,18 @@ function dispatchToolCallUpdate(server, cx, acpSid, ev) {
80
130
  const toolName = ev.tool ?? "";
81
131
  const termSupported = server.supportsTerminalOutput() && (toolName === "Bash" || toolName === "bash");
82
132
  if (termSupported) {
83
- // Bash terminal protocol (full 2-notification split arrives in Commit 5).
84
- // For now emit the terminal_output data + the standard update with status.
133
+ // Background Bash: the `result` event carries the launch acknowledgement
134
+ // ("Command running in background with ID: exec_…"), NOT the final output.
135
+ // Closing the card now (terminal_exit + status:completed) would make it
136
+ // indistinguishable from a normal Bash call and steal the lifecycle from
137
+ // the BackgroundTaskListener, which owns the real completion via
138
+ // out-of-band `session.updated` events. So stream any launch text via
139
+ // terminal_output and leave the card in_progress.
140
+ if (ev.background) {
141
+ return dispatchTerminalUpdate(server, cx, acpSid, ev, toolName, {
142
+ skipExit: true,
143
+ });
144
+ }
85
145
  return dispatchTerminalUpdate(server, cx, acpSid, ev, toolName);
86
146
  }
87
147
  const update = {
@@ -92,6 +152,15 @@ function dispatchToolCallUpdate(server, cx, acpSid, ev) {
92
152
  const meta = {};
93
153
  if (toolName)
94
154
  meta["claudeCode"] = { toolName };
155
+ // Sub-agent (Agent/Task tool) result: surface structured metadata so editors
156
+ // can badge the card (agentId, background flag, token/tool/time usage). The
157
+ // raw result text is left in `content` for the user-facing view.
158
+ if ((toolName === "Agent" || toolName === "Task") &&
159
+ (ev.status === "completed" || ev.status === "failed")) {
160
+ const sub = parseSubagentMetadata(ev.rawResult);
161
+ if (sub)
162
+ meta["subagent"] = sub;
163
+ }
95
164
  if (ev.output !== undefined)
96
165
  update.rawOutput = ev.output;
97
166
  if (ev.diffContent && ev.diffContent.length > 0) {
@@ -110,30 +179,69 @@ function dispatchToolCallUpdate(server, cx, acpSid, ev) {
110
179
  * Bash terminal update — the 2-notification split (matches acp-agent.ts:5061-5094
111
180
  * and the Python bridge's _dispatch_event). Zed correlates by terminal_id, so
112
181
  * the two notifications MUST be separate:
113
- * ① terminal_output — pure data, no status/content. Sent on BOTH progress and
114
- * result states (whenever there's data) so live output streams.
182
+ * ① terminal_output — pure data, no status/content. Streams live output.
115
183
  * ② terminal_exit — terminal state only: status + content[type:terminal] +
116
- * _meta.terminal_exit (with exitCode) + rawOutput text fallback. Sent ONLY
117
- * on completed/failed.
184
+ * _meta.terminal_exit (with exitCode). Sent ONLY on completed/failed.
118
185
  *
119
186
  * Merging them into one notification causes Zed to clear the content once the
120
187
  * turn completes (the original bug); splitting keeps the output visible.
188
+ *
189
+ * OUTPUT DEDUP (two distinct hazards, both fixed here):
190
+ * - Progress replay: zcode's `stdoutTail` is a CUMULATIVE snapshot of the tail,
191
+ * but terminal_output.data is APPEND semantics. Without diffing, each progress
192
+ * event replays the whole tail → N× duplication. We track the last-sent
193
+ * snapshot per callId and emit only the suffix beyond it.
194
+ * - Result replay: zcode's result payload re-sends the COMPLETE output. Once
195
+ * progress has streamed it, emitting it again would duplicate every line.
196
+ * So on completed/failed we SKIP terminal_output IF any progress already
197
+ * streamed data for this callId; for short commands (scheduled → result, no
198
+ * progress) nothing was sent yet, so we emit the full output once.
121
199
  */
122
- async function dispatchTerminalUpdate(_server, cx, acpSid, ev, toolName) {
123
- // terminal_output (pure data) progress and result both emit it.
200
+ async function dispatchTerminalUpdate(server, cx, acpSid, ev, toolName, opts = {}) {
201
+ // Extract the textual output from whichever payload field carries it.
124
202
  let termData = ev.rawOutput ?? ev.rawResult;
125
203
  if (termData && typeof termData === "object" && !Array.isArray(termData)) {
126
204
  termData = termData["content"] ?? "";
127
205
  }
128
- if (termData) {
129
- await sendSessionUpdate(cx, acpSid, {
130
- sessionUpdate: "tool_call_update",
131
- toolCallId: ev.callId,
132
- _meta: { terminal_output: { terminal_id: ev.callId, data: String(termData) } },
133
- });
206
+ const full = termData ? String(termData) : "";
207
+ const lastSent = server.terminalSentData.get(ev.callId) ?? "";
208
+ // ① terminal_output (pure data, append semantics).
209
+ // - progress (in_progress): zcode's stdoutTail is a CUMULATIVE snapshot of
210
+ // the tail, but terminal_output.data is APPEND semantics, so we diff and
211
+ // emit only the suffix beyond the last-sent snapshot.
212
+ // - result (completed/failed): the full output was already streamed during
213
+ // progress, and zcode's result re-sends the complete tail → skip, UNLESS
214
+ // no progress ever fired (short command: scheduled → result). In that
215
+ // case nothing was streamed yet, so emit the full output once.
216
+ const isResult = ev.status === "completed" || ev.status === "failed";
217
+ const alreadyStreamed = server.terminalSentData.has(ev.callId);
218
+ if (full && !(isResult && alreadyStreamed)) {
219
+ const delta = lastSent && full.startsWith(lastSent) ? full.slice(lastSent.length) : full;
220
+ if (delta) {
221
+ server.terminalSentData.set(ev.callId, full);
222
+ await sendSessionUpdate(cx, acpSid, {
223
+ sessionUpdate: "tool_call_update",
224
+ toolCallId: ev.callId,
225
+ _meta: { terminal_output: { terminal_id: ev.callId, data: delta } },
226
+ });
227
+ }
228
+ }
229
+ // Background Bash launch: leave the card in_progress — BackgroundTaskListener
230
+ // owns the final status + terminal_exit via out-of-band session.updated. We
231
+ // MUST still seed terminalSentData with an empty entry (even when no launch
232
+ // text was streamed) so the listener can recognise this callId as a tracked
233
+ // launch card and route its updates back to the same card.
234
+ if (opts.skipExit) {
235
+ if (!server.terminalSentData.has(ev.callId)) {
236
+ server.terminalSentData.set(ev.callId, "");
237
+ }
238
+ return;
134
239
  }
135
240
  // ② terminal_exit (terminal state) — only on completed/failed.
136
- if (ev.status === "completed" || ev.status === "failed") {
241
+ // Deliberately omits rawOutput: the output was already streamed via
242
+ // terminal_output.data above, and Zed renders BOTH the terminal buffer and
243
+ // the rawOutput fallback — including rawOutput here duplicates every line.
244
+ if (isResult) {
137
245
  const exitCode = extractExitCode(ev.rawResult, ev.status === "failed");
138
246
  const exitUpdate = {
139
247
  sessionUpdate: "tool_call_update",
@@ -145,10 +253,10 @@ async function dispatchTerminalUpdate(_server, cx, acpSid, ev, toolName) {
145
253
  terminal_exit: { terminal_id: ev.callId, exit_code: exitCode, signal: null },
146
254
  },
147
255
  };
148
- // rawOutput gives Zed a text fallback outside the terminal render path.
149
- if (ev.output !== undefined)
150
- exitUpdate.rawOutput = ev.output;
151
256
  await sendSessionUpdate(cx, acpSid, exitUpdate);
257
+ // Terminal session ended — clear the snapshot so a future tool reusing this
258
+ // callId (shouldn't happen, but defensively) starts fresh.
259
+ server.terminalSentData.delete(ev.callId);
152
260
  }
153
261
  }
154
262
  async function dispatchUsageDelta(server, cx, acpSid, ev) {
@@ -156,8 +264,12 @@ async function dispatchUsageDelta(server, cx, acpSid, ev) {
156
264
  // config.json limit.context so the editor can render the context bar.
157
265
  let size = ev.size;
158
266
  if (!size) {
159
- const modelId = await currentModelCached(server, acpSid);
160
- size = modelContextWindow(modelId);
267
+ // Resolve to the real backend session id — `acpSid` may be a lazy
268
+ // session/new placeholder that the backend rejects with "Session is not
269
+ // active", wasting a 5s request timeout on every usage_update.
270
+ const zcodeSid = server.resolveSid(acpSid) ?? acpSid;
271
+ const { providerId, modelId } = parseModelValue(await currentModelCached(server, zcodeSid));
272
+ size = modelContextWindow(providerId, modelId);
161
273
  }
162
274
  await sendSessionUpdate(cx, acpSid, {
163
275
  sessionUpdate: "usage_update",
@@ -1 +1 @@
1
- {"version":3,"file":"dispatch.js","sourceRoot":"","sources":["../../src/handlers/dispatch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dispatch.js","sourceRoot":"","sources":["../../src/handlers/dispatch.ts"],"names":[],"mappings":"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"}
@@ -39,5 +39,20 @@ export declare function updateRuntimeModelConfig(server: ZcodeAcpServer, params:
39
39
  export declare function setModel(server: ZcodeAcpServer, params: ExtensionParams): Promise<Result>;
40
40
  /** session/setMode → zcode session/setMode + emit config_option/current_mode updates. */
41
41
  export declare function setMode(server: ZcodeAcpServer, params: ExtensionParams, cx: acp.AgentContext): Promise<Result>;
42
+ /**
43
+ * Wait for a zcode session's internal AI turn to release its prompt lock.
44
+ *
45
+ * `session/goal(set)` and `session/compact` start an internal AI turn that
46
+ * keeps running after the request() response. projection.status=idle does NOT
47
+ * mean the lock is released (goal set often shows idle quickly while the lock
48
+ * persists 10-25s). The reliable check: retry a probe call (goal show) until it
49
+ * no longer reports "prompt is running".
50
+ *
51
+ * `expectLock` (compact): compact's turn has a startup delay — at this moment
52
+ * the lock isn't held yet, so a probe succeeds immediately (false "released").
53
+ * With expectLock=true, we first require observing "prompt is running" once
54
+ * (proving the turn truly started) before trusting a later success.
55
+ */
56
+ export declare function waitForTurnIdle(server: ZcodeAcpServer, zcodeSid: string, timeoutMs: number, probeMethod: string, expectLock: boolean): Promise<boolean>;
42
57
  export {};
43
58
  //# sourceMappingURL=extensions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"extensions.d.ts","sourceRoot":"","sources":["../../src/handlers/extensions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,KAAK,GAAG,MAAM,0BAA0B,CAAC;AAOrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAiBnD,UAAU,eAAe;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,KAAK,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEtC,iFAAiF;AACjF,wBAAsB,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAc3F;AAED,sFAAsF;AACtF,wBAAsB,MAAM,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAa7F;AAED,2EAA2E;AAC3E,wBAAsB,aAAa,CACjC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,MAAM,CAAC,CAcjB;AAED,uFAAuF;AACvF,wBAAsB,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAyB3F;AAED,+EAA+E;AAC/E,wBAAsB,OAAO,CAC3B,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,eAAe,EACvB,EAAE,EAAE,GAAG,CAAC,YAAY,GACnB,OAAO,CAAC,MAAM,CAAC,CAiCjB;AAED,kFAAkF;AAClF,wBAAsB,KAAK,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAW5F;AAED,yEAAyE;AACzE,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,MAAM,CAAC,CAiBjB;AAED,+DAA+D;AAC/D,wBAAsB,eAAe,CACnC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,MAAM,CAAC,CAejB;AAED,wFAAwF;AACxF,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,MAAM,CAAC,CAajB;AAED,8EAA8E;AAC9E,wBAAsB,QAAQ,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAQ/F;AAED,yFAAyF;AACzF,wBAAsB,OAAO,CAC3B,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,eAAe,EACvB,EAAE,EAAE,GAAG,CAAC,YAAY,GACnB,OAAO,CAAC,MAAM,CAAC,CA0BjB"}
1
+ {"version":3,"file":"extensions.d.ts","sourceRoot":"","sources":["../../src/handlers/extensions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,KAAK,GAAG,MAAM,0BAA0B,CAAC;AAOrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAsBnD,UAAU,eAAe;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,KAAK,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEtC,iFAAiF;AACjF,wBAAsB,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAmB3F;AAED,sFAAsF;AACtF,wBAAsB,MAAM,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAa7F;AAED,2EAA2E;AAC3E,wBAAsB,aAAa,CACjC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,MAAM,CAAC,CAcjB;AAED,uFAAuF;AACvF,wBAAsB,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAyB3F;AAED,+EAA+E;AAC/E,wBAAsB,OAAO,CAC3B,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,eAAe,EACvB,EAAE,EAAE,GAAG,CAAC,YAAY,GACnB,OAAO,CAAC,MAAM,CAAC,CAiCjB;AAED,kFAAkF;AAClF,wBAAsB,KAAK,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAW5F;AAED,yEAAyE;AACzE,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,MAAM,CAAC,CAqBjB;AAED,+DAA+D;AAC/D,wBAAsB,eAAe,CACnC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,MAAM,CAAC,CAYjB;AAED,wFAAwF;AACxF,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,MAAM,CAAC,CAajB;AAED,8EAA8E;AAC9E,wBAAsB,QAAQ,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAQ/F;AAED,yFAAyF;AACzF,wBAAsB,OAAO,CAC3B,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,eAAe,EACvB,EAAE,EAAE,GAAG,CAAC,YAAY,GACnB,OAAO,CAAC,MAAM,CAAC,CA8BjB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,OAAO,GAClB,OAAO,CAAC,OAAO,CAAC,CAuDlB"}
@@ -16,6 +16,7 @@ import { buildConfigOptions, buildModes } from "../config/options.js";
16
16
  import { ProjectionDiffer } from "../translators/projection-differ.js";
17
17
  import { log, warn } from "../utils.js";
18
18
  import { sendSessionUpdate } from "./io.js";
19
+ import { ensureRealSession } from "./session.js";
19
20
  /** Build the zcode `target` object from ACP params (checkpoint or latest). */
20
21
  function buildCheckpointTarget(params) {
21
22
  if (params.checkpointId)
@@ -24,29 +25,33 @@ function buildCheckpointTarget(params) {
24
25
  return params.target;
25
26
  return { kind: "latestCheckpoint" };
26
27
  }
27
- /** Resolve zcode sid from ACP params; throw if unknown. */
28
- function resolveSidOrThrow(server, params) {
29
- const sid = server.resolveSid(params.sessionId);
30
- if (!sid)
31
- throw new Error(`session ${params.sessionId} not found`);
32
- return sid;
28
+ /**
29
+ * Resolve zcode sid from ACP params, materializing a lazy session/new
30
+ * placeholder on first use; throw if the session is unknown.
31
+ */
32
+ async function resolveSidOrThrow(server, params) {
33
+ return ensureRealSession(server, params.sessionId);
33
34
  }
34
35
  /** session/fork → zcode session/fork: branch a new session from a checkpoint. */
35
36
  export async function fork(server, params) {
36
- const zcodeSid = resolveSidOrThrow(server, params);
37
+ const zcodeSid = await resolveSidOrThrow(server, params);
37
38
  const backend = server.ensureBackend();
38
39
  const resp = await backend.request(server.nextId(), "session/fork", { sessionId: zcodeSid, target: buildCheckpointTarget(params) }, 15000);
39
40
  if (resp.error)
40
41
  throw new Error(`fork failed: ${resp.error.message}`);
42
+ // 3.3.0 returns `forkedSessionId` (not `sessionId`) for the new session id.
43
+ // Register it so subsequent ACP calls targeting the fork can resolve the sid.
41
44
  const result = (resp.result ?? {});
42
- if (result.sessionId)
43
- server.sessionMap.set(result.sessionId, result.sessionId);
44
- log(`session/fork → ${result.sessionId ?? "?"}`);
45
+ if (result.forkedSessionId) {
46
+ server.registerSession(result.forkedSessionId, result.forkedSessionId);
47
+ server.ensureBackgroundListener(result.forkedSessionId);
48
+ }
49
+ log(`session/fork → ${result.forkedSessionId ?? "?"}`);
45
50
  return result;
46
51
  }
47
52
  /** session/rewind → zcode session/rewind: restore workspace files to a checkpoint. */
48
53
  export async function rewind(server, params) {
49
- const zcodeSid = resolveSidOrThrow(server, params);
54
+ const zcodeSid = await resolveSidOrThrow(server, params);
50
55
  const zcParams = {
51
56
  sessionId: zcodeSid,
52
57
  target: buildCheckpointTarget(params),
@@ -63,7 +68,7 @@ export async function rewind(server, params) {
63
68
  }
64
69
  /** session/rewindCascade → zcode session/rewindCascade: cascade rewind. */
65
70
  export async function rewindCascade(server, params) {
66
- const zcodeSid = resolveSidOrThrow(server, params);
71
+ const zcodeSid = await resolveSidOrThrow(server, params);
67
72
  const zcParams = {
68
73
  sessionId: zcodeSid,
69
74
  target: buildCheckpointTarget(params),
@@ -82,7 +87,7 @@ export async function rewindCascade(server, params) {
82
87
  }
83
88
  /** session/goal → zcode session/goal: read/set/replace/clear/pause/resume the goal. */
84
89
  export async function goal(server, params) {
85
- const zcodeSid = resolveSidOrThrow(server, params);
90
+ const zcodeSid = await resolveSidOrThrow(server, params);
86
91
  const action = params.action ?? "show";
87
92
  const zcParams = { sessionId: zcodeSid, action };
88
93
  if ((action === "set" || action === "replace") && params.objective !== undefined) {
@@ -113,7 +118,7 @@ export async function goal(server, params) {
113
118
  /** session/compact → zcode session/compact + wait for the internal AI turn. */
114
119
  export async function compact(server, params, cx) {
115
120
  const acpSid = params.sessionId;
116
- const zcodeSid = resolveSidOrThrow(server, params);
121
+ const zcodeSid = await resolveSidOrThrow(server, params);
117
122
  const resp = await server
118
123
  .ensureBackend()
119
124
  .request(server.nextId(), "session/compact", { sessionId: zcodeSid }, 30000);
@@ -149,7 +154,7 @@ export async function compact(server, params, cx) {
149
154
  }
150
155
  /** session/steer → zcode session/steer: append instructions to a running turn. */
151
156
  export async function steer(server, params) {
152
- const zcodeSid = resolveSidOrThrow(server, params);
157
+ const zcodeSid = await resolveSidOrThrow(server, params);
153
158
  const content = String(params.content ?? "");
154
159
  if (!content.trim())
155
160
  throw new Error("steer requires content");
@@ -164,8 +169,8 @@ export async function steer(server, params) {
164
169
  }
165
170
  /** session/cancelBackgroundTask → zcode session/cancelBackgroundTask. */
166
171
  export async function cancelBackgroundTask(server, params) {
167
- const zcodeSid = resolveSidOrThrow(server, params);
168
- const taskId = params.taskId;
172
+ const zcodeSid = await resolveSidOrThrow(server, params);
173
+ const taskId = String(params.taskId ?? "");
169
174
  if (!taskId)
170
175
  throw new Error("cancelBackgroundTask requires taskId");
171
176
  const resp = await server
@@ -173,18 +178,25 @@ export async function cancelBackgroundTask(server, params) {
173
178
  .request(server.nextId(), "session/cancelBackgroundTask", { sessionId: zcodeSid, taskId }, 15000);
174
179
  if (resp.error)
175
180
  throw new Error(`cancelBackgroundTask failed: ${resp.error.message}`);
181
+ // Reflect the cancellation on the ACP tool card (status:failed + cancelled
182
+ // flag) and clear the background listener's local tracking. Best-effort.
183
+ const listener = server.backgroundListeners.get(zcodeSid);
184
+ if (listener)
185
+ void listener.markCancelled(taskId);
176
186
  log(`session/cancelBackgroundTask → cancelled=${resp.result?.cancelled}`);
177
187
  return (resp.result ?? {});
178
188
  }
179
189
  /** session/setThoughtLevel → zcode session/setThoughtLevel. */
180
190
  export async function setThoughtLevel(server, params) {
181
- const zcodeSid = resolveSidOrThrow(server, params);
182
- const thoughtLevel = params.thoughtLevel;
183
- if (!thoughtLevel)
184
- throw new Error("setThoughtLevel requires thoughtLevel");
191
+ const zcodeSid = await resolveSidOrThrow(server, params);
192
+ // 3.3.0 marks thoughtLevel optional (omitting it resets to the model's
193
+ // default). Forward it only when present so a reset call isn't rejected.
194
+ const zcParams = { sessionId: zcodeSid };
195
+ if (params.thoughtLevel !== undefined)
196
+ zcParams.thoughtLevel = params.thoughtLevel;
185
197
  const resp = await server
186
198
  .ensureBackend()
187
- .request(server.nextId(), "session/setThoughtLevel", { sessionId: zcodeSid, thoughtLevel }, 15000);
199
+ .request(server.nextId(), "session/setThoughtLevel", zcParams, 15000);
188
200
  if (resp.error)
189
201
  throw new Error(`setThoughtLevel failed: ${resp.error.message}`);
190
202
  log("session/setThoughtLevel → ok");
@@ -192,7 +204,7 @@ export async function setThoughtLevel(server, params) {
192
204
  }
193
205
  /** session/updateRuntimeModelConfig → same: runtime overlay of session model config. */
194
206
  export async function updateRuntimeModelConfig(server, params) {
195
- const zcodeSid = resolveSidOrThrow(server, params);
207
+ const zcodeSid = await resolveSidOrThrow(server, params);
196
208
  const runtimeModel = params.runtimeModel;
197
209
  if (!runtimeModel)
198
210
  throw new Error("updateRuntimeModelConfig requires runtimeModel");
@@ -209,7 +221,7 @@ export async function updateRuntimeModelConfig(server, params) {
209
221
  }
210
222
  /** session/setModel → applyModelSwitch (runtime overlay, not persistence). */
211
223
  export async function setModel(server, params) {
212
- const zcodeSid = resolveSidOrThrow(server, params);
224
+ const zcodeSid = await resolveSidOrThrow(server, params);
213
225
  const modelId = params.modelId;
214
226
  if (!modelId)
215
227
  throw new Error("setModel requires modelId");
@@ -222,8 +234,12 @@ export async function setModel(server, params) {
222
234
  /** session/setMode → zcode session/setMode + emit config_option/current_mode updates. */
223
235
  export async function setMode(server, params, cx) {
224
236
  const acpSid = params.sessionId;
225
- const zcodeSid = resolveSidOrThrow(server, params);
226
- const mode = params.mode;
237
+ const zcodeSid = await resolveSidOrThrow(server, params);
238
+ // Two spellings reach this handler: the bridge's camelCase extension
239
+ // (`session/setMode` with `mode`) and the spec's `session/set_mode` with
240
+ // `modeId`. Clients like Paseo only send the spec spelling and failed with
241
+ // -32601 when it wasn't routed, so both normalize here.
242
+ const mode = params.mode ?? params.modeId;
227
243
  if (!mode)
228
244
  throw new Error("setMode requires mode");
229
245
  const resp = await server
@@ -263,7 +279,7 @@ export async function setMode(server, params, cx) {
263
279
  * With expectLock=true, we first require observing "prompt is running" once
264
280
  * (proving the turn truly started) before trusting a later success.
265
281
  */
266
- async function waitForTurnIdle(server, zcodeSid, timeoutMs, probeMethod, expectLock) {
282
+ export async function waitForTurnIdle(server, zcodeSid, timeoutMs, probeMethod, expectLock) {
267
283
  const backend = server.ensureBackend();
268
284
  const t0 = Date.now();
269
285
  let lockSeen = !expectLock;
@@ -1 +1 @@
1
- {"version":3,"file":"extensions.js","sourceRoot":"","sources":["../../src/handlers/extensions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extensions.js","sourceRoot":"","sources":["../../src/handlers/extensions.ts"],"names":[],"mappings":"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"}
@@ -26,8 +26,17 @@ export declare function sendAvailableCommands(cx: acp.AgentContext, sessionId: s
26
26
  * Send `available_commands_update` after a short delay so it lands after the
27
27
  * session response. ACP clients initialize their session state machine on the
28
28
  * response; a notification arriving earlier can be dropped, leaving the `/`
29
- * completion menu empty. Mirrors the Python bridge's deferred-notification
30
- * queue + 50ms drain. Fire-and-forget (returns void).
29
+ * completion menu empty.
30
+ *
31
+ * The notification is fired three times (50ms / 300ms / 1000ms) to cover slow
32
+ * client warm-up: on a fresh Zed tab the session view may still be initialising
33
+ * at the 50ms mark, dropping the first notification. `available_commands_update`
34
+ * is overwrite-semantics (not additive), so repeats are harmless — the client
35
+ * keeps the latest snapshot. Fire-and-forget (returns void).
36
+ *
37
+ * Each call cancels any still-pending timers from a prior call for the same
38
+ * session, so a rapid sequence (e.g. load then resume) can't have an old
39
+ * timer overwrite the newest command list.
31
40
  */
32
41
  export declare function sendAvailableCommandsDeferred(cx: acp.AgentContext, sessionId: string, commands: ReadonlyArray<SlashCommandEntry>): void;
33
42
  /** Throw a JSON-RPC error from a handler (the SDK converts it to an error response). */
@@ -1 +1 @@
1
- {"version":3,"file":"io.d.ts","sourceRoot":"","sources":["../../src/handlers/io.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,KAAK,GAAG,MAAM,0BAA0B,CAAC;AAGrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,0DAA0D;AAC1D,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,GAAG,CAAC,YAAY,EACpB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,GAAG,CAAC,aAAa,GACxB,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,uDAAuD;AACvD,wBAAgB,aAAa,CAC3B,EAAE,EAAE,GAAG,CAAC,YAAY,EACpB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAMf;AAED,uEAAuE;AACvE,UAAU,iBAAiB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1B;AAED,mFAAmF;AACnF,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,GAAG,CAAC,YAAY,EACpB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,aAAa,CAAC,iBAAiB,CAAC,GACzC,OAAO,CAAC,IAAI,CAAC,CAYf;AAED;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAC3C,EAAE,EAAE,GAAG,CAAC,YAAY,EACpB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,aAAa,CAAC,iBAAiB,CAAC,GACzC,IAAI,CAMN;AAED,wFAAwF;AACxF,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,CAE/D;AAED,kFAAkF;AAClF,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,cAAc,CAAC;CACxB"}
1
+ {"version":3,"file":"io.d.ts","sourceRoot":"","sources":["../../src/handlers/io.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,KAAK,GAAG,MAAM,0BAA0B,CAAC;AAGrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAGnD,0DAA0D;AAC1D,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,GAAG,CAAC,YAAY,EACpB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,GAAG,CAAC,aAAa,GACxB,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,uDAAuD;AACvD,wBAAgB,aAAa,CAC3B,EAAE,EAAE,GAAG,CAAC,YAAY,EACpB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAMf;AAED,uEAAuE;AACvE,UAAU,iBAAiB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1B;AAED,mFAAmF;AACnF,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,GAAG,CAAC,YAAY,EACpB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,aAAa,CAAC,iBAAiB,CAAC,GACzC,OAAO,CAAC,IAAI,CAAC,CAYf;AAWD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,6BAA6B,CAC3C,EAAE,EAAE,GAAG,CAAC,YAAY,EACpB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,aAAa,CAAC,iBAAiB,CAAC,GACzC,IAAI,CAkCN;AAED,wFAAwF;AACxF,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,CAE/D;AAED,kFAAkF;AAClF,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,cAAc,CAAC;CACxB"}
@@ -7,6 +7,7 @@
7
7
  * the JSON shape so handlers stay readable.
8
8
  */
9
9
  import { RequestError } from "@agentclientprotocol/sdk";
10
+ import { warn } from "../utils.js";
10
11
  /** Send a `session/update` notification to the client. */
11
12
  export function sendSessionUpdate(cx, sessionId, update) {
12
13
  return cx.notify("session/update", { sessionId, update });
@@ -34,19 +35,62 @@ export function sendAvailableCommands(cx, sessionId, commands) {
34
35
  }),
35
36
  });
36
37
  }
38
+ /**
39
+ * Per-session pending deferred-notification timeouts. Tracks the timers from
40
+ * repeated `sendAvailableCommandsDeferred` calls so a newer call can cancel
41
+ * the older call's still-pending timers. Without this, a slow timer (e.g.
42
+ * the 1000ms fire from an earlier session/load) could fire AFTER a newer
43
+ * call's 50ms fire, overwriting the newer command list with the stale one.
44
+ */
45
+ const activeDeferredTimeouts = new Map();
37
46
  /**
38
47
  * Send `available_commands_update` after a short delay so it lands after the
39
48
  * session response. ACP clients initialize their session state machine on the
40
49
  * response; a notification arriving earlier can be dropped, leaving the `/`
41
- * completion menu empty. Mirrors the Python bridge's deferred-notification
42
- * queue + 50ms drain. Fire-and-forget (returns void).
50
+ * completion menu empty.
51
+ *
52
+ * The notification is fired three times (50ms / 300ms / 1000ms) to cover slow
53
+ * client warm-up: on a fresh Zed tab the session view may still be initialising
54
+ * at the 50ms mark, dropping the first notification. `available_commands_update`
55
+ * is overwrite-semantics (not additive), so repeats are harmless — the client
56
+ * keeps the latest snapshot. Fire-and-forget (returns void).
57
+ *
58
+ * Each call cancels any still-pending timers from a prior call for the same
59
+ * session, so a rapid sequence (e.g. load then resume) can't have an old
60
+ * timer overwrite the newest command list.
43
61
  */
44
62
  export function sendAvailableCommandsDeferred(cx, sessionId, commands) {
45
- const t = setTimeout(() => {
46
- void sendAvailableCommands(cx, sessionId, commands);
47
- }, 50);
48
- // unref so shutdown is not held up by this deferred notification.
49
- t.unref?.();
63
+ // Cancel any pending timers from a previous call so the stale command list
64
+ // can't overwrite the one we're about to schedule.
65
+ const prev = activeDeferredTimeouts.get(sessionId);
66
+ if (prev) {
67
+ for (const t of prev)
68
+ clearTimeout(t);
69
+ prev.clear();
70
+ }
71
+ const active = new Set();
72
+ activeDeferredTimeouts.set(sessionId, active);
73
+ for (const delay of [50, 300, 1000]) {
74
+ const t = setTimeout(() => {
75
+ sendAvailableCommands(cx, sessionId, commands)
76
+ .catch((e) => {
77
+ warn(`available_commands_update failed (sid=${sessionId}, delay=${delay}): ` +
78
+ `${e instanceof Error ? e.message : String(e)}`);
79
+ })
80
+ .finally(() => {
81
+ active.delete(t);
82
+ // Drop the session entry once all three fires have settled, so the
83
+ // map doesn't retain empty Sets. Only delete if still ours — a newer
84
+ // call may have replaced the entry.
85
+ if (active.size === 0 && activeDeferredTimeouts.get(sessionId) === active) {
86
+ activeDeferredTimeouts.delete(sessionId);
87
+ }
88
+ });
89
+ }, delay);
90
+ // unref so shutdown is not held up by this deferred notification.
91
+ t.unref?.();
92
+ active.add(t);
93
+ }
50
94
  }
51
95
  /** Throw a JSON-RPC error from a handler (the SDK converts it to an error response). */
52
96
  export function throwError(code, message) {