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.
Files changed (126) hide show
  1. package/dist/acp/adapters/claude-process.js +1 -1
  2. package/dist/acp/adapters/claude-process.js.map +1 -1
  3. package/dist/acp/adapters/cursor-process.d.ts +3 -0
  4. package/dist/acp/adapters/cursor-process.d.ts.map +1 -1
  5. package/dist/acp/adapters/cursor-process.js +55 -1
  6. package/dist/acp/adapters/cursor-process.js.map +1 -1
  7. package/dist/acp/adapters/isolated-process.d.ts +45 -0
  8. package/dist/acp/adapters/isolated-process.d.ts.map +1 -0
  9. package/dist/acp/adapters/isolated-process.js +308 -0
  10. package/dist/acp/adapters/isolated-process.js.map +1 -0
  11. package/dist/acp/adapters/opencode-native-api.d.ts +16 -0
  12. package/dist/acp/adapters/opencode-native-api.d.ts.map +1 -0
  13. package/dist/acp/adapters/opencode-native-api.js +103 -0
  14. package/dist/acp/adapters/opencode-native-api.js.map +1 -0
  15. package/dist/acp/adapters/opencode-process.d.ts +22 -2
  16. package/dist/acp/adapters/opencode-process.d.ts.map +1 -1
  17. package/dist/acp/adapters/opencode-process.js +273 -27
  18. package/dist/acp/adapters/opencode-process.js.map +1 -1
  19. package/dist/acp/adapters/pi-process.d.ts +3 -40
  20. package/dist/acp/adapters/pi-process.d.ts.map +1 -1
  21. package/dist/acp/adapters/pi-process.js +3 -408
  22. package/dist/acp/adapters/pi-process.js.map +1 -1
  23. package/dist/acp/adapters/session-models.d.ts +33 -0
  24. package/dist/acp/adapters/session-models.d.ts.map +1 -0
  25. package/dist/acp/adapters/session-models.js +78 -0
  26. package/dist/acp/adapters/session-models.js.map +1 -0
  27. package/dist/acp/gateway.d.ts +4 -1
  28. package/dist/acp/gateway.d.ts.map +1 -1
  29. package/dist/acp/gateway.js +182 -28
  30. package/dist/acp/gateway.js.map +1 -1
  31. package/dist/acp/history-events.d.ts +8 -0
  32. package/dist/acp/history-events.d.ts.map +1 -0
  33. package/dist/acp/history-events.js +119 -0
  34. package/dist/acp/history-events.js.map +1 -0
  35. package/dist/acp/method-policy.d.ts +26 -16
  36. package/dist/acp/method-policy.d.ts.map +1 -1
  37. package/dist/acp/method-policy.js +6 -5
  38. package/dist/acp/method-policy.js.map +1 -1
  39. package/dist/acp/peer-bridge.d.ts +3 -2
  40. package/dist/acp/peer-bridge.d.ts.map +1 -1
  41. package/dist/acp/peer-bridge.js +6 -1
  42. package/dist/acp/peer-bridge.js.map +1 -1
  43. package/dist/acp/virtual-catalog.d.ts +5 -5
  44. package/dist/acp/virtual-catalog.d.ts.map +1 -1
  45. package/dist/acp/virtual-catalog.js +8 -21
  46. package/dist/acp/virtual-catalog.js.map +1 -1
  47. package/dist/acp/virtual-contract.d.ts +13 -6
  48. package/dist/acp/virtual-contract.d.ts.map +1 -1
  49. package/dist/acp/virtual-contract.js +3 -3
  50. package/dist/acp/virtual-contract.js.map +1 -1
  51. package/dist/acp/virtual-event-carrier.d.ts +1 -0
  52. package/dist/acp/virtual-event-carrier.d.ts.map +1 -1
  53. package/dist/acp/virtual-event-carrier.js +1 -1
  54. package/dist/acp/virtual-event-carrier.js.map +1 -1
  55. package/dist/acp/virtual-harness.d.ts +8 -3
  56. package/dist/acp/virtual-harness.d.ts.map +1 -1
  57. package/dist/acp/virtual-harness.js +128 -60
  58. package/dist/acp/virtual-harness.js.map +1 -1
  59. package/dist/acp/virtual-live.d.ts +3 -2
  60. package/dist/acp/virtual-live.d.ts.map +1 -1
  61. package/dist/acp/virtual-live.js +5 -4
  62. package/dist/acp/virtual-live.js.map +1 -1
  63. package/dist/acp/workspace-tools.js +1 -1
  64. package/dist/acp/workspace-tools.js.map +1 -1
  65. package/dist/client/navigation.js +1 -1
  66. package/dist/client/navigation.js.map +1 -1
  67. package/dist/client/settings.js +1 -1
  68. package/dist/client/settings.js.map +1 -1
  69. package/dist/client/shell.d.ts.map +1 -1
  70. package/dist/client/shell.js +3 -2
  71. package/dist/client/shell.js.map +1 -1
  72. package/dist/client/types.d.ts +3 -2
  73. package/dist/client/types.d.ts.map +1 -1
  74. package/dist/client/workspaces.d.ts.map +1 -1
  75. package/dist/client/workspaces.js +130 -48
  76. package/dist/client/workspaces.js.map +1 -1
  77. package/dist/client-capabilities.d.ts.map +1 -1
  78. package/dist/client-capabilities.js +3 -1
  79. package/dist/client-capabilities.js.map +1 -1
  80. package/dist/client-control.d.ts +3 -3
  81. package/dist/client-control.d.ts.map +1 -1
  82. package/dist/client-control.js +23 -3
  83. package/dist/client-control.js.map +1 -1
  84. package/dist/client-locale.d.ts +8 -4
  85. package/dist/client-locale.d.ts.map +1 -1
  86. package/dist/client-locale.js +16 -8
  87. package/dist/client-locale.js.map +1 -1
  88. package/dist/client-runtime-contract.d.ts +2 -1
  89. package/dist/client-runtime-contract.d.ts.map +1 -1
  90. package/dist/client-runtime-contract.js.map +1 -1
  91. package/dist/client-runtime.d.ts +3 -3
  92. package/dist/client-runtime.d.ts.map +1 -1
  93. package/dist/client-runtime.js.map +1 -1
  94. package/dist/client.github.js +115 -57
  95. package/dist/client.js +115 -57
  96. package/dist/client.js.map +1 -1
  97. package/dist/codex/app-server.d.ts +10 -0
  98. package/dist/codex/app-server.d.ts.map +1 -1
  99. package/dist/codex/app-server.js +24 -10
  100. package/dist/codex/app-server.js.map +1 -1
  101. package/dist/codex/domain.d.ts +3 -0
  102. package/dist/codex/domain.d.ts.map +1 -1
  103. package/dist/codex/domain.js +93 -17
  104. package/dist/codex/domain.js.map +1 -1
  105. package/dist/codex/method-policy.d.ts +2 -2
  106. package/dist/codex/peer-bridge.d.ts.map +1 -1
  107. package/dist/codex/peer-bridge.js +7 -5
  108. package/dist/codex/peer-bridge.js.map +1 -1
  109. package/dist/codex/virtual-harness.d.ts.map +1 -1
  110. package/dist/codex/virtual-harness.js +16 -3
  111. package/dist/codex/virtual-harness.js.map +1 -1
  112. package/dist/index.d.ts.map +1 -1
  113. package/dist/index.js +2669 -1872
  114. package/dist/index.js.map +4 -4
  115. package/dist/remote-typert-gateway.js +42 -1
  116. package/dist/remote-typert-gateway.js.map +1 -1
  117. package/dist/service.d.ts.map +1 -1
  118. package/dist/service.js +11 -1
  119. package/dist/service.js.map +1 -1
  120. package/dist/version.d.ts +1 -1
  121. package/dist/version.js +1 -1
  122. package/dist/workspace-bridge.d.ts.map +1 -1
  123. package/dist/workspace-bridge.js +26 -4
  124. package/dist/workspace-bridge.js.map +1 -1
  125. package/dsh-plugin.json +1 -1
  126. 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
- constructor(binary?: string, logger?: SafeLogger | undefined, spawnAcp?: SpawnOpencodeAcp, options?: {
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":"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"}
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
- constructor(binary = 'opencode', logger, spawnAcp = binary => spawn(binary, options.args ?? ['acp'], {
38
- cwd: options.cwd,
39
- stdio: ['pipe', 'pipe', 'pipe'],
40
- windowsHide: true,
41
- env: process.env,
42
- }), options = {}) {
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 budget = timeoutMs
60
- ?? (method === 'session/prompt' ? ACP_PROMPT_TIMEOUT_MS : ACP_REQUEST_TIMEOUT_MS);
61
- return this.request(method, params, budget);
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
- await new Promise(resolve => {
88
- const timer = setTimeout(() => {
89
- child.kill('SIGKILL');
90
- resolve();
91
- }, 2_000);
92
- timer.unref?.();
93
- child.once('exit', () => {
94
- clearTimeout(timer);
95
- resolve();
96
- });
97
- child.kill('SIGTERM');
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
- const child = this.spawnAcp(this.binary);
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 => this.consumeStdout(Buffer.from(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 => this.handleProcessFailure('OPENCODE_BINARY_UNAVAILABLE', 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
- for (const handler of this.inboundHandlers)
226
- handler(inbound);
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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"}