@linkshell/host 0.4.19 → 0.4.21

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 (105) hide show
  1. package/README.md +2 -2
  2. package/dist/host/src/acp-settings.d.ts +12 -0
  3. package/dist/host/src/acp-settings.js +41 -0
  4. package/dist/host/src/acp-settings.js.map +1 -0
  5. package/dist/host/src/carry.js +13 -2
  6. package/dist/host/src/carry.js.map +1 -1
  7. package/dist/host/src/drivers/acp/client-services.d.ts +29 -0
  8. package/dist/host/src/drivers/acp/client-services.js +192 -0
  9. package/dist/host/src/drivers/acp/client-services.js.map +1 -0
  10. package/dist/host/src/drivers/acp/connection.d.ts +37 -8
  11. package/dist/host/src/drivers/acp/connection.js +127 -110
  12. package/dist/host/src/drivers/acp/connection.js.map +1 -1
  13. package/dist/host/src/drivers/acp/driver.d.ts +92 -2
  14. package/dist/host/src/drivers/acp/driver.js +599 -52
  15. package/dist/host/src/drivers/acp/driver.js.map +1 -1
  16. package/dist/host/src/drivers/acp/editor.d.ts +31 -0
  17. package/dist/host/src/drivers/acp/editor.js +242 -0
  18. package/dist/host/src/drivers/acp/editor.js.map +1 -0
  19. package/dist/host/src/drivers/acp/mapper.d.ts +2 -1
  20. package/dist/host/src/drivers/acp/mapper.js +88 -35
  21. package/dist/host/src/drivers/acp/mapper.js.map +1 -1
  22. package/dist/host/src/drivers/acp/mcp.d.ts +20 -0
  23. package/dist/host/src/drivers/acp/mcp.js +139 -0
  24. package/dist/host/src/drivers/acp/mcp.js.map +1 -0
  25. package/dist/host/src/drivers/acp/questions.js +14 -0
  26. package/dist/host/src/drivers/acp/questions.js.map +1 -1
  27. package/dist/host/src/drivers/acp/updates.d.ts +10 -0
  28. package/dist/host/src/drivers/acp/updates.js +137 -0
  29. package/dist/host/src/drivers/acp/updates.js.map +1 -0
  30. package/dist/host/src/drivers/claude/activity.d.ts +1 -0
  31. package/dist/host/src/drivers/claude/activity.js +17 -3
  32. package/dist/host/src/drivers/claude/activity.js.map +1 -1
  33. package/dist/host/src/drivers/claude/children.d.ts +7 -0
  34. package/dist/host/src/drivers/claude/children.js +31 -2
  35. package/dist/host/src/drivers/claude/children.js.map +1 -1
  36. package/dist/host/src/drivers/claude/driver.js +1 -0
  37. package/dist/host/src/drivers/claude/driver.js.map +1 -1
  38. package/dist/host/src/drivers/claude/tasks.d.ts +3 -3
  39. package/dist/host/src/drivers/claude/transcript.d.ts +497 -38
  40. package/dist/host/src/drivers/codex/driver.d.ts +3 -0
  41. package/dist/host/src/drivers/codex/driver.js +36 -1
  42. package/dist/host/src/drivers/codex/driver.js.map +1 -1
  43. package/dist/host/src/drivers/registry.d.ts +6 -0
  44. package/dist/host/src/drivers/registry.js +8 -0
  45. package/dist/host/src/drivers/registry.js.map +1 -1
  46. package/dist/host/src/drivers/types.d.ts +34 -1
  47. package/dist/host/src/fs.d.ts +3 -3
  48. package/dist/host/src/host.js +21 -3
  49. package/dist/host/src/host.js.map +1 -1
  50. package/dist/host/src/hub.d.ts +249 -2
  51. package/dist/host/src/hub.js +150 -9
  52. package/dist/host/src/hub.js.map +1 -1
  53. package/dist/host/src/input.d.ts +5 -3
  54. package/dist/host/src/input.js +8 -6
  55. package/dist/host/src/input.js.map +1 -1
  56. package/dist/host/src/questions.d.ts +3 -1
  57. package/dist/host/src/questions.js +33 -7
  58. package/dist/host/src/questions.js.map +1 -1
  59. package/dist/host/src/rpc/server.js +14 -0
  60. package/dist/host/src/rpc/server.js.map +1 -1
  61. package/dist/host/src/screen-metrics.d.ts +3 -0
  62. package/dist/host/src/screen-metrics.js +27 -0
  63. package/dist/host/src/screen-metrics.js.map +1 -0
  64. package/dist/host/src/screen.js +7 -6
  65. package/dist/host/src/screen.js.map +1 -1
  66. package/dist/host/src/slim.js +15 -4
  67. package/dist/host/src/slim.js.map +1 -1
  68. package/dist/host/src/store.js +7 -2
  69. package/dist/host/src/store.js.map +1 -1
  70. package/dist/host/src/terminals.d.ts +8 -3
  71. package/dist/host/src/terminals.js +3 -2
  72. package/dist/host/src/terminals.js.map +1 -1
  73. package/dist/host/tsconfig.tsbuildinfo +1 -1
  74. package/dist/wire/src/acp.d.ts +510 -0
  75. package/dist/wire/src/acp.js +39 -0
  76. package/dist/wire/src/acp.js.map +1 -0
  77. package/dist/wire/src/async-questions.d.ts +2 -2
  78. package/dist/wire/src/computer-preview.d.ts +2 -2
  79. package/dist/wire/src/content.d.ts +465 -0
  80. package/dist/wire/src/content.js +58 -0
  81. package/dist/wire/src/content.js.map +1 -0
  82. package/dist/wire/src/editor.d.ts +702 -0
  83. package/dist/wire/src/editor.js +23 -0
  84. package/dist/wire/src/editor.js.map +1 -0
  85. package/dist/wire/src/index.d.ts +3 -0
  86. package/dist/wire/src/index.js +3 -0
  87. package/dist/wire/src/index.js.map +1 -1
  88. package/dist/wire/src/model.d.ts +1383 -79
  89. package/dist/wire/src/model.js +20 -1
  90. package/dist/wire/src/model.js.map +1 -1
  91. package/dist/wire/src/peer.d.ts +1 -0
  92. package/dist/wire/src/peer.js +22 -6
  93. package/dist/wire/src/peer.js.map +1 -1
  94. package/dist/wire/src/questions.d.ts +3 -0
  95. package/dist/wire/src/questions.js +65 -0
  96. package/dist/wire/src/questions.js.map +1 -0
  97. package/dist/wire/src/relay.d.ts +4 -4
  98. package/dist/wire/src/rpc.d.ts +19023 -2518
  99. package/dist/wire/src/rpc.js +41 -3
  100. package/dist/wire/src/rpc.js.map +1 -1
  101. package/dist/wire/src/updates.d.ts +3848 -1114
  102. package/dist/wire/src/updates.js +42 -40
  103. package/dist/wire/src/updates.js.map +1 -1
  104. package/dist/wire/src/workflow.d.ts +22 -22
  105. package/package.json +4 -3
@@ -1,154 +1,171 @@
1
1
  import { spawn } from "node:child_process";
2
+ import { Readable, Writable } from "node:stream";
3
+ import { StringDecoder } from "node:string_decoder";
4
+ import { createHttpStream } from "@agentclientprotocol/sdk/experimental/http-client";
5
+ import { createWebSocketStream } from "@agentclientprotocol/sdk/experimental/ws-client";
6
+ import { ndJsonStream } from "@agentclientprotocol/sdk/experimental/v2";
7
+ import WebSocket from "ws";
2
8
  import { RpcPeer } from "@linkshell/wire";
3
9
  export const ACP_PROTOCOL_VERSION = 1;
10
+ const object = (value) => value && typeof value === "object" && !Array.isArray(value) ? value : {};
11
+ const supported = (value) => value !== undefined && value !== null && value !== false;
4
12
  export class AcpProtocolError extends Error {
5
- constructor(version) {
6
- super(`这个 Agent 返回了不兼容的 ACP 协议版本(${String(version ?? "未提供")});当前支持 ACP ${ACP_PROTOCOL_VERSION}。请使用兼容的 Agent 版本。`);
13
+ constructor(version, requested = ACP_PROTOCOL_VERSION) {
14
+ super(`这个 Agent 返回了不兼容的 ACP 协议版本(${String(version ?? "未提供")});当前启用 ACP ${requested === 2 ? "1 / 2" : "1"}。请使用兼容的 Agent 版本。`);
7
15
  }
8
16
  }
9
- /**
10
- * One ACP agent subprocess: JSON-RPC 2.0 over newline-delimited stdio.
11
- * A single process serves every session of that agent.
12
- */
17
+ /** One version-negotiated ACP connection. Native credentials remain owned by the agent. */
13
18
  export class AcpConnection {
14
19
  options;
15
20
  child;
16
21
  peer;
22
+ reader;
23
+ writer;
17
24
  stopping = false;
25
+ closed = false;
18
26
  stderrTail = "";
19
27
  initializeResult = {};
20
28
  constructor(options) {
21
29
  this.options = options;
22
30
  }
23
- get capabilities() {
24
- return this.initializeResult.agentCapabilities ?? {};
25
- }
26
- get alive() {
27
- return Boolean(this.child && this.child.exitCode === null && !this.peer?.isClosed);
28
- }
31
+ get capabilities() { return this.initializeResult.agentCapabilities ?? {}; }
32
+ get alive() { return !!this.peer && !this.closed && !this.peer.isClosed; }
33
+ get protocolVersion() { return this.initializeResult.protocolVersion === 2 ? 2 : 1; }
29
34
  async start() {
30
35
  this.stopping = false;
31
- const child = spawn(this.options.command, this.options.args, {
32
- env: this.options.env,
33
- cwd: this.options.cwd,
34
- stdio: ["pipe", "pipe", "pipe"],
35
- });
36
- this.child = child;
36
+ this.closed = false;
37
+ this.stderrTail = "";
38
+ const remote = this.options.transport;
39
+ let stream;
40
+ if (remote) {
41
+ const url = new URL(remote.url);
42
+ if (!(remote.type === "http" ? ["http:", "https:"] : ["ws:", "wss:"]).includes(url.protocol))
43
+ throw new Error("ACP 服务地址的协议不匹配");
44
+ stream = remote.type === "http"
45
+ ? createHttpStream(remote.url, { headers: remote.headers, maxMessageBytes: 32 * 1024 * 1024 })
46
+ : createWebSocketStream(remote.url, { headers: remote.headers, WebSocket });
47
+ }
48
+ else {
49
+ const child = spawn(this.options.command, this.options.args, { env: this.options.env, cwd: this.options.cwd, stdio: ["pipe", "pipe", "pipe"] });
50
+ this.child = child;
51
+ // The SDK codec decodes incrementally: JSON lines and UTF-8 characters may
52
+ // both span stdout buffers. The same codec accepts v2 JSON-RPC batches.
53
+ stream = ndJsonStream(Writable.toWeb(child.stdin), Readable.toWeb(child.stdout), { maxMessageBytes: 32 * 1024 * 1024 });
54
+ const stderr = new StringDecoder("utf8");
55
+ child.stderr?.on("data", (chunk) => { this.stderrTail = (this.stderrTail + stderr.write(chunk)).slice(-4000); });
56
+ child.once("exit", (code, signal) => this.lost(`${this.options.command} exited (${signal ?? code})${this.stderrTail ? `: ${this.stderrTail.trim().split("\n").slice(-3).join(" | ")}` : ""}`));
57
+ child.once("error", (error) => this.lost(error.message));
58
+ }
59
+ this.reader = stream.readable.getReader();
60
+ this.writer = stream.writable.getWriter();
37
61
  const peer = new RpcPeer({
38
- send: (text) => {
39
- if (child.stdin?.writable)
40
- child.stdin.write(`${text}\n`);
41
- },
42
- onNotification: (method, params) => {
43
- if (method === "$/cancel_request") {
44
- const id = params?.requestId;
45
- if (typeof id === "string" || typeof id === "number")
46
- this.options.onCancelRequest?.(id);
47
- return;
48
- }
49
- if (method === "_claude/sdkMessage") {
50
- const raw = params;
51
- if (raw?.sessionId && raw.message?.type === "active_goal") {
52
- const value = raw.message.value;
53
- if (value === null || typeof value?.condition === "string")
54
- this.options.onUpdate(raw.sessionId, {
55
- sessionUpdate: "session_info_update", _meta: { jetbrains: { air: { goal: value === null ? null : {
56
- objective: value.condition.trim(), status: "active", iterations: value.iterations, lastReason: value.last_reason,
57
- } } } },
58
- });
59
- }
60
- return;
61
- }
62
- if (method !== "session/update")
63
- return;
64
- const payload = params;
65
- if (typeof payload?.sessionId === "string")
66
- this.options.onUpdate(payload.sessionId, payload.update);
67
- },
62
+ send: (text) => { void this.writer.write(JSON.parse(text)).catch((error) => this.lost(String(error))); },
63
+ onNotification: (method, params) => this.notification(method, params),
68
64
  onRequest: (method, params, id) => this.options.onRequest(method, params, id),
69
65
  requestTimeoutMs: 0,
70
66
  });
71
67
  this.peer = peer;
72
- // stdout chunks can split a JSON line; only hand complete lines to the peer.
73
- let pending = "";
74
- child.stdout?.on("data", (chunk) => {
75
- pending += chunk.toString("utf8");
76
- const end = pending.lastIndexOf("\n");
77
- if (end < 0)
78
- return;
79
- const complete = pending.slice(0, end);
80
- pending = pending.slice(end + 1);
81
- peer.receive(complete);
82
- });
83
- child.stderr?.on("data", (chunk) => {
84
- this.stderrTail = (this.stderrTail + chunk.toString("utf8")).slice(-4000);
85
- });
86
- const exited = new Promise((_, reject) => {
87
- child.once("exit", (code, signal) => {
88
- const reason = `${this.options.command} exited (${signal ?? code})${this.stderrTail ? `: ${this.stderrTail.trim().split("\n").slice(-3).join(" | ")}` : ""}`;
89
- peer.close(reason);
90
- if (!this.stopping)
91
- this.options.onExit(reason);
92
- reject(new Error(reason));
93
- });
94
- child.once("error", (error) => {
95
- peer.close(error.message);
96
- reject(error);
97
- });
98
- });
99
- exited.catch(() => { });
100
- this.initializeResult = await Promise.race([
101
- peer.request("initialize", {
102
- protocolVersion: ACP_PROTOCOL_VERSION,
103
- // LinkShell doesn't serve files or terminals to the agent: agents use their own tools.
104
- clientCapabilities: {
105
- fs: { readTextFile: false, writeTextFile: false },
106
- terminal: false,
107
- // Questions for the user (Claude's AskUserQuestion, an MCP server's form) come as
108
- // forms to fill in. Not `url`: a page to open belongs on the computer, not on a phone.
109
- elicitation: { form: {} },
110
- // Ask adapters that support it (Claude's) to stream sub-agents' own
111
- // messages and tool calls, each stamped with the spawning call.
112
- _meta: { "subagent-transcript": true, ...this.options.clientMeta },
113
- },
114
- clientInfo: { name: "linkshell", title: "LinkShell", version: this.options.clientVersion },
115
- }, 30_000),
116
- exited,
117
- ]);
118
- // v2 is still draft and changes turn completion as well as message replay.
119
- // Accepting it as v1 would silently drop messages and report false idle turns.
120
- if (this.initializeResult.protocolVersion !== ACP_PROTOCOL_VERSION) {
68
+ void this.read().catch((error) => this.lost(String(error)));
69
+ const version = this.options.protocolVersion ?? 1;
70
+ const info = { name: "linkshell", title: "LinkShell", version: this.options.clientVersion };
71
+ const auth = { terminal: remote ? false : true };
72
+ const elicitation = { form: {}, url: {} };
73
+ const editor = this.options.experimental !== false ? { nes: { jump: {}, searchAndReplace: {} }, positionEncodings: ["utf-16", "utf-8", "utf-32"] } : {};
74
+ const capabilities = { fs: { readTextFile: true, writeTextFile: true }, terminal: true, auth, elicitation,
75
+ session: { notices: {}, compaction: {}, configOptions: { boolean: {} } },
76
+ ...(this.options.experimental !== false ? { subagents: {}, plan: {} } : {}), ...editor,
77
+ _meta: { "subagent-transcript": true, ...this.options.clientMeta } };
78
+ const raw = await peer.request("initialize", {
79
+ protocolVersion: version,
80
+ clientCapabilities: capabilities, clientInfo: info,
81
+ // Keeping the v1 fields in this first request lets a v1-only agent negotiate
82
+ // down without losing the client's v1 capabilities. Later messages are version-specific.
83
+ ...(version === 2 ? { info, capabilities: { auth: remote ? {} : { terminal: {} }, elicitation, ...editor } } : {}),
84
+ }, 30_000);
85
+ if (raw.protocolVersion !== 1 && !(version === 2 && raw.protocolVersion === 2)) {
121
86
  await this.stop();
122
- throw new AcpProtocolError(this.initializeResult.protocolVersion);
87
+ throw new AcpProtocolError(raw.protocolVersion, version);
123
88
  }
89
+ if (raw.protocolVersion === 2) {
90
+ const caps = object(raw.capabilities), session = object(caps.session), prompt = object(session.prompt), mcp = object(session.mcp);
91
+ this.initializeResult = {
92
+ protocolVersion: 2, agentInfo: object(raw.info), _meta: object(raw._meta),
93
+ agentCapabilities: {
94
+ sessions: supported(caps.session),
95
+ loadSession: false,
96
+ promptCapabilities: { image: supported(prompt.image), audio: supported(prompt.audio), embeddedContext: supported(prompt.embeddedContext) },
97
+ mcpCapabilities: { http: supported(mcp.http), stdio: supported(mcp.stdio), acp: supported(mcp.acp), sse: false },
98
+ sessionCapabilities: supported(caps.session) ? { list: {}, resume: {}, close: {}, fork: session.fork, delete: session.delete, additionalDirectories: session.additionalDirectories } : {},
99
+ auth: supported(caps.auth) ? object(caps.auth) : undefined, providers: caps.providers, nes: caps.nes, positionEncoding: typeof caps.positionEncoding === "string" ? caps.positionEncoding : undefined, _meta: object(caps._meta),
100
+ },
101
+ authMethods: (Array.isArray(raw.authMethods) ? raw.authMethods : []).map((entry) => { const method = object(entry); return { ...method, id: String(method.methodId), env: Array.isArray(method.env) ? Object.fromEntries(method.env.map((entry) => [object(entry).name, object(entry).value])) : undefined }; }),
102
+ };
103
+ }
104
+ else
105
+ this.initializeResult = raw;
124
106
  return this.initializeResult;
125
107
  }
108
+ async read() {
109
+ const reader = this.reader;
110
+ while (!this.closed) {
111
+ const { value, done } = await reader.read();
112
+ if (done) {
113
+ this.lost("ACP connection closed");
114
+ return;
115
+ }
116
+ this.peer?.receive(JSON.stringify(value));
117
+ }
118
+ }
119
+ notification(method, params) {
120
+ const raw = object(params);
121
+ if (method === "$/cancel_request") {
122
+ if (typeof raw.requestId === "string" || typeof raw.requestId === "number")
123
+ this.options.onCancelRequest?.(raw.requestId);
124
+ return;
125
+ }
126
+ if (method === "_claude/sdkMessage") {
127
+ const message = object(raw.message), value = message.value;
128
+ if (typeof raw.sessionId === "string" && message.type === "active_goal" && (value === null || typeof object(value).condition === "string"))
129
+ this.options.onUpdate(raw.sessionId, {
130
+ sessionUpdate: "session_info_update", _meta: { jetbrains: { air: { goal: value === null ? null : { objective: String(object(value).condition).trim(), status: "active", iterations: object(value).iterations, lastReason: object(value).last_reason } } } },
131
+ });
132
+ return;
133
+ }
134
+ if (method === "session/update" && typeof raw.sessionId === "string")
135
+ this.options.onUpdate(raw.sessionId, raw.update);
136
+ else
137
+ this.options.onNotification?.(method, params);
138
+ }
139
+ lost(reason) {
140
+ if (this.closed)
141
+ return;
142
+ this.closed = true;
143
+ this.peer?.close(reason);
144
+ if (!this.stopping)
145
+ this.options.onExit(reason);
146
+ }
126
147
  request(method, params, timeoutMs = 60_000) {
127
148
  if (!this.peer)
128
149
  return Promise.reject(new Error("agent is not running"));
129
150
  return this.peer.request(method, params, timeoutMs);
130
151
  }
131
- notify(method, params) {
132
- this.peer?.notify(method, params);
133
- }
152
+ hasPendingRequest(id) { return this.peer?.hasPendingRequest(id) ?? false; }
153
+ notify(method, params) { this.peer?.notify(method, params); }
134
154
  async stop() {
135
155
  this.stopping = true;
156
+ this.closed = true;
157
+ this.peer?.close("stopping");
158
+ void this.reader?.cancel().catch(() => { });
159
+ void this.writer?.close().catch(() => { });
136
160
  const child = this.child;
137
161
  this.child = undefined;
138
- this.peer?.close("stopping");
139
162
  if (!child || child.exitCode !== null)
140
163
  return;
141
164
  child.stdin?.end();
142
165
  child.kill("SIGTERM");
143
166
  await new Promise((resolve) => {
144
- const timer = setTimeout(() => {
145
- child.kill("SIGKILL");
146
- resolve();
147
- }, 3000);
148
- child.once("exit", () => {
149
- clearTimeout(timer);
150
- resolve();
151
- });
167
+ const timer = setTimeout(() => { child.kill("SIGKILL"); resolve(); }, 3000);
168
+ child.once("exit", () => { clearTimeout(timer); resolve(); });
152
169
  });
153
170
  }
154
171
  }
@@ -1 +1 @@
1
- {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../../../../src/drivers/acp/connection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../../../../src/drivers/acp/connection.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import { type AgentAuth, type AgentCapabilities, type AgentTier, type ContentBlock, type RpcId, type SessionState, type SessionUpdate, type QuestionAnswer } from "@linkshell/wire";
1
+ import { type AgentAuth, type AgentCapabilities, type AgentTier, type ContentBlock, type RpcId, type SessionState, type SessionUpdate, type StopReason, type QuestionAnswer, type AcpAgentSettings, type AcpRemoteAgent, type AcpFeatures, type AcpProvider, type PendingPermissionSummary, type EditorRequest, type EditorResult } from "@linkshell/wire";
2
+ import { AcpUpdates } from "./updates.js";
2
3
  import type { AgentDriver, AttachContext, DiscoveredSession, DriverHost, DriverStatus, ForkOptions, HistoryItem } from "../types.js";
3
4
  import { AcpConnection } from "./connection.js";
4
5
  import { type AcpQuestionRequest } from "./questions.js";
@@ -19,6 +20,10 @@ export interface AcpAgentSpec {
19
20
  authStatus?: (env: NodeJS.ProcessEnv) => Promise<AgentAuth>;
20
21
  /** Non-interactive ACP method that reuses the agent's own saved login. */
21
22
  cachedAuthMethod?: string;
23
+ transport?: AcpRemoteAgent["transport"];
24
+ url?: string;
25
+ headerEnv?: Record<string, string>;
26
+ settings?: AcpAgentSettings;
22
27
  /**
23
28
  * Start the agent process with the host so its existing sessions show up
24
29
  * (needs ACP session/list). Otherwise it starts on first use.
@@ -36,8 +41,17 @@ interface PendingPrompt {
36
41
  }
37
42
  export interface AcpSessionState {
38
43
  cwd: string;
44
+ settings: AcpAgentSettings;
39
45
  loaded: boolean;
40
46
  tracker: AcpItemTracker;
47
+ updates: AcpUpdates;
48
+ messageAliases: Map<string, string>;
49
+ deferredUserUpdates: unknown[];
50
+ idleReason?: StopReason;
51
+ reportedState?: SessionState;
52
+ commands?: Extract<SessionUpdate, {
53
+ sessionUpdate: "available_commands_update";
54
+ }>;
41
55
  config: SourcedConfigOption[];
42
56
  /** Set while a session/load replays history. */
43
57
  replaying?: SessionUpdate[];
@@ -45,7 +59,10 @@ export interface AcpSessionState {
45
59
  /** session/prompt requests in flight; with steering, a turn spans several. */
46
60
  inflight: number;
47
61
  queue: PendingPrompt[];
48
- permissions: Map<string, (outcome: unknown) => void>;
62
+ permissions: Map<string, {
63
+ rpcId: RpcId;
64
+ resolve: (outcome: unknown) => void;
65
+ }>;
49
66
  /** Keep the native response adapter until the user answers or the agent cancels the request. */
50
67
  questions: Map<string, {
51
68
  rpcId: RpcId;
@@ -86,6 +103,15 @@ export declare class AcpDriver implements AgentDriver {
86
103
  private stopped;
87
104
  private nextPermissionId;
88
105
  private authenticating?;
106
+ private credentialsChanged;
107
+ private readonly services;
108
+ private readonly mcp;
109
+ private readonly edits;
110
+ private readonly serviceRequests;
111
+ private readonly terminalCalls;
112
+ private readonly interactions;
113
+ private readonly children;
114
+ private readonly discoveredDirectories;
89
115
  constructor(spec: AcpAgentSpec, options: {
90
116
  env?: NodeJS.ProcessEnv;
91
117
  hostVersion: string;
@@ -95,6 +121,58 @@ export declare class AcpDriver implements AgentDriver {
95
121
  authStatus(): Promise<AgentAuth>;
96
122
  start(host: DriverHost): Promise<DriverStatus>;
97
123
  stop(): Promise<void>;
124
+ acpInfo(nativeId?: string): Promise<{
125
+ features: AcpFeatures;
126
+ settings: AcpAgentSettings;
127
+ interactions: PendingPermissionSummary[];
128
+ }>;
129
+ editor(input: EditorRequest): Promise<EditorResult>;
130
+ pendingInteractions(): PendingPermissionSummary[];
131
+ configureAcp(settings: AcpAgentSettings, nativeId?: string): Promise<void>;
132
+ authenticate(methodId?: string, logout?: boolean): Promise<{
133
+ terminalId?: string;
134
+ }>;
135
+ providers(operation: "list" | "set" | "disable", config?: {
136
+ providerId: string;
137
+ apiType?: string;
138
+ baseUrl?: string;
139
+ headers?: Record<string, string>;
140
+ }): Promise<AcpProvider[]>;
141
+ respondInteraction(requestId: string, response: {
142
+ optionId?: string;
143
+ answers?: QuestionAnswer[];
144
+ }): Promise<void>;
145
+ private resolveInteraction;
146
+ private validateDirectories;
147
+ private validateSessionSettings;
148
+ protected sessionParameters(cwd: string, settings?: {
149
+ protocolVersion: 1 | 2;
150
+ experimental: boolean;
151
+ mcpServers: ({
152
+ type: "stdio";
153
+ name: string;
154
+ command: string;
155
+ args: string[];
156
+ env: Record<string, string>;
157
+ } | {
158
+ type: "http";
159
+ name: string;
160
+ url: string;
161
+ headers: Record<string, string>;
162
+ } | {
163
+ type: "sse";
164
+ name: string;
165
+ url: string;
166
+ headers: Record<string, string>;
167
+ } | {
168
+ type: "acp";
169
+ name: string;
170
+ command: string;
171
+ args: string[];
172
+ env: Record<string, string>;
173
+ })[];
174
+ additionalDirectories: string[];
175
+ }): Promise<Record<string, unknown>>;
98
176
  listSessions(limit: number): Promise<DiscoveredSession[]>;
99
177
  /** ACP v1 does not include live state in session/list; only this connection's turns are known. */
100
178
  protected discoveredState(nativeId: string, _cwd: string): Promise<SessionState>;
@@ -110,6 +188,7 @@ export declare class AcpDriver implements AgentDriver {
110
188
  detach(nativeId: string): Promise<void>;
111
189
  prompt(nativeId: string, content: ContentBlock[], clientMessageId: string, context?: string): Promise<"started" | "steered" | "queued">;
112
190
  cancel(nativeId: string): Promise<void>;
191
+ cancelSubagent(nativeId: string, childId: string): Promise<void>;
113
192
  /** Stops the running turn only: the first queued message starts as soon as it has ended. */
114
193
  sendQueuedNow(nativeId: string): Promise<void>;
115
194
  respondPermission(nativeId: string, requestId: string, optionId: string): Promise<void>;
@@ -123,10 +202,19 @@ export declare class AcpDriver implements AgentDriver {
123
202
  private onExit;
124
203
  protected stateFor(nativeId: string, cwd: string): AcpSessionState;
125
204
  protected emitConfig(nativeId: string, state: AcpSessionState): void;
205
+ private sessionCommands;
206
+ private mergeConfig;
126
207
  /** Feeds an update through the item tracker and on to the host. */
127
208
  protected emit(nativeId: string, update: SessionUpdate): void;
128
209
  protected closeMessage(nativeId: string): void;
210
+ /** Child streams reuse the existing nested timeline and never overwrite the parent's settings or status. */
211
+ private publish;
212
+ private childCallId;
213
+ private subagentUpdate;
214
+ private isChildOf;
215
+ private requestOwner;
129
216
  protected onUpdate(sessionId: string, raw: unknown): void;
217
+ private onMappedUpdate;
130
218
  private onRequest;
131
219
  /** Questions are routed by explicit session id, then Cursor's tool id, never a "last session". */
132
220
  private questionSession;
@@ -137,6 +225,8 @@ export declare class AcpDriver implements AgentDriver {
137
225
  private echoUserMessage;
138
226
  protected startTurn(nativeId: string, state: AcpSessionState, content: ContentBlock[], clientMessageId: string, context?: string): void;
139
227
  private sendPrompt;
228
+ private finishTurn;
229
+ protected settings(): AcpAgentSettings;
140
230
  /** The agent's own delete, when it has one (ACP session/delete). */
141
231
  delete(nativeId: string): Promise<void>;
142
232
  /** ACP's auth_required, said the way the app says it for Claude and Codex. */