ds-harness-remote 0.5.10 → 0.5.12
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/adapters/claude-process.js +1 -1
- package/dist/acp/adapters/claude-process.js.map +1 -1
- package/dist/acp/adapters/cursor-process.d.ts +3 -0
- package/dist/acp/adapters/cursor-process.d.ts.map +1 -1
- package/dist/acp/adapters/cursor-process.js +55 -1
- 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 +308 -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 +22 -2
- package/dist/acp/adapters/opencode-process.d.ts.map +1 -1
- package/dist/acp/adapters/opencode-process.js +273 -27
- package/dist/acp/adapters/opencode-process.js.map +1 -1
- package/dist/acp/adapters/pi-process.d.ts +3 -40
- package/dist/acp/adapters/pi-process.d.ts.map +1 -1
- package/dist/acp/adapters/pi-process.js +3 -408
- package/dist/acp/adapters/pi-process.js.map +1 -1
- 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 +4 -1
- package/dist/acp/gateway.d.ts.map +1 -1
- package/dist/acp/gateway.js +182 -28
- 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 +26 -16
- 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 +6 -1
- package/dist/acp/peer-bridge.js.map +1 -1
- package/dist/acp/virtual-catalog.d.ts +5 -5
- package/dist/acp/virtual-catalog.d.ts.map +1 -1
- package/dist/acp/virtual-catalog.js +8 -21
- package/dist/acp/virtual-catalog.js.map +1 -1
- package/dist/acp/virtual-contract.d.ts +13 -6
- package/dist/acp/virtual-contract.d.ts.map +1 -1
- package/dist/acp/virtual-contract.js +3 -3
- package/dist/acp/virtual-contract.js.map +1 -1
- package/dist/acp/virtual-event-carrier.d.ts +1 -0
- package/dist/acp/virtual-event-carrier.d.ts.map +1 -1
- package/dist/acp/virtual-event-carrier.js +1 -1
- package/dist/acp/virtual-event-carrier.js.map +1 -1
- package/dist/acp/virtual-harness.d.ts +8 -3
- package/dist/acp/virtual-harness.d.ts.map +1 -1
- package/dist/acp/virtual-harness.js +128 -60
- package/dist/acp/virtual-harness.js.map +1 -1
- package/dist/acp/virtual-live.d.ts +3 -2
- package/dist/acp/virtual-live.d.ts.map +1 -1
- package/dist/acp/virtual-live.js +5 -4
- package/dist/acp/virtual-live.js.map +1 -1
- package/dist/acp/workspace-tools.js +1 -1
- package/dist/acp/workspace-tools.js.map +1 -1
- package/dist/client/navigation.js +1 -1
- package/dist/client/navigation.js.map +1 -1
- package/dist/client/settings.js +1 -1
- package/dist/client/settings.js.map +1 -1
- package/dist/client/shell.d.ts.map +1 -1
- package/dist/client/shell.js +3 -2
- package/dist/client/shell.js.map +1 -1
- package/dist/client/types.d.ts +3 -2
- package/dist/client/types.d.ts.map +1 -1
- package/dist/client/workspaces.d.ts.map +1 -1
- package/dist/client/workspaces.js +130 -48
- package/dist/client/workspaces.js.map +1 -1
- package/dist/client-capabilities.d.ts.map +1 -1
- package/dist/client-capabilities.js +3 -1
- package/dist/client-capabilities.js.map +1 -1
- package/dist/client-control.d.ts +3 -3
- package/dist/client-control.d.ts.map +1 -1
- package/dist/client-control.js +23 -3
- package/dist/client-control.js.map +1 -1
- package/dist/client-locale.d.ts +8 -4
- package/dist/client-locale.d.ts.map +1 -1
- package/dist/client-locale.js +16 -8
- package/dist/client-locale.js.map +1 -1
- package/dist/client-runtime-contract.d.ts +2 -1
- package/dist/client-runtime-contract.d.ts.map +1 -1
- package/dist/client-runtime-contract.js.map +1 -1
- package/dist/client-runtime.d.ts +3 -3
- package/dist/client-runtime.d.ts.map +1 -1
- package/dist/client-runtime.js.map +1 -1
- package/dist/client.github.js +115 -57
- package/dist/client.js +115 -57
- package/dist/client.js.map +1 -1
- package/dist/codex/app-server.d.ts +10 -0
- package/dist/codex/app-server.d.ts.map +1 -1
- package/dist/codex/app-server.js +24 -10
- package/dist/codex/app-server.js.map +1 -1
- package/dist/codex/domain.d.ts +3 -0
- package/dist/codex/domain.d.ts.map +1 -1
- package/dist/codex/domain.js +93 -17
- package/dist/codex/domain.js.map +1 -1
- package/dist/codex/method-policy.d.ts +2 -2
- package/dist/codex/peer-bridge.d.ts.map +1 -1
- package/dist/codex/peer-bridge.js +7 -5
- package/dist/codex/peer-bridge.js.map +1 -1
- package/dist/codex/virtual-harness.d.ts.map +1 -1
- package/dist/codex/virtual-harness.js +16 -3
- package/dist/codex/virtual-harness.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2669 -1872
- package/dist/index.js.map +4 -4
- package/dist/remote-typert-gateway.js +42 -1
- package/dist/remote-typert-gateway.js.map +1 -1
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +11 -1
- package/dist/service.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/workspace-bridge.d.ts.map +1 -1
- package/dist/workspace-bridge.js +26 -4
- package/dist/workspace-bridge.js.map +1 -1
- package/dsh-plugin.json +1 -1
- package/package.json +1 -1
|
@@ -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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"}
|
|
@@ -30,7 +30,8 @@ export declare class OpencodeAcpError extends Error {
|
|
|
30
30
|
export declare class OpencodeAcpClient implements CursorAcpLike {
|
|
31
31
|
private readonly binary;
|
|
32
32
|
private readonly logger?;
|
|
33
|
-
private readonly spawnAcp
|
|
33
|
+
private readonly spawnAcp?;
|
|
34
|
+
private readonly options;
|
|
34
35
|
private process?;
|
|
35
36
|
private nextId;
|
|
36
37
|
private readonly pending;
|
|
@@ -42,13 +43,32 @@ export declare class OpencodeAcpClient implements CursorAcpLike {
|
|
|
42
43
|
private closed;
|
|
43
44
|
private failureNotified;
|
|
44
45
|
private startPromise?;
|
|
45
|
-
|
|
46
|
+
private historyBusy;
|
|
47
|
+
private historyStop?;
|
|
48
|
+
private nativeApi?;
|
|
49
|
+
private readonly archivedSessions;
|
|
50
|
+
private readonly archivingSessions;
|
|
51
|
+
constructor(binary?: string, logger?: SafeLogger | undefined, spawnAcp?: SpawnOpencodeAcp | undefined, options?: {
|
|
46
52
|
args?: string[];
|
|
47
53
|
cwd?: string;
|
|
54
|
+
historyReader?: boolean;
|
|
48
55
|
});
|
|
49
56
|
start(): Promise<void>;
|
|
50
57
|
isReady(): boolean;
|
|
58
|
+
isSessionArchived(sessionId: string, cwd: string): Promise<boolean>;
|
|
59
|
+
archiveSession(sessionId: string, cwd: string): Promise<void>;
|
|
60
|
+
/**
|
|
61
|
+
* Replay a saved session in one temporary ACP process so a history read never
|
|
62
|
+
* interrupts a live turn. OpenCode emits the transcript as `session/update`
|
|
63
|
+
* notifications before `session/load` resolves.
|
|
64
|
+
*/
|
|
65
|
+
history(sessionId: string, cwd: string): Promise<unknown[]>;
|
|
66
|
+
private readonly models;
|
|
67
|
+
private readonly loads;
|
|
68
|
+
private readonly busy;
|
|
51
69
|
call(method: string, params: unknown, timeoutMs?: number): Promise<unknown>;
|
|
70
|
+
private loadSession;
|
|
71
|
+
private publish;
|
|
52
72
|
respond(id: string | number, result: unknown): Promise<void>;
|
|
53
73
|
respondError(id: string | number, code: number, message: string): Promise<void>;
|
|
54
74
|
onInbound(handler: OpencodeAcpInboundHandler): () => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode-process.d.ts","sourceRoot":"","sources":["../../../src/acp/adapters/opencode-process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,8BAA8B,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"opencode-process.d.ts","sourceRoot":"","sources":["../../../src/acp/adapters/opencode-process.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { spawn } from 'node:child_process';
|
|
2
2
|
import { Buffer } from 'node:buffer';
|
|
3
|
+
import { realpath } from 'node:fs/promises';
|
|
3
4
|
import { PLUGIN_VERSION } from '../../version.js';
|
|
5
|
+
import { acpHistoryEvents } from '../history-events.js';
|
|
6
|
+
import { AcpSessionModelState } from './session-models.js';
|
|
7
|
+
import { OpencodeNativeApi, opencodeLoopbackPort, opencodePrivateArgs } from './opencode-native-api.js';
|
|
4
8
|
const ACP_REQUEST_TIMEOUT_MS = 60_000;
|
|
5
9
|
/** Full agent turns (tools + streaming) routinely exceed the short RPC budget. */
|
|
6
10
|
const ACP_PROMPT_TIMEOUT_MS = 10 * 60_000;
|
|
@@ -23,6 +27,7 @@ export class OpencodeAcpClient {
|
|
|
23
27
|
binary;
|
|
24
28
|
logger;
|
|
25
29
|
spawnAcp;
|
|
30
|
+
options;
|
|
26
31
|
process;
|
|
27
32
|
nextId = 1;
|
|
28
33
|
pending = new Map();
|
|
@@ -34,15 +39,16 @@ export class OpencodeAcpClient {
|
|
|
34
39
|
closed = false;
|
|
35
40
|
failureNotified = false;
|
|
36
41
|
startPromise;
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
42
|
+
historyBusy = false;
|
|
43
|
+
historyStop;
|
|
44
|
+
nativeApi;
|
|
45
|
+
archivedSessions = new Set();
|
|
46
|
+
archivingSessions = new Set();
|
|
47
|
+
constructor(binary = 'opencode', logger, spawnAcp, options = {}) {
|
|
43
48
|
this.binary = binary;
|
|
44
49
|
this.logger = logger;
|
|
45
50
|
this.spawnAcp = spawnAcp;
|
|
51
|
+
this.options = options;
|
|
46
52
|
}
|
|
47
53
|
start() {
|
|
48
54
|
if (this.closed)
|
|
@@ -53,12 +59,208 @@ export class OpencodeAcpClient {
|
|
|
53
59
|
return this.startPromise;
|
|
54
60
|
}
|
|
55
61
|
isReady() { return this.ready; }
|
|
62
|
+
async isSessionArchived(sessionId, cwd) {
|
|
63
|
+
if (!this.nativeApi)
|
|
64
|
+
return this.archivedSessions.has(sessionId);
|
|
65
|
+
const archived = await this.nativeApi.isArchived(sessionId, cwd);
|
|
66
|
+
if (archived)
|
|
67
|
+
this.archivedSessions.add(sessionId);
|
|
68
|
+
else
|
|
69
|
+
this.archivedSessions.delete(sessionId);
|
|
70
|
+
return archived;
|
|
71
|
+
}
|
|
72
|
+
async archiveSession(sessionId, cwd) {
|
|
73
|
+
if (!this.ready || !this.nativeApi)
|
|
74
|
+
throw new OpencodeAcpError('OPENCODE_ARCHIVE_UNAVAILABLE', 'The Host OpenCode native API is unavailable.');
|
|
75
|
+
if (this.busy.has(sessionId) || this.loads.has(sessionId) || this.archivingSessions.has(sessionId))
|
|
76
|
+
throw new OpencodeAcpError('PROMPT_IN_PROGRESS', 'Stop the OpenCode reply before archiving.');
|
|
77
|
+
this.archivingSessions.add(sessionId);
|
|
78
|
+
try {
|
|
79
|
+
await this.nativeApi.archive(sessionId, cwd);
|
|
80
|
+
this.archivedSessions.add(sessionId);
|
|
81
|
+
}
|
|
82
|
+
finally {
|
|
83
|
+
this.archivingSessions.delete(sessionId);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Replay a saved session in one temporary ACP process so a history read never
|
|
88
|
+
* interrupts a live turn. OpenCode emits the transcript as `session/update`
|
|
89
|
+
* notifications before `session/load` resolves.
|
|
90
|
+
*/
|
|
91
|
+
async history(sessionId, cwd) {
|
|
92
|
+
if (this.closed)
|
|
93
|
+
throw new OpencodeAcpError('OPENCODE_CLOSED', 'The OpenCode domain is closed.');
|
|
94
|
+
if (this.historyBusy)
|
|
95
|
+
throw new OpencodeAcpError('OPENCODE_HISTORY_BUSY', 'An OpenCode history read is already in progress.');
|
|
96
|
+
this.historyBusy = true;
|
|
97
|
+
const client = new OpencodeAcpClient(this.binary, this.logger, this.spawnAcp, { ...this.options, historyReader: true });
|
|
98
|
+
let stopping;
|
|
99
|
+
const stop = () => stopping ??= client.close();
|
|
100
|
+
this.historyStop = stop;
|
|
101
|
+
const updates = [];
|
|
102
|
+
let bytes = 0;
|
|
103
|
+
let count = 0;
|
|
104
|
+
let overflow = false;
|
|
105
|
+
const unsubscribe = client.onInbound(message => {
|
|
106
|
+
// A history reader has no authority to run tools or wait for approval.
|
|
107
|
+
if (message.kind === 'request') {
|
|
108
|
+
void client.respondError(message.id, -32601, 'History reader does not support requests.').catch(() => undefined);
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
if (message.method !== 'session/update'
|
|
112
|
+
|| message.params?.sessionId !== sessionId
|
|
113
|
+
|| overflow)
|
|
114
|
+
return;
|
|
115
|
+
count++;
|
|
116
|
+
bytes += Buffer.byteLength(JSON.stringify(message));
|
|
117
|
+
if (bytes > 8 * 1024 * 1024 || count > 10_000) {
|
|
118
|
+
overflow = true;
|
|
119
|
+
void stop().catch(() => undefined);
|
|
120
|
+
}
|
|
121
|
+
else
|
|
122
|
+
updates.push(message);
|
|
123
|
+
});
|
|
124
|
+
try {
|
|
125
|
+
await client.start();
|
|
126
|
+
if (this.closed)
|
|
127
|
+
throw new OpencodeAcpError('OPENCODE_CLOSED', 'OpenCode ACP was closed.');
|
|
128
|
+
await client.call('session/load', { sessionId, cwd, mcpServers: [] });
|
|
129
|
+
if (this.closed)
|
|
130
|
+
throw new OpencodeAcpError('OPENCODE_CLOSED', 'OpenCode ACP was closed.');
|
|
131
|
+
if (overflow)
|
|
132
|
+
throw new OpencodeAcpError('OPENCODE_HISTORY_TOO_LARGE', 'OpenCode history exceeds the transfer limit.');
|
|
133
|
+
return acpHistoryEvents(updates, sessionId, 'opencode');
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
if (overflow)
|
|
137
|
+
throw new OpencodeAcpError('OPENCODE_HISTORY_TOO_LARGE', 'OpenCode history exceeds the transfer limit.');
|
|
138
|
+
throw error;
|
|
139
|
+
}
|
|
140
|
+
finally {
|
|
141
|
+
unsubscribe();
|
|
142
|
+
try {
|
|
143
|
+
await stop();
|
|
144
|
+
}
|
|
145
|
+
finally {
|
|
146
|
+
this.historyStop = undefined;
|
|
147
|
+
this.historyBusy = false;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
models = new Map();
|
|
152
|
+
loads = new Map();
|
|
153
|
+
busy = new Set();
|
|
56
154
|
async call(method, params, timeoutMs) {
|
|
57
155
|
if (!this.ready)
|
|
58
156
|
throw new OpencodeAcpError('OPENCODE_UNAVAILABLE', 'OpenCode ACP is not ready.');
|
|
59
|
-
const
|
|
60
|
-
|
|
61
|
-
|
|
157
|
+
const p = isRecord(params) ? params : {};
|
|
158
|
+
const id = typeof p.sessionId === 'string' ? p.sessionId : undefined;
|
|
159
|
+
if (id && this.archivingSessions.has(id))
|
|
160
|
+
throw new OpencodeAcpError('ACP_SESSION_BUSY', 'The OpenCode session is being archived.');
|
|
161
|
+
if (id && this.archivedSessions.has(id) && ['session/load', 'session/prompt', 'dsh/selectModel'].includes(method))
|
|
162
|
+
throw new OpencodeAcpError('ACP_SESSION_ARCHIVED', 'This OpenCode session is archived.');
|
|
163
|
+
const budget = timeoutMs ?? (method === 'session/prompt' ? ACP_PROMPT_TIMEOUT_MS : ACP_REQUEST_TIMEOUT_MS);
|
|
164
|
+
if (method === 'session/load' && id) {
|
|
165
|
+
// Re-reading models must never replay history into an active conversation.
|
|
166
|
+
if (this.models.has(id))
|
|
167
|
+
return { sessionId: id };
|
|
168
|
+
const pending = this.loads.get(id);
|
|
169
|
+
if (pending)
|
|
170
|
+
return pending;
|
|
171
|
+
const load = Promise.resolve().then(() => this.loadSession(method, params, budget, id));
|
|
172
|
+
this.loads.set(id, load);
|
|
173
|
+
try {
|
|
174
|
+
return await load;
|
|
175
|
+
}
|
|
176
|
+
finally {
|
|
177
|
+
this.loads.delete(id);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
if (method === 'session/new')
|
|
181
|
+
return this.loadSession(method, params, budget);
|
|
182
|
+
if (method === 'dsh/sessionModels' || method === 'dsh/selectModel') {
|
|
183
|
+
const models = id ? this.models.get(id) : undefined;
|
|
184
|
+
if (!models)
|
|
185
|
+
throw new OpencodeAcpError('ACP_SESSION_NOT_LOADED', 'Load the OpenCode session before selecting its model.');
|
|
186
|
+
if (method === 'dsh/sessionModels')
|
|
187
|
+
return models.catalog();
|
|
188
|
+
if (this.busy.has(id))
|
|
189
|
+
throw new OpencodeAcpError('PROMPT_IN_PROGRESS', 'Stop the OpenCode reply before changing its model.');
|
|
190
|
+
this.busy.add(id);
|
|
191
|
+
try {
|
|
192
|
+
const result = await models.select(id, p.model, p.reasoningEffort, (method, params) => this.request(method, params, budget));
|
|
193
|
+
this.publish({ kind: 'notification', method: 'session/update', params: { sessionId: id,
|
|
194
|
+
update: { sessionUpdate: 'model_selection', selected: result.selected } } });
|
|
195
|
+
return result;
|
|
196
|
+
}
|
|
197
|
+
finally {
|
|
198
|
+
this.busy.delete(id);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
if (method === 'session/prompt' && id) {
|
|
202
|
+
if (this.busy.has(id))
|
|
203
|
+
throw new OpencodeAcpError('PROMPT_IN_PROGRESS', 'The OpenCode session is busy.');
|
|
204
|
+
this.busy.add(id);
|
|
205
|
+
try {
|
|
206
|
+
return await this.request(method, params, budget);
|
|
207
|
+
}
|
|
208
|
+
finally {
|
|
209
|
+
this.busy.delete(id);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
const result = await this.request(method, params, budget);
|
|
213
|
+
const nativeApi = this.nativeApi;
|
|
214
|
+
if (method === 'session/list' && nativeApi && isRecord(result) && Array.isArray(result.sessions)) {
|
|
215
|
+
// ACP list may return archived native records, including after a restart.
|
|
216
|
+
// Recheck every item against OpenCode; process-local caches are insufficient.
|
|
217
|
+
if (result.sessions.length > 1000)
|
|
218
|
+
throw new OpencodeAcpError('INVALID_MESSAGE', 'The OpenCode catalog page is too large.');
|
|
219
|
+
const items = result.sessions;
|
|
220
|
+
const archivedItems = new Map();
|
|
221
|
+
let next = 0;
|
|
222
|
+
await Promise.all(Array.from({ length: Math.min(4, items.length) }, async () => {
|
|
223
|
+
for (;;) {
|
|
224
|
+
const index = next++;
|
|
225
|
+
if (index >= items.length)
|
|
226
|
+
return;
|
|
227
|
+
const item = items[index];
|
|
228
|
+
if (!isRecord(item) || typeof item.sessionId !== 'string' || typeof item.cwd !== 'string')
|
|
229
|
+
continue;
|
|
230
|
+
const cwd = await realpath(item.cwd).catch(() => undefined);
|
|
231
|
+
if (!cwd)
|
|
232
|
+
continue;
|
|
233
|
+
const archived = await nativeApi.isArchived(item.sessionId, cwd);
|
|
234
|
+
if (archived)
|
|
235
|
+
this.archivedSessions.add(item.sessionId);
|
|
236
|
+
else
|
|
237
|
+
this.archivedSessions.delete(item.sessionId);
|
|
238
|
+
archivedItems.set(index, archived);
|
|
239
|
+
}
|
|
240
|
+
}));
|
|
241
|
+
// The gateway retains authority for archived history, but excludes these
|
|
242
|
+
// entries from its public/default catalog.
|
|
243
|
+
const sessions = items.flatMap((item, index) => archivedItems.has(index)
|
|
244
|
+
? [{ ...item, archived: archivedItems.get(index) }] : []);
|
|
245
|
+
return { ...result, sessions };
|
|
246
|
+
}
|
|
247
|
+
return result;
|
|
248
|
+
}
|
|
249
|
+
async loadSession(method, params, budget, sessionId) {
|
|
250
|
+
const result = await this.request(method, params, budget);
|
|
251
|
+
const returnedId = isRecord(result) && typeof result.sessionId === 'string' ? result.sessionId : undefined;
|
|
252
|
+
const id = sessionId ?? returnedId;
|
|
253
|
+
if (!this.ready || !id || (sessionId && returnedId && returnedId !== sessionId)) {
|
|
254
|
+
throw new OpencodeAcpError('ACP_INVALID_SESSION', 'OpenCode returned an invalid session.');
|
|
255
|
+
}
|
|
256
|
+
const models = new AcpSessionModelState('opencode');
|
|
257
|
+
models.update(result);
|
|
258
|
+
this.models.set(id, models);
|
|
259
|
+
return result;
|
|
260
|
+
}
|
|
261
|
+
publish(message) {
|
|
262
|
+
for (const handler of this.inboundHandlers)
|
|
263
|
+
handler(message);
|
|
62
264
|
}
|
|
63
265
|
async respond(id, result) {
|
|
64
266
|
this.write({ jsonrpc: '2.0', id, result });
|
|
@@ -79,43 +281,72 @@ export class OpencodeAcpClient {
|
|
|
79
281
|
return;
|
|
80
282
|
this.closed = true;
|
|
81
283
|
this.ready = false;
|
|
284
|
+
this.models.clear();
|
|
285
|
+
this.nativeApi?.close();
|
|
82
286
|
this.failPending(new OpencodeAcpError('OPENCODE_CLOSED', 'OpenCode ACP was closed.'));
|
|
287
|
+
const history = this.historyStop?.();
|
|
83
288
|
const child = this.process;
|
|
84
289
|
this.process = undefined;
|
|
85
|
-
if (child === undefined || child.exitCode !== null || child.killed)
|
|
290
|
+
if (child === undefined || child.exitCode !== null || child.killed) {
|
|
291
|
+
await history;
|
|
86
292
|
return;
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
293
|
+
}
|
|
294
|
+
await Promise.all([history, new Promise(resolve => {
|
|
295
|
+
const timer = setTimeout(() => {
|
|
296
|
+
child.kill('SIGKILL');
|
|
297
|
+
resolve();
|
|
298
|
+
}, 2_000);
|
|
299
|
+
timer.unref?.();
|
|
300
|
+
child.once('exit', () => {
|
|
301
|
+
clearTimeout(timer);
|
|
302
|
+
resolve();
|
|
303
|
+
});
|
|
304
|
+
child.kill('SIGTERM');
|
|
305
|
+
})]);
|
|
99
306
|
}
|
|
100
307
|
async startOnce() {
|
|
101
308
|
if (this.process !== undefined) {
|
|
102
309
|
throw new OpencodeAcpError('OPENCODE_STARTING', 'OpenCode ACP is already starting.');
|
|
103
310
|
}
|
|
104
|
-
|
|
311
|
+
let child;
|
|
312
|
+
if (this.spawnAcp)
|
|
313
|
+
child = this.spawnAcp(this.binary);
|
|
314
|
+
else {
|
|
315
|
+
const port = await opencodeLoopbackPort();
|
|
316
|
+
if (this.closed)
|
|
317
|
+
throw new OpencodeAcpError('OPENCODE_CLOSED', 'OpenCode ACP was closed.');
|
|
318
|
+
this.nativeApi = new OpencodeNativeApi(`http://127.0.0.1:${port}`);
|
|
319
|
+
child = spawn(this.binary, opencodePrivateArgs(this.options.args ?? ['acp'], port), {
|
|
320
|
+
cwd: this.options.cwd, stdio: ['pipe', 'pipe', 'pipe'], windowsHide: true,
|
|
321
|
+
env: { ...process.env, OPENCODE_SERVER_USERNAME: 'opencode', OPENCODE_SERVER_PASSWORD: this.nativeApi.password },
|
|
322
|
+
});
|
|
323
|
+
}
|
|
105
324
|
this.process = child;
|
|
106
325
|
this.failureNotified = false;
|
|
107
326
|
this.stdoutBuffer = Buffer.alloc(0);
|
|
108
327
|
this.stderrBytes = 0;
|
|
109
|
-
child.stdout.on('data', chunk =>
|
|
328
|
+
child.stdout.on('data', chunk => {
|
|
329
|
+
if (this.process === child)
|
|
330
|
+
this.consumeStdout(Buffer.from(chunk));
|
|
331
|
+
});
|
|
110
332
|
child.stderr.on('data', chunk => {
|
|
333
|
+
if (this.process !== child)
|
|
334
|
+
return;
|
|
111
335
|
this.stderrBytes = Math.min(MAX_STDERR_CAPTURE_BYTES, this.stderrBytes + Buffer.byteLength(chunk));
|
|
112
336
|
});
|
|
113
|
-
child.on('error', error =>
|
|
337
|
+
child.on('error', error => {
|
|
338
|
+
if (this.process === child)
|
|
339
|
+
this.handleProcessFailure('OPENCODE_BINARY_UNAVAILABLE', error);
|
|
340
|
+
});
|
|
114
341
|
child.on('exit', (code, signal) => {
|
|
115
342
|
if (this.process !== child)
|
|
116
343
|
return;
|
|
117
344
|
this.process = undefined;
|
|
118
345
|
this.ready = false;
|
|
346
|
+
this.nativeApi?.close();
|
|
347
|
+
this.nativeApi = undefined;
|
|
348
|
+
this.models.clear();
|
|
349
|
+
void this.historyStop?.().catch(() => undefined);
|
|
119
350
|
this.failPending(new OpencodeAcpError('OPENCODE_ACP_EXITED', 'OpenCode ACP exited unexpectedly.'));
|
|
120
351
|
if (!this.closed) {
|
|
121
352
|
this.logger?.warn('OpenCode ACP exited', {
|
|
@@ -138,6 +369,8 @@ export class OpencodeAcpClient {
|
|
|
138
369
|
version: PLUGIN_VERSION,
|
|
139
370
|
},
|
|
140
371
|
}, ACP_START_TIMEOUT_MS);
|
|
372
|
+
if (this.closed || this.process !== child)
|
|
373
|
+
throw new OpencodeAcpError('OPENCODE_CLOSED', 'OpenCode ACP was closed.');
|
|
141
374
|
this.ready = true;
|
|
142
375
|
this.logger?.info('OpenCode ACP ready');
|
|
143
376
|
}
|
|
@@ -222,11 +455,24 @@ export class OpencodeAcpClient {
|
|
|
222
455
|
&& (typeof value.id === 'string' || typeof value.id === 'number')
|
|
223
456
|
? { kind: 'request', id: value.id, method: value.method, params }
|
|
224
457
|
: { kind: 'notification', method: value.method, params };
|
|
225
|
-
|
|
226
|
-
|
|
458
|
+
if (inbound.kind === 'request' && isRecord(params) && typeof params.sessionId === 'string' && this.loads.has(params.sessionId)) {
|
|
459
|
+
void this.respondError(inbound.id, -32600, 'OpenCode session is not loaded.').catch(() => undefined);
|
|
460
|
+
return;
|
|
461
|
+
}
|
|
462
|
+
if (inbound.kind === 'notification' && inbound.method === 'session/update' && isRecord(params) && typeof params.sessionId === 'string') {
|
|
463
|
+
this.models.get(params.sessionId)?.update(params.update);
|
|
464
|
+
// session/load replays belong to the separate history reader, not live UI.
|
|
465
|
+
if (this.loads.has(params.sessionId) && !this.options.historyReader)
|
|
466
|
+
return;
|
|
467
|
+
}
|
|
468
|
+
this.publish(inbound);
|
|
227
469
|
}
|
|
228
470
|
handleProcessFailure(code, cause) {
|
|
471
|
+
void this.historyStop?.().catch(() => undefined);
|
|
472
|
+
this.nativeApi?.close();
|
|
473
|
+
this.nativeApi = undefined;
|
|
229
474
|
this.ready = false;
|
|
475
|
+
this.models.clear();
|
|
230
476
|
this.failPending(new OpencodeAcpError(code, 'OpenCode ACP communication failed.', { cause }));
|
|
231
477
|
const child = this.process;
|
|
232
478
|
this.process = undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode-process.js","sourceRoot":"","sources":["../../../src/acp/adapters/opencode-process.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"opencode-process.js","sourceRoot":"","sources":["../../../src/acp/adapters/opencode-process.ts"],"names":[],"mappings":"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"}
|