@agentrq/acp-gateway 0.2.4 → 0.2.6

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/dist/acpClient.js CHANGED
@@ -4,14 +4,49 @@
4
4
  * Implements the ACP Client interface for the agentrq workspace.
5
5
  * Routes permission requests to the MCP server.
6
6
  */
7
+ import { TELEMETRY_NOTIFICATION_METHOD, formatPlan, formatUsage, planFromEntries, planTelemetryData, usageTelemetryData, } from "./telemetry.js";
7
8
  import * as fs from "node:fs/promises";
8
9
  import * as path from "node:path";
9
10
  /** Identifies a tool call routed through an agentrq MCP server. */
10
11
  const AGENTRQ_TOOL_PATTERN = /agentrq-[a-zA-Z0-9]{11}/;
12
+ /** How long to wait for `session/cancel` before settling permissions regardless. */
13
+ const CANCEL_SESSION_TIMEOUT_MS = 5000;
14
+ /**
15
+ * What a turn ending in anything but `end_turn` means, in the human's terms.
16
+ *
17
+ * Without this the workspace sees the agent's partial answer and nothing else,
18
+ * so a refused or truncated turn is indistinguishable from a finished one.
19
+ */
20
+ /**
21
+ * How long a tool call waits for a human before the turn is given up on.
22
+ *
23
+ * Humans are slow — this is not a network timeout — but it must exist: a wait
24
+ * with no end holds a task-queue slot for the life of the process, and at low
25
+ * concurrency one unanswered approval is enough to stop the workspace.
26
+ */
27
+ export const DEFAULT_PERMISSION_TIMEOUT_MS = 30 * 60 * 1000;
28
+ const STOP_REASON_NOTES = {
29
+ refusal: "⚠️ The agent refused to continue this turn.",
30
+ max_tokens: "⚠️ The agent stopped mid-turn: it ran out of output tokens.",
31
+ max_turn_requests: "⚠️ The agent stopped mid-turn: it reached its limit on model requests for a single turn.",
32
+ cancelled: "⚠️ The turn was cancelled before the agent finished.",
33
+ };
11
34
  export class AgentRQACPClient {
12
35
  mcpBridge;
13
36
  getTaskIdForSession;
14
37
  replyBuffers = new Map();
38
+ // sessionId → reasoning accumulated since the last boundary. Thought tokens
39
+ // stream one at a time and are deliberately kept out of replyBuffers: they
40
+ // are not the answer, and folding them in would both corrupt the reply and
41
+ // break the dedup against the agent's own `reply` tool call.
42
+ thoughtBuffers = new Map();
43
+ // sessionId → the most recent usage snapshot. Only the last one is worth
44
+ // reporting: each supersedes the one before it.
45
+ latestUsage = new Map();
46
+ // Telemetry sends, run one after another so the workspace sees them in the
47
+ // order the agent produced them, and off the ACP stream's critical path so a
48
+ // slow or unreachable workspace never stalls the agent mid-turn.
49
+ telemetryChain = Promise.resolve();
15
50
  // chatId → text sent by the agent via the reply MCP tool (for dedup in flushReply)
16
51
  agentReplies = new Map();
17
52
  // toolCallId → details seen on session updates. A `tool_call` update always
@@ -19,11 +54,217 @@ export class AgentRQACPClient {
19
54
  // (ACP marks it optional there, and codex-acp sends it bare), which would
20
55
  // otherwise leave us unable to tell an agentrq MCP call from anything else.
21
56
  toolCallDetails = new Map();
22
- constructor(mcpBridge, getTaskIdForSession = () => undefined) {
57
+ // request_id the tool call waiting on a human. One shared verdict listener
58
+ // serves them all: a listener per request was only ever removed on a matching
59
+ // verdict, so every unanswered request leaked one for the life of the process.
60
+ pendingPermissions = new Map();
61
+ permissionTimeoutMs;
62
+ cancelSession;
63
+ onModeChanged;
64
+ constructor(mcpBridge, getTaskIdForSession = () => undefined, options = {}) {
23
65
  this.mcpBridge = mcpBridge;
24
66
  this.getTaskIdForSession = getTaskIdForSession;
67
+ this.permissionTimeoutMs = options.permissionTimeoutMs ?? DEFAULT_PERMISSION_TIMEOUT_MS;
68
+ this.mcpBridge.on("verdict", this.onVerdict);
69
+ this.mcpBridge.on("reconnected", this.onWorkspaceReconnected);
70
+ }
71
+ /**
72
+ * Supplies what to do when the agent changes its own session mode.
73
+ *
74
+ * The gateway pins a mode that routes approvals to the human at session
75
+ * creation, but agents may switch modes on their own — and back into one
76
+ * that approves on the user's behalf.
77
+ */
78
+ setModeChangeHandler(handler) {
79
+ this.onModeChanged = handler;
80
+ }
81
+ /** How many tool calls are waiting on a human right now. */
82
+ get pendingPermissionCount() {
83
+ return this.pendingPermissions.size;
84
+ }
85
+ /**
86
+ * Supplies the way to stop a turn, which only exists once the agent
87
+ * connection has been built around this client.
88
+ */
89
+ setSessionCanceller(cancel) {
90
+ this.cancelSession = cancel;
25
91
  }
92
+ /**
93
+ * Answers every waiting tool call with `cancelled`.
94
+ *
95
+ * Used when the agent is gone: nothing will ever act on those answers, but
96
+ * the promises must settle or their task-queue slots are held forever.
97
+ */
98
+ cancelPendingPermissions(reason, sessionId) {
99
+ if (this.pendingPermissions.size === 0)
100
+ return;
101
+ const toCancel = sessionId
102
+ ? [...this.pendingPermissions.values()].filter((p) => p.sessionId === sessionId)
103
+ : [...this.pendingPermissions.values()];
104
+ if (toCancel.length === 0)
105
+ return;
106
+ console.error(`[acp] Cancelling ${toCancel.length} waiting permission request(s): ${reason}`);
107
+ for (const pending of toCancel) {
108
+ pending.settle({ outcome: "cancelled" });
109
+ }
110
+ }
111
+ /**
112
+ * Re-sends everything still waiting, after the workspace connection was
113
+ * re-established on a new session.
114
+ *
115
+ * A verdict is routed back to the session its request arrived on, so a
116
+ * request that was in flight across a reconnect can never be answered. The
117
+ * request id stays the same, which is what lets the workspace recognise this
118
+ * as the same pending decision rather than a new one to ask about again.
119
+ */
120
+ onWorkspaceReconnected = () => {
121
+ if (this.pendingPermissions.size === 0)
122
+ return;
123
+ console.error(`[acp] Workspace reconnected — re-sending ${this.pendingPermissions.size} ` +
124
+ `permission request(s) that would otherwise never be answered`);
125
+ for (const pending of this.pendingPermissions.values()) {
126
+ void this.mcpBridge
127
+ .sendNotification("notifications/claude/channel/permission_request", pending.payload)
128
+ .catch((err) => {
129
+ console.error(`[acp] Failed to re-send permission request ${pending.payload.request_id}:`, err);
130
+ });
131
+ }
132
+ };
133
+ /** Delivers a verdict to whichever tool call is waiting on it, if any. */
134
+ onVerdict = (data) => {
135
+ const pending = this.pendingPermissions.get(data.requestId);
136
+ if (!pending) {
137
+ console.error(`[acp] Verdict for ${data.requestId} arrived with nothing waiting on it`);
138
+ return;
139
+ }
140
+ console.error(`✅ Permission verdict received: ${data.behavior}`);
141
+ pending.settle(this.outcomeForVerdict(pending.options, data.behavior));
142
+ };
143
+ /** Stops the agent's current turn and cancels any pending permissions for the session. */
144
+ async cancelTurn(sessionId) {
145
+ if (!sessionId)
146
+ return;
147
+ try {
148
+ // Cancel before answering: the spec treats `cancelled` as the answer a
149
+ // client gives *because* it cancelled the turn, so settling first would
150
+ // leave the agent free to carry on and ask again. The wait is bounded and
151
+ // the settle happens either way — an agent wedged on its stdin must not
152
+ // hold waiting permissions, and their task-queue slots, open forever.
153
+ if (this.cancelSession) {
154
+ let timer;
155
+ try {
156
+ await Promise.race([
157
+ Promise.resolve(this.cancelSession(sessionId)),
158
+ new Promise((resolve) => {
159
+ timer = setTimeout(() => {
160
+ console.error(`[acp] session/cancel for ${sessionId} did not complete in ` +
161
+ `${CANCEL_SESSION_TIMEOUT_MS}ms — settling permissions anyway`);
162
+ resolve();
163
+ }, CANCEL_SESSION_TIMEOUT_MS);
164
+ }),
165
+ ]);
166
+ }
167
+ finally {
168
+ if (timer)
169
+ clearTimeout(timer);
170
+ }
171
+ }
172
+ }
173
+ catch (err) {
174
+ console.error(`[acp] Failed to cancel turn for session ${sessionId}:`, err);
175
+ }
176
+ finally {
177
+ this.cancelPendingPermissions("task cancelled", sessionId);
178
+ }
179
+ }
180
+ /**
181
+ * Ends the turn: everything the agent produced besides its answer goes out
182
+ * around the answer itself.
183
+ *
184
+ * The reasoning that led to the answer has to precede it, and the token and
185
+ * cost counters read as a footer, so they follow.
186
+ */
26
187
  async flushReply(sessionId) {
188
+ await this.flushThought(sessionId);
189
+ await this.deliverReply(sessionId);
190
+ await this.flushUsage(sessionId);
191
+ }
192
+ /**
193
+ * Queues whatever reasoning has accumulated for sending, and waits for the
194
+ * telemetry queue to drain.
195
+ *
196
+ * Taking the buffer here rather than inside the queued send is what keeps a
197
+ * reasoning block whole: anything the agent thinks after this point belongs
198
+ * to the next block.
199
+ */
200
+ async flushThought(sessionId) {
201
+ this.queueThoughtFlush(sessionId);
202
+ await this.telemetryChain;
203
+ }
204
+ /**
205
+ * Closes off the current reasoning block, if there is one.
206
+ *
207
+ * Called wherever the agent stops thinking and does something else — starts
208
+ * answering, calls a tool, revises its plan — so a block of reasoning
209
+ * reaches the human while it still explains what is about to happen, rather
210
+ * than arriving in one lump at the end of the turn.
211
+ */
212
+ queueThoughtFlush(sessionId) {
213
+ const thought = this.thoughtBuffers.get(sessionId);
214
+ if (!thought?.trim())
215
+ return;
216
+ this.thoughtBuffers.delete(sessionId);
217
+ this.queueTelemetry(() => this.sendTelemetry(sessionId, "thought", thought, {}));
218
+ }
219
+ /** Reports the last usage snapshot of the turn, if the agent sent any. */
220
+ async flushUsage(sessionId) {
221
+ const usage = this.latestUsage.get(sessionId);
222
+ this.latestUsage.delete(sessionId);
223
+ if (!usage)
224
+ return;
225
+ await this.sendTelemetry(sessionId, "usage", formatUsage(usage), usageTelemetryData(usage));
226
+ }
227
+ /** Reports a plan the agent has just published or revised. */
228
+ queuePlan(sessionId, plan) {
229
+ this.queueThoughtFlush(sessionId);
230
+ this.queueTelemetry(() => this.sendTelemetry(sessionId, "plan", formatPlan(plan), planTelemetryData(plan)));
231
+ }
232
+ /** Adds a send to the tail of the telemetry queue. */
233
+ queueTelemetry(send) {
234
+ this.telemetryChain = this.telemetryChain
235
+ .catch(() => { })
236
+ .then(send)
237
+ .catch((err) => {
238
+ console.error(`[acp] Telemetry send failed:`, err);
239
+ });
240
+ }
241
+ /**
242
+ * Forwards one piece of telemetry to the workspace.
243
+ *
244
+ * Never throws: telemetry is not the answer, so a workspace that cannot take
245
+ * it right now must not cost the agent its turn.
246
+ */
247
+ async sendTelemetry(sessionId, kind, text, data) {
248
+ const taskId = this.getTaskIdForSession(sessionId);
249
+ if (!taskId) {
250
+ console.error(`[acp] No task ID for session ${sessionId}, dropping ${kind} telemetry`);
251
+ return;
252
+ }
253
+ const payload = {
254
+ task_id: taskId,
255
+ session_id: sessionId,
256
+ kind,
257
+ text,
258
+ data,
259
+ };
260
+ try {
261
+ await this.mcpBridge.sendNotification(TELEMETRY_NOTIFICATION_METHOD, payload);
262
+ }
263
+ catch (err) {
264
+ console.error(`[acp] Failed to send ${kind} telemetry for session ${sessionId}:`, err);
265
+ }
266
+ }
267
+ async deliverReply(sessionId) {
27
268
  const text = this.replyBuffers.get(sessionId) ?? "";
28
269
  this.replyBuffers.delete(sessionId);
29
270
  if (!text.trim())
@@ -47,17 +288,40 @@ export class AgentRQACPClient {
47
288
  console.error(`[acp] Failed to forward reply to task ${taskId}:`, err);
48
289
  }
49
290
  }
291
+ /**
292
+ * Tells the workspace when a turn ended for any reason other than the agent
293
+ * finishing what it was asked. Call after flushReply, so the note follows
294
+ * whatever the agent did manage to say.
295
+ */
296
+ async reportStopReason(sessionId, stopReason) {
297
+ if (stopReason === "end_turn")
298
+ return;
299
+ const taskId = this.getTaskIdForSession(sessionId);
300
+ if (!taskId) {
301
+ console.error(`[acp] No task ID for session ${sessionId}, not reporting "${stopReason}"`);
302
+ return;
303
+ }
304
+ const text = STOP_REASON_NOTES[stopReason] ??
305
+ `⚠️ The agent stopped for a reason this gateway does not recognise: ${stopReason}.`;
306
+ try {
307
+ await this.mcpBridge.callTool("reply", { chatId: taskId, text });
308
+ console.error(`[acp] Reported stop reason "${stopReason}" to task ${taskId}`);
309
+ }
310
+ catch (err) {
311
+ console.error(`[acp] Failed to report stop reason to task ${taskId}:`, err);
312
+ }
313
+ }
50
314
  async requestPermission(params) {
51
- const requestId = params.toolCall.toolCallId;
315
+ const toolCallId = params.toolCall.toolCallId;
52
316
  // Fall back to what the earlier session update reported for this same tool
53
317
  // call: the permission request itself may carry no title or input.
54
- const remembered = this.toolCallDetails.get(requestId);
55
- this.toolCallDetails.delete(requestId);
318
+ const remembered = this.toolCallDetails.get(toolCallId);
319
+ this.toolCallDetails.delete(toolCallId);
56
320
  const toolTitle = params.toolCall.title ?? remembered?.title ?? "Unknown Tool";
57
321
  const rawInput = params.toolCall.rawInput ?? remembered?.rawInput;
58
322
  // Auto-allow tool calls that contain the pattern: agentrq-<11 chars a-zA-Z0-9>
59
323
  if (AGENTRQ_TOOL_PATTERN.test(toolTitle)) {
60
- console.error(`\n🔓 ACP Auto-allowing tool call: ${toolTitle} (ID: ${requestId})`);
324
+ console.error(`\n🔓 ACP Auto-allowing tool call: ${toolTitle} (ID: ${toolCallId})`);
61
325
  const option = params.options.find(o => o.kind.startsWith("allow") ||
62
326
  o.name.toLowerCase().includes("allow") ||
63
327
  o.name.toLowerCase().includes("yes") ||
@@ -70,8 +334,14 @@ export class AgentRQACPClient {
70
334
  },
71
335
  };
72
336
  }
73
- console.error(`\n🔐 ACP Permission requested: ${toolTitle} (ID: ${requestId})`);
74
- const taskId = params.sessionId ? this.getTaskIdForSession(params.sessionId) : undefined;
337
+ console.error(`\n🔐 ACP Permission requested: ${toolTitle} (ID: ${toolCallId})`);
338
+ const sessionId = params.sessionId;
339
+ // agentrq keys its own bookkeeping on the request id alone, across the whole
340
+ // workspace. Tool call ids are only unique within a session, and agents
341
+ // commonly number them from one, so two tasks running at once could
342
+ // otherwise have a verdict land on the wrong tool call.
343
+ const requestId = sessionId ? `${sessionId}:${toolCallId}` : toolCallId;
344
+ const taskId = sessionId ? this.getTaskIdForSession(sessionId) : undefined;
75
345
  const payload = {
76
346
  request_id: requestId,
77
347
  task_id: taskId,
@@ -94,62 +364,81 @@ export class AgentRQACPClient {
94
364
  console.error(`[acp] Failed to forward permission request ${requestId} (cancelling):`, err);
95
365
  return { outcome: { outcome: "cancelled" } };
96
366
  }
97
- // 2. Wait for the verdict from the MCP server
367
+ // 2. Wait for the verdict from the MCP server — but not forever.
98
368
  console.error(`⌛ Waiting for human approval in the agentrq dashboard...`);
99
369
  return new Promise((resolve) => {
100
- const handler = (data) => {
101
- if (data.requestId === requestId) {
102
- // Cleanup this listener
103
- this.mcpBridge.off("verdict", handler);
104
- console.error(`✅ Permission verdict received: ${data.behavior}`);
105
- // A verdict from agentrq covers exactly one tool call. Never select
106
- // a "persistent" option (ACP's "allow_always"/"reject_always" kinds,
107
- // or an equivalent "remember"/"don't ask again" option by name)
108
- // picking one would make the *spawned agent* remember the decision
109
- // and stop sending requestPermission for matching future tool
110
- // calls, so those calls would never reach agentrq again. Every
111
- // subsequent call must still be forwarded and re-approved there.
112
- const isPersistent = (o) => /always|remember|don'?t ask/i.test(o.kind) || /always|remember|don'?t ask/i.test(o.name);
113
- const onceOptions = params.options.filter(o => !isPersistent(o));
114
- // Map "allow"/"deny" to the correct ACP option. Per the ACP spec,
115
- // PermissionOptionKind is one of "allow_once" | "allow_always" |
116
- // "reject_once" | "reject_always" — there is no "deny_*" kind, so a
117
- // deny verdict must match on "reject" to find a spec-compliant option.
118
- const isAllow = data.behavior === "allow";
119
- const option = onceOptions.find(o => {
120
- const name = o.name.toLowerCase();
121
- return isAllow
122
- ? o.kind.startsWith("allow") || name.includes("allow") || name.includes("yes") || name.includes("approve")
123
- : o.kind.startsWith("reject") || name.includes("deny") || name.includes("reject") || name.includes("no");
124
- });
125
- // Falling back to onceOptions[0] unconditionally is unsafe for a
126
- // deny verdict: ACP conventionally lists allow options first, so an
127
- // unmatched deny could silently resolve to an allow option and
128
- // approve a tool call the human explicitly denied. Only ever fall
129
- // back to a non-persistent option that is not itself an allow-kind;
130
- // if no safe option exists at all (e.g. only "always" options were
131
- // offered), cancel instead of guessing.
132
- let outcome;
133
- if (option) {
134
- outcome = { outcome: "selected", optionId: option.optionId };
135
- }
136
- else if (isAllow) {
137
- outcome = onceOptions[0]
138
- ? { outcome: "selected", optionId: onceOptions[0].optionId }
139
- : { outcome: "cancelled" };
140
- }
141
- else {
142
- const safeFallback = onceOptions.find(o => !o.kind.startsWith("allow"));
143
- outcome = safeFallback
144
- ? { outcome: "selected", optionId: safeFallback.optionId }
145
- : { outcome: "cancelled" };
146
- }
147
- console.error(`[acp] Selected permission option: ${"optionId" in outcome ? outcome.optionId : "cancelled"} (${option?.name ?? "default"})`);
148
- resolve({ outcome });
149
- }
370
+ const timer = this.permissionTimeoutMs > 0
371
+ ? setTimeout(() => {
372
+ console.error(`[acp] No verdict for ${requestId} after ` +
373
+ `${Math.round(this.permissionTimeoutMs / 60000)} min — cancelling the turn.`);
374
+ // Cancel as well as answering: the spec treats `cancelled` as the
375
+ // answer a client gives *because* it cancelled the turn. Answering
376
+ // alone would leave the agent free to carry on and ask again.
377
+ void this.cancelTurn(sessionId);
378
+ settle({ outcome: "cancelled" });
379
+ }, this.permissionTimeoutMs)
380
+ : undefined;
381
+ let settled = false;
382
+ const settle = (outcome) => {
383
+ if (settled)
384
+ return;
385
+ settled = true;
386
+ if (timer)
387
+ clearTimeout(timer);
388
+ this.pendingPermissions.delete(requestId);
389
+ console.error(`[acp] Selected permission option: ${"optionId" in outcome ? outcome.optionId : "cancelled"}`);
390
+ resolve({ outcome });
150
391
  };
151
- this.mcpBridge.on("verdict", handler);
392
+ this.pendingPermissions.set(requestId, {
393
+ payload,
394
+ sessionId,
395
+ options: params.options,
396
+ settle,
397
+ });
398
+ });
399
+ }
400
+ /**
401
+ * Turns a workspace verdict into one of the options the agent offered.
402
+ *
403
+ * A verdict from agentrq covers exactly one tool call. Never select a
404
+ * "persistent" option (ACP's "allow_always"/"reject_always" kinds, or an
405
+ * equivalent "remember"/"don't ask again" option by name) — picking one would
406
+ * make the *spawned agent* remember the decision and stop sending
407
+ * requestPermission for matching future tool calls, so those calls would
408
+ * never reach agentrq again. Every subsequent call must still be forwarded
409
+ * and re-approved there.
410
+ */
411
+ outcomeForVerdict(options, behavior) {
412
+ const isPersistent = (o) => /always|remember|don'?t ask/i.test(o.kind) || /always|remember|don'?t ask/i.test(o.name);
413
+ const onceOptions = options.filter(o => !isPersistent(o));
414
+ // Map "allow"/"deny" to the correct ACP option. Per the ACP spec,
415
+ // PermissionOptionKind is one of "allow_once" | "allow_always" |
416
+ // "reject_once" | "reject_always" — there is no "deny_*" kind, so a
417
+ // deny verdict must match on "reject" to find a spec-compliant option.
418
+ const isAllow = behavior === "allow";
419
+ const option = onceOptions.find(o => {
420
+ const name = o.name.toLowerCase();
421
+ return isAllow
422
+ ? o.kind.startsWith("allow") || name.includes("allow") || name.includes("yes") || name.includes("approve")
423
+ : o.kind.startsWith("reject") || name.includes("deny") || name.includes("reject") || name.includes("no");
152
424
  });
425
+ if (option)
426
+ return { outcome: "selected", optionId: option.optionId };
427
+ // Falling back to onceOptions[0] unconditionally is unsafe for a deny
428
+ // verdict: ACP conventionally lists allow options first, so an unmatched
429
+ // deny could silently resolve to an allow option and approve a tool call
430
+ // the human explicitly denied. Only ever fall back to a non-persistent
431
+ // option that is not itself an allow-kind; if no safe option exists at all
432
+ // (e.g. only "always" options were offered), cancel instead of guessing.
433
+ if (isAllow) {
434
+ return onceOptions[0]
435
+ ? { outcome: "selected", optionId: onceOptions[0].optionId }
436
+ : { outcome: "cancelled" };
437
+ }
438
+ const safeFallback = onceOptions.find(o => !o.kind.startsWith("allow"));
439
+ return safeFallback
440
+ ? { outcome: "selected", optionId: safeFallback.optionId }
441
+ : { outcome: "cancelled" };
153
442
  }
154
443
  /**
155
444
  * Records what a tool call is, keyed by its id, so that a permission request
@@ -181,15 +470,47 @@ export class AgentRQACPClient {
181
470
  switch (update.sessionUpdate) {
182
471
  case "agent_message_chunk":
183
472
  if (update.content.type === "text") {
473
+ // The agent has stopped thinking and started answering.
474
+ this.queueThoughtFlush(params.sessionId);
184
475
  process.stdout.write(update.content.text);
185
476
  const sid = params.sessionId;
186
477
  this.replyBuffers.set(sid, (this.replyBuffers.get(sid) ?? "") + update.content.text);
187
478
  }
188
479
  break;
480
+ case "agent_thought_chunk":
481
+ if (update.content.type === "text") {
482
+ const sid = params.sessionId;
483
+ this.thoughtBuffers.set(sid, (this.thoughtBuffers.get(sid) ?? "") + update.content.text);
484
+ }
485
+ break;
486
+ case "plan":
487
+ this.queuePlan(params.sessionId, planFromEntries(update.entries));
488
+ break;
489
+ case "plan_update":
490
+ this.queuePlan(params.sessionId, update.plan);
491
+ break;
492
+ case "plan_removed":
493
+ this.queueThoughtFlush(params.sessionId);
494
+ this.queueTelemetry(() => this.sendTelemetry(params.sessionId, "plan", "Plan withdrawn.", {
495
+ planId: update.planId,
496
+ removed: true,
497
+ }));
498
+ break;
499
+ case "usage_update":
500
+ // Each snapshot supersedes the last; only the final one is reported,
501
+ // at the end of the turn.
502
+ this.latestUsage.set(params.sessionId, update);
503
+ break;
504
+ case "current_mode_update":
505
+ console.error(`[acp] Agent switched session mode to "${update.currentModeId}"`);
506
+ await this.onModeChanged?.(params.sessionId, update.currentModeId);
507
+ break;
189
508
  case "tool_call_update":
190
509
  this.rememberToolCall(update);
191
510
  break;
192
511
  case "tool_call": {
512
+ // Reasoning that explains a tool call belongs in front of it.
513
+ this.queueThoughtFlush(params.sessionId);
193
514
  this.rememberToolCall(update);
194
515
  if (update.title && AGENTRQ_TOOL_PATTERN.test(update.title)) {
195
516
  // Track completed reply calls so flushReply can skip exact duplicates
@@ -1 +1 @@
1
- {"version":3,"file":"acpClient.js","sourceRoot":"","sources":["../src/acpClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acpClient.js","sourceRoot":"","sources":["../src/acpClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * agentInfo.ts
3
+ *
4
+ * Renders what an agent said about itself during `initialize`.
5
+ *
6
+ * An agent's capabilities are only knowable from a live handshake — nothing in
7
+ * the registry lists them — so the answer to "can this agent resume a session?"
8
+ * or "will it accept an HTTP MCP server?" is otherwise a guess.
9
+ */
10
+ import { describeAuthMethods } from "./auth.js";
11
+ /** ACP marks an optional capability as supported by supplying `{}` for it. */
12
+ function supported(value) {
13
+ return value !== undefined && value !== null && value !== false;
14
+ }
15
+ function yesNo(value) {
16
+ return supported(value) ? "yes" : "no";
17
+ }
18
+ function section(title, rows) {
19
+ const width = Math.max(...rows.map(([label]) => label.length));
20
+ const body = rows.map(([label, value]) => ` ${label.padEnd(width)} ${value}`);
21
+ return [title, ...body].join("\n");
22
+ }
23
+ /** The agent's own name for itself, falling back to how it was launched. */
24
+ function heading(initResult, launchedAs) {
25
+ const info = initResult
26
+ .agentInfo;
27
+ if (!info?.name)
28
+ return launchedAs;
29
+ const title = info.title && info.title !== info.name ? ` — ${info.title}` : "";
30
+ const version = info.version ? ` ${info.version}` : "";
31
+ return `${info.name}${title}${version}`;
32
+ }
33
+ /**
34
+ * Describes an agent's capabilities as the agent itself reported them.
35
+ *
36
+ * `launchedAs` is only used when the agent supplies no `agentInfo`, so that the
37
+ * output still says which agent is being described.
38
+ */
39
+ export function describeAgentInfo(initResult, launchedAs) {
40
+ const caps = (initResult.agentCapabilities ?? {});
41
+ const sessions = caps.sessionCapabilities ?? {};
42
+ const prompt = caps.promptCapabilities ?? {};
43
+ const mcp = caps.mcpCapabilities ?? {};
44
+ const blocks = [
45
+ `${heading(initResult, launchedAs)}\nACP protocol version ${initResult.protocolVersion}`,
46
+ section("SESSIONS", [
47
+ ["session/load", yesNo(caps.loadSession)],
48
+ ["session/list", yesNo(sessions.list)],
49
+ ["session/resume", yesNo(sessions.resume)],
50
+ ["session/close", yesNo(sessions.close)],
51
+ ["session/delete", yesNo(sessions.delete)],
52
+ ["session/fork", yesNo(sessions.fork)],
53
+ ]),
54
+ section("PROMPT CONTENT", [
55
+ ["image", yesNo(prompt.image)],
56
+ ["audio", yesNo(prompt.audio)],
57
+ ["embedded context", yesNo(prompt.embeddedContext)],
58
+ ]),
59
+ section("MCP TRANSPORTS", [
60
+ ["http", yesNo(mcp.http)],
61
+ ["sse", yesNo(mcp.sse)],
62
+ ["acp", yesNo(mcp.acp)],
63
+ ]),
64
+ section("AUTHENTICATION", [["logout", yesNo(caps.auth?.logout)]]) +
65
+ `\n\n Login methods:\n${describeAuthMethods(initResult.authMethods)}`,
66
+ ];
67
+ return blocks.join("\n\n");
68
+ }
69
+ //# sourceMappingURL=agentInfo.js.map