@blue-soda/dsh-remote 0.5.5 → 0.5.7

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 (232) hide show
  1. package/README.md +2 -2
  2. package/cordis.patch.yml +30 -30
  3. package/dist/client.github.js +1 -1
  4. package/dist/client.js +1 -1
  5. package/dist/index.js +371 -80
  6. package/dist/index.js.map +4 -4
  7. package/dsh-plugin.json +41 -41
  8. package/package.json +165 -165
  9. package/dist/acp.d.ts +0 -75
  10. package/dist/acp.d.ts.map +0 -1
  11. package/dist/acp.js +0 -61
  12. package/dist/acp.js.map +0 -1
  13. package/dist/api-proxy-switch.d.ts +0 -33
  14. package/dist/api-proxy-switch.d.ts.map +0 -1
  15. package/dist/api-proxy-switch.js +0 -109
  16. package/dist/api-proxy-switch.js.map +0 -1
  17. package/dist/atomic-file.d.ts +0 -16
  18. package/dist/atomic-file.d.ts.map +0 -1
  19. package/dist/atomic-file.js +0 -81
  20. package/dist/atomic-file.js.map +0 -1
  21. package/dist/bin/doctor.d.ts +0 -3
  22. package/dist/bin/doctor.d.ts.map +0 -1
  23. package/dist/bin/doctor.js +0 -13
  24. package/dist/bin/doctor.js.map +0 -1
  25. package/dist/cli.d.ts +0 -32
  26. package/dist/cli.d.ts.map +0 -1
  27. package/dist/cli.js +0 -289
  28. package/dist/cli.js.map +0 -1
  29. package/dist/client-runtime.d.ts +0 -375
  30. package/dist/client-runtime.d.ts.map +0 -1
  31. package/dist/client-runtime.js +0 -1768
  32. package/dist/client-runtime.js.map +0 -1
  33. package/dist/client-secure-transport.d.ts +0 -23
  34. package/dist/client-secure-transport.d.ts.map +0 -1
  35. package/dist/client-secure-transport.js +0 -144
  36. package/dist/client-secure-transport.js.map +0 -1
  37. package/dist/client-target-store.d.ts +0 -40
  38. package/dist/client-target-store.d.ts.map +0 -1
  39. package/dist/client-target-store.js +0 -79
  40. package/dist/client-target-store.js.map +0 -1
  41. package/dist/client.d.ts +0 -13
  42. package/dist/client.d.ts.map +0 -1
  43. package/dist/codex/app-server.d.ts +0 -71
  44. package/dist/codex/app-server.d.ts.map +0 -1
  45. package/dist/codex/app-server.js +0 -268
  46. package/dist/codex/app-server.js.map +0 -1
  47. package/dist/codex/codex-image-codec.d.ts +0 -7
  48. package/dist/codex/codex-image-codec.d.ts.map +0 -1
  49. package/dist/codex/codex-image-codec.js +0 -288
  50. package/dist/codex/codex-image-codec.js.map +0 -1
  51. package/dist/codex/domain.d.ts +0 -102
  52. package/dist/codex/domain.d.ts.map +0 -1
  53. package/dist/codex/domain.js +0 -1323
  54. package/dist/codex/domain.js.map +0 -1
  55. package/dist/codex/method-policy.d.ts +0 -338
  56. package/dist/codex/method-policy.d.ts.map +0 -1
  57. package/dist/codex/method-policy.js +0 -141
  58. package/dist/codex/method-policy.js.map +0 -1
  59. package/dist/codex/peer-bridge.d.ts +0 -57
  60. package/dist/codex/peer-bridge.d.ts.map +0 -1
  61. package/dist/codex/peer-bridge.js +0 -299
  62. package/dist/codex/peer-bridge.js.map +0 -1
  63. package/dist/codex/permissions.d.ts +0 -4
  64. package/dist/codex/permissions.d.ts.map +0 -1
  65. package/dist/codex/permissions.js +0 -21
  66. package/dist/codex/permissions.js.map +0 -1
  67. package/dist/codex/session-id.d.ts +0 -10
  68. package/dist/codex/session-id.d.ts.map +0 -1
  69. package/dist/codex/session-id.js +0 -15
  70. package/dist/codex/session-id.js.map +0 -1
  71. package/dist/codex/virtual-harness.d.ts +0 -209
  72. package/dist/codex/virtual-harness.d.ts.map +0 -1
  73. package/dist/codex/virtual-harness.js +0 -2650
  74. package/dist/codex/virtual-harness.js.map +0 -1
  75. package/dist/codex-workspace-bridge.d.ts +0 -108
  76. package/dist/codex-workspace-bridge.d.ts.map +0 -1
  77. package/dist/codex-workspace-bridge.js +0 -502
  78. package/dist/codex-workspace-bridge.js.map +0 -1
  79. package/dist/config.d.ts +0 -99
  80. package/dist/config.d.ts.map +0 -1
  81. package/dist/config.js +0 -127
  82. package/dist/config.js.map +0 -1
  83. package/dist/connection-controller.d.ts +0 -44
  84. package/dist/connection-controller.d.ts.map +0 -1
  85. package/dist/connection-controller.js +0 -185
  86. package/dist/connection-controller.js.map +0 -1
  87. package/dist/control-route.d.ts +0 -34
  88. package/dist/control-route.d.ts.map +0 -1
  89. package/dist/control-route.js +0 -136
  90. package/dist/control-route.js.map +0 -1
  91. package/dist/control-runtime.d.ts +0 -138
  92. package/dist/control-runtime.d.ts.map +0 -1
  93. package/dist/control-runtime.js +0 -543
  94. package/dist/control-runtime.js.map +0 -1
  95. package/dist/control-stream.d.ts +0 -67
  96. package/dist/control-stream.d.ts.map +0 -1
  97. package/dist/control-stream.js +0 -179
  98. package/dist/control-stream.js.map +0 -1
  99. package/dist/defaults.d.ts +0 -9
  100. package/dist/defaults.d.ts.map +0 -1
  101. package/dist/defaults.js +0 -9
  102. package/dist/defaults.js.map +0 -1
  103. package/dist/file-viewer-bridge.d.ts +0 -30
  104. package/dist/file-viewer-bridge.d.ts.map +0 -1
  105. package/dist/file-viewer-bridge.js +0 -128
  106. package/dist/file-viewer-bridge.js.map +0 -1
  107. package/dist/file-viewer-contract.d.ts +0 -5
  108. package/dist/file-viewer-contract.d.ts.map +0 -1
  109. package/dist/file-viewer-contract.js +0 -4
  110. package/dist/file-viewer-contract.js.map +0 -1
  111. package/dist/harness-api-bridge.d.ts +0 -81
  112. package/dist/harness-api-bridge.d.ts.map +0 -1
  113. package/dist/harness-api-bridge.js +0 -862
  114. package/dist/harness-api-bridge.js.map +0 -1
  115. package/dist/harness-api-history.d.ts +0 -3
  116. package/dist/harness-api-history.d.ts.map +0 -1
  117. package/dist/harness-api-history.js +0 -59
  118. package/dist/harness-api-history.js.map +0 -1
  119. package/dist/harness-remote-bridge.d.ts +0 -60
  120. package/dist/harness-remote-bridge.d.ts.map +0 -1
  121. package/dist/harness-remote-bridge.js +0 -540
  122. package/dist/harness-remote-bridge.js.map +0 -1
  123. package/dist/harness-version.d.ts +0 -23
  124. package/dist/harness-version.d.ts.map +0 -1
  125. package/dist/harness-version.js +0 -95
  126. package/dist/harness-version.js.map +0 -1
  127. package/dist/identity-store.d.ts +0 -45
  128. package/dist/identity-store.d.ts.map +0 -1
  129. package/dist/identity-store.js +0 -186
  130. package/dist/identity-store.js.map +0 -1
  131. package/dist/ids.d.ts +0 -2
  132. package/dist/ids.d.ts.map +0 -1
  133. package/dist/ids.js +0 -17
  134. package/dist/ids.js.map +0 -1
  135. package/dist/index.d.ts +0 -78
  136. package/dist/index.d.ts.map +0 -1
  137. package/dist/logging.d.ts +0 -18
  138. package/dist/logging.d.ts.map +0 -1
  139. package/dist/logging.js +0 -30
  140. package/dist/logging.js.map +0 -1
  141. package/dist/loopback-host.d.ts +0 -20
  142. package/dist/loopback-host.d.ts.map +0 -1
  143. package/dist/loopback-host.js +0 -245
  144. package/dist/loopback-host.js.map +0 -1
  145. package/dist/loopback-preview.d.ts +0 -19
  146. package/dist/loopback-preview.d.ts.map +0 -1
  147. package/dist/loopback-preview.js +0 -232
  148. package/dist/loopback-preview.js.map +0 -1
  149. package/dist/native-rtc-helper.d.ts +0 -14
  150. package/dist/native-rtc-helper.d.ts.map +0 -1
  151. package/dist/native-rtc-helper.js +0 -575
  152. package/dist/native-rtc-helper.js.map +0 -1
  153. package/dist/remote-api-proxy.d.ts +0 -17
  154. package/dist/remote-api-proxy.d.ts.map +0 -1
  155. package/dist/remote-api-proxy.js +0 -451
  156. package/dist/remote-api-proxy.js.map +0 -1
  157. package/dist/remote-directory-browser.d.ts +0 -16
  158. package/dist/remote-directory-browser.d.ts.map +0 -1
  159. package/dist/remote-directory-browser.js +0 -48
  160. package/dist/remote-directory-browser.js.map +0 -1
  161. package/dist/remote-file-content-provider.d.ts +0 -48
  162. package/dist/remote-file-content-provider.d.ts.map +0 -1
  163. package/dist/remote-file-content-provider.js +0 -93
  164. package/dist/remote-file-content-provider.js.map +0 -1
  165. package/dist/remote-typert-gateway.d.ts +0 -20
  166. package/dist/remote-typert-gateway.d.ts.map +0 -1
  167. package/dist/remote-typert-gateway.js +0 -334
  168. package/dist/remote-typert-gateway.js.map +0 -1
  169. package/dist/rpc-binary-attachments.d.ts +0 -33
  170. package/dist/rpc-binary-attachments.d.ts.map +0 -1
  171. package/dist/rpc-binary-attachments.js +0 -142
  172. package/dist/rpc-binary-attachments.js.map +0 -1
  173. package/dist/rpc-router.d.ts +0 -31
  174. package/dist/rpc-router.d.ts.map +0 -1
  175. package/dist/rpc-router.js +0 -201
  176. package/dist/rpc-router.js.map +0 -1
  177. package/dist/safe-error.d.ts +0 -8
  178. package/dist/safe-error.d.ts.map +0 -1
  179. package/dist/safe-error.js +0 -20
  180. package/dist/safe-error.js.map +0 -1
  181. package/dist/server-api.d.ts +0 -109
  182. package/dist/server-api.d.ts.map +0 -1
  183. package/dist/server-api.js +0 -520
  184. package/dist/server-api.js.map +0 -1
  185. package/dist/server-connection.d.ts +0 -79
  186. package/dist/server-connection.d.ts.map +0 -1
  187. package/dist/server-connection.js +0 -1023
  188. package/dist/server-connection.js.map +0 -1
  189. package/dist/server-credentials.d.ts +0 -55
  190. package/dist/server-credentials.d.ts.map +0 -1
  191. package/dist/server-credentials.js +0 -108
  192. package/dist/server-credentials.js.map +0 -1
  193. package/dist/service.d.ts +0 -151
  194. package/dist/service.d.ts.map +0 -1
  195. package/dist/service.js +0 -448
  196. package/dist/service.js.map +0 -1
  197. package/dist/session-format-compat.d.ts +0 -3
  198. package/dist/session-format-compat.d.ts.map +0 -1
  199. package/dist/session-format-compat.js +0 -183
  200. package/dist/session-format-compat.js.map +0 -1
  201. package/dist/status-stream.d.ts +0 -48
  202. package/dist/status-stream.d.ts.map +0 -1
  203. package/dist/status-stream.js +0 -133
  204. package/dist/status-stream.js.map +0 -1
  205. package/dist/terminal-policy.d.ts +0 -21
  206. package/dist/terminal-policy.d.ts.map +0 -1
  207. package/dist/terminal-policy.js +0 -68
  208. package/dist/terminal-policy.js.map +0 -1
  209. package/dist/tui-command.d.ts +0 -13
  210. package/dist/tui-command.d.ts.map +0 -1
  211. package/dist/tui-command.js +0 -392
  212. package/dist/tui-command.js.map +0 -1
  213. package/dist/typert-gateway-contract.d.ts +0 -59
  214. package/dist/typert-gateway-contract.d.ts.map +0 -1
  215. package/dist/typert-gateway-contract.js +0 -2
  216. package/dist/typert-gateway-contract.js.map +0 -1
  217. package/dist/typert-gateway-switch.d.ts +0 -85
  218. package/dist/typert-gateway-switch.d.ts.map +0 -1
  219. package/dist/typert-gateway-switch.js +0 -448
  220. package/dist/typert-gateway-switch.js.map +0 -1
  221. package/dist/types.d.ts +0 -20
  222. package/dist/types.d.ts.map +0 -1
  223. package/dist/types.js +0 -2
  224. package/dist/types.js.map +0 -1
  225. package/dist/version.d.ts +0 -12
  226. package/dist/version.d.ts.map +0 -1
  227. package/dist/version.js +0 -12
  228. package/dist/version.js.map +0 -1
  229. package/dist/werift-rtc.d.ts +0 -121
  230. package/dist/werift-rtc.d.ts.map +0 -1
  231. package/dist/werift-rtc.js +0 -490
  232. package/dist/werift-rtc.js.map +0 -1
@@ -1,502 +0,0 @@
1
- import { spawn } from 'node:child_process';
2
- import { realpath, lstat, readdir, readFile, stat, watch } from 'node:fs/promises';
3
- import { isAbsolute, join, relative, resolve } from 'node:path';
4
- import { RpcError } from './safe-error.js';
5
- import { parseCodexSessionId } from './codex/session-id.js';
6
- const MAX_READ_BYTES = 4 * 1024 * 1024;
7
- const MAX_INPUT_BYTES = 64 * 1024;
8
- const MAX_COLS = 240;
9
- const MAX_ROWS = 100;
10
- const MAX_TERMINALS = 256;
11
- /** Replay journal bound for one terminal; the newest output always survives. */
12
- const MAX_SCREEN_BYTES = 256 * 1024;
13
- /** Advertised scrollback rows, matching the official terminal environment shape. */
14
- const TERMINAL_SCROLLBACK = 2000;
15
- const TERMINAL_TYPE = 'xterm-256color';
16
- export class CodexWorkspaceState {
17
- terminals = new Map();
18
- }
19
- /** One shell this carrier can start; the client only ever picks from `terminal/shells`. */
20
- const DEFAULT_SHELL = process.platform === 'win32'
21
- ? { path: 'cmd.exe', args: [], name: 'Command Prompt' }
22
- : { path: '/bin/sh', args: [], name: 'sh' };
23
- class AsyncQueue {
24
- values = [];
25
- waiters = [];
26
- ended = false;
27
- push(value) {
28
- if (this.ended)
29
- return;
30
- const waiter = this.waiters.shift();
31
- if (waiter)
32
- waiter({ done: false, value });
33
- else
34
- this.values.push(value);
35
- }
36
- end() {
37
- this.ended = true;
38
- while (this.waiters.length)
39
- this.waiters.shift()({ done: true, value: undefined });
40
- }
41
- next() {
42
- const value = this.values.shift();
43
- if (value !== undefined)
44
- return Promise.resolve({ done: false, value });
45
- if (this.ended)
46
- return Promise.resolve({ done: true, value: undefined });
47
- return new Promise(resolve => this.waiters.push(resolve));
48
- }
49
- [Symbol.asyncIterator]() { return this; }
50
- }
51
- /** Host-owned CodeX file and terminal carrier used by Harness Remote RPC. */
52
- export class CodexWorkspaceBridge {
53
- resolveCwd;
54
- terminalEnabled;
55
- terminals;
56
- ownedSubscribers = new Set();
57
- spawnTerminal;
58
- constructor(resolveCwd, terminalEnabled, state = new CodexWorkspaceState(), spawnTerminal = pipeTerminalSpawner()) {
59
- this.resolveCwd = resolveCwd;
60
- this.terminalEnabled = terminalEnabled;
61
- this.terminals = state.terminals;
62
- this.spawnTerminal = spawnTerminal;
63
- }
64
- isCodeXScope(value) {
65
- return parseCodexSessionId(value) !== undefined;
66
- }
67
- async call(endpoint, payload, signal) {
68
- const args = argsOf(payload);
69
- const scope = args.workspaceFileScopeId;
70
- const session = args.agentId ?? args.sessionId;
71
- const raw = scope ?? session;
72
- const codex = parseCodexSessionId(raw);
73
- if (codex === undefined) {
74
- if (typeof raw === 'string' && raw.startsWith('codex:'))
75
- throw new RpcError('CODEX_SESSION_INVALID', 'The CodeX session identifier is invalid.');
76
- return undefined;
77
- }
78
- if (endpoint.startsWith('workspaceFiles/'))
79
- return this.fileCall(endpoint, codex.sessionId, args, signal);
80
- if (endpoint.startsWith('terminal/'))
81
- return this.terminalCall(endpoint, codex.sessionId, args, signal);
82
- return undefined;
83
- }
84
- async open(endpoint, payload, signal) {
85
- const args = argsOf(payload);
86
- const raw = args.workspaceFileScopeId ?? args.agentId ?? args.sessionId;
87
- const codex = parseCodexSessionId(raw);
88
- if (codex === undefined) {
89
- if (typeof raw === 'string' && raw.startsWith('codex:'))
90
- throw new RpcError('CODEX_SESSION_INVALID', 'The CodeX session identifier is invalid.');
91
- return undefined;
92
- }
93
- if (endpoint === 'workspaceFiles/changes')
94
- return this.watchChanges(codex.sessionId, args, signal);
95
- if (endpoint === 'terminal/retain')
96
- return this.retain(codex.sessionId, args, signal);
97
- if (endpoint === 'terminal/follow')
98
- return this.follow(codex.sessionId, args, signal);
99
- return undefined;
100
- }
101
- async closeAll() {
102
- // A transport disconnect closes subscriptions but retains Host-owned terminal
103
- // processes so a reconnect can use terminal/retain, matching Harness policy.
104
- for (const queue of this.ownedSubscribers)
105
- queue.end();
106
- this.ownedSubscribers.clear();
107
- }
108
- async fileCall(endpoint, sessionId, args, signal) {
109
- const root = await this.rootFor(sessionId, signal);
110
- const path = typeof args.path === 'string' ? args.path : '.';
111
- const target = await this.safePath(root, path, endpoint === 'workspaceFiles/list');
112
- try {
113
- if (endpoint === 'workspaceFiles/list') {
114
- const entries = await readdir(target, { withFileTypes: true });
115
- const result = [];
116
- for (const entry of entries.slice(0, 500)) {
117
- const item = join(target, entry.name);
118
- const info = await lstat(item);
119
- if (info.isSymbolicLink())
120
- continue;
121
- result.push({ name: entry.name, type: info.isDirectory() ? 'directory' : info.isFile() ? 'file' : 'other', ...(info.isFile() ? { size: info.size } : {}) });
122
- }
123
- return { ok: true, value: { path, entries: result, truncated: entries.length > 500 } };
124
- }
125
- const info = await stat(target);
126
- const absolutePath = target;
127
- const version = `${info.mtimeMs}:${info.size}`;
128
- if (endpoint === 'workspaceFiles/stat') {
129
- return { ok: true, value: { absolutePath, version, bytes: info.size } };
130
- }
131
- if (!info.isFile())
132
- throw new RpcError('CODEX_WORKSPACE_INVALID_PATH', 'The requested workspace path is not a file.');
133
- const offset = readOffset(args);
134
- const limit = readLimit(args);
135
- const bytes = await readFile(target);
136
- if (bytes.byteLength > MAX_READ_BYTES)
137
- throw new RpcError('CODEX_WORKSPACE_TOO_LARGE', 'The requested workspace file is too large.');
138
- if (endpoint === 'workspaceFiles/readBytes') {
139
- const slice = bytes.subarray(offset, Math.min(offset + limit, bytes.length));
140
- return {
141
- ok: true,
142
- value: {
143
- absolutePath,
144
- version,
145
- bytes: bytes.length,
146
- offset,
147
- data: slice.toString('base64'),
148
- eof: offset + slice.length >= bytes.length,
149
- },
150
- };
151
- }
152
- const text = bytes.toString('utf8');
153
- const slice = text.slice(offset, offset + limit);
154
- return { ok: true, value: { absolutePath: target, version: `${info.mtimeMs}:${info.size}`, text: slice, offset, lines: slice.split('\n').length, eof: offset + slice.length >= text.length } };
155
- }
156
- catch (error) {
157
- if (error instanceof RpcError)
158
- throw error;
159
- throw new RpcError('CODEX_WORKSPACE_UNAVAILABLE', 'The CodeX workspace file is unavailable.');
160
- }
161
- }
162
- async watchChanges(sessionId, args, signal) {
163
- const root = await this.rootFor(sessionId, signal);
164
- const target = await this.safePath(root, typeof args.path === 'string' ? args.path : '.', true);
165
- const queue = new AsyncQueue();
166
- const watcher = watch(target, { recursive: false });
167
- const abort = () => { watcher.return?.(); queue.end(); };
168
- signal.addEventListener('abort', abort, { once: true });
169
- void (async () => {
170
- try {
171
- for await (const event of watcher)
172
- queue.push({ type: event.eventType, path: event.filename ?? '' });
173
- }
174
- catch { /* stream close is reported by the gateway */ }
175
- finally {
176
- signal.removeEventListener('abort', abort);
177
- queue.end();
178
- }
179
- })();
180
- return queue;
181
- }
182
- /**
183
- * `terminal/retain` only acknowledges the retention window: it never takes
184
- * input ownership and never replays output. Recovery reads the next snapshot.
185
- */
186
- async retain(sessionId, args, signal) {
187
- this.assertTerminalEnabled();
188
- await this.rootFor(sessionId, signal);
189
- this.requireTerminal(sessionId, String(args.id));
190
- const queue = new AsyncQueue();
191
- queue.push({ type: 'retained' });
192
- this.ownedSubscribers.add(queue);
193
- signal.addEventListener('abort', () => { this.ownedSubscribers.delete(queue); queue.end(); }, { once: true });
194
- return queue;
195
- }
196
- /** `terminal/follow` takes input ownership and starts with a screen snapshot. */
197
- async follow(sessionId, args, signal) {
198
- this.assertTerminalEnabled();
199
- await this.rootFor(sessionId, signal);
200
- const attachmentId = typeof args.attachmentId === 'string' && args.attachmentId.length > 0 ? args.attachmentId : undefined;
201
- if (attachmentId === undefined)
202
- throw new RpcError('INVALID_MESSAGE', 'The terminal attachment is invalid.');
203
- const terminal = this.requireTerminal(sessionId, String(args.id));
204
- const queue = new AsyncQueue();
205
- if (terminal.controllerId !== attachmentId) {
206
- terminal.controllerId = attachmentId;
207
- // Existing followers keep their output but lose input to the new attachment.
208
- this.emit(terminal, { type: 'state', info: terminalInfo(terminal) });
209
- }
210
- queue.push({ type: 'snapshot', sequence: terminal.sequence, screen: screenOf(terminal), info: terminalInfo(terminal) });
211
- terminal.subscribers.add(queue);
212
- this.ownedSubscribers.add(queue);
213
- signal.addEventListener('abort', () => {
214
- terminal.subscribers.delete(queue);
215
- this.ownedSubscribers.delete(queue);
216
- queue.end();
217
- if (terminal.controllerId === attachmentId) {
218
- terminal.controllerId = undefined;
219
- this.emit(terminal, { type: 'state', info: terminalInfo(terminal) });
220
- }
221
- }, { once: true });
222
- return queue;
223
- }
224
- async terminalCall(endpoint, sessionId, args, signal) {
225
- this.assertTerminalEnabled();
226
- const cwd = await this.rootFor(sessionId, signal);
227
- if (endpoint === 'terminal/environment') {
228
- return { ok: true, value: { cwd, maxInputBytes: MAX_INPUT_BYTES, maxCols: MAX_COLS, maxRows: MAX_ROWS, scrollback: TERMINAL_SCROLLBACK } };
229
- }
230
- if (endpoint === 'terminal/shells')
231
- return { ok: true, value: [shellInfo(DEFAULT_SHELL)] };
232
- if (endpoint === 'terminal/list')
233
- return { ok: true, value: [...this.terminals.values()].filter(item => item.sessionId === sessionId).map(terminalInfo) };
234
- if (endpoint === 'terminal/create')
235
- return this.createTerminal(sessionId, cwd, args);
236
- const id = stringId(args.id);
237
- const terminal = this.requireTerminal(sessionId, id);
238
- if (endpoint === 'terminal/write') {
239
- const data = typeof args.data === 'string' ? args.data : '';
240
- if (Buffer.byteLength(data) > MAX_INPUT_BYTES)
241
- throw new RpcError('INVALID_MESSAGE', 'Terminal input is too large.');
242
- if (terminal.process === undefined)
243
- throw new RpcError('CODEX_TERMINAL_NOT_FOUND', 'The CodeX terminal is no longer available.');
244
- await terminal.process.write(data);
245
- return { ok: true };
246
- }
247
- if (endpoint === 'terminal/resize') {
248
- terminal.cols = bounded(args.cols, terminal.cols, MAX_COLS);
249
- terminal.rows = bounded(args.rows, terminal.rows, MAX_ROWS);
250
- await terminal.process?.resize(terminal.cols, terminal.rows);
251
- return { ok: true };
252
- }
253
- if (endpoint === 'terminal/rename') {
254
- if (typeof args.title === 'string' && args.title.length > 0)
255
- terminal.title = args.title.slice(0, 128);
256
- return { ok: true };
257
- }
258
- if (endpoint === 'terminal/close') {
259
- this.disposeTerminal(terminal);
260
- this.terminals.delete(`${sessionId}/${id}`);
261
- return { ok: true };
262
- }
263
- throw new RpcError('METHOD_NOT_FOUND', 'The requested terminal method does not exist.');
264
- }
265
- async createTerminal(sessionId, cwd, args) {
266
- const request = isRecord(args.request) ? args.request : {};
267
- const id = stringId(request.id);
268
- if ([...this.terminals.values()].some(item => item.sessionId === sessionId && item.id === id))
269
- throw new RpcError('REQUEST_CONFLICT', 'The terminal id is already active.');
270
- if (this.terminals.size >= MAX_TERMINALS)
271
- throw new RpcError('RATE_LIMITED', 'Too many remote terminals are active.', undefined, true);
272
- if (request.shellPath !== undefined && request.shellPath !== DEFAULT_SHELL.path)
273
- throw new RpcError('INVALID_MESSAGE', 'The requested shell is not available for this workspace.');
274
- const cols = bounded(request.cols, 80, MAX_COLS);
275
- const rows = bounded(request.rows, 24, MAX_ROWS);
276
- const terminal = {
277
- sessionId, id, title: DEFAULT_SHELL.name, shell: DEFAULT_SHELL, cwd, cols, rows,
278
- sequence: 0, screen: [], screenBytes: 0, truncated: false, subscribers: new Set(),
279
- state: 'running', exitCode: null,
280
- };
281
- this.terminals.set(`${sessionId}/${id}`, terminal);
282
- try {
283
- terminal.process = await this.spawnTerminal({
284
- argv: [DEFAULT_SHELL.path, ...DEFAULT_SHELL.args],
285
- cwd,
286
- cols,
287
- rows,
288
- terminalType: TERMINAL_TYPE,
289
- env: { DSH_SESSION_ID: sessionId },
290
- });
291
- }
292
- catch {
293
- this.terminals.delete(`${sessionId}/${id}`);
294
- throw new RpcError('CODEX_TERMINAL_UNAVAILABLE', 'The CodeX terminal could not be started.');
295
- }
296
- void this.pump(terminal, terminal.process);
297
- return { ok: true, value: terminalInfo(terminal) };
298
- }
299
- /** Streams process output as ordered `output` frames, then reports the exit. */
300
- async pump(terminal, process) {
301
- try {
302
- for await (const chunk of process.output) {
303
- if (chunk.length === 0)
304
- continue;
305
- terminal.sequence += 1;
306
- this.appendScreen(terminal, chunk);
307
- this.emit(terminal, { type: 'output', sequence: terminal.sequence, data: chunk });
308
- }
309
- }
310
- catch {
311
- terminal.state = 'failed';
312
- terminal.error = 'The terminal output stream failed.';
313
- }
314
- const outcome = await process.completed;
315
- terminal.exitCode = outcome.exitCode;
316
- if (terminal.state === 'running')
317
- terminal.state = 'exited';
318
- this.emit(terminal, { type: 'state', info: terminalInfo(terminal) });
319
- this.endSubscribers(terminal);
320
- }
321
- appendScreen(terminal, chunk) {
322
- terminal.screen.push(chunk);
323
- terminal.screenBytes += Buffer.byteLength(chunk);
324
- while (terminal.screenBytes > MAX_SCREEN_BYTES && terminal.screen.length > 1) {
325
- terminal.screenBytes -= Buffer.byteLength(terminal.screen.shift());
326
- terminal.truncated = true;
327
- }
328
- }
329
- async rootFor(sessionId, signal) {
330
- const parsed = parseCodexSessionId(sessionId);
331
- if (!parsed)
332
- throw new RpcError('CODEX_SESSION_INVALID', 'The CodeX session identifier is invalid.');
333
- const cwd = await this.resolveCwd(parsed.threadId, signal);
334
- if (!cwd)
335
- throw new RpcError('CODEX_WORKSPACE_UNAVAILABLE', 'The CodeX thread has no available workspace.');
336
- try {
337
- const root = await realpath(cwd);
338
- const info = await stat(root);
339
- if (!info.isDirectory())
340
- throw new Error();
341
- return root;
342
- }
343
- catch {
344
- throw new RpcError('CODEX_WORKSPACE_UNAVAILABLE', 'The CodeX workspace is unavailable.');
345
- }
346
- }
347
- async safePath(root, path, directory) {
348
- // Native clients may pass the displayed absolute workspace path (not only
349
- // a relative child). Accept it only when lexical and canonical containment
350
- // still prove that it belongs to this authenticated workspace root.
351
- const candidate = isAbsolute(path) ? resolve(path) : resolve(root, path);
352
- const rel = relative(root, candidate);
353
- if (rel.startsWith('..') || isAbsolute(rel))
354
- throw new RpcError('CODEX_WORKSPACE_PATH_DENIED', 'The requested workspace path is outside the CodeX workspace.');
355
- try {
356
- const info = await lstat(candidate);
357
- if (info.isSymbolicLink())
358
- throw new Error();
359
- const canonical = await realpath(candidate);
360
- const canonicalRel = relative(root, canonical);
361
- if (canonicalRel.startsWith('..') || isAbsolute(canonicalRel))
362
- throw new Error();
363
- if (directory && !info.isDirectory())
364
- throw new Error();
365
- return canonical;
366
- }
367
- catch {
368
- throw new RpcError('CODEX_WORKSPACE_PATH_DENIED', 'The requested workspace path is unavailable.');
369
- }
370
- }
371
- emit(terminal, value) {
372
- for (const subscriber of terminal.subscribers)
373
- subscriber.push(value);
374
- }
375
- endSubscribers(terminal) {
376
- for (const subscriber of terminal.subscribers)
377
- subscriber.end();
378
- terminal.subscribers.clear();
379
- }
380
- requireTerminal(sessionId, id) {
381
- const terminal = this.terminals.get(`${sessionId}/${id}`);
382
- if (!terminal)
383
- throw new RpcError('CODEX_TERMINAL_NOT_FOUND', 'The CodeX terminal is no longer available.');
384
- return terminal;
385
- }
386
- assertTerminalEnabled() { if (!this.terminalEnabled())
387
- throw new RpcError('TERMINAL_DISABLED', 'Remote terminal is disabled on this Host.'); }
388
- disposeTerminal(terminal) {
389
- void Promise.resolve(terminal.process?.terminate()).catch(() => undefined);
390
- if (terminal.state === 'running') {
391
- // Followers see a terminal state before their stream ends, so a close from
392
- // another connection cannot leave a view stuck on "running".
393
- terminal.state = 'exited';
394
- this.emit(terminal, { type: 'state', info: terminalInfo(terminal) });
395
- }
396
- this.endSubscribers(terminal);
397
- }
398
- }
399
- /** Default terminal process: a plain child process, used when the Host exposes no PTY provider. */
400
- export function pipeTerminalSpawner() {
401
- return async (spec) => {
402
- const child = spawn(spec.argv[0], spec.argv.slice(1), {
403
- cwd: spec.cwd,
404
- stdio: 'pipe',
405
- windowsHide: true,
406
- env: { ...process.env, ...spec.env },
407
- });
408
- const queue = new AsyncQueue();
409
- child.stdout.on('data', data => queue.push(Buffer.from(data).toString('utf8')));
410
- child.stderr.on('data', data => queue.push(Buffer.from(data).toString('utf8')));
411
- child.on('error', () => queue.end());
412
- const completed = new Promise(resolve => {
413
- child.on('error', () => { queue.end(); resolve({ exitCode: null }); });
414
- child.on('exit', code => { queue.end(); resolve({ exitCode: code }); });
415
- });
416
- return {
417
- output: queue,
418
- write: data => { child.stdin.write(data); },
419
- resize: () => undefined,
420
- terminate: () => { if (!child.killed)
421
- child.kill(); },
422
- completed,
423
- };
424
- };
425
- }
426
- /**
427
- * Terminal process backed by the Host `subprocess` service, which owns PTY
428
- * allocation, containment, and process-range termination.
429
- */
430
- export function subprocessTerminalSpawner(subprocess) {
431
- return async (spec) => {
432
- const handle = await subprocess.spawnTerminal({
433
- argv: [...spec.argv],
434
- cwd: spec.cwd,
435
- cols: spec.cols,
436
- rows: spec.rows,
437
- terminalType: spec.terminalType,
438
- env: spec.env,
439
- });
440
- const queue = new AsyncQueue();
441
- handle.output.setEncoding?.('utf8');
442
- handle.output.on('data', chunk => queue.push(typeof chunk === 'string' ? chunk : Buffer.from(chunk).toString('utf8')));
443
- handle.output.once('close', () => queue.end());
444
- handle.output.once('error', () => queue.end());
445
- return {
446
- output: queue,
447
- write: data => handle.write(data),
448
- resize: (cols, rows) => handle.resize(cols, rows),
449
- terminate: () => handle.terminate(),
450
- completed: handle.done
451
- .then(outcome => ({ exitCode: typeof outcome?.exitCode === 'number' ? outcome.exitCode : null }))
452
- .catch(() => ({ exitCode: null })),
453
- };
454
- };
455
- }
456
- function shellInfo(shell) {
457
- return { path: shell.path, args: [...shell.args], name: shell.name };
458
- }
459
- /** Official WebTerminalInfo shape, including the attachment that owns input. */
460
- function terminalInfo(terminal) {
461
- return {
462
- id: terminal.id,
463
- title: terminal.title,
464
- shell: shellInfo(terminal.shell),
465
- cwd: terminal.cwd,
466
- cols: terminal.cols,
467
- rows: terminal.rows,
468
- state: terminal.state,
469
- exitCode: terminal.exitCode,
470
- ...(terminal.error === undefined ? {} : { error: terminal.error }),
471
- ...(terminal.controllerId === undefined ? {} : { controllerId: terminal.controllerId }),
472
- };
473
- }
474
- /**
475
- * The carrier has no terminal emulator: the bounded raw journal is replayed into
476
- * the client emulator, which re-executes the same control sequences. A truncated
477
- * journal starts with a reset so a half-captured sequence cannot leak in.
478
- */
479
- function screenOf(terminal) {
480
- return (terminal.truncated ? '\u001bc' : '') + terminal.screen.join('');
481
- }
482
- function argsOf(payload) { const value = isRecord(payload) ? payload : {}; return isRecord(value.args) ? value.args : value; }
483
- function isRecord(value) { return typeof value === 'object' && value !== null && !Array.isArray(value); }
484
- function stringId(value) { if (typeof value !== 'string' || !/^[A-Za-z0-9_.:-]{1,128}$/.test(value))
485
- throw new RpcError('INVALID_MESSAGE', 'The terminal identifier is invalid.'); return value; }
486
- function bounded(value, fallback, max) { return typeof value === 'number' && Number.isInteger(value) && value > 0 ? Math.min(value, max) : fallback; }
487
- function byteOrLineRange(args) {
488
- const options = isRecord(args.options) ? args.options : undefined;
489
- if (options !== undefined && isRecord(options.range))
490
- return options.range;
491
- return isRecord(args.range) ? args.range : args;
492
- }
493
- function readOffset(args) {
494
- const range = byteOrLineRange(args);
495
- return typeof range.offset === 'number' && Number.isInteger(range.offset) && range.offset >= 0 ? range.offset : 0;
496
- }
497
- function readLimit(args) {
498
- const range = byteOrLineRange(args);
499
- const value = typeof range.length === 'number' ? range.length : range.limit;
500
- return typeof value === 'number' && Number.isInteger(value) && value > 0 ? Math.min(value, MAX_READ_BYTES) : MAX_READ_BYTES;
501
- }
502
- //# sourceMappingURL=codex-workspace-bridge.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"codex-workspace-bridge.js","sourceRoot":"","sources":["../src/codex-workspace-bridge.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts DELETED
@@ -1,99 +0,0 @@
1
- import type { Volatile, VolatileSnapshot } from '@deepseek-ai/cordis';
2
- import s from '@deepseek-ai/schemastery';
3
- export { DEFAULT_REMOTE_SERVER_URL } from './defaults.js';
4
- export interface Config {
5
- enabled?: boolean;
6
- role?: 'host' | 'client' | 'both';
7
- serverUrl?: string;
8
- deviceName?: string;
9
- terminal?: {
10
- enabled?: boolean;
11
- };
12
- hostControl?: {
13
- enabled?: boolean;
14
- paused?: boolean;
15
- };
16
- loopback?: {
17
- ports?: number[];
18
- };
19
- forceRelay?: boolean;
20
- logLevel?: 'debug' | 'info' | 'warn' | 'error';
21
- reconnect?: boolean | {
22
- initialDelayMs?: number;
23
- maxDelayMs?: number;
24
- jitter?: number;
25
- };
26
- /** Optional Codex domain carried by the existing authenticated Remote Plugin. */
27
- codex?: {
28
- enabled?: boolean;
29
- binary?: string;
30
- };
31
- acp?: {
32
- enabled?: boolean;
33
- backends?: Array<{
34
- id: string;
35
- enabled?: boolean;
36
- command?: string;
37
- args?: string[];
38
- cwd?: string;
39
- }>;
40
- backend?: string;
41
- command?: string;
42
- args?: string[];
43
- cwd?: string;
44
- };
45
- }
46
- export interface ResolvedCodexConfig {
47
- enabled: boolean;
48
- binary: string;
49
- }
50
- export interface ResolvedConfig {
51
- enabled: boolean;
52
- role: 'host' | 'client' | 'both';
53
- serverUrl?: string;
54
- deviceName: string;
55
- forceRelay: boolean;
56
- logLevel: 'debug' | 'info' | 'warn' | 'error';
57
- reconnect: {
58
- enabled: boolean;
59
- initialDelayMs: number;
60
- maxDelayMs: number;
61
- jitter: number;
62
- };
63
- terminal: {
64
- enabled: boolean;
65
- };
66
- hostControl?: {
67
- enabled: boolean;
68
- paused: boolean;
69
- };
70
- loopback: {
71
- ports: number[];
72
- };
73
- codex: ResolvedCodexConfig;
74
- acp?: {
75
- enabled: boolean;
76
- backends: Array<{
77
- id: string;
78
- enabled: boolean;
79
- command: string;
80
- args: string[];
81
- cwd?: string;
82
- }>;
83
- };
84
- }
85
- /** The entry's volatile Cordis config: one stable reference for the whole section. */
86
- export type EntryConfig = Volatile<Config>;
87
- /** Config accepted by {@link resolveConfig}: the composition seed or a live snapshot. */
88
- export type ConfigInput = Config | VolatileSnapshot<Config>;
89
- /**
90
- * Mark the entry as live-editable when the host Schemastery supports the
91
- * 0.1.7 volatile schema mode. Older DSH releases ship an earlier Schemastery
92
- * where the method does not exist; their settings registry expects the plain
93
- * schema and must still be able to import the plugin without throwing.
94
- */
95
- export declare function withVolatileSchema<T>(schema: T): T;
96
- export declare const Config: s<Config>;
97
- export declare function resolveConfig(input?: ConfigInput, env?: NodeJS.ProcessEnv): ResolvedConfig;
98
- export declare function normalizeServerUrl(value: string): string;
99
- //# sourceMappingURL=config.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}