@chances-ai/wire 24.0.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 (93) hide show
  1. package/dist/rpc/acp/adapter.d.ts +32 -0
  2. package/dist/rpc/acp/adapter.d.ts.map +1 -0
  3. package/dist/rpc/acp/adapter.js +185 -0
  4. package/dist/rpc/acp/adapter.js.map +1 -0
  5. package/dist/rpc/acp/engine-driver.d.ts +128 -0
  6. package/dist/rpc/acp/engine-driver.d.ts.map +1 -0
  7. package/dist/rpc/acp/engine-driver.js +550 -0
  8. package/dist/rpc/acp/engine-driver.js.map +1 -0
  9. package/dist/rpc/acp/event-map.d.ts +22 -0
  10. package/dist/rpc/acp/event-map.d.ts.map +1 -0
  11. package/dist/rpc/acp/event-map.js +205 -0
  12. package/dist/rpc/acp/event-map.js.map +1 -0
  13. package/dist/rpc/acp/load-sdk.d.ts +3 -0
  14. package/dist/rpc/acp/load-sdk.d.ts.map +1 -0
  15. package/dist/rpc/acp/load-sdk.js +24 -0
  16. package/dist/rpc/acp/load-sdk.js.map +1 -0
  17. package/dist/rpc/acp/workspace-query.d.ts +41 -0
  18. package/dist/rpc/acp/workspace-query.d.ts.map +1 -0
  19. package/dist/rpc/acp/workspace-query.js +89 -0
  20. package/dist/rpc/acp/workspace-query.js.map +1 -0
  21. package/dist/rpc/driver.d.ts +42 -0
  22. package/dist/rpc/driver.d.ts.map +1 -0
  23. package/dist/rpc/driver.js +7 -0
  24. package/dist/rpc/driver.js.map +1 -0
  25. package/dist/rpc/event-map.d.ts +8 -0
  26. package/dist/rpc/event-map.d.ts.map +1 -0
  27. package/dist/rpc/event-map.js +91 -0
  28. package/dist/rpc/event-map.js.map +1 -0
  29. package/dist/rpc/index.d.ts +13 -0
  30. package/dist/rpc/index.d.ts.map +1 -0
  31. package/dist/rpc/index.js +18 -0
  32. package/dist/rpc/index.js.map +1 -0
  33. package/dist/rpc/lines.d.ts +2 -0
  34. package/dist/rpc/lines.d.ts.map +1 -0
  35. package/dist/rpc/lines.js +24 -0
  36. package/dist/rpc/lines.js.map +1 -0
  37. package/dist/rpc/protocol.d.ts +315 -0
  38. package/dist/rpc/protocol.d.ts.map +1 -0
  39. package/dist/rpc/protocol.js +70 -0
  40. package/dist/rpc/protocol.js.map +1 -0
  41. package/dist/rpc/rpc-server.d.ts +56 -0
  42. package/dist/rpc/rpc-server.d.ts.map +1 -0
  43. package/dist/rpc/rpc-server.js +305 -0
  44. package/dist/rpc/rpc-server.js.map +1 -0
  45. package/dist/rpc/stdout-guard.d.ts +5 -0
  46. package/dist/rpc/stdout-guard.d.ts.map +1 -0
  47. package/dist/rpc/stdout-guard.js +31 -0
  48. package/dist/rpc/stdout-guard.js.map +1 -0
  49. package/dist/rpc/writer.d.ts +34 -0
  50. package/dist/rpc/writer.d.ts.map +1 -0
  51. package/dist/rpc/writer.js +85 -0
  52. package/dist/rpc/writer.js.map +1 -0
  53. package/dist/serve/acp-session-host.d.ts +120 -0
  54. package/dist/serve/acp-session-host.d.ts.map +1 -0
  55. package/dist/serve/acp-session-host.js +276 -0
  56. package/dist/serve/acp-session-host.js.map +1 -0
  57. package/dist/serve/auth.d.ts +21 -0
  58. package/dist/serve/auth.d.ts.map +1 -0
  59. package/dist/serve/auth.js +58 -0
  60. package/dist/serve/auth.js.map +1 -0
  61. package/dist/serve/highlight.d.ts +25 -0
  62. package/dist/serve/highlight.d.ts.map +1 -0
  63. package/dist/serve/highlight.js +28 -0
  64. package/dist/serve/highlight.js.map +1 -0
  65. package/dist/serve/index.d.ts +14 -0
  66. package/dist/serve/index.d.ts.map +1 -0
  67. package/dist/serve/index.js +23 -0
  68. package/dist/serve/index.js.map +1 -0
  69. package/dist/serve/pairing.d.ts +25 -0
  70. package/dist/serve/pairing.d.ts.map +1 -0
  71. package/dist/serve/pairing.js +10 -0
  72. package/dist/serve/pairing.js.map +1 -0
  73. package/dist/serve/relay-frames.d.ts +29 -0
  74. package/dist/serve/relay-frames.d.ts.map +1 -0
  75. package/dist/serve/relay-frames.js +54 -0
  76. package/dist/serve/relay-frames.js.map +1 -0
  77. package/dist/serve/relay.d.ts +146 -0
  78. package/dist/serve/relay.d.ts.map +1 -0
  79. package/dist/serve/relay.js +475 -0
  80. package/dist/serve/relay.js.map +1 -0
  81. package/dist/serve/replay-hub.d.ts +102 -0
  82. package/dist/serve/replay-hub.d.ts.map +1 -0
  83. package/dist/serve/replay-hub.js +176 -0
  84. package/dist/serve/replay-hub.js.map +1 -0
  85. package/dist/serve/tls.d.ts +20 -0
  86. package/dist/serve/tls.d.ts.map +1 -0
  87. package/dist/serve/tls.js +64 -0
  88. package/dist/serve/tls.js.map +1 -0
  89. package/dist/serve/ws-transport.d.ts +64 -0
  90. package/dist/serve/ws-transport.d.ts.map +1 -0
  91. package/dist/serve/ws-transport.js +92 -0
  92. package/dist/serve/ws-transport.js.map +1 -0
  93. package/package.json +42 -0
@@ -0,0 +1,550 @@
1
+ /**
2
+ * (v20 M3 / docs/6.4a §3) `AcpEngineDriver` — the ACP twin of `RpcServer`. It
3
+ * projects the SAME `EngineHost` seam onto an ACP (Agent Client Protocol) wire:
4
+ * JSON-RPC 2.0 + session semantics. Structurally identical to `RpcServer`
5
+ * (`run(lines: AsyncIterable<string>)` over an injected `ByteSink`), so the M2
6
+ * `SessionHost`/`ReplayHub` fan-out + seq/replay carry over with a one-line
7
+ * swap — but it speaks ACP, not the bespoke `chances-rpc` frames.
8
+ *
9
+ * **Self-rolled framing, NOT the ACP SDK's connection runtime** (user decision
10
+ * D1, docs/6.4a §1): the SDK's `AgentSideConnection` is point-to-point (it owns
11
+ * the JSON-RPC id correlation for ONE socket), which collides with M2's fan-out
12
+ * (one session, many sockets, any may answer a permission). So we roll the
13
+ * JSON-RPC framing ourselves on top of the fan-out, using the SDK only for its
14
+ * **types** (`import type` → erased; the driver compiles with or without the
15
+ * optional peer, exactly like the stdio adapter; `smoke-compile-rpc` gates both).
16
+ *
17
+ * Correlation is by **id pass-through**, no mapping table:
18
+ * - `session/prompt` request id → remembered as the active turn; the terminal
19
+ * `session/prompt` RESPONSE echoes it with `{ stopReason, usage }` (the
20
+ * chances `result` frame folded into the ACP response; the immediate `prompt`
21
+ * ack chances-rpc sends has no ACP equivalent and is simply not emitted).
22
+ * - `session/request_permission` is an agent→client REQUEST whose id we mint
23
+ * (`perm_*`); ANY attached socket may answer it (fan-out — the relay routes
24
+ * the response back here), and we dedup by id. **Fail-closed**: a cancelled/
25
+ * unknown outcome, or an errored response, denies (matches goose + v16).
26
+ * - chances-only fidelity (compaction/subagent/error) rides a
27
+ * `_chances/unstable/event` notification carrying `_meta.chances` — a plain
28
+ * ACP client ignores the unknown method; ours reads it.
29
+ *
30
+ * Socket-free + timer-free at the seam: tests drive `run()` with a fake
31
+ * `EngineHost` + scripted ACP lines and assert the emitted ACP message sequence.
32
+ */
33
+ import { CancellationTokenSource, createId } from "@chances-ai/runtime";
34
+ import { BoundedNdjsonWriter } from "../writer.js";
35
+ import { chancesEventMeta, mapEventToAcp } from "./event-map.js";
36
+ /** ACP protocol version we speak (SDK `PROTOCOL_VERSION` = 1). */
37
+ export const ACP_PROTOCOL_VERSION = 1;
38
+ /** The four standard ACP permission options; the selected `optionId` maps back
39
+ * to a chances `PermissionDecision`. */
40
+ const PERMISSION_OPTIONS = [
41
+ { optionId: "allow_once", kind: "allow_once", name: "Allow once" },
42
+ { optionId: "allow_always", kind: "allow_always", name: "Allow always" },
43
+ { optionId: "reject_once", kind: "reject_once", name: "Reject" },
44
+ { optionId: "reject_always", kind: "reject_always", name: "Reject always" },
45
+ ];
46
+ /** Wire method names. Standard ACP + namespaced chances extensions
47
+ * (`_chances/unstable/*`, mirroring goose's `_goose/unstable/*`). */
48
+ const METHOD = {
49
+ initialize: "initialize",
50
+ newSession: "session/new",
51
+ loadSession: "session/load",
52
+ prompt: "session/prompt",
53
+ cancel: "session/cancel",
54
+ update: "session/update",
55
+ requestPermission: "session/request_permission",
56
+ ext: {
57
+ setModel: "_chances/unstable/set_model",
58
+ setApproval: "_chances/unstable/set_approval",
59
+ requestQuestion: "_chances/unstable/request_question",
60
+ getState: "_chances/unstable/get_state",
61
+ getModels: "_chances/unstable/get_models",
62
+ setOptions: "_chances/unstable/set_options",
63
+ ping: "_chances/unstable/ping",
64
+ },
65
+ event: "_chances/unstable/event",
66
+ };
67
+ /** JSON-RPC standard error codes we use. */
68
+ const ERR = { methodNotFound: -32601, invalidParams: -32602, serverError: -32000 };
69
+ /** Runtime guard: a question answer body must be `Record<string, string[]>`.
70
+ * Anything else (a string, a non-array value, a non-string array element) is
71
+ * malformed → the caller fail-closes to declined (codex v22 MUST). */
72
+ function isAnswerMap(v) {
73
+ if (typeof v !== "object" || v === null || Array.isArray(v))
74
+ return false;
75
+ return Object.values(v).every((a) => Array.isArray(a) && a.every((s) => typeof s === "string"));
76
+ }
77
+ const SHUTDOWN_TURN_DEADLINE_MS = 2000;
78
+ const MAX_RESOLVED_IDS = 1024;
79
+ export class AcpEngineDriver {
80
+ host;
81
+ writer;
82
+ agent;
83
+ autoApprove;
84
+ logSink;
85
+ toolChunks = true;
86
+ built = null;
87
+ unsub = null;
88
+ sessionId = "";
89
+ activeTurn = null;
90
+ /** Tracked so shutdown can await the terminal prompt response before closing. */
91
+ activePrompt = null;
92
+ /** Open asks (permission OR question): minted id → the resolver's `resolve` +
93
+ * the serialized request (kept so a fresh attach can re-send a still-open ask
94
+ * the ring evicted) + its `kind` (so a response/deny resolves the right shape). */
95
+ pending = new Map();
96
+ resolvedIds = [];
97
+ resolvedSet = new Set();
98
+ workspaceQueries;
99
+ shuttingDown = false;
100
+ constructor(opts) {
101
+ this.host = opts.host;
102
+ this.writer = new BoundedNdjsonWriter(opts.sink, { warn: opts.logSink });
103
+ this.agent = opts.agent;
104
+ this.autoApprove = opts.autoApprove ?? false;
105
+ this.logSink = opts.logSink ?? ((line) => process.stderr.write(line));
106
+ this.workspaceQueries = opts.workspaceQueries ?? false;
107
+ }
108
+ async run(lines) {
109
+ const built = this.host.build(this.makeResolver());
110
+ this.built = built;
111
+ this.sessionId = built.sessionId;
112
+ // Subscribe BEFORE reading input so no frame is missed. ACP is
113
+ // client-initiated (the client sends `initialize` first), so — unlike the
114
+ // bespoke wire's proactive `ready` — we emit nothing until asked; we just
115
+ // keep the bus → `session/update` projection live.
116
+ this.unsub = built.bus.onAny((e) => this.onEvent(e));
117
+ try {
118
+ for await (const line of lines) {
119
+ const trimmed = line.trim();
120
+ if (trimmed === "")
121
+ continue;
122
+ this.handleLine(trimmed);
123
+ }
124
+ }
125
+ finally {
126
+ await this.shutdown();
127
+ }
128
+ return 0;
129
+ }
130
+ /** Idempotent shutdown — same order as `RpcServer` (cancel turn → deny pending
131
+ * → await the in-flight prompt's terminal response → dispose → flush → close). */
132
+ async shutdown() {
133
+ if (this.shuttingDown)
134
+ return;
135
+ this.shuttingDown = true;
136
+ this.activeTurn?.cts.cancel();
137
+ this.denyAllPending();
138
+ if (this.activePrompt) {
139
+ await Promise.race([this.activePrompt, delay(SHUTDOWN_TURN_DEADLINE_MS)]);
140
+ }
141
+ try {
142
+ await this.host.dispose();
143
+ }
144
+ catch {
145
+ /* dispose is best-effort; never block the flush */
146
+ }
147
+ await this.writer.flush();
148
+ this.unsub?.();
149
+ this.writer.close();
150
+ }
151
+ // -- accessors (the relay reads these for the per-attach reconnect snapshot,
152
+ // replacing the bespoke wire's byte-snoop — driver state is authoritative) -
153
+ /** Whether a turn is in flight, so a reconnecting client can lock its composer. */
154
+ get busy() {
155
+ return this.activeTurn !== null;
156
+ }
157
+ /** Ids of still-open `session/request_permission` asks at attach time. */
158
+ pendingPermissionIds() {
159
+ return [...this.pending.keys()];
160
+ }
161
+ /** Serialized lines of every still-open permission request, re-sent right
162
+ * after the welcome so a parked turn stays answerable even if the ring
163
+ * evicted the ask. The client de-dups by permission id. */
164
+ openPermissionFrames() {
165
+ return [...this.pending.values()].map((e) => JSON.stringify(e.request) + "\n");
166
+ }
167
+ // -- outbound: bus → ACP ----------------------------------------------------
168
+ onEvent(e) {
169
+ if (e.type === "log") {
170
+ this.logSink(`[${e.level}] ${e.message}\n`);
171
+ return;
172
+ }
173
+ // chances-only fidelity has no standard SessionUpdate → extension notification.
174
+ const chances = chancesEventMeta(e);
175
+ if (chances) {
176
+ this.enqueueNotification(METHOD.event, { sessionId: this.sessionId, _meta: { chances } });
177
+ return;
178
+ }
179
+ for (const update of mapEventToAcp(e, { toolChunks: this.toolChunks })) {
180
+ this.enqueueNotification(METHOD.update, { sessionId: this.sessionId, update });
181
+ }
182
+ }
183
+ // -- inbound: ACP → engine --------------------------------------------------
184
+ handleLine(line) {
185
+ let msg;
186
+ try {
187
+ msg = JSON.parse(line);
188
+ }
189
+ catch {
190
+ return; // ignore non-JSON noise
191
+ }
192
+ if (typeof msg !== "object" || msg === null)
193
+ return;
194
+ if (typeof msg.method === "string") {
195
+ this.handleMethod(msg.method, msg.id, msg.params);
196
+ return;
197
+ }
198
+ // A JSON-RPC RESPONSE to one of OUR requests (request_permission OR, v22,
199
+ // request_question). Dispatch by the pending entry's kind.
200
+ if (msg.id !== undefined && ("result" in msg || "error" in msg)) {
201
+ const id = String(msg.id);
202
+ const kind = this.pending.get(id)?.kind;
203
+ if (kind === "question")
204
+ this.resolveQuestion(id, msg.result, "error" in msg);
205
+ else
206
+ this.resolvePermission(id, msg.result, "error" in msg);
207
+ }
208
+ }
209
+ handleMethod(method, id, params) {
210
+ switch (method) {
211
+ case METHOD.initialize:
212
+ this.respond(id, this.initializeResult());
213
+ return;
214
+ case METHOD.newSession:
215
+ // Standard ACP `models` (SessionModelState) so a plain ACP client gets
216
+ // the model list from `session/new`, not only our `_meta.chances`
217
+ // (codex M3 SHOULD). `modes: null` = no agent modes.
218
+ this.respond(id, { sessionId: this.sessionId, modes: null, models: this.modelState() });
219
+ return;
220
+ case METHOD.loadSession:
221
+ // M3 stub: the relay's reconnect/replay (M2) already restores the GUI
222
+ // transcript, so we don't replay history here. Advertised honestly via
223
+ // `agentCapabilities.loadSession: false`.
224
+ this.respond(id, {});
225
+ return;
226
+ case METHOD.prompt: {
227
+ // Guard BEFORE assigning `activePrompt` (codex M3 MUST): a rejected prompt
228
+ // (unknown session / AGENT_BUSY) must NOT overwrite the live turn's
229
+ // `activePrompt`, or shutdown would stop awaiting the real terminal
230
+ // response. Long-running otherwise → fire-and-forget so the loop keeps
231
+ // reading cancel/permission responses mid-turn (tracked for shutdown).
232
+ if (id === undefined)
233
+ return;
234
+ if (!this.isOurSession(params)) {
235
+ this.error(id, ERR.invalidParams, "unknown session");
236
+ return;
237
+ }
238
+ if (this.activeTurn) {
239
+ this.error(id, ERR.serverError, "a turn is already running");
240
+ return;
241
+ }
242
+ this.activePrompt = this.handlePrompt(id, params).finally(() => {
243
+ this.activePrompt = null;
244
+ });
245
+ return;
246
+ }
247
+ case METHOD.cancel:
248
+ if (!this.isOurSession(params))
249
+ return; // a bogus session can't cancel ours
250
+ // Deny pending FIRST so a turn parked in the resolver unwinds, then cancel.
251
+ this.denyAllPending();
252
+ this.activeTurn?.cts.cancel();
253
+ return; // notification — no response
254
+ case METHOD.ext.setModel:
255
+ this.handleSetModel(id, params);
256
+ return;
257
+ case METHOD.ext.setApproval:
258
+ this.handleSetApproval(id, params);
259
+ return;
260
+ case METHOD.ext.getState:
261
+ this.respond(id, {
262
+ model: this.built?.selection.get() ?? {},
263
+ approvalMode: this.built?.approval?.get() ?? "default",
264
+ busy: this.activeTurn !== null,
265
+ sessionId: this.sessionId,
266
+ toolChunks: this.toolChunks,
267
+ });
268
+ return;
269
+ case METHOD.ext.getModels:
270
+ this.respond(id, { models: this.host.listModels() });
271
+ return;
272
+ case METHOD.ext.setOptions:
273
+ if (params && typeof params === "object" && "toolChunks" in params) {
274
+ const tc = params.toolChunks;
275
+ if (typeof tc === "boolean")
276
+ this.toolChunks = tc;
277
+ }
278
+ this.respond(id, { toolChunks: this.toolChunks });
279
+ return;
280
+ case METHOD.ext.ping:
281
+ this.respond(id, { pong: true });
282
+ return;
283
+ default:
284
+ if (id !== undefined)
285
+ this.error(id, ERR.methodNotFound, `unknown method: ${method}`);
286
+ return; // unknown notification → ignore
287
+ }
288
+ }
289
+ /** Runs one turn. The caller (`handleMethod`'s prompt case) has already
290
+ * validated the session + rejected an overlapping turn, so this always starts. */
291
+ async handlePrompt(id, params) {
292
+ const text = textFromPrompt(params);
293
+ const cts = new CancellationTokenSource();
294
+ this.activeTurn = { cts, promptId: id };
295
+ let result = { text: "", inputTokens: 0, outputTokens: 0, costUsd: 0 };
296
+ let stopReason = "end_turn";
297
+ try {
298
+ result = await this.built.runTurn(text, cts.token);
299
+ }
300
+ catch {
301
+ // A non-cancel engine error already emitted an `error` bus event (→ ext
302
+ // notification); cancellation is user-initiated. ACP has no generic error
303
+ // stop reason, so the turn still ends — details rode the error event.
304
+ stopReason = cts.token.isCancelled ? "cancelled" : "end_turn";
305
+ }
306
+ finally {
307
+ this.activeTurn = null;
308
+ }
309
+ this.respond(id, {
310
+ stopReason,
311
+ usage: {
312
+ inputTokens: result.inputTokens,
313
+ outputTokens: result.outputTokens,
314
+ totalTokens: result.inputTokens + result.outputTokens,
315
+ },
316
+ _meta: { chances: { costUsd: result.costUsd } },
317
+ });
318
+ }
319
+ /** True if `params.sessionId` addresses our singleton session. An ABSENT id is
320
+ * tolerated (first-party clients always send ours); a PRESENT but mismatched id
321
+ * is rejected so a plain ACP client can't drive/cancel a bogus session (codex
322
+ * M3 SHOULD). */
323
+ isOurSession(params) {
324
+ const sid = params?.sessionId;
325
+ return sid === undefined || sid === this.sessionId;
326
+ }
327
+ /** The standard ACP `SessionModelState` (modelId = `provider/model`). */
328
+ modelState() {
329
+ const id = (m) => `${m.provider}/${m.model}`;
330
+ const models = this.host.listModels();
331
+ const sel = this.built?.selection.get();
332
+ const current = sel?.provider && sel?.model ? id({ provider: sel.provider, model: sel.model }) : models[0] ? id(models[0]) : "";
333
+ return { availableModels: models.map((m) => ({ modelId: id(m), name: id(m) })), currentModelId: current };
334
+ }
335
+ handleSetModel(id, params) {
336
+ if (this.activeTurn) {
337
+ if (id !== undefined)
338
+ this.error(id, ERR.serverError, "cannot switch model while a turn is running");
339
+ return;
340
+ }
341
+ const p = (params ?? {});
342
+ this.built?.selection.set({ provider: p.provider, model: p.model });
343
+ this.respond(id, this.built?.selection.get() ?? {});
344
+ }
345
+ /** (v22) Set the session approval mode. UNLIKE set_model this is allowed
346
+ * mid-turn — the mode applies to the NEXT permission check, which is the whole
347
+ * point of cycling it while a turn streams (claude-code parity; mirrors the
348
+ * TUI Stage-1 fix). A switch to `yolo` carries its own consent (the GUI
349
+ * confirms client-side before sending), so we latch it. */
350
+ handleSetApproval(id, params) {
351
+ const approval = this.built?.approval;
352
+ if (!approval) {
353
+ if (id !== undefined)
354
+ this.error(id, ERR.serverError, "approval mode not supported by this host");
355
+ return;
356
+ }
357
+ const VALID = ["default", "auto-edit", "plan", "yolo"];
358
+ const mode = params?.mode;
359
+ if (!mode || !VALID.includes(mode)) {
360
+ if (id !== undefined)
361
+ this.error(id, ERR.invalidParams, `invalid approval mode: ${String(mode)}`);
362
+ return;
363
+ }
364
+ if (mode === "yolo")
365
+ approval.confirmYolo();
366
+ approval.set(mode);
367
+ this.respond(id, { approvalMode: approval.get() });
368
+ }
369
+ // -- permission round-trip --------------------------------------------------
370
+ makeResolver() {
371
+ return (req) => {
372
+ // (v22) A structured question (`ask_user_question`) is forwarded to the
373
+ // client as a `_chances/unstable/request_question` request and answered with
374
+ // `{answers, annotations, declined}`. autoApprove does NOT apply (a question
375
+ // is not an authorization); a non-chances ACP client never sends the method,
376
+ // so the ask stays parked until a chances client answers (or shutdown denies).
377
+ if (req.kind === "question") {
378
+ const id = createId("ask");
379
+ return new Promise((resolve) => {
380
+ const request = {
381
+ jsonrpc: "2.0",
382
+ id,
383
+ method: METHOD.ext.requestQuestion,
384
+ params: {
385
+ sessionId: this.sessionId,
386
+ questions: req.questions,
387
+ _meta: { chances: { tool: req.name, category: req.category } },
388
+ },
389
+ };
390
+ this.pending.set(id, { resolve, request, kind: "question" });
391
+ this.writer.enqueue(request);
392
+ });
393
+ }
394
+ if (this.autoApprove)
395
+ return Promise.resolve({ allow: true, remember: true });
396
+ const id = createId("perm");
397
+ return new Promise((resolve) => {
398
+ const request = {
399
+ jsonrpc: "2.0",
400
+ id,
401
+ method: METHOD.requestPermission,
402
+ params: {
403
+ sessionId: this.sessionId,
404
+ toolCall: {
405
+ toolCallId: req.callId ?? createId("tool"),
406
+ title: req.summary,
407
+ rawInput: (req.args ?? {}),
408
+ // Tool NAME + category an ACP-only client ignores; ours reads them
409
+ // for a clean permission-card header (the title carries the diff).
410
+ _meta: { chances: { tool: req.name, category: req.category } },
411
+ },
412
+ options: PERMISSION_OPTIONS,
413
+ },
414
+ };
415
+ this.pending.set(id, { resolve, request, kind: "authorization" });
416
+ this.writer.enqueue(request);
417
+ });
418
+ };
419
+ }
420
+ /** A client answered a `session/request_permission` request (JSON-RPC
421
+ * response). Fail-closed: an error response, a non-`selected` outcome, or an
422
+ * unknown `optionId` all deny. Dedups duplicate/foreign answers. */
423
+ resolvePermission(id, result, isError) {
424
+ if (this.resolvedSet.has(id))
425
+ return;
426
+ const entry = this.pending.get(id);
427
+ if (!entry)
428
+ return; // unknown id — ignore
429
+ this.pending.delete(id);
430
+ this.markResolved(id);
431
+ const { resolve } = entry;
432
+ if (isError) {
433
+ resolve({ allow: false });
434
+ return;
435
+ }
436
+ const outcome = result?.outcome;
437
+ if (!outcome || outcome.outcome !== "selected") {
438
+ resolve({ allow: false }); // cancelled / malformed → deny
439
+ return;
440
+ }
441
+ switch (outcome.optionId) {
442
+ case "allow_once":
443
+ resolve({ allow: true, remember: false });
444
+ return;
445
+ case "allow_always":
446
+ resolve({ allow: true, remember: true });
447
+ return;
448
+ default:
449
+ resolve({ allow: false }); // reject_once / reject_always / unknown
450
+ return;
451
+ }
452
+ }
453
+ /** (v22) A client answered a `_chances/unstable/request_question` request.
454
+ * Fail-closed: an error response, a malformed body, or an explicit `declined`
455
+ * all resolve to a declined QuestionDecision (the ask tool turns that into a
456
+ * deterministic "declined" result). Dedups duplicate/foreign answers. */
457
+ resolveQuestion(id, result, isError) {
458
+ if (this.resolvedSet.has(id))
459
+ return;
460
+ const entry = this.pending.get(id);
461
+ if (!entry)
462
+ return;
463
+ this.pending.delete(id);
464
+ this.markResolved(id);
465
+ const { resolve } = entry;
466
+ if (isError || typeof result !== "object" || result === null) {
467
+ resolve({ kind: "question", answers: {}, declined: true });
468
+ return;
469
+ }
470
+ const r = result;
471
+ // (codex v22 MUST) Fail-closed on a MALFORMED body, not just a missing one: an
472
+ // explicit `declined`, or anything that isn't a `Record<string,string[]>` of
473
+ // answers (e.g. `{answers:"x"}` / non-string-array values), declines.
474
+ const answers = r.declined !== true && isAnswerMap(r.answers) ? r.answers : {};
475
+ const declined = r.declined === true || !isAnswerMap(r.answers);
476
+ resolve({
477
+ kind: "question",
478
+ answers,
479
+ ...(r.annotations ? { annotations: r.annotations } : {}),
480
+ declined,
481
+ });
482
+ }
483
+ denyAllPending() {
484
+ for (const [id, entry] of this.pending) {
485
+ this.markResolved(id);
486
+ // Deny in the SHAPE the asker expects (a question can't be auth-denied).
487
+ entry.resolve(entry.kind === "question" ? { kind: "question", answers: {}, declined: true } : { allow: false });
488
+ }
489
+ this.pending.clear();
490
+ }
491
+ markResolved(id) {
492
+ this.resolvedSet.add(id);
493
+ this.resolvedIds.push(id);
494
+ if (this.resolvedIds.length > MAX_RESOLVED_IDS) {
495
+ const evicted = this.resolvedIds.shift();
496
+ this.resolvedSet.delete(evicted);
497
+ }
498
+ }
499
+ // -- ACP message helpers ----------------------------------------------------
500
+ initializeResult() {
501
+ return {
502
+ protocolVersion: ACP_PROTOCOL_VERSION,
503
+ agentInfo: { name: this.agent.name, version: this.agent.version },
504
+ agentCapabilities: { loadSession: false },
505
+ _meta: {
506
+ chances: {
507
+ capabilities: {
508
+ reconnect: true,
509
+ toolChunks: this.toolChunks,
510
+ modelSelection: true,
511
+ approvalSelection: this.built?.approval !== undefined,
512
+ models: this.host.listModels(),
513
+ fidelity: ["usage", "chunk", "compaction", "subagent", "reset"],
514
+ // (v23 M5) read-only workspace queries (file tree / read / git) for
515
+ // the GUI's 3-pane IDE — handled by the relay, not this driver.
516
+ workspaceQueries: this.workspaceQueries,
517
+ },
518
+ // (v22) Current approval mode, so a GUI badge reflects it on connect
519
+ // without a separate round-trip (set via `_chances/unstable/set_approval`).
520
+ approvalMode: this.built?.approval?.get() ?? "default",
521
+ },
522
+ },
523
+ };
524
+ }
525
+ enqueueNotification(method, params) {
526
+ this.writer.enqueue({ jsonrpc: "2.0", method, params });
527
+ }
528
+ respond(id, result) {
529
+ if (id === undefined)
530
+ return; // a notification has no id to respond to
531
+ this.writer.enqueue({ jsonrpc: "2.0", id, result });
532
+ }
533
+ error(id, code, message) {
534
+ this.writer.enqueue({ jsonrpc: "2.0", id, error: { code, message } });
535
+ }
536
+ }
537
+ /** Extract the user text from an ACP `PromptRequest.prompt` (ContentBlock[]). */
538
+ function textFromPrompt(params) {
539
+ const blocks = params?.prompt;
540
+ if (!Array.isArray(blocks))
541
+ return "";
542
+ return blocks
543
+ .map((b) => (b && typeof b === "object" && b.type === "text" ? String(b.text ?? "") : ""))
544
+ .filter((s) => s.length > 0)
545
+ .join("\n");
546
+ }
547
+ function delay(ms) {
548
+ return new Promise((resolve) => setTimeout(resolve, ms));
549
+ }
550
+ //# sourceMappingURL=engine-driver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine-driver.js","sourceRoot":"","sources":["../../../src/rpc/acp/engine-driver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { AppEvent } from "@chances-ai/runtime";
2
+ import type { SessionUpdate } from "@agentclientprotocol/sdk";
3
+ export interface AcpMapOptions {
4
+ /** When false, `tool:chunk` (live PTY output) is suppressed (mirrors the
5
+ * bespoke-wire `EventMapOptions.toolChunks` opt-out). */
6
+ toolChunks: boolean;
7
+ /** Model context-window size in tokens, if the engine knows it — used as the
8
+ * `usage_update.size`. Absent ⇒ `size` falls back to `used` (an unknown
9
+ * window renders as "full" rather than zero). */
10
+ contextWindow?: number;
11
+ }
12
+ export declare function mapEventToAcp(e: AppEvent, opts: AcpMapOptions): SessionUpdate[];
13
+ /**
14
+ * chances-only fidelity (no standard ACP `SessionUpdate`) → the `_meta.chances`
15
+ * payload of a `_chances/unstable/event` extension notification, or `null` if `e`
16
+ * is not one of these. SHARED by the relay `AcpEngineDriver` + the stdio Zed
17
+ * adapter so both ACP transports carry compaction/subagent/error identically
18
+ * (codex M3 SHOULD — no per-transport drift). A plain ACP client ignores the
19
+ * unknown method; a chances-aware one reads `_meta.chances`.
20
+ */
21
+ export declare function chancesEventMeta(e: AppEvent): Record<string, unknown> | null;
22
+ //# sourceMappingURL=event-map.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-map.d.ts","sourceRoot":"","sources":["../../../src/rpc/acp/event-map.ts"],"names":[],"mappings":"AAqCA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAY,MAAM,0BAA0B,CAAC;AAExE,MAAM,WAAW,aAAa;IAC5B;8DAC0D;IAC1D,UAAU,EAAE,OAAO,CAAC;IACpB;;sDAEkD;IAClD,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAOD,wBAAgB,aAAa,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,GAAG,aAAa,EAAE,CAuE/E;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAmC5E"}