ds-harness-remote 0.5.8 → 0.5.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/acp/adapter.d.ts +1 -1
- package/dist/acp/adapter.d.ts.map +1 -1
- package/dist/acp/adapters/claude-history.d.ts +3 -0
- package/dist/acp/adapters/claude-history.d.ts.map +1 -0
- package/dist/acp/adapters/claude-history.js +118 -0
- package/dist/acp/adapters/claude-history.js.map +1 -0
- package/dist/acp/adapters/claude-process.d.ts +21 -0
- package/dist/acp/adapters/claude-process.d.ts.map +1 -0
- package/dist/acp/adapters/claude-process.js +147 -0
- package/dist/acp/adapters/claude-process.js.map +1 -0
- package/dist/acp/adapters/cursor-process.d.ts +12 -4
- package/dist/acp/adapters/cursor-process.d.ts.map +1 -1
- package/dist/acp/adapters/cursor-process.js +86 -4
- package/dist/acp/adapters/cursor-process.js.map +1 -1
- package/dist/acp/adapters/isolated-process.d.ts +45 -0
- package/dist/acp/adapters/isolated-process.d.ts.map +1 -0
- package/dist/acp/adapters/isolated-process.js +299 -0
- package/dist/acp/adapters/isolated-process.js.map +1 -0
- package/dist/acp/adapters/opencode-native-api.d.ts +16 -0
- package/dist/acp/adapters/opencode-native-api.d.ts.map +1 -0
- package/dist/acp/adapters/opencode-native-api.js +103 -0
- package/dist/acp/adapters/opencode-native-api.js.map +1 -0
- package/dist/acp/adapters/opencode-process.d.ts +86 -0
- package/dist/acp/adapters/opencode-process.d.ts.map +1 -0
- package/dist/acp/adapters/opencode-process.js +483 -0
- package/dist/acp/adapters/opencode-process.js.map +1 -0
- package/dist/acp/adapters/opencode.d.ts +8 -0
- package/dist/acp/adapters/opencode.d.ts.map +1 -0
- package/dist/acp/adapters/opencode.js +8 -0
- package/dist/acp/adapters/opencode.js.map +1 -0
- package/dist/acp/adapters/pi-process.d.ts +5 -0
- package/dist/acp/adapters/pi-process.d.ts.map +1 -0
- package/dist/acp/adapters/pi-process.js +5 -0
- package/dist/acp/adapters/pi-process.js.map +1 -0
- package/dist/acp/adapters/session-models.d.ts +33 -0
- package/dist/acp/adapters/session-models.d.ts.map +1 -0
- package/dist/acp/adapters/session-models.js +78 -0
- package/dist/acp/adapters/session-models.js.map +1 -0
- package/dist/acp/gateway.d.ts +10 -0
- package/dist/acp/gateway.d.ts.map +1 -1
- package/dist/acp/gateway.js +405 -71
- package/dist/acp/gateway.js.map +1 -1
- package/dist/acp/history-events.d.ts +8 -0
- package/dist/acp/history-events.d.ts.map +1 -0
- package/dist/acp/history-events.js +119 -0
- package/dist/acp/history-events.js.map +1 -0
- package/dist/acp/method-policy.d.ts +30 -20
- package/dist/acp/method-policy.d.ts.map +1 -1
- package/dist/acp/method-policy.js +6 -5
- package/dist/acp/method-policy.js.map +1 -1
- package/dist/acp/peer-bridge.d.ts +3 -2
- package/dist/acp/peer-bridge.d.ts.map +1 -1
- package/dist/acp/peer-bridge.js +4 -0
- package/dist/acp/peer-bridge.js.map +1 -1
- package/dist/acp/pi-tool-result.d.ts +9 -0
- package/dist/acp/pi-tool-result.d.ts.map +1 -0
- package/dist/acp/pi-tool-result.js +22 -0
- package/dist/acp/pi-tool-result.js.map +1 -0
- package/dist/acp/virtual-catalog.d.ts +50 -0
- package/dist/acp/virtual-catalog.d.ts.map +1 -0
- package/dist/acp/virtual-catalog.js +90 -0
- package/dist/acp/virtual-catalog.js.map +1 -0
- package/dist/acp/virtual-contract.d.ts +172 -0
- package/dist/acp/virtual-contract.d.ts.map +1 -0
- package/dist/acp/virtual-contract.js +216 -0
- package/dist/acp/virtual-contract.js.map +1 -0
- package/dist/acp/virtual-event-carrier.d.ts +51 -0
- package/dist/acp/virtual-event-carrier.d.ts.map +1 -0
- package/dist/acp/virtual-event-carrier.js +222 -0
- package/dist/acp/virtual-event-carrier.js.map +1 -0
- package/dist/acp/virtual-harness.d.ts +18 -112
- package/dist/acp/virtual-harness.d.ts.map +1 -1
- package/dist/acp/virtual-harness.js +238 -952
- package/dist/acp/virtual-harness.js.map +1 -1
- package/dist/acp/virtual-live.d.ts +79 -0
- package/dist/acp/virtual-live.d.ts.map +1 -0
- package/dist/acp/virtual-live.js +514 -0
- package/dist/acp/virtual-live.js.map +1 -0
- package/dist/acp/workspace-tools.js +1 -1
- package/dist/acp/workspace-tools.js.map +1 -1
- package/dist/acp.d.ts.map +1 -1
- package/dist/acp.js +1 -0
- package/dist/acp.js.map +1 -1
- package/dist/client/header.d.ts +10 -0
- package/dist/client/header.d.ts.map +1 -0
- package/dist/client/header.js +169 -0
- package/dist/client/header.js.map +1 -0
- package/dist/client/icons.d.ts +3 -0
- package/dist/client/icons.d.ts.map +1 -0
- package/dist/client/icons.js +3 -0
- package/dist/client/icons.js.map +1 -0
- package/dist/client/navigation.d.ts +5 -0
- package/dist/client/navigation.d.ts.map +1 -0
- package/dist/client/navigation.js +30 -0
- package/dist/client/navigation.js.map +1 -0
- package/dist/client/presentation.d.ts +17 -0
- package/dist/client/presentation.d.ts.map +1 -0
- package/dist/client/presentation.js +208 -0
- package/dist/client/presentation.js.map +1 -0
- package/dist/client/progress.d.ts +10 -0
- package/dist/client/progress.d.ts.map +1 -0
- package/dist/client/progress.js +82 -0
- package/dist/client/progress.js.map +1 -0
- package/dist/client/settings.d.ts +10 -0
- package/dist/client/settings.d.ts.map +1 -0
- package/dist/client/settings.js +335 -0
- package/dist/client/settings.js.map +1 -0
- package/dist/client/shell.d.ts +6 -0
- package/dist/client/shell.d.ts.map +1 -0
- package/dist/client/shell.js +129 -0
- package/dist/client/shell.js.map +1 -0
- package/dist/client/types.d.ts +265 -0
- package/dist/client/types.d.ts.map +1 -0
- package/dist/client/types.js +2 -0
- package/dist/client/types.js.map +1 -0
- package/dist/client/workspaces.d.ts +11 -0
- package/dist/client/workspaces.d.ts.map +1 -0
- package/dist/client/workspaces.js +1261 -0
- package/dist/client/workspaces.js.map +1 -0
- package/dist/client-capabilities.d.ts +6 -0
- package/dist/client-capabilities.d.ts.map +1 -0
- package/dist/client-capabilities.js +90 -0
- package/dist/client-capabilities.js.map +1 -0
- package/dist/client-codex-streams.d.ts +23 -0
- package/dist/client-codex-streams.d.ts.map +1 -0
- package/dist/client-codex-streams.js +156 -0
- package/dist/client-codex-streams.js.map +1 -0
- package/dist/client-connection.d.ts +38 -0
- package/dist/client-connection.d.ts.map +1 -0
- package/dist/client-connection.js +210 -0
- package/dist/client-connection.js.map +1 -0
- package/dist/client-control.d.ts +48 -0
- package/dist/client-control.d.ts.map +1 -0
- package/dist/client-control.js +293 -0
- package/dist/client-control.js.map +1 -0
- package/dist/client-locale.d.ts +12 -0
- package/dist/client-locale.d.ts.map +1 -1
- package/dist/client-locale.js +24 -0
- package/dist/client-locale.js.map +1 -1
- package/dist/client-runtime-contract.d.ts +162 -0
- package/dist/client-runtime-contract.d.ts.map +1 -0
- package/dist/client-runtime-contract.js +127 -0
- package/dist/client-runtime-contract.js.map +1 -0
- package/dist/client-runtime.d.ts +24 -126
- package/dist/client-runtime.d.ts.map +1 -1
- package/dist/client-runtime.js +171 -867
- package/dist/client-runtime.js.map +1 -1
- package/dist/client-secure-transport.d.ts +1 -0
- package/dist/client-secure-transport.d.ts.map +1 -1
- package/dist/client-secure-transport.js +35 -16
- package/dist/client-secure-transport.js.map +1 -1
- package/dist/client-workspace-queries.d.ts +12 -0
- package/dist/client-workspace-queries.d.ts.map +1 -0
- package/dist/client-workspace-queries.js +66 -0
- package/dist/client-workspace-queries.js.map +1 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.github.js +2158 -1905
- package/dist/client.js +2158 -1905
- package/dist/client.js.map +1 -1
- package/dist/codex/domain.d.ts.map +1 -1
- package/dist/codex/domain.js +67 -46
- package/dist/codex/domain.js.map +1 -1
- package/dist/codex/method-policy.d.ts +7 -7
- package/dist/codex/virtual-catalog.d.ts +90 -0
- package/dist/codex/virtual-catalog.d.ts.map +1 -0
- package/dist/codex/virtual-catalog.js +317 -0
- package/dist/codex/virtual-catalog.js.map +1 -0
- package/dist/codex/virtual-contract.d.ts +96 -0
- package/dist/codex/virtual-contract.d.ts.map +1 -0
- package/dist/codex/virtual-contract.js +192 -0
- package/dist/codex/virtual-contract.js.map +1 -0
- package/dist/codex/virtual-event-carrier.d.ts +52 -0
- package/dist/codex/virtual-event-carrier.d.ts.map +1 -0
- package/dist/codex/virtual-event-carrier.js +212 -0
- package/dist/codex/virtual-event-carrier.js.map +1 -0
- package/dist/codex/virtual-harness.d.ts +16 -117
- package/dist/codex/virtual-harness.d.ts.map +1 -1
- package/dist/codex/virtual-harness.js +123 -1909
- package/dist/codex/virtual-harness.js.map +1 -1
- package/dist/codex/virtual-history.d.ts +74 -0
- package/dist/codex/virtual-history.d.ts.map +1 -0
- package/dist/codex/virtual-history.js +546 -0
- package/dist/codex/virtual-history.js.map +1 -0
- package/dist/codex/virtual-live.d.ts +75 -0
- package/dist/codex/virtual-live.d.ts.map +1 -0
- package/dist/codex/virtual-live.js +563 -0
- package/dist/codex/virtual-live.js.map +1 -0
- package/dist/codex/virtual-values.d.ts +29 -0
- package/dist/codex/virtual-values.d.ts.map +1 -0
- package/dist/codex/virtual-values.js +75 -0
- package/dist/codex/virtual-values.js.map +1 -0
- package/dist/config.js +4 -4
- package/dist/config.js.map +1 -1
- package/dist/control-runtime.js +2 -2
- package/dist/control-runtime.js.map +1 -1
- package/dist/harness-remote-bridge.d.ts +2 -1
- package/dist/harness-remote-bridge.d.ts.map +1 -1
- package/dist/harness-remote-bridge.js +11 -3
- package/dist/harness-remote-bridge.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17301 -14516
- package/dist/index.js.map +4 -4
- package/dist/plugin-route-dispatcher.d.ts +2 -2
- package/dist/plugin-route-dispatcher.d.ts.map +1 -1
- package/dist/plugin-route-dispatcher.js +2 -2
- package/dist/plugin-route-dispatcher.js.map +1 -1
- package/dist/remote-typert-gateway.js +49 -2
- package/dist/remote-typert-gateway.js.map +1 -1
- package/dist/server-connection.d.ts +1 -0
- package/dist/server-connection.d.ts.map +1 -1
- package/dist/server-connection.js +6 -1
- package/dist/server-connection.js.map +1 -1
- package/dist/service.d.ts +1 -1
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +16 -5
- package/dist/service.js.map +1 -1
- package/dist/terminal-carrier-compat.d.ts +14 -0
- package/dist/terminal-carrier-compat.d.ts.map +1 -0
- package/dist/terminal-carrier-compat.js +259 -0
- package/dist/terminal-carrier-compat.js.map +1 -0
- package/dist/typert-gateway-contract.d.ts +6 -1
- package/dist/typert-gateway-contract.d.ts.map +1 -1
- package/dist/typert-gateway-switch.d.ts +2 -1
- package/dist/typert-gateway-switch.d.ts.map +1 -1
- package/dist/typert-gateway-switch.js +31 -15
- package/dist/typert-gateway-switch.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/dsh-plugin.json +1 -1
- package/package.json +21 -19
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { type CursorAcpLike, type CursorAcpInboundHandler, type CursorAcpUnavailableHandler } from './cursor-process.js';
|
|
2
|
+
import type { SafeLogger } from '../../logging.js';
|
|
3
|
+
/** One process per session: Cursor shares model settings within a process; Pi also needs isolated wrappers. */
|
|
4
|
+
export declare class IsolatedAcpClient implements CursorAcpLike {
|
|
5
|
+
private readonly binary;
|
|
6
|
+
private readonly logger?;
|
|
7
|
+
private readonly options;
|
|
8
|
+
private readonly factory;
|
|
9
|
+
private catalog?;
|
|
10
|
+
private readonly clients;
|
|
11
|
+
private readonly starting;
|
|
12
|
+
private readonly inbound;
|
|
13
|
+
private readonly unavailable;
|
|
14
|
+
private closed;
|
|
15
|
+
private readonly all;
|
|
16
|
+
private readonly callbacks;
|
|
17
|
+
private nextCallback;
|
|
18
|
+
private readonly configurations;
|
|
19
|
+
private readonly busy;
|
|
20
|
+
private readonly loading;
|
|
21
|
+
private historyBusy;
|
|
22
|
+
constructor(binary: string, logger?: SafeLogger | undefined, options?: {
|
|
23
|
+
args?: string[];
|
|
24
|
+
cwd?: string;
|
|
25
|
+
backend?: 'pi' | 'cursor';
|
|
26
|
+
}, factory?: () => CursorAcpLike);
|
|
27
|
+
private get backend();
|
|
28
|
+
private get label();
|
|
29
|
+
start(): Promise<void>;
|
|
30
|
+
isReady(): boolean;
|
|
31
|
+
private create;
|
|
32
|
+
call(method: string, params: unknown, timeoutMs?: number): Promise<unknown>;
|
|
33
|
+
private callOnce;
|
|
34
|
+
private updateConfiguration;
|
|
35
|
+
private models;
|
|
36
|
+
/** A separate wrapper prevents history reads from interrupting active sessions. */
|
|
37
|
+
history(sessionId: string, cwd: string): Promise<unknown[]>;
|
|
38
|
+
respond(id: string | number, result: unknown): Promise<void>;
|
|
39
|
+
respondError(id: string | number, code: number, message: string): Promise<void>;
|
|
40
|
+
onInbound(handler: CursorAcpInboundHandler): () => void;
|
|
41
|
+
onUnavailable(handler: CursorAcpUnavailableHandler): () => void;
|
|
42
|
+
private dispose;
|
|
43
|
+
close(): Promise<void>;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=isolated-process.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isolated-process.d.ts","sourceRoot":"","sources":["../../../src/acp/adapters/isolated-process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmC,KAAK,aAAa,EAAyB,KAAK,uBAAuB,EAAE,KAAK,2BAA2B,EAAE,MAAM,qBAAqB,CAAA;AAChL,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAGlD,+GAA+G;AAC/G,qBAAa,iBAAkB,YAAW,aAAa;IAczC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAAU,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IACnE,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAf1B,OAAO,CAAC,OAAO,CAAC,CAAe;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmC;IAC3D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA2B;IACpD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqC;IAC7D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAyC;IACrE,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA2B;IAC/C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoE;IAC9F,OAAO,CAAC,YAAY,CAAI;IACxB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAyC;IACxE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAoB;IACzC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsC;IAC9D,OAAO,CAAC,WAAW,CAAQ;gBACE,MAAM,EAAE,MAAM,EAAmB,MAAM,CAAC,EAAE,UAAU,YAAA,EAC9D,OAAO,GAAE;QAAE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,IAAI,GAAG,QAAQ,CAAA;KAAO,EAC1E,OAAO,GAAE,MAAM,aACkI;IAEpK,OAAO,KAAK,OAAO,GAA2D;IAC9E,OAAO,KAAK,KAAK,GAAiE;IAE5E,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,OAAO,IAAI,OAAO;YACJ,MAAM;IAad,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;YAWnE,QAAQ;IAuFtB,OAAO,CAAC,mBAAmB;IAgB3B,OAAO,CAAC,MAAM;IASd,mFAAmF;IAC7E,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAwB3D,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAK5D,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKrF,SAAS,CAAC,OAAO,EAAE,uBAAuB,GAAG,MAAM,IAAI;IACvD,aAAa,CAAC,OAAO,EAAE,2BAA2B,GAAG,MAAM,IAAI;YACjD,OAAO;IAKf,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAQ7B"}
|
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
import { CursorAcpClient, CursorAcpError } from './cursor-process.js';
|
|
2
|
+
import { acpHistoryEvents } from '../history-events.js';
|
|
3
|
+
/** One process per session: Cursor shares model settings within a process; Pi also needs isolated wrappers. */
|
|
4
|
+
export class IsolatedAcpClient {
|
|
5
|
+
binary;
|
|
6
|
+
logger;
|
|
7
|
+
options;
|
|
8
|
+
factory;
|
|
9
|
+
catalog;
|
|
10
|
+
clients = new Map();
|
|
11
|
+
starting = new Set();
|
|
12
|
+
inbound = new Set();
|
|
13
|
+
unavailable = new Set();
|
|
14
|
+
closed = false;
|
|
15
|
+
all = new Set();
|
|
16
|
+
callbacks = new Map();
|
|
17
|
+
nextCallback = 0;
|
|
18
|
+
configurations = new Map();
|
|
19
|
+
busy = new Set();
|
|
20
|
+
loading = new Map();
|
|
21
|
+
historyBusy = false;
|
|
22
|
+
constructor(binary, logger, options = {}, factory = () => new CursorAcpClient(binary, logger, undefined, { ...options, args: options.args ?? (options.backend === 'cursor' ? ['acp'] : []), authenticationMethod: options.backend === 'cursor' ? 'cursor_login' : null })) {
|
|
23
|
+
this.binary = binary;
|
|
24
|
+
this.logger = logger;
|
|
25
|
+
this.options = options;
|
|
26
|
+
this.factory = factory;
|
|
27
|
+
}
|
|
28
|
+
get backend() { return this.options.backend ?? 'pi'; }
|
|
29
|
+
get label() { return this.backend === 'cursor' ? 'Cursor' : 'Pi'; }
|
|
30
|
+
async start() {
|
|
31
|
+
this.catalog = await this.create();
|
|
32
|
+
this.catalog.onUnavailable(code => { for (const handler of this.unavailable)
|
|
33
|
+
handler(code); });
|
|
34
|
+
}
|
|
35
|
+
isReady() { return !this.closed && this.catalog?.isReady() === true; }
|
|
36
|
+
async create(history = false) {
|
|
37
|
+
if (this.closed)
|
|
38
|
+
throw new CursorAcpError('ACP_CLOSED', `${this.label} ACP is closed.`);
|
|
39
|
+
if (this.all.size >= (history ? 32 : 31))
|
|
40
|
+
throw new CursorAcpError('ACP_PROCESS_LIMIT', `Too many ${this.label} ACP sessions are active.`);
|
|
41
|
+
const client = this.factory();
|
|
42
|
+
this.starting.add(client);
|
|
43
|
+
this.all.add(client);
|
|
44
|
+
try {
|
|
45
|
+
await client.start();
|
|
46
|
+
if (this.closed)
|
|
47
|
+
throw new CursorAcpError('ACP_CLOSED', `${this.label} ACP is closed.`);
|
|
48
|
+
return client;
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
await this.dispose(client);
|
|
52
|
+
throw error;
|
|
53
|
+
}
|
|
54
|
+
finally {
|
|
55
|
+
this.starting.delete(client);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
async call(method, params, timeoutMs) {
|
|
59
|
+
const p = params;
|
|
60
|
+
if (method === 'session/load' && typeof p.sessionId === 'string') {
|
|
61
|
+
const previous = this.loading.get(p.sessionId);
|
|
62
|
+
if (previous)
|
|
63
|
+
return previous;
|
|
64
|
+
const promise = this.callOnce(method, params, timeoutMs);
|
|
65
|
+
this.loading.set(p.sessionId, promise);
|
|
66
|
+
try {
|
|
67
|
+
return await promise;
|
|
68
|
+
}
|
|
69
|
+
finally {
|
|
70
|
+
this.loading.delete(p.sessionId);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return this.callOnce(method, params, timeoutMs);
|
|
74
|
+
}
|
|
75
|
+
async callOnce(method, params, timeoutMs) {
|
|
76
|
+
const p = params;
|
|
77
|
+
if (method === 'session/list')
|
|
78
|
+
return this.catalog.call(method, params, timeoutMs);
|
|
79
|
+
if (method === 'session/new' || method === 'session/load') {
|
|
80
|
+
const known = typeof p.sessionId === 'string' ? this.clients.get(p.sessionId) : undefined;
|
|
81
|
+
// Loading a live session must not restart or cancel an in-flight turn.
|
|
82
|
+
if (known)
|
|
83
|
+
return { sessionId: p.sessionId };
|
|
84
|
+
const client = await this.create();
|
|
85
|
+
let boundId = typeof p.sessionId === 'string' ? p.sessionId : undefined;
|
|
86
|
+
const queued = [];
|
|
87
|
+
let replaying = method === 'session/load';
|
|
88
|
+
const replayConfiguration = {};
|
|
89
|
+
const receive = (message) => {
|
|
90
|
+
// Initial load replays history, not a live turn. Keep only configuration
|
|
91
|
+
// state and reject callbacks before this wrapper has a committed session.
|
|
92
|
+
if (replaying) {
|
|
93
|
+
if (message.kind === 'request') {
|
|
94
|
+
void client.respondError(message.id, -32600, `${this.label} session is not loaded.`).catch(() => undefined);
|
|
95
|
+
}
|
|
96
|
+
else if (message.params?.sessionId === boundId) {
|
|
97
|
+
this.updateConfiguration(boundId, message, replayConfiguration);
|
|
98
|
+
}
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
const incomingId = message.params?.sessionId;
|
|
102
|
+
if (!boundId) {
|
|
103
|
+
if (queued.length < 200)
|
|
104
|
+
queued.push(message);
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
if (incomingId !== boundId)
|
|
108
|
+
return;
|
|
109
|
+
this.updateConfiguration(boundId, message);
|
|
110
|
+
if (message.kind === 'request') {
|
|
111
|
+
const id = `${this.backend}-callback:${++this.nextCallback}`;
|
|
112
|
+
this.callbacks.set(id, { client, id: message.id });
|
|
113
|
+
message = { ...message, id };
|
|
114
|
+
}
|
|
115
|
+
for (const handler of this.inbound)
|
|
116
|
+
handler(message);
|
|
117
|
+
};
|
|
118
|
+
client.onInbound(receive);
|
|
119
|
+
client.onUnavailable(() => {
|
|
120
|
+
if (boundId && this.clients.get(boundId) === client) {
|
|
121
|
+
this.clients.delete(boundId);
|
|
122
|
+
this.configurations.delete(boundId);
|
|
123
|
+
}
|
|
124
|
+
void this.dispose(client).catch(() => undefined);
|
|
125
|
+
});
|
|
126
|
+
try {
|
|
127
|
+
const result = await client.call(method, params, timeoutMs);
|
|
128
|
+
const id = method === 'session/load' ? p.sessionId : result.sessionId;
|
|
129
|
+
if (typeof id !== 'string' || !/^[A-Za-z0-9_-]{1,240}$/.test(id) || this.clients.has(id) || this.closed
|
|
130
|
+
|| (method === 'session/load' && typeof result.sessionId === 'string' && result.sessionId !== id))
|
|
131
|
+
throw new CursorAcpError('ACP_INVALID_SESSION', `${this.label} returned an invalid session.`);
|
|
132
|
+
this.clients.set(id, client);
|
|
133
|
+
const config = { ...result };
|
|
134
|
+
for (const key of ['models', 'modes']) {
|
|
135
|
+
if (replayConfiguration[key])
|
|
136
|
+
config[key] = { ...config[key], ...replayConfiguration[key] };
|
|
137
|
+
}
|
|
138
|
+
this.configurations.set(id, config);
|
|
139
|
+
boundId = id;
|
|
140
|
+
replaying = false;
|
|
141
|
+
for (const message of queued)
|
|
142
|
+
receive(message);
|
|
143
|
+
return { ...result, sessionId: id };
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
await this.dispose(client);
|
|
147
|
+
throw error;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
const client = this.clients.get(String(p.sessionId));
|
|
151
|
+
if (!client)
|
|
152
|
+
throw new CursorAcpError('ACP_SESSION_NOT_LOADED', `Load the ${this.label} session before using it.`);
|
|
153
|
+
const id = String(p.sessionId);
|
|
154
|
+
if (this.backend === 'cursor' && (method === 'dsh/sessionModels' || method === 'dsh/selectModel'))
|
|
155
|
+
return client.call(method, params, timeoutMs);
|
|
156
|
+
if (method === 'dsh/sessionModels')
|
|
157
|
+
return this.models(id);
|
|
158
|
+
if (method === 'dsh/selectModel') {
|
|
159
|
+
if (this.busy.has(id))
|
|
160
|
+
throw new CursorAcpError('PROMPT_IN_PROGRESS', `Stop the ${this.label} reply before changing its model.`);
|
|
161
|
+
const config = this.configurations.get(id);
|
|
162
|
+
if (!config?.models?.availableModels?.some((item) => item.modelId === p.model)
|
|
163
|
+
|| (p.reasoningEffort !== undefined && !config?.modes?.availableModes?.some((item) => item.id === p.reasoningEffort))) {
|
|
164
|
+
throw new CursorAcpError('INVALID_MESSAGE', `The ${this.label} model or thinking level is not available.`);
|
|
165
|
+
}
|
|
166
|
+
this.busy.add(id);
|
|
167
|
+
try {
|
|
168
|
+
const modelResult = await client.call('session/set_config_option', { sessionId: id, configId: 'model', value: p.model });
|
|
169
|
+
this.updateConfiguration(id, { kind: 'notification', method: 'session/update', params: { update: { sessionUpdate: 'config_option_update', configOptions: modelResult.configOptions } } });
|
|
170
|
+
if (p.reasoningEffort !== undefined) {
|
|
171
|
+
if (!this.configurations.get(id)?.modes?.availableModes?.some((item) => item.id === p.reasoningEffort))
|
|
172
|
+
throw new CursorAcpError('INVALID_MESSAGE', 'The selected model does not support this thinking level.');
|
|
173
|
+
const thinkingResult = await client.call('session/set_config_option', { sessionId: id, configId: 'thought_level', value: p.reasoningEffort });
|
|
174
|
+
this.updateConfiguration(id, { kind: 'notification', method: 'session/update', params: { update: { sessionUpdate: 'config_option_update', configOptions: thinkingResult.configOptions } } });
|
|
175
|
+
}
|
|
176
|
+
return { selected: this.models(id).current };
|
|
177
|
+
}
|
|
178
|
+
finally {
|
|
179
|
+
this.busy.delete(id);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
if (method === 'session/prompt') {
|
|
183
|
+
if (this.busy.has(id))
|
|
184
|
+
throw new CursorAcpError('PROMPT_IN_PROGRESS', `The ${this.label} session is busy.`);
|
|
185
|
+
this.busy.add(id);
|
|
186
|
+
try {
|
|
187
|
+
return await client.call(method, params, timeoutMs);
|
|
188
|
+
}
|
|
189
|
+
finally {
|
|
190
|
+
this.busy.delete(id);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
return client.call(method, params, timeoutMs);
|
|
194
|
+
}
|
|
195
|
+
updateConfiguration(id, message, initial) {
|
|
196
|
+
if (message.method !== 'session/update')
|
|
197
|
+
return;
|
|
198
|
+
const update = message.params.update;
|
|
199
|
+
const config = initial ?? this.configurations.get(id);
|
|
200
|
+
if (!update || !config)
|
|
201
|
+
return;
|
|
202
|
+
if (update.sessionUpdate === 'current_mode_update' && typeof update.currentModeId === 'string')
|
|
203
|
+
config.modes = { ...config.modes, currentModeId: update.currentModeId };
|
|
204
|
+
if (update.sessionUpdate === 'config_option_update' && Array.isArray(update.configOptions)) {
|
|
205
|
+
for (const option of update.configOptions) {
|
|
206
|
+
if (option.type !== 'select' || !Array.isArray(option.options))
|
|
207
|
+
continue;
|
|
208
|
+
if (option.id === 'model')
|
|
209
|
+
config.models = { currentModelId: option.currentValue,
|
|
210
|
+
availableModels: option.options.map((item) => ({ modelId: item.value, name: item.name })) };
|
|
211
|
+
if (option.id === 'thought_level')
|
|
212
|
+
config.modes = { currentModeId: option.currentValue,
|
|
213
|
+
availableModes: option.options.map((item) => ({ id: item.value, name: item.name })) };
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
models(id) {
|
|
218
|
+
const config = this.configurations.get(id);
|
|
219
|
+
const modes = config?.modes;
|
|
220
|
+
return { current: { provider: 'pi', model: config?.models?.currentModelId ?? '', reasoningEffort: modes?.currentModeId },
|
|
221
|
+
routable: true, failures: [], groups: [{ id: 'pi', name: `${this.label}`, models: (config?.models?.availableModels ?? []).map((model) => ({
|
|
222
|
+
id: model.modelId, name: model.name, ...(modes?.availableModes?.length ? { reasoning: { efforts: modes.availableModes.map((mode) => ({ id: mode.id, name: mode.name })), defaultEffort: modes.currentModeId } } : {}),
|
|
223
|
+
})) }] };
|
|
224
|
+
}
|
|
225
|
+
/** A separate wrapper prevents history reads from interrupting active sessions. */
|
|
226
|
+
async history(sessionId, cwd) {
|
|
227
|
+
if (this.historyBusy)
|
|
228
|
+
throw new CursorAcpError('ACP_PROCESS_LIMIT', `A ${this.label} history read is already in progress.`);
|
|
229
|
+
this.historyBusy = true;
|
|
230
|
+
let client;
|
|
231
|
+
try {
|
|
232
|
+
client = await this.create(true);
|
|
233
|
+
}
|
|
234
|
+
catch (error) {
|
|
235
|
+
this.historyBusy = false;
|
|
236
|
+
throw error;
|
|
237
|
+
}
|
|
238
|
+
const updates = [];
|
|
239
|
+
let bytes = 0;
|
|
240
|
+
let count = 0;
|
|
241
|
+
client.onInbound(message => {
|
|
242
|
+
if (message.kind !== 'notification' || message.method !== 'session/update' || message.params?.sessionId !== sessionId)
|
|
243
|
+
return;
|
|
244
|
+
count++;
|
|
245
|
+
bytes += Buffer.byteLength(JSON.stringify(message));
|
|
246
|
+
if (bytes <= 8 * 1024 * 1024 && count <= 10000)
|
|
247
|
+
updates.push(message);
|
|
248
|
+
});
|
|
249
|
+
try {
|
|
250
|
+
const result = await client.call('session/load', { sessionId, cwd, mcpServers: [] });
|
|
251
|
+
const loadedId = result?.sessionId;
|
|
252
|
+
if (loadedId !== undefined && loadedId !== sessionId)
|
|
253
|
+
throw new CursorAcpError('ACP_INVALID_SESSION', `${this.label} returned an invalid history session.`);
|
|
254
|
+
if (bytes > 8 * 1024 * 1024 || count > 10000)
|
|
255
|
+
throw new CursorAcpError('ACP_HISTORY_TOO_LARGE', `${this.label} history exceeds the transfer limit.`);
|
|
256
|
+
return acpHistoryEvents(updates, sessionId, this.backend);
|
|
257
|
+
}
|
|
258
|
+
finally {
|
|
259
|
+
try {
|
|
260
|
+
await this.dispose(client);
|
|
261
|
+
}
|
|
262
|
+
finally {
|
|
263
|
+
this.historyBusy = false;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
async respond(id, result) {
|
|
268
|
+
const pending = this.callbacks.get(String(id));
|
|
269
|
+
if (!pending)
|
|
270
|
+
throw new CursorAcpError('ACP_CALLBACK_NOT_FOUND', `The ${this.label} callback is unavailable.`);
|
|
271
|
+
this.callbacks.delete(String(id));
|
|
272
|
+
await pending.client.respond(pending.id, result);
|
|
273
|
+
}
|
|
274
|
+
async respondError(id, code, message) {
|
|
275
|
+
const pending = this.callbacks.get(String(id));
|
|
276
|
+
if (!pending)
|
|
277
|
+
return;
|
|
278
|
+
this.callbacks.delete(String(id));
|
|
279
|
+
await pending.client.respondError(pending.id, code, message);
|
|
280
|
+
}
|
|
281
|
+
onInbound(handler) { this.inbound.add(handler); return () => this.inbound.delete(handler); }
|
|
282
|
+
onUnavailable(handler) { this.unavailable.add(handler); return () => this.unavailable.delete(handler); }
|
|
283
|
+
async dispose(client) {
|
|
284
|
+
await client.close();
|
|
285
|
+
this.all.delete(client);
|
|
286
|
+
for (const [key, pending] of this.callbacks)
|
|
287
|
+
if (pending.client === client)
|
|
288
|
+
this.callbacks.delete(key);
|
|
289
|
+
}
|
|
290
|
+
async close() {
|
|
291
|
+
this.closed = true;
|
|
292
|
+
const clients = this.all;
|
|
293
|
+
await Promise.all([...clients].map(client => this.dispose(client)));
|
|
294
|
+
this.clients.clear();
|
|
295
|
+
this.all.clear();
|
|
296
|
+
this.callbacks.clear();
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
//# sourceMappingURL=isolated-process.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isolated-process.js","sourceRoot":"","sources":["../../../src/acp/adapters/isolated-process.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/** The native HTTP listener belongs to the same Host-local `opencode acp` process. */
|
|
2
|
+
export declare class OpencodeNativeApi {
|
|
3
|
+
private readonly origin;
|
|
4
|
+
private readonly request;
|
|
5
|
+
readonly password: string;
|
|
6
|
+
private readonly shutdown;
|
|
7
|
+
constructor(origin: string, request?: typeof fetch);
|
|
8
|
+
isArchived(sessionId: string, cwd: string): Promise<boolean>;
|
|
9
|
+
archive(sessionId: string, cwd: string): Promise<void>;
|
|
10
|
+
close(): void;
|
|
11
|
+
private session;
|
|
12
|
+
}
|
|
13
|
+
export declare function opencodeLoopbackPort(): Promise<number>;
|
|
14
|
+
/** Explicit flags override user network defaults, including mDNS's public bind. */
|
|
15
|
+
export declare function opencodePrivateArgs(args: readonly string[], port: number): string[];
|
|
16
|
+
//# sourceMappingURL=opencode-native-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opencode-native-api.d.ts","sourceRoot":"","sources":["../../../src/acp/adapters/opencode-native-api.ts"],"names":[],"mappings":"AAOA,sFAAsF;AACtF,qBAAa,iBAAiB;IAGhB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAAU,OAAO,CAAC,QAAQ,CAAC,OAAO;IAFrE,QAAQ,CAAC,QAAQ,SAAkC;IACnD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwB;gBACpB,MAAM,EAAE,MAAM,EAAmB,OAAO,GAAE,OAAO,KAAa;IAIrF,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAK5D,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM5D,KAAK,IAAI,IAAI;YAEC,OAAO;CAgCtB;AAED,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC,CAO5D;AAED,mFAAmF;AACnF,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAUnF"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { randomBytes } from 'node:crypto';
|
|
2
|
+
import { createServer } from 'node:net';
|
|
3
|
+
import { realpath } from 'node:fs/promises';
|
|
4
|
+
import { RpcError } from '../../safe-error.js';
|
|
5
|
+
const MAX_RESPONSE_BYTES = 64 * 1024;
|
|
6
|
+
/** The native HTTP listener belongs to the same Host-local `opencode acp` process. */
|
|
7
|
+
export class OpencodeNativeApi {
|
|
8
|
+
origin;
|
|
9
|
+
request;
|
|
10
|
+
password = randomBytes(32).toString('hex');
|
|
11
|
+
shutdown = new AbortController();
|
|
12
|
+
constructor(origin, request = fetch) {
|
|
13
|
+
this.origin = origin;
|
|
14
|
+
this.request = request;
|
|
15
|
+
if (!/^http:\/\/127\.0\.0\.1:[1-9][0-9]{0,4}$/.test(origin) || Number(new URL(origin).port) > 65535)
|
|
16
|
+
throw unavailable();
|
|
17
|
+
}
|
|
18
|
+
async isArchived(sessionId, cwd) {
|
|
19
|
+
const session = await this.session('GET', sessionId, cwd);
|
|
20
|
+
return typeof session.time.archived === 'number' && Number.isFinite(session.time.archived);
|
|
21
|
+
}
|
|
22
|
+
async archive(sessionId, cwd) {
|
|
23
|
+
if (await this.isArchived(sessionId, cwd))
|
|
24
|
+
return;
|
|
25
|
+
const session = await this.session('PATCH', sessionId, cwd);
|
|
26
|
+
if (typeof session.time.archived !== 'number' || !Number.isFinite(session.time.archived))
|
|
27
|
+
throw unavailable();
|
|
28
|
+
}
|
|
29
|
+
close() { this.shutdown.abort(); }
|
|
30
|
+
async session(method, sessionId, cwd) {
|
|
31
|
+
if (!/^[A-Za-z0-9_-]{1,256}$/.test(sessionId))
|
|
32
|
+
throw new RpcError('INVALID_MESSAGE', 'The OpenCode session ID is invalid.');
|
|
33
|
+
try {
|
|
34
|
+
const url = new URL(`/session/${encodeURIComponent(sessionId)}`, this.origin);
|
|
35
|
+
url.searchParams.set('directory', cwd);
|
|
36
|
+
const response = await this.request(url, {
|
|
37
|
+
method, redirect: 'error', signal: AbortSignal.any([this.shutdown.signal, AbortSignal.timeout(20_000)]),
|
|
38
|
+
headers: { authorization: `Basic ${Buffer.from(`opencode:${this.password}`).toString('base64')}`, 'content-type': 'application/json' },
|
|
39
|
+
...(method === 'PATCH' ? { body: JSON.stringify({ time: { archived: Date.now() } }) } : {}),
|
|
40
|
+
});
|
|
41
|
+
if (!response.ok) {
|
|
42
|
+
await response.body?.cancel();
|
|
43
|
+
throw unavailable();
|
|
44
|
+
}
|
|
45
|
+
const reader = response.body?.getReader();
|
|
46
|
+
if (!reader)
|
|
47
|
+
throw unavailable();
|
|
48
|
+
const chunks = [];
|
|
49
|
+
let bytes = 0;
|
|
50
|
+
try {
|
|
51
|
+
for (;;) {
|
|
52
|
+
const chunk = await reader.read();
|
|
53
|
+
if (chunk.done)
|
|
54
|
+
break;
|
|
55
|
+
bytes += chunk.value.byteLength;
|
|
56
|
+
if (bytes > MAX_RESPONSE_BYTES)
|
|
57
|
+
throw unavailable();
|
|
58
|
+
chunks.push(chunk.value);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
finally {
|
|
62
|
+
await reader.cancel().catch(() => undefined);
|
|
63
|
+
}
|
|
64
|
+
const result = JSON.parse(Buffer.concat(chunks).toString('utf8'));
|
|
65
|
+
if (!result || result.id !== sessionId || typeof result.directory !== 'string' || !result.time || typeof result.time !== 'object'
|
|
66
|
+
|| await realpath(result.directory) !== cwd)
|
|
67
|
+
throw unavailable();
|
|
68
|
+
return result;
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
throw unavailable();
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
export async function opencodeLoopbackPort() {
|
|
76
|
+
const server = createServer();
|
|
77
|
+
await new Promise((resolve, reject) => { server.once('error', reject); server.listen(0, '127.0.0.1', () => resolve()); });
|
|
78
|
+
const address = server.address();
|
|
79
|
+
await new Promise((resolve, reject) => server.close(error => error ? reject(error) : resolve()));
|
|
80
|
+
if (!address || typeof address === 'string')
|
|
81
|
+
throw unavailable();
|
|
82
|
+
return address.port;
|
|
83
|
+
}
|
|
84
|
+
/** Explicit flags override user network defaults, including mDNS's public bind. */
|
|
85
|
+
export function opencodePrivateArgs(args, port) {
|
|
86
|
+
if (args.includes('--'))
|
|
87
|
+
throw unavailable();
|
|
88
|
+
const kept = [];
|
|
89
|
+
for (let i = 0; i < args.length; i++) {
|
|
90
|
+
const arg = args[i];
|
|
91
|
+
if (/^--(?:port|hostname|mdns|no-mdns)(?:=|$)/.test(arg)) {
|
|
92
|
+
if ((arg === '--port' || arg === '--hostname') || (arg === '--mdns' && /^(true|false)$/.test(args[i + 1] ?? '')))
|
|
93
|
+
i++;
|
|
94
|
+
}
|
|
95
|
+
else
|
|
96
|
+
kept.push(arg);
|
|
97
|
+
}
|
|
98
|
+
return [...kept, `--hostname=127.0.0.1`, `--port=${port}`, '--mdns=false'];
|
|
99
|
+
}
|
|
100
|
+
function unavailable() {
|
|
101
|
+
return new RpcError('OPENCODE_ARCHIVE_UNAVAILABLE', 'OpenCode did not confirm the archive operation. Check the Host OpenCode version and retry after refreshing its session list.');
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=opencode-native-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opencode-native-api.js","sourceRoot":"","sources":["../../../src/acp/adapters/opencode-native-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { type ChildProcessWithoutNullStreams } from 'node:child_process';
|
|
2
|
+
import type { SafeLogger } from '../../logging.js';
|
|
3
|
+
import type { CursorAcpInbound, CursorAcpLike } from './cursor-process.js';
|
|
4
|
+
export type OpencodeAcpNotification = CursorAcpNotification;
|
|
5
|
+
export type OpencodeAcpRequest = CursorAcpRequest;
|
|
6
|
+
export type OpencodeAcpInbound = CursorAcpInbound;
|
|
7
|
+
export type OpencodeAcpInboundHandler = (message: CursorAcpInbound) => void;
|
|
8
|
+
export type OpencodeAcpUnavailableHandler = (code: string) => void;
|
|
9
|
+
export type SpawnOpencodeAcp = (binary: string) => ChildProcessWithoutNullStreams;
|
|
10
|
+
export interface CursorAcpNotification {
|
|
11
|
+
kind: 'notification';
|
|
12
|
+
method: string;
|
|
13
|
+
params: unknown;
|
|
14
|
+
}
|
|
15
|
+
export interface CursorAcpRequest {
|
|
16
|
+
kind: 'request';
|
|
17
|
+
id: string | number;
|
|
18
|
+
method: string;
|
|
19
|
+
params: unknown;
|
|
20
|
+
}
|
|
21
|
+
export type OpencodeAcpLike = CursorAcpLike;
|
|
22
|
+
export declare class OpencodeAcpError extends Error {
|
|
23
|
+
readonly code: string;
|
|
24
|
+
constructor(code: string, message: string, options?: ErrorOptions);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Host-local stdio client for one OpenCode CLI ACP process (`opencode acp`).
|
|
28
|
+
* OpenCode natively supports standard Agent Client Protocol (ACP) over stdio.
|
|
29
|
+
*/
|
|
30
|
+
export declare class OpencodeAcpClient implements CursorAcpLike {
|
|
31
|
+
private readonly binary;
|
|
32
|
+
private readonly logger?;
|
|
33
|
+
private readonly spawnAcp?;
|
|
34
|
+
private readonly options;
|
|
35
|
+
private process?;
|
|
36
|
+
private nextId;
|
|
37
|
+
private readonly pending;
|
|
38
|
+
private readonly inboundHandlers;
|
|
39
|
+
private readonly unavailableHandlers;
|
|
40
|
+
private stdoutBuffer;
|
|
41
|
+
private stderrBytes;
|
|
42
|
+
private ready;
|
|
43
|
+
private closed;
|
|
44
|
+
private failureNotified;
|
|
45
|
+
private startPromise?;
|
|
46
|
+
private historyBusy;
|
|
47
|
+
private nativeApi?;
|
|
48
|
+
private readonly archivedSessions;
|
|
49
|
+
private readonly archivingSessions;
|
|
50
|
+
constructor(binary?: string, logger?: SafeLogger | undefined, spawnAcp?: SpawnOpencodeAcp | undefined, options?: {
|
|
51
|
+
args?: string[];
|
|
52
|
+
cwd?: string;
|
|
53
|
+
historyReader?: boolean;
|
|
54
|
+
});
|
|
55
|
+
start(): Promise<void>;
|
|
56
|
+
isReady(): boolean;
|
|
57
|
+
isSessionArchived(sessionId: string, cwd: string): Promise<boolean>;
|
|
58
|
+
archiveSession(sessionId: string, cwd: string): Promise<void>;
|
|
59
|
+
/**
|
|
60
|
+
* Replay a saved session in one temporary ACP process so a history read never
|
|
61
|
+
* interrupts a live turn. OpenCode emits the transcript as `session/update`
|
|
62
|
+
* notifications before `session/load` resolves.
|
|
63
|
+
*/
|
|
64
|
+
history(sessionId: string, cwd: string): Promise<unknown[]>;
|
|
65
|
+
private readonly models;
|
|
66
|
+
private readonly loads;
|
|
67
|
+
private readonly busy;
|
|
68
|
+
call(method: string, params: unknown, timeoutMs?: number): Promise<unknown>;
|
|
69
|
+
private loadSession;
|
|
70
|
+
private publish;
|
|
71
|
+
respond(id: string | number, result: unknown): Promise<void>;
|
|
72
|
+
respondError(id: string | number, code: number, message: string): Promise<void>;
|
|
73
|
+
onInbound(handler: OpencodeAcpInboundHandler): () => void;
|
|
74
|
+
onUnavailable(handler: OpencodeAcpUnavailableHandler): () => void;
|
|
75
|
+
close(): Promise<void>;
|
|
76
|
+
private startOnce;
|
|
77
|
+
private request;
|
|
78
|
+
private write;
|
|
79
|
+
private consumeStdout;
|
|
80
|
+
private handleLine;
|
|
81
|
+
private handleProcessFailure;
|
|
82
|
+
private notifyUnavailable;
|
|
83
|
+
private takePending;
|
|
84
|
+
private failPending;
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=opencode-process.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opencode-process.d.ts","sourceRoot":"","sources":["../../../src/acp/adapters/opencode-process.ts"],"names":[],"mappings":"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"}
|