@claudexor/acp-server 1.0.1 → 2.1.1

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  # @claudexor/acp-server
2
2
 
3
- Internal package of [Claudexor](https://github.com/razzant/claudexor) — Minimal ACP server (stdio JSON-RPC) exposing Claudexor as a meta-agent to editors. Runner injected.
3
+ Internal package of [Claudexor](https://github.com/razzant/claudexor) — official ACP TypeScript SDK projection over daemon-owned Claudexor threads, including stable list/load/resume/close lifecycle, prompts, cancellation, and attachment handoff.
4
4
 
5
5
  Published as part of the Claudexor toolchain; it follows the monorepo's
6
6
  lockstep version and has no separate semver contract. Use the `claudexor`
package/dist/index.d.ts CHANGED
@@ -1,76 +1,38 @@
1
- import type { Readable, Writable } from "node:stream";
1
+ import { type Readable as NodeReadableStream, type Writable as NodeWritableStream } from "node:stream";
2
2
  export declare const ACP_PROTOCOL_VERSION = 1;
3
3
  export interface RunnerHooks {
4
- /** Live RunEvent sink (mirrors events.jsonl) for session/update streaming. */
5
4
  onEvent?: (event: any) => void;
6
- /** Interactive question surface; resolve with answers or null to decline. */
7
5
  onInteraction?: (ctx: any) => Promise<any | null>;
8
- /** Cooperative cancellation (session/cancel aborts the underlying run). */
9
6
  signal?: AbortSignal;
10
7
  }
11
8
  export type RunnerFn = (params: any, hooks?: RunnerHooks) => Promise<unknown>;
12
9
  export interface AcpServerOptions {
13
10
  runner: RunnerFn;
14
11
  transport: {
15
- read: Readable;
16
- write: Writable;
12
+ read: NodeReadableStream;
13
+ write: NodeWritableStream;
17
14
  };
18
15
  name?: string;
19
16
  version?: string;
20
17
  }
21
18
  /**
22
- * Minimal Agent Client Protocol server (JSON-RPC over stdio). Exposes Claudexor as
23
- * a meta-agent: editors can talk to Claudexor instead of a single harness.
24
- * Implements initialize / session/new / session/prompt / session/cancel, streams
25
- * live run events as session/update notifications, and forwards interactive
26
- * harness questions as session/request_permission round-trips.
19
+ * Official ACP SDK projection over Claudexor's daemon-owned threads. The SDK
20
+ * owns parsing, protocol negotiation, cancellation, and JSON-RPC framing; this
21
+ * class only translates stable ACP session methods to the injected /v2 runner.
27
22
  */
28
23
  export declare class AcpServer {
29
24
  private readonly opts;
30
- private sessions;
31
- /** Editor-provided project root per session (anchors runs to the user's project). */
32
- private readonly sessionCwds;
33
- private nextRequestId;
34
- private readonly pendingRequests;
35
- /** Active run per session: lets session/cancel abort and keeps prompts serial. */
36
25
  private readonly activeRuns;
37
- /** Fallback tool_call ids keyed by `${sessionId}:${toolName}` — a FIFO QUEUE of
38
- * synthetic ids awaiting completion by a tool_result that arrives WITHOUT a
39
- * use_id. A queue (not a single slot) so two in-flight same-name use_id-less
40
- * calls don't clobber each other: each PUSHes on tool_call, the matching
41
- * tool_result SHIFTs one (oldest-first). use_id-bearing calls match directly
42
- * by id and never touch this. */
43
26
  private readonly openToolCalls;
44
27
  constructor(opts: AcpServerOptions);
45
28
  serve(): Promise<void>;
46
- private write;
47
- private reply;
48
- /** Spec-coded JSON-RPC error response ({code, message}) — never an ad-hoc shape. */
49
- private error;
50
- private notify;
51
- /**
52
- * Server->client JSON-RPC request (e.g. session/request_permission),
53
- * bounded by a deadline: an editor that never answers must not leave the
54
- * request pending forever (the engine's own interaction timeout would
55
- * eventually fire, but the ACP surface owns its half of the contract —
56
- * every request resolves, and the pending slot is always reclaimed).
57
- * Resolves null on deadline.
58
- */
59
- private request;
60
- handle(msg: any): Promise<void>;
61
- /**
62
- * JSON-RPC notifications (no `id`) get NO response. ACP `session/cancel` is a
63
- * notification: it aborts the underlying run (cooperative cancellation) and the
64
- * in-flight session/prompt then resolves with stopReason "cancelled".
65
- */
66
- private handleNotification;
67
- /** Thin RunEvent -> session/update projection (no business logic). */
29
+ private sessionCall;
30
+ private assertProjectRoot;
31
+ private assertAbsolutePath;
32
+ private controls;
33
+ private agentMessage;
68
34
  private forwardRunEvent;
69
- /**
70
- * Interactive question -> one session/request_permission round-trip per
71
- * question (ACP's permission options carry a flat choice list). A cancelled
72
- * or unanswered request resolves null and the engine declines benignly.
73
- */
74
35
  private requestAnswers;
36
+ private dropToolCalls;
75
37
  }
76
38
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAKtD,eAAO,MAAM,oBAAoB,IAAI,CAAC;AAEtC,MAAM,WAAW,WAAW;IAC1B,8EAA8E;IAC9E,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IAC/B,6EAA6E;IAC7E,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;IAClD,2EAA2E;IAC3E,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAE9E,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,QAAQ,CAAC;IACjB,SAAS,EAAE;QAAE,IAAI,EAAE,QAAQ,CAAC;QAAC,KAAK,EAAE,QAAQ,CAAA;KAAE,CAAC;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;GAMG;AACH,qBAAa,SAAS;IAgBR,OAAO,CAAC,QAAQ,CAAC,IAAI;IAfjC,OAAO,CAAC,QAAQ,CAAqB;IACrC,qFAAqF;IACrF,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA6B;IACzD,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA4C;IAC5E,kFAAkF;IAClF,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsC;IACjE;;;;;qCAKiC;IACjC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA+B;gBAEhC,IAAI,EAAE,gBAAgB;IAE7C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAwC5B,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,KAAK;IAIb,oFAAoF;IACpF,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,MAAM;IAId;;;;;;;OAOG;IACH,OAAO,CAAC,OAAO;IAkBT,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAwIrC;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAU1B,sEAAsE;IACtE,OAAO,CAAC,eAAe;IAuFvB;;;;OAIG;YACW,cAAc;CA8E7B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,QAAQ,IAAI,kBAAkB,EACnC,KAAK,QAAQ,IAAI,kBAAkB,EACpC,MAAM,aAAa,CAAC;AAKrB,eAAO,MAAM,oBAAoB,IAAuB,CAAC;AAEzD,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IAC/B,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;IAClD,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAE9E,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,QAAQ,CAAC;IACjB,SAAS,EAAE;QAAE,IAAI,EAAE,kBAAkB,CAAC;QAAC,KAAK,EAAE,kBAAkB,CAAA;KAAE,CAAC;IACnE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAUD;;;;GAIG;AACH,qBAAa,SAAS;IAIR,OAAO,CAAC,QAAQ,CAAC,IAAI;IAHjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsC;IACjE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA+B;gBAEhC,IAAI,EAAE,gBAAgB;IAE7C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAkId,WAAW;IAYzB,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,QAAQ;YAQF,YAAY;YAcZ,eAAe;YAsDf,cAAc;IA2D5B,OAAO,CAAC,aAAa;CAKtB"}
package/dist/index.js CHANGED
@@ -1,435 +1,321 @@
1
1
  import { existsSync, lstatSync } from "node:fs";
2
- import { createInterface } from "node:readline";
3
2
  import { isAbsolute } from "node:path";
3
+ import { Readable, Writable, } from "node:stream";
4
+ import * as acp from "@agentclientprotocol/sdk";
4
5
  import { extractPromptText, summarizeResult } from "./prompt.js";
5
6
  import { validateRunControls } from "./validate.js";
6
- export const ACP_PROTOCOL_VERSION = 1;
7
+ export const ACP_PROTOCOL_VERSION = acp.PROTOCOL_VERSION;
7
8
  /**
8
- * Minimal Agent Client Protocol server (JSON-RPC over stdio). Exposes Claudexor as
9
- * a meta-agent: editors can talk to Claudexor instead of a single harness.
10
- * Implements initialize / session/new / session/prompt / session/cancel, streams
11
- * live run events as session/update notifications, and forwards interactive
12
- * harness questions as session/request_permission round-trips.
9
+ * Official ACP SDK projection over Claudexor's daemon-owned threads. The SDK
10
+ * owns parsing, protocol negotiation, cancellation, and JSON-RPC framing; this
11
+ * class only translates stable ACP session methods to the injected /v2 runner.
13
12
  */
14
13
  export class AcpServer {
15
14
  opts;
16
- sessions = new Set();
17
- /** Editor-provided project root per session (anchors runs to the user's project). */
18
- sessionCwds = new Map();
19
- nextRequestId = 1;
20
- pendingRequests = new Map();
21
- /** Active run per session: lets session/cancel abort and keeps prompts serial. */
22
15
  activeRuns = new Map();
23
- /** Fallback tool_call ids keyed by `${sessionId}:${toolName}` — a FIFO QUEUE of
24
- * synthetic ids awaiting completion by a tool_result that arrives WITHOUT a
25
- * use_id. A queue (not a single slot) so two in-flight same-name use_id-less
26
- * calls don't clobber each other: each PUSHes on tool_call, the matching
27
- * tool_result SHIFTs one (oldest-first). use_id-bearing calls match directly
28
- * by id and never touch this. */
29
16
  openToolCalls = new Map();
30
17
  constructor(opts) {
31
18
  this.opts = opts;
32
19
  }
33
20
  async serve() {
34
- const rl = createInterface({ input: this.opts.transport.read });
35
- for await (const line of rl) {
36
- const trimmed = line.trim();
37
- if (!trimmed)
38
- continue;
39
- let msg;
40
- try {
41
- msg = JSON.parse(trimmed);
21
+ const stream = acp.ndJsonStream(Writable.toWeb(this.opts.transport.write), Readable.toWeb(this.opts.transport.read));
22
+ const app = acp
23
+ .agent({ name: this.opts.name ?? "claudexor" })
24
+ .onRequest(acp.methods.agent.initialize, ({ params }) => ({
25
+ protocolVersion: params.protocolVersion === ACP_PROTOCOL_VERSION
26
+ ? params.protocolVersion
27
+ : ACP_PROTOCOL_VERSION,
28
+ agentInfo: { name: this.opts.name ?? "claudexor", version: this.opts.version ?? "dev" },
29
+ agentCapabilities: {
30
+ loadSession: true,
31
+ promptCapabilities: { image: true, audio: false, embeddedContext: true },
32
+ sessionCapabilities: { list: {}, resume: {}, close: {} },
33
+ },
34
+ authMethods: [],
35
+ }))
36
+ .onRequest(acp.methods.agent.session.new, async ({ params }) => {
37
+ this.assertProjectRoot(params.cwd);
38
+ const record = await this.sessionCall("new", {
39
+ cwd: params.cwd,
40
+ additionalDirectories: params.additionalDirectories ?? [],
41
+ });
42
+ return { sessionId: record.sessionId };
43
+ })
44
+ .onRequest(acp.methods.agent.session.list, async ({ params }) => {
45
+ if (params.cwd != null)
46
+ this.assertAbsolutePath(params.cwd, "session/list cwd");
47
+ const result = (await this.opts.runner({
48
+ mode: "__acp_session_list",
49
+ repoPath: params.cwd ?? undefined,
50
+ cursor: params.cursor ?? undefined,
51
+ }));
52
+ return {
53
+ sessions: (result.sessions ?? []).map((session) => ({
54
+ sessionId: session.sessionId,
55
+ cwd: session.cwd,
56
+ ...(session.title != null ? { title: session.title } : {}),
57
+ ...(session.updatedAt != null ? { updatedAt: session.updatedAt } : {}),
58
+ })),
59
+ ...(result.nextCursor ? { nextCursor: result.nextCursor } : {}),
60
+ };
61
+ })
62
+ .onRequest(acp.methods.agent.session.load, async ({ params, client }) => {
63
+ this.assertProjectRoot(params.cwd);
64
+ const record = await this.sessionCall("load", params);
65
+ for (const turn of record.turns ?? []) {
66
+ if (turn.summary?.trim()) {
67
+ await this.agentMessage(client, record.sessionId, turn.summary.trim());
68
+ }
42
69
  }
43
- catch {
44
- // JSON-RPC 2.0 prescribes a Parse Error response with id null —
45
- // a malformed frame must never vanish silently (fail-loud surface).
46
- this.write({ jsonrpc: "2.0", id: null, error: { code: -32700, message: "parse error: invalid JSON frame" } });
47
- continue;
70
+ return {};
71
+ })
72
+ .onRequest(acp.methods.agent.session.resume, async ({ params }) => {
73
+ this.assertProjectRoot(params.cwd);
74
+ await this.sessionCall("resume", params);
75
+ return {};
76
+ })
77
+ .onRequest(acp.methods.agent.session.close, async ({ params }) => {
78
+ this.activeRuns.get(params.sessionId)?.abort();
79
+ await this.opts.runner({ mode: "__acp_session_close", sessionId: params.sessionId });
80
+ this.activeRuns.delete(params.sessionId);
81
+ this.dropToolCalls(params.sessionId);
82
+ return {};
83
+ })
84
+ .onRequest(acp.methods.agent.session.prompt, async ({ params, client, signal }) => {
85
+ const controls = this.controls(params._meta);
86
+ const validation = validateRunControls({
87
+ sessionId: params.sessionId,
88
+ prompt: params.prompt,
89
+ ...controls,
90
+ });
91
+ if (validation)
92
+ throw new Error(validation.message);
93
+ if (this.activeRuns.has(params.sessionId)) {
94
+ throw new Error(`session ${params.sessionId} already has an active prompt`);
48
95
  }
49
- // Responses to OUR outgoing requests carry an id and no method.
50
- if (msg.id !== undefined && msg.method === undefined) {
51
- const pending = this.pendingRequests.get(String(msg.id));
52
- if (pending) {
53
- this.pendingRequests.delete(String(msg.id));
54
- pending(msg.result ?? msg.error ?? null);
55
- }
56
- continue;
96
+ const controller = new AbortController();
97
+ signal.addEventListener("abort", () => controller.abort(), { once: true });
98
+ this.activeRuns.set(params.sessionId, controller);
99
+ try {
100
+ const { mode: requestedMode, ...runControls } = controls;
101
+ const result = (await this.opts.runner({
102
+ ...runControls,
103
+ mode: "__acp_session_prompt",
104
+ ...(requestedMode !== undefined ? { runMode: requestedMode } : {}),
105
+ sessionId: params.sessionId,
106
+ prompt: extractPromptText(params.prompt),
107
+ attachments: attachmentInputs(params.prompt),
108
+ }, {
109
+ signal: controller.signal,
110
+ onEvent: (event) => void this.forwardRunEvent(client, params.sessionId, event),
111
+ onInteraction: (ctx) => this.requestAnswers(client, params.sessionId, ctx),
112
+ }));
113
+ const summary = summarizeResult(result);
114
+ if (summary)
115
+ await this.agentMessage(client, params.sessionId, summary);
116
+ const status = typeof result.status === "string" ? result.status : "unknown";
117
+ const stopReason = status === "cancelled" || controller.signal.aborted
118
+ ? "cancelled"
119
+ : status === "blocked" || status === "failed" || status === "interrupted_unknown"
120
+ ? "refusal"
121
+ : "end_turn";
122
+ return {
123
+ stopReason,
124
+ _meta: {
125
+ claudexor: {
126
+ runId: result.runId ?? null,
127
+ status,
128
+ applyEligibility: result.applyEligibility ?? null,
129
+ },
130
+ },
131
+ };
57
132
  }
58
- // A JSON-RPC NOTIFICATION (method present, no id) must be handled WITHOUT
59
- // a response — replying to a notification violates JSON-RPC. session/cancel
60
- // arrives this way (id-less) and aborts the active run silently.
61
- if (msg.id === undefined || msg.id === null) {
62
- this.handleNotification(msg);
63
- continue;
133
+ finally {
134
+ if (this.activeRuns.get(params.sessionId) === controller)
135
+ this.activeRuns.delete(params.sessionId);
64
136
  }
65
- // NEVER block the read loop on a handler: session/prompt runs for
66
- // minutes and the loop must keep consuming session/request_permission
67
- // responses and session/cancel while the run is active. Handler errors
68
- // are reported per-request, not thrown into the loop.
69
- void this.handle(msg).catch((err) => {
70
- this.write({ jsonrpc: "2.0", id: msg.id, error: { code: -32603, message: err instanceof Error ? err.message : String(err) } });
71
- });
72
- }
137
+ })
138
+ .onNotification(acp.methods.agent.session.cancel, async ({ params }) => {
139
+ this.activeRuns.get(params.sessionId)?.abort();
140
+ });
141
+ const connection = app.connect(stream);
142
+ await connection.closed;
73
143
  }
74
- write(obj) {
75
- this.opts.transport.write.write(JSON.stringify(obj) + "\n");
144
+ async sessionCall(action, params) {
145
+ return (await this.opts.runner({
146
+ mode: `__acp_session_${action}`,
147
+ sessionId: params["sessionId"],
148
+ repoPath: params["cwd"],
149
+ additionalDirectories: params["additionalDirectories"],
150
+ }));
76
151
  }
77
- reply(id, result) {
78
- this.write({ jsonrpc: "2.0", id, result });
152
+ assertProjectRoot(path) {
153
+ this.assertAbsolutePath(path, "session cwd");
154
+ if (!existsSync(path) || !lstatSync(path).isDirectory()) {
155
+ throw new Error("session cwd must be an existing directory");
156
+ }
79
157
  }
80
- /** Spec-coded JSON-RPC error response ({code, message}) — never an ad-hoc shape. */
81
- error(id, code, message, data) {
82
- this.write({ jsonrpc: "2.0", id, error: { code, message, ...(data ? { data } : {}) } });
158
+ assertAbsolutePath(path, name) {
159
+ if (typeof path !== "string" || !path.trim() || !isAbsolute(path)) {
160
+ throw new Error(`${name} must be a non-empty absolute path`);
161
+ }
83
162
  }
84
- notify(method, params) {
85
- this.write({ jsonrpc: "2.0", method, params });
163
+ controls(meta) {
164
+ if (!meta || typeof meta !== "object" || Array.isArray(meta))
165
+ return {};
166
+ const value = meta["claudexor"];
167
+ return value && typeof value === "object" && !Array.isArray(value)
168
+ ? value
169
+ : {};
86
170
  }
87
- /**
88
- * Server->client JSON-RPC request (e.g. session/request_permission),
89
- * bounded by a deadline: an editor that never answers must not leave the
90
- * request pending forever (the engine's own interaction timeout would
91
- * eventually fire, but the ACP surface owns its half of the contract —
92
- * every request resolves, and the pending slot is always reclaimed).
93
- * Resolves null on deadline.
94
- */
95
- request(method, params, deadlineMs) {
96
- const id = `srv-${this.nextRequestId++}`;
97
- return new Promise((resolve) => {
98
- let timer;
99
- if (deadlineMs !== undefined && Number.isFinite(deadlineMs)) {
100
- timer = setTimeout(() => {
101
- if (this.pendingRequests.delete(id))
102
- resolve(null);
103
- }, Math.max(0, deadlineMs));
104
- timer.unref?.();
105
- }
106
- this.pendingRequests.set(id, (result) => {
107
- if (timer)
108
- clearTimeout(timer);
109
- resolve(result);
110
- });
111
- this.write({ jsonrpc: "2.0", id, method, params });
171
+ async agentMessage(client, sessionId, text) {
172
+ await client.notify(acp.methods.client.session.update, {
173
+ sessionId,
174
+ update: {
175
+ sessionUpdate: "agent_message_chunk",
176
+ content: { type: "text", text },
177
+ },
112
178
  });
113
179
  }
114
- async handle(msg) {
115
- const { id, method, params } = msg;
116
- switch (method) {
117
- case "initialize":
118
- this.reply(id, {
119
- protocolVersion: ACP_PROTOCOL_VERSION,
120
- agentInfo: { name: this.opts.name ?? "claudexor", version: this.opts.version ?? "dev" },
121
- agentCapabilities: { promptCapabilities: { image: false, audio: false, embeddedContext: true } },
122
- // ACP v1 InitializeResponse carries authMethods; strict clients
123
- // deserialize it. Claudexor needs no editor-side auth: empty list.
124
- authMethods: [],
125
- });
126
- return;
127
- case "session/new": {
128
- const sessionId = `acp-${Math.random().toString(36).slice(2, 10)}`;
129
- // The editor's cwd anchors all of this session's runs to the project the
130
- // user is actually in (previously ignored -> runs hit the server's cwd).
131
- if (!params || !Object.prototype.hasOwnProperty.call(params, "cwd")) {
132
- this.error(id, -32600, "session/new cwd is required");
133
- return;
134
- }
135
- if (typeof params.cwd !== "string" || !params.cwd.trim()) {
136
- this.error(id, -32600, "session/new cwd must be a non-empty absolute path string");
137
- return;
138
- }
139
- const cwd = params.cwd.trim();
140
- if (!isAbsolute(cwd)) {
141
- this.error(id, -32600, "session/new cwd must be an absolute path");
142
- return;
143
- }
144
- if (!existsSync(cwd) || !lstatSync(cwd).isDirectory()) {
145
- this.error(id, -32600, "session/new cwd must be an existing directory");
146
- return;
147
- }
148
- this.sessions.add(sessionId);
149
- this.sessionCwds.set(sessionId, cwd);
150
- this.reply(id, { sessionId });
151
- return;
152
- }
153
- case "session/prompt": {
154
- const sessionId = params?.sessionId;
155
- const text = extractPromptText(params?.prompt);
156
- if (!text.trim()) {
157
- this.error(id, -32600, "prompt must be a non-empty string");
158
- return;
159
- }
160
- if (!sessionId || !this.sessions.has(sessionId) || !this.sessionCwds.has(sessionId)) {
161
- this.error(id, -32600, "session/prompt requires a known session created with session/new cwd");
162
- return;
163
- }
164
- const runControlError = validateRunControls(params);
165
- if (runControlError) {
166
- // The machine-readable class (e.g. inline_secret_rejected) rides
167
- // JSON-RPC error.data so ACP hosts can branch without parsing prose.
168
- this.error(id, -32600, runControlError.message, runControlError.code ? { code: runControlError.code } : undefined);
169
- return;
170
- }
171
- // One active run per session: a second prompt while one is running is
172
- // a protocol misuse. ACP StopReason has no "error" member, so fail loudly
173
- // as a JSON-RPC error (-32600 Invalid Request) rather than inventing one.
174
- if (this.activeRuns.has(sessionId)) {
175
- this.error(id, -32600, `session ${sessionId} already has an active prompt`);
176
- return;
177
- }
178
- const controller = new AbortController();
179
- this.activeRuns.set(sessionId, controller);
180
- try {
181
- const hooks = {
182
- signal: controller.signal,
183
- onEvent: (event) => this.forwardRunEvent(sessionId, event),
184
- onInteraction: (ctx) => this.requestAnswers(sessionId, ctx),
185
- };
186
- const result = await this.opts.runner({
187
- prompt: text,
188
- mode: params?.mode ?? "agent",
189
- repoPath: this.sessionCwds.get(sessionId),
190
- ...(params?.harness !== undefined ? { harness: params.harness } : {}),
191
- ...(params?.primaryHarness !== undefined
192
- ? { primaryHarness: params.primaryHarness }
193
- : {}),
194
- ...(params?.web !== undefined ? { web: params.web } : {}),
195
- ...(params?.externalContextPolicy !== undefined
196
- ? { externalContextPolicy: params.externalContextPolicy }
197
- : {}),
198
- ...(params?.model !== undefined ? { model: params.model } : {}),
199
- ...(params?.effort !== undefined ? { effort: params.effort } : {}),
200
- ...(params?.n !== undefined ? { n: params.n } : {}),
201
- ...(params?.race === true ? { race: true } : {}),
202
- ...(params?.untilClean === true ? { untilClean: true } : {}),
203
- ...(params?.swarm === true ? { swarm: true } : {}),
204
- ...(params?.create === true ? { create: true } : {}),
205
- ...(params?.tests !== undefined ? { tests: params.tests } : {}),
206
- ...(params?.maxUsd !== undefined ? { maxUsd: params.maxUsd } : {}),
207
- ...(params?.access !== undefined ? { access: params.access } : {}),
208
- ...(params?.protectedPathApprovals !== undefined
209
- ? { protectedPathApprovals: params.protectedPathApprovals }
210
- : {}),
211
- ...(params?.reviewerPanel !== undefined ? { reviewerPanel: params.reviewerPanel } : {}),
212
- ...(params?.reviewerModels !== undefined
213
- ? { reviewerModels: params.reviewerModels }
214
- : {}),
215
- ...(params?.reviewerEfforts !== undefined
216
- ? { reviewerEfforts: params.reviewerEfforts }
217
- : {}),
218
- }, hooks);
219
- // The turn result is the human-readable summary/answer (the run's
220
- // primary output), not a raw dumped JSON object the editor can't show.
221
- const summary = summarizeResult(result);
222
- if (summary) {
223
- this.notify("session/update", {
224
- sessionId,
225
- update: { sessionUpdate: "agent_message_chunk", content: { type: "text", text: summary } },
226
- });
227
- }
228
- this.reply(id, { stopReason: controller.signal.aborted ? "cancelled" : "end_turn" });
229
- }
230
- catch (err) {
231
- if (controller.signal.aborted) {
232
- this.reply(id, { stopReason: "cancelled" });
233
- }
234
- else {
235
- // A failed turn is a JSON-RPC error (-32603 internal), not an invented
236
- // StopReason — the ACP StopReason enum has no "error" member.
237
- this.error(id, -32603, err instanceof Error ? err.message : String(err));
238
- }
239
- }
240
- finally {
241
- if (this.activeRuns.get(sessionId) === controller)
242
- this.activeRuns.delete(sessionId);
243
- }
244
- return;
245
- }
246
- default:
247
- this.error(id, -32601, `method not found: ${method}`);
248
- }
249
- }
250
- /**
251
- * JSON-RPC notifications (no `id`) get NO response. ACP `session/cancel` is a
252
- * notification: it aborts the underlying run (cooperative cancellation) and the
253
- * in-flight session/prompt then resolves with stopReason "cancelled".
254
- */
255
- handleNotification(msg) {
256
- const { method, params } = msg;
257
- if (method === "session/cancel") {
258
- const sessionId = params?.sessionId;
259
- const active = sessionId ? this.activeRuns.get(sessionId) : undefined;
260
- if (active)
261
- active.abort();
262
- }
263
- // Unknown notifications are silently ignored — JSON-RPC forbids replying.
264
- }
265
- /** Thin RunEvent -> session/update projection (no business logic). */
266
- forwardRunEvent(sessionId, event) {
180
+ async forwardRunEvent(client, sessionId, event) {
267
181
  const type = String(event?.type ?? "");
268
- const p = (event?.payload ?? {});
269
- if (type === "harness.event") {
270
- const sub = String(p["type"] ?? "");
271
- if (sub === "message" && typeof p["text"] === "string" && p["text"].trim()) {
272
- this.notify("session/update", {
273
- sessionId,
274
- update: { sessionUpdate: "agent_message_chunk", content: { type: "text", text: p["text"] } },
275
- });
276
- return;
277
- }
278
- if (sub === "thinking" && typeof p["text"] === "string" && p["text"].trim()) {
279
- this.notify("session/update", {
280
- sessionId,
281
- update: { sessionUpdate: "agent_thought_chunk", content: { type: "text", text: p["text"] } },
282
- });
283
- return;
284
- }
285
- if (sub === "tool_call" && p["tool"] && typeof p["tool"] === "object") {
286
- const tool = p["tool"];
287
- const toolCallId = String(tool["use_id"] ?? `tc-${Math.random().toString(36).slice(2, 8)}`);
288
- // Fallback matching for tool_results that lack a native use_id: only those
289
- // need it (a use_id-bearing result matches directly by id). Without this the
290
- // synthetic tc-* call never completes and the client hangs. Key by
291
- // sessionId+name (the only discriminator the result side also carries) and
292
- // PUSH onto a FIFO queue so two concurrent same-name use_id-less calls each
293
- // get their own slot — the matching results SHIFT them oldest-first.
294
- if (typeof tool["use_id"] !== "string") {
295
- const fallbackKey = `${sessionId}:${String(tool["name"] ?? "")}`;
296
- const queue = this.openToolCalls.get(fallbackKey);
297
- if (queue)
298
- queue.push(toolCallId);
299
- else
300
- this.openToolCalls.set(fallbackKey, [toolCallId]);
301
- }
302
- this.notify("session/update", {
303
- sessionId,
304
- update: {
305
- sessionUpdate: "tool_call",
306
- toolCallId,
307
- title: String(tool["name"] ?? "tool"),
308
- status: "in_progress",
309
- },
310
- });
311
- return;
312
- }
313
- if (sub === "tool_result" && p["tool"] && typeof p["tool"] === "object") {
314
- const tool = p["tool"];
315
- // Terminal completion for the started tool_call. status: "ok"->completed,
316
- // "error"->failed; an unknown/missing status still completes (never hang).
317
- const hasUseId = typeof tool["use_id"] === "string" && tool["use_id"];
318
- const fallbackKey = `${sessionId}:${String(tool["name"] ?? "")}`;
319
- // use_id-bearing result -> match directly; otherwise SHIFT the oldest
320
- // queued synthetic id (FIFO) so concurrent same-name calls each complete.
321
- const queue = hasUseId ? undefined : this.openToolCalls.get(fallbackKey);
322
- const toolCallId = hasUseId ? String(tool["use_id"]) : queue?.shift();
323
- if (toolCallId) {
324
- // Drop the queue once drained so empty keys don't accumulate.
325
- if (queue && queue.length === 0)
326
- this.openToolCalls.delete(fallbackKey);
327
- this.notify("session/update", {
328
- sessionId,
329
- update: {
330
- sessionUpdate: "tool_call_update",
331
- toolCallId,
332
- status: tool["status"] === "error" ? "failed" : "completed",
333
- },
334
- });
335
- }
336
- return;
182
+ const payload = (event?.payload ?? {});
183
+ if (type !== "harness.event")
184
+ return;
185
+ const sub = String(payload["type"] ?? "");
186
+ const tool = payload["tool"];
187
+ if ((sub === "message" || sub === "thinking") && typeof payload["text"] === "string") {
188
+ await client.notify(acp.methods.client.session.update, {
189
+ sessionId,
190
+ update: {
191
+ sessionUpdate: sub === "thinking" ? "agent_thought_chunk" : "agent_message_chunk",
192
+ content: { type: "text", text: payload["text"] },
193
+ },
194
+ });
195
+ return;
196
+ }
197
+ if (sub === "tool_call" && tool) {
198
+ const id = String(tool["use_id"] ?? `tc-${crypto.randomUUID()}`);
199
+ if (typeof tool["use_id"] !== "string") {
200
+ const key = `${sessionId}:${String(tool["name"] ?? "")}`;
201
+ this.openToolCalls.set(key, [...(this.openToolCalls.get(key) ?? []), id]);
337
202
  }
203
+ await client.notify(acp.methods.client.session.update, {
204
+ sessionId,
205
+ update: {
206
+ sessionUpdate: "tool_call",
207
+ toolCallId: id,
208
+ title: String(tool["name"] ?? "tool"),
209
+ status: "in_progress",
210
+ },
211
+ });
338
212
  return;
339
213
  }
340
- if (type === "run.completed" || type === "run.failed" || type === "run.blocked") {
341
- // Human sentences, not raw event ids — this text lands in the editor's
342
- // chat timeline as-is.
343
- const text = type === "run.completed"
344
- ? "[claudexor] run completed."
345
- : type === "run.failed"
346
- ? "[claudexor] run failed — inspect the run artifacts for diagnostics."
347
- : "[claudexor] run blocked — a typed operator decision is required before this result can be applied.";
348
- this.notify("session/update", {
214
+ if (sub === "tool_result" && tool) {
215
+ const key = `${sessionId}:${String(tool["name"] ?? "")}`;
216
+ const queue = this.openToolCalls.get(key);
217
+ const id = typeof tool["use_id"] === "string" ? tool["use_id"] : queue?.shift();
218
+ if (queue?.length === 0)
219
+ this.openToolCalls.delete(key);
220
+ if (!id)
221
+ return;
222
+ await client.notify(acp.methods.client.session.update, {
349
223
  sessionId,
350
- update: { sessionUpdate: "agent_message_chunk", content: { type: "text", text } },
224
+ update: {
225
+ sessionUpdate: "tool_call_update",
226
+ toolCallId: id,
227
+ status: tool["status"] === "error" ? "failed" : "completed",
228
+ },
351
229
  });
352
230
  }
353
231
  }
354
- /**
355
- * Interactive question -> one session/request_permission round-trip per
356
- * question (ACP's permission options carry a flat choice list). A cancelled
357
- * or unanswered request resolves null and the engine declines benignly.
358
- */
359
- async requestAnswers(sessionId, ctx) {
232
+ async requestAnswers(client, sessionId, ctx) {
360
233
  const request = ctx?.request;
361
234
  const questions = Array.isArray(request?.questions) ? request.questions : [];
362
- if (questions.length === 0)
363
- return null;
364
235
  const answers = [];
365
- let declinedFreeText = false;
366
- for (const [qIdx, q] of questions.entries()) {
367
- const options = (Array.isArray(q?.options) ? q.options : []).map((o, idx) => ({
368
- optionId: `opt-${idx + 1}`,
369
- name: String(o?.label ?? `option ${idx + 1}`),
236
+ for (const [index, question] of questions.entries()) {
237
+ const options = (Array.isArray(question?.options) ? question.options : []).map((option, optionIndex) => ({
238
+ optionId: `opt-${optionIndex + 1}`,
239
+ name: String(option?.label ?? `option ${optionIndex + 1}`),
370
240
  kind: "allow_once",
371
241
  }));
372
- if (options.length === 0) {
373
- // A free-text question has no answer channel over ACP: session/request_permission
374
- // returns a chosen optionId, NOT arbitrary text. Faking an "Answer in chat"
375
- // affordance would advertise a capability this surface cannot honor. Decline
376
- // benignly (like the --json path) so the run continues with assumptions, and
377
- // note it honestly to the client below.
378
- declinedFreeText = true;
242
+ if (options.length === 0)
379
243
  continue;
380
- }
381
- // Announce the tool_call the permission request will reference —
382
- // clients that JOIN permissions to tool calls otherwise render an
383
- // orphan (the id must exist in the session's tool-call timeline).
384
- // UNIQUE per question: a multi-question interaction must not reuse one
385
- // id across frames (joining clients would clobber/mis-associate).
386
- const toolCallId = `${String(request?.interaction_id ?? "interaction")}:${String(q?.id ?? qIdx)}`;
387
- this.notify("session/update", {
244
+ const toolCallId = `${String(request?.interaction_id ?? "interaction")}:${String(question?.id ?? index)}`;
245
+ await client.notify(acp.methods.client.session.update, {
388
246
  sessionId,
389
247
  update: {
390
248
  sessionUpdate: "tool_call",
391
249
  toolCallId,
392
- title: String(q?.question ?? "Question"),
250
+ title: String(question?.question ?? "Question"),
393
251
  kind: "other",
394
252
  status: "pending",
395
253
  },
396
254
  });
397
- // Bound the wait by the interaction's own deadline (the engine stamps
398
- // timeoutAt on every interaction request); a silent editor then yields
399
- // a null response instead of a forever-pending server request.
400
- const deadlineMs = Date.parse(String(request?.timeout_at ?? ctx?.timeoutAt ?? "")) - Date.now();
401
- const response = await this.request("session/request_permission", {
255
+ const response = (await client.request(acp.methods.client.session.requestPermission, {
402
256
  sessionId,
403
- toolCall: { toolCallId, title: String(q?.question ?? "Question") },
257
+ toolCall: { toolCallId, title: String(question?.question ?? "Question") },
404
258
  options,
405
- }, Number.isFinite(deadlineMs) ? deadlineMs : 900_000);
406
- const optionId = response?.outcome?.optionId ?? response?.optionId;
407
- const picked = typeof optionId === "string" ? options.find((o) => o.optionId === optionId) : undefined;
408
- // Terminal status for the announced call either way: completed on an
409
- // answer, failed on decline/timeout — a started tool_call never hangs.
410
- this.notify("session/update", {
259
+ }));
260
+ const outcome = response.outcome;
261
+ const selected = outcome.outcome === "selected"
262
+ ? options.find((option) => option.optionId === outcome.optionId)
263
+ : undefined;
264
+ await client.notify(acp.methods.client.session.update, {
411
265
  sessionId,
412
- update: { sessionUpdate: "tool_call_update", toolCallId, status: picked ? "completed" : "failed" },
266
+ update: {
267
+ sessionUpdate: "tool_call_update",
268
+ toolCallId,
269
+ status: selected ? "completed" : "failed",
270
+ },
413
271
  });
414
- if (picked) {
415
- answers.push({ question_id: String(q?.id ?? ""), selected_labels: [picked.name], free_text: null });
272
+ if (selected) {
273
+ answers.push({
274
+ question_id: String(question?.id ?? ""),
275
+ selected_labels: [selected.name],
276
+ free_text: null,
277
+ });
416
278
  }
417
279
  }
418
- if (declinedFreeText) {
419
- this.notify("session/update", {
420
- sessionId,
421
- update: {
422
- sessionUpdate: "agent_message_chunk",
423
- content: {
424
- type: "text",
425
- text: "[claudexor] a free-text question could not be answered over ACP; the run continues with assumptions.",
426
- },
427
- },
280
+ return answers.length > 0
281
+ ? { interaction_id: String(request?.interaction_id ?? ""), answers }
282
+ : null;
283
+ }
284
+ dropToolCalls(sessionId) {
285
+ for (const key of this.openToolCalls.keys()) {
286
+ if (key.startsWith(`${sessionId}:`))
287
+ this.openToolCalls.delete(key);
288
+ }
289
+ }
290
+ }
291
+ function attachmentInputs(prompt) {
292
+ const attachments = [];
293
+ for (const [index, block] of prompt.entries()) {
294
+ if (block.type === "image") {
295
+ attachments.push({
296
+ kind: "image",
297
+ mime: block.mimeType,
298
+ name: `acp-image-${index + 1}`,
299
+ data: block.data,
300
+ });
301
+ }
302
+ else if (block.type === "resource" && "blob" in block.resource) {
303
+ attachments.push({
304
+ kind: "file",
305
+ mime: block.resource.mimeType ?? "application/octet-stream",
306
+ name: `acp-resource-${index + 1}`,
307
+ data: block.resource.blob,
308
+ });
309
+ }
310
+ else if (block.type === "resource" && "text" in block.resource) {
311
+ attachments.push({
312
+ kind: "file",
313
+ mime: block.resource.mimeType ?? "text/plain",
314
+ name: `acp-resource-${index + 1}`,
315
+ data: Buffer.from(block.resource.text, "utf8").toString("base64"),
428
316
  });
429
317
  }
430
- // Returning answers only for the choice questions; an empty set is a benign
431
- // decline (orchestrator/adapter then continue with assumptions).
432
- return answers.length > 0 ? { interaction_id: String(request?.interaction_id ?? ""), answers } : null;
433
318
  }
319
+ return attachments;
434
320
  }
435
321
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAYA,2EAA2E;AAC3E,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAID,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,OAAO,GAAG,eAAe,GAAG,IAAI,CAoD3E"}
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAgBA,2EAA2E;AAC3E,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAID,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,OAAO,GAAG,eAAe,GAAG,IAAI,CAyD3E"}
package/dist/validate.js CHANGED
@@ -3,7 +3,7 @@
3
3
  * (mode/harness/n/booleans), then the SHARED semantic run-control rules
4
4
  * (one owner in @claudexor/schema). Pure functions, no server state.
5
5
  */
6
- import { ModeKind, validateOptionalNonEmptyString, validateSurfaceRunControls } from "@claudexor/schema";
6
+ import { ModeKind, validateOptionalNonEmptyString, validateSurfaceRunControls, } from "@claudexor/schema";
7
7
  import { assertNoInlineSecretValues, errorCode } from "@claudexor/util";
8
8
  function isPlainRecord(value) {
9
9
  return !!value && typeof value === "object" && !Array.isArray(value);
@@ -28,7 +28,7 @@ export function validateRunControls(params) {
28
28
  "swarm",
29
29
  "create",
30
30
  "tests",
31
- "maxUsd",
31
+ "paidBudget",
32
32
  "access",
33
33
  "protectedPathApprovals",
34
34
  "reviewerPanel",
@@ -44,7 +44,8 @@ export function validateRunControls(params) {
44
44
  if (!allowedKeys.has(key))
45
45
  return msg(`unknown session/prompt field: ${key}`);
46
46
  }
47
- if (params.mode !== undefined && (typeof params.mode !== "string" || !ModeKind.safeParse(params.mode).success)) {
47
+ if (params.mode !== undefined &&
48
+ (typeof params.mode !== "string" || !ModeKind.safeParse(params.mode).success)) {
48
49
  return msg("mode must be a valid mode");
49
50
  }
50
51
  const harnessError = validateOptionalNonEmptyString(params.harness, "harness");
@@ -1 +1 @@
1
- {"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@claudexor/acp-server",
3
- "version": "1.0.1",
3
+ "version": "2.1.1",
4
4
  "license": "MIT",
5
- "description": "Minimal ACP server (stdio JSON-RPC) exposing Claudexor as a meta-agent to editors. Runner injected.",
5
+ "description": "Official-SDK ACP projection over daemon-owned Claudexor threads and runs.",
6
6
  "type": "module",
7
7
  "main": "./dist/index.js",
8
8
  "types": "./dist/index.d.ts",
@@ -16,8 +16,9 @@
16
16
  "dist"
17
17
  ],
18
18
  "dependencies": {
19
- "@claudexor/schema": "1.0.1",
20
- "@claudexor/util": "1.0.1"
19
+ "@agentclientprotocol/sdk": "1.2.1",
20
+ "@claudexor/schema": "2.1.1",
21
+ "@claudexor/util": "2.1.1"
21
22
  },
22
23
  "repository": {
23
24
  "type": "git",