@linkshell/host 0.4.18 → 0.4.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -2
- package/dist/host/src/acp-settings.d.ts +12 -0
- package/dist/host/src/acp-settings.js +41 -0
- package/dist/host/src/acp-settings.js.map +1 -0
- package/dist/host/src/carry.js +13 -2
- package/dist/host/src/carry.js.map +1 -1
- package/dist/host/src/drivers/acp/client-services.d.ts +29 -0
- package/dist/host/src/drivers/acp/client-services.js +192 -0
- package/dist/host/src/drivers/acp/client-services.js.map +1 -0
- package/dist/host/src/drivers/acp/connection.d.ts +40 -7
- package/dist/host/src/drivers/acp/connection.js +132 -103
- package/dist/host/src/drivers/acp/connection.js.map +1 -1
- package/dist/host/src/drivers/acp/driver.d.ts +95 -2
- package/dist/host/src/drivers/acp/driver.js +628 -53
- package/dist/host/src/drivers/acp/driver.js.map +1 -1
- package/dist/host/src/drivers/acp/editor.d.ts +31 -0
- package/dist/host/src/drivers/acp/editor.js +242 -0
- package/dist/host/src/drivers/acp/editor.js.map +1 -0
- package/dist/host/src/drivers/acp/mapper.d.ts +2 -1
- package/dist/host/src/drivers/acp/mapper.js +88 -35
- package/dist/host/src/drivers/acp/mapper.js.map +1 -1
- package/dist/host/src/drivers/acp/mcp.d.ts +20 -0
- package/dist/host/src/drivers/acp/mcp.js +139 -0
- package/dist/host/src/drivers/acp/mcp.js.map +1 -0
- package/dist/host/src/drivers/acp/questions.js +14 -0
- package/dist/host/src/drivers/acp/questions.js.map +1 -1
- package/dist/host/src/drivers/acp/updates.d.ts +10 -0
- package/dist/host/src/drivers/acp/updates.js +137 -0
- package/dist/host/src/drivers/acp/updates.js.map +1 -0
- package/dist/host/src/drivers/claude/activity.d.ts +1 -0
- package/dist/host/src/drivers/claude/activity.js +17 -3
- package/dist/host/src/drivers/claude/activity.js.map +1 -1
- package/dist/host/src/drivers/claude/children.d.ts +7 -0
- package/dist/host/src/drivers/claude/children.js +31 -2
- package/dist/host/src/drivers/claude/children.js.map +1 -1
- package/dist/host/src/drivers/claude/driver.d.ts +4 -1
- package/dist/host/src/drivers/claude/driver.js +42 -1
- package/dist/host/src/drivers/claude/driver.js.map +1 -1
- package/dist/host/src/drivers/claude/tasks.d.ts +3 -3
- package/dist/host/src/drivers/claude/transcript.d.ts +497 -38
- package/dist/host/src/drivers/codex/archives.d.ts +2 -0
- package/dist/host/src/drivers/codex/archives.js +18 -0
- package/dist/host/src/drivers/codex/archives.js.map +1 -0
- package/dist/host/src/drivers/codex/attention.js +2 -2
- package/dist/host/src/drivers/codex/attention.js.map +1 -1
- package/dist/host/src/drivers/codex/driver.d.ts +4 -0
- package/dist/host/src/drivers/codex/driver.js +51 -2
- package/dist/host/src/drivers/codex/driver.js.map +1 -1
- package/dist/host/src/drivers/registry.d.ts +6 -0
- package/dist/host/src/drivers/registry.js +8 -0
- package/dist/host/src/drivers/registry.js.map +1 -1
- package/dist/host/src/drivers/types.d.ts +38 -1
- package/dist/host/src/fs.d.ts +3 -3
- package/dist/host/src/host.js +21 -3
- package/dist/host/src/host.js.map +1 -1
- package/dist/host/src/hub.d.ts +250 -2
- package/dist/host/src/hub.js +184 -13
- package/dist/host/src/hub.js.map +1 -1
- package/dist/host/src/input.d.ts +5 -3
- package/dist/host/src/input.js +8 -6
- package/dist/host/src/input.js.map +1 -1
- package/dist/host/src/questions.d.ts +3 -1
- package/dist/host/src/questions.js +33 -7
- package/dist/host/src/questions.js.map +1 -1
- package/dist/host/src/rpc/server.js +14 -0
- package/dist/host/src/rpc/server.js.map +1 -1
- package/dist/host/src/screen.js +5 -5
- package/dist/host/src/screen.js.map +1 -1
- package/dist/host/src/slim.js +15 -4
- package/dist/host/src/slim.js.map +1 -1
- package/dist/host/src/store.d.ts +2 -0
- package/dist/host/src/store.js +16 -2
- package/dist/host/src/store.js.map +1 -1
- package/dist/host/src/terminals.d.ts +8 -3
- package/dist/host/src/terminals.js +3 -2
- package/dist/host/src/terminals.js.map +1 -1
- package/dist/host/tsconfig.tsbuildinfo +1 -1
- package/dist/wire/src/acp.d.ts +510 -0
- package/dist/wire/src/acp.js +39 -0
- package/dist/wire/src/acp.js.map +1 -0
- package/dist/wire/src/async-questions.d.ts +2 -2
- package/dist/wire/src/computer-preview.d.ts +2 -2
- package/dist/wire/src/content.d.ts +465 -0
- package/dist/wire/src/content.js +58 -0
- package/dist/wire/src/content.js.map +1 -0
- package/dist/wire/src/editor.d.ts +702 -0
- package/dist/wire/src/editor.js +23 -0
- package/dist/wire/src/editor.js.map +1 -0
- package/dist/wire/src/index.d.ts +3 -0
- package/dist/wire/src/index.js +3 -0
- package/dist/wire/src/index.js.map +1 -1
- package/dist/wire/src/model.d.ts +1383 -79
- package/dist/wire/src/model.js +20 -1
- package/dist/wire/src/model.js.map +1 -1
- package/dist/wire/src/peer.d.ts +1 -0
- package/dist/wire/src/peer.js +22 -6
- package/dist/wire/src/peer.js.map +1 -1
- package/dist/wire/src/questions.d.ts +3 -0
- package/dist/wire/src/questions.js +65 -0
- package/dist/wire/src/questions.js.map +1 -0
- package/dist/wire/src/relay.d.ts +4 -4
- package/dist/wire/src/rpc.d.ts +19023 -2518
- package/dist/wire/src/rpc.js +41 -3
- package/dist/wire/src/rpc.js.map +1 -1
- package/dist/wire/src/updates.d.ts +3848 -1114
- package/dist/wire/src/updates.js +42 -40
- package/dist/wire/src/updates.js.map +1 -1
- package/dist/wire/src/workflow.d.ts +22 -22
- package/package.json +4 -3
|
@@ -1,142 +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
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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;
|
|
12
|
+
export class AcpProtocolError extends Error {
|
|
13
|
+
constructor(version, requested = ACP_PROTOCOL_VERSION) {
|
|
14
|
+
super(`这个 Agent 返回了不兼容的 ACP 协议版本(${String(version ?? "未提供")});当前启用 ACP ${requested === 2 ? "1 / 2" : "1"}。请使用兼容的 Agent 版本。`);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
/** One version-negotiated ACP connection. Native credentials remain owned by the agent. */
|
|
7
18
|
export class AcpConnection {
|
|
8
19
|
options;
|
|
9
20
|
child;
|
|
10
21
|
peer;
|
|
22
|
+
reader;
|
|
23
|
+
writer;
|
|
11
24
|
stopping = false;
|
|
25
|
+
closed = false;
|
|
12
26
|
stderrTail = "";
|
|
13
27
|
initializeResult = {};
|
|
14
28
|
constructor(options) {
|
|
15
29
|
this.options = options;
|
|
16
30
|
}
|
|
17
|
-
get capabilities() {
|
|
18
|
-
|
|
19
|
-
}
|
|
20
|
-
get alive() {
|
|
21
|
-
return Boolean(this.child && this.child.exitCode === null && !this.peer?.isClosed);
|
|
22
|
-
}
|
|
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; }
|
|
23
34
|
async start() {
|
|
24
35
|
this.stopping = false;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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();
|
|
31
61
|
const peer = new RpcPeer({
|
|
32
|
-
send: (text) => {
|
|
33
|
-
|
|
34
|
-
child.stdin.write(`${text}\n`);
|
|
35
|
-
},
|
|
36
|
-
onNotification: (method, params) => {
|
|
37
|
-
if (method === "$/cancel_request") {
|
|
38
|
-
const id = params?.requestId;
|
|
39
|
-
if (typeof id === "string" || typeof id === "number")
|
|
40
|
-
this.options.onCancelRequest?.(id);
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
if (method === "_claude/sdkMessage") {
|
|
44
|
-
const raw = params;
|
|
45
|
-
if (raw?.sessionId && raw.message?.type === "active_goal") {
|
|
46
|
-
const value = raw.message.value;
|
|
47
|
-
if (value === null || typeof value?.condition === "string")
|
|
48
|
-
this.options.onUpdate(raw.sessionId, {
|
|
49
|
-
sessionUpdate: "session_info_update", _meta: { jetbrains: { air: { goal: value === null ? null : {
|
|
50
|
-
objective: value.condition.trim(), status: "active", iterations: value.iterations, lastReason: value.last_reason,
|
|
51
|
-
} } } },
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
return;
|
|
55
|
-
}
|
|
56
|
-
if (method !== "session/update")
|
|
57
|
-
return;
|
|
58
|
-
const payload = params;
|
|
59
|
-
if (typeof payload?.sessionId === "string")
|
|
60
|
-
this.options.onUpdate(payload.sessionId, payload.update);
|
|
61
|
-
},
|
|
62
|
+
send: (text) => { void this.writer.write(JSON.parse(text)).catch((error) => this.lost(String(error))); },
|
|
63
|
+
onNotification: (method, params) => this.notification(method, params),
|
|
62
64
|
onRequest: (method, params, id) => this.options.onRequest(method, params, id),
|
|
63
65
|
requestTimeoutMs: 0,
|
|
64
66
|
});
|
|
65
67
|
this.peer = peer;
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
clientCapabilities: {
|
|
99
|
-
fs: { readTextFile: false, writeTextFile: false },
|
|
100
|
-
terminal: false,
|
|
101
|
-
// Questions for the user (Claude's AskUserQuestion, an MCP server's form) come as
|
|
102
|
-
// forms to fill in. Not `url`: a page to open belongs on the computer, not on a phone.
|
|
103
|
-
elicitation: { form: {} },
|
|
104
|
-
// Ask adapters that support it (Claude's) to stream sub-agents' own
|
|
105
|
-
// messages and tool calls, each stamped with the spawning call.
|
|
106
|
-
_meta: { "subagent-transcript": true, ...this.options.clientMeta },
|
|
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)) {
|
|
86
|
+
await this.stop();
|
|
87
|
+
throw new AcpProtocolError(raw.protocolVersion, version);
|
|
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),
|
|
107
100
|
},
|
|
108
|
-
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
|
|
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;
|
|
112
106
|
return this.initializeResult;
|
|
113
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
|
+
}
|
|
114
147
|
request(method, params, timeoutMs = 60_000) {
|
|
115
148
|
if (!this.peer)
|
|
116
149
|
return Promise.reject(new Error("agent is not running"));
|
|
117
150
|
return this.peer.request(method, params, timeoutMs);
|
|
118
151
|
}
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
}
|
|
152
|
+
hasPendingRequest(id) { return this.peer?.hasPendingRequest(id) ?? false; }
|
|
153
|
+
notify(method, params) { this.peer?.notify(method, params); }
|
|
122
154
|
async stop() {
|
|
123
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(() => { });
|
|
124
160
|
const child = this.child;
|
|
125
161
|
this.child = undefined;
|
|
126
|
-
this.peer?.close("stopping");
|
|
127
162
|
if (!child || child.exitCode !== null)
|
|
128
163
|
return;
|
|
129
164
|
child.stdin?.end();
|
|
130
165
|
child.kill("SIGTERM");
|
|
131
166
|
await new Promise((resolve) => {
|
|
132
|
-
const timer = setTimeout(() => {
|
|
133
|
-
|
|
134
|
-
resolve();
|
|
135
|
-
}, 3000);
|
|
136
|
-
child.once("exit", () => {
|
|
137
|
-
clearTimeout(timer);
|
|
138
|
-
resolve();
|
|
139
|
-
});
|
|
167
|
+
const timer = setTimeout(() => { child.kill("SIGKILL"); resolve(); }, 3000);
|
|
168
|
+
child.once("exit", () => { clearTimeout(timer); resolve(); });
|
|
140
169
|
});
|
|
141
170
|
}
|
|
142
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 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,
|
|
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,7 +121,62 @@ 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[]>;
|
|
177
|
+
/** ACP v1 does not include live state in session/list; only this connection's turns are known. */
|
|
178
|
+
protected discoveredState(nativeId: string, _cwd: string): Promise<SessionState>;
|
|
179
|
+
protected localState(nativeId: string): SessionState;
|
|
99
180
|
/** ACP's session/fork, for agents that offer it: the whole conversation, in `cwd`. */
|
|
100
181
|
fork(nativeId: string, options: ForkOptions): Promise<DiscoveredSession>;
|
|
101
182
|
protected sessionMeta(): Record<string, unknown>;
|
|
@@ -107,6 +188,7 @@ export declare class AcpDriver implements AgentDriver {
|
|
|
107
188
|
detach(nativeId: string): Promise<void>;
|
|
108
189
|
prompt(nativeId: string, content: ContentBlock[], clientMessageId: string, context?: string): Promise<"started" | "steered" | "queued">;
|
|
109
190
|
cancel(nativeId: string): Promise<void>;
|
|
191
|
+
cancelSubagent(nativeId: string, childId: string): Promise<void>;
|
|
110
192
|
/** Stops the running turn only: the first queued message starts as soon as it has ended. */
|
|
111
193
|
sendQueuedNow(nativeId: string): Promise<void>;
|
|
112
194
|
respondPermission(nativeId: string, requestId: string, optionId: string): Promise<void>;
|
|
@@ -120,10 +202,19 @@ export declare class AcpDriver implements AgentDriver {
|
|
|
120
202
|
private onExit;
|
|
121
203
|
protected stateFor(nativeId: string, cwd: string): AcpSessionState;
|
|
122
204
|
protected emitConfig(nativeId: string, state: AcpSessionState): void;
|
|
205
|
+
private sessionCommands;
|
|
206
|
+
private mergeConfig;
|
|
123
207
|
/** Feeds an update through the item tracker and on to the host. */
|
|
124
208
|
protected emit(nativeId: string, update: SessionUpdate): void;
|
|
125
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;
|
|
126
216
|
protected onUpdate(sessionId: string, raw: unknown): void;
|
|
217
|
+
private onMappedUpdate;
|
|
127
218
|
private onRequest;
|
|
128
219
|
/** Questions are routed by explicit session id, then Cursor's tool id, never a "last session". */
|
|
129
220
|
private questionSession;
|
|
@@ -134,6 +225,8 @@ export declare class AcpDriver implements AgentDriver {
|
|
|
134
225
|
private echoUserMessage;
|
|
135
226
|
protected startTurn(nativeId: string, state: AcpSessionState, content: ContentBlock[], clientMessageId: string, context?: string): void;
|
|
136
227
|
private sendPrompt;
|
|
228
|
+
private finishTurn;
|
|
229
|
+
protected settings(): AcpAgentSettings;
|
|
137
230
|
/** The agent's own delete, when it has one (ACP session/delete). */
|
|
138
231
|
delete(nativeId: string): Promise<void>;
|
|
139
232
|
/** ACP's auth_required, said the way the app says it for Claude and Codex. */
|