ds-harness-remote 0.5.7 → 0.5.8
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/antigravity/transcript-loader.d.ts.map +1 -1
- package/dist/acp/adapters/antigravity/transcript-loader.js +4 -1
- package/dist/acp/adapters/antigravity/transcript-loader.js.map +1 -1
- package/dist/acp/gateway.d.ts +2 -0
- package/dist/acp/gateway.d.ts.map +1 -1
- package/dist/acp/gateway.js +46 -37
- package/dist/acp/gateway.js.map +1 -1
- package/dist/acp/workspace-tools.js +1 -1
- package/dist/acp/workspace-tools.js.map +1 -1
- package/dist/client.github.js +1 -1
- package/dist/client.js +1 -1
- package/dist/client.js.map +1 -1
- package/dist/harness-remote-bridge.js +2 -2
- package/dist/harness-remote-bridge.js.map +1 -1
- package/dist/index.js +6205 -399
- package/dist/index.js.map +4 -4
- package/dist/remote-terminal-controller.d.ts +90 -0
- package/dist/remote-terminal-controller.d.ts.map +1 -0
- package/dist/remote-terminal-controller.js +494 -0
- package/dist/remote-terminal-controller.js.map +1 -0
- package/dist/remote-terminal-provider.d.ts +46 -0
- package/dist/remote-terminal-provider.d.ts.map +1 -0
- package/dist/remote-terminal-provider.js +147 -0
- package/dist/remote-terminal-provider.js.map +1 -0
- package/dist/server-api.d.ts +3 -0
- package/dist/server-api.d.ts.map +1 -1
- package/dist/server-api.js +24 -9
- package/dist/server-api.js.map +1 -1
- package/dist/server-connection.d.ts.map +1 -1
- package/dist/server-connection.js +2 -0
- package/dist/server-connection.js.map +1 -1
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +9 -3
- package/dist/service.js.map +1 -1
- package/dist/terminal-policy.d.ts +6 -0
- package/dist/terminal-policy.d.ts.map +1 -1
- package/dist/terminal-policy.js +24 -6
- package/dist/terminal-policy.js.map +1 -1
- package/dist/typert-gateway-switch.d.ts.map +1 -1
- package/dist/typert-gateway-switch.js +8 -3
- package/dist/typert-gateway-switch.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/workspace-bridge.d.ts +6 -89
- package/dist/workspace-bridge.d.ts.map +1 -1
- package/dist/workspace-bridge.js +37 -294
- package/dist/workspace-bridge.js.map +1 -1
- package/dsh-plugin.json +1 -1
- package/package.json +4 -2
|
@@ -1,76 +1,18 @@
|
|
|
1
1
|
import type { TypertRpcResult } from './typert-gateway-contract.js';
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
import { RemoteTerminalState } from './remote-terminal-controller.js';
|
|
3
|
+
import { type RemoteTerminalSpawner } from './remote-terminal-provider.js';
|
|
4
|
+
export * from './remote-terminal-provider.js';
|
|
5
|
+
export declare class WorkspaceBridgeState extends RemoteTerminalState {
|
|
4
6
|
}
|
|
5
7
|
export type WorkspaceCwdResolver = (nativeId: string, signal: AbortSignal) => Promise<string | undefined>;
|
|
6
|
-
interface ShellSpec {
|
|
7
|
-
path: string;
|
|
8
|
-
args: string[];
|
|
9
|
-
name: string;
|
|
10
|
-
}
|
|
11
|
-
/** Request for one Host-owned terminal process. */
|
|
12
|
-
export interface RemoteTerminalSpec {
|
|
13
|
-
argv: readonly string[];
|
|
14
|
-
cwd: string;
|
|
15
|
-
cols: number;
|
|
16
|
-
rows: number;
|
|
17
|
-
terminalType: string;
|
|
18
|
-
env: Record<string, string>;
|
|
19
|
-
}
|
|
20
|
-
/** Terminal process surface the bridge needs; PTY-backed when the Host provides one. */
|
|
21
|
-
export interface RemoteTerminalProcess {
|
|
22
|
-
output: AsyncIterable<string>;
|
|
23
|
-
write(data: string): void | Promise<void>;
|
|
24
|
-
resize(cols: number, rows: number): void | Promise<void>;
|
|
25
|
-
terminate(): void | Promise<void>;
|
|
26
|
-
completed: Promise<{
|
|
27
|
-
exitCode: number | null;
|
|
28
|
-
}>;
|
|
29
|
-
}
|
|
30
|
-
export type RemoteTerminalSpawner = (spec: RemoteTerminalSpec) => Promise<RemoteTerminalProcess>;
|
|
31
|
-
/** Structural view of the Host `subprocess` service this carrier can use. */
|
|
32
|
-
export interface HostSubprocessLike {
|
|
33
|
-
spawnTerminal(spec: Record<string, unknown>): Promise<unknown>;
|
|
34
|
-
}
|
|
35
|
-
interface TerminalContext {
|
|
36
|
-
sessionId: string;
|
|
37
|
-
id: string;
|
|
38
|
-
title: string;
|
|
39
|
-
shell: ShellSpec;
|
|
40
|
-
cwd: string;
|
|
41
|
-
cols: number;
|
|
42
|
-
rows: number;
|
|
43
|
-
process?: RemoteTerminalProcess;
|
|
44
|
-
/** Attachment that currently owns input; absent while nobody is attached. */
|
|
45
|
-
controllerId?: string;
|
|
46
|
-
/** Monotonic across the Host terminal lifetime and never reset on reconnect. */
|
|
47
|
-
sequence: number;
|
|
48
|
-
/** Bounded raw output replayed to a reconnecting emulator. */
|
|
49
|
-
screen: string[];
|
|
50
|
-
screenBytes: number;
|
|
51
|
-
truncated: boolean;
|
|
52
|
-
subscribers: Set<AsyncQueue<unknown>>;
|
|
53
|
-
state: 'running' | 'exited' | 'failed';
|
|
54
|
-
exitCode: number | null;
|
|
55
|
-
error?: string;
|
|
56
|
-
}
|
|
57
|
-
declare class AsyncQueue<T> implements AsyncIterable<T> {
|
|
58
|
-
private values;
|
|
59
|
-
private waiters;
|
|
60
|
-
private ended;
|
|
61
|
-
push(value: T): void;
|
|
62
|
-
end(): void;
|
|
63
|
-
next(): Promise<IteratorResult<T>>;
|
|
64
|
-
[Symbol.asyncIterator](): AsyncIterator<T>;
|
|
65
|
-
}
|
|
66
8
|
/** Shared Host-owned workspace files and terminal implementation; authority comes from the backend resolver. */
|
|
67
9
|
export declare class WorkspaceBridge {
|
|
68
10
|
private readonly resolveCwd;
|
|
69
11
|
private readonly terminalEnabled;
|
|
12
|
+
private readonly state;
|
|
70
13
|
private readonly scope;
|
|
71
|
-
private readonly
|
|
14
|
+
private readonly terminal;
|
|
72
15
|
private readonly ownedSubscribers;
|
|
73
|
-
private readonly spawnTerminal;
|
|
74
16
|
constructor(resolveCwd: WorkspaceCwdResolver, terminalEnabled: () => boolean, state: WorkspaceBridgeState | undefined, spawnTerminal: RemoteTerminalSpawner | undefined, scope: {
|
|
75
17
|
parse(value: unknown): {
|
|
76
18
|
sessionId: string;
|
|
@@ -85,33 +27,8 @@ export declare class WorkspaceBridge {
|
|
|
85
27
|
closeAll(): Promise<void>;
|
|
86
28
|
private fileCall;
|
|
87
29
|
private watchChanges;
|
|
88
|
-
/**
|
|
89
|
-
* `terminal/retain` only acknowledges the retention window: it never takes
|
|
90
|
-
* input ownership and never replays output. Recovery reads the next snapshot.
|
|
91
|
-
*/
|
|
92
|
-
private retain;
|
|
93
|
-
/** `terminal/follow` takes input ownership and starts with a screen snapshot. */
|
|
94
|
-
private follow;
|
|
95
|
-
private terminalCall;
|
|
96
|
-
private createTerminal;
|
|
97
|
-
/** Streams process output as ordered `output` frames, then reports the exit. */
|
|
98
|
-
private pump;
|
|
99
|
-
private appendScreen;
|
|
100
30
|
private scopeError;
|
|
101
31
|
private rootFor;
|
|
102
32
|
private safePath;
|
|
103
|
-
private emit;
|
|
104
|
-
private endSubscribers;
|
|
105
|
-
private requireTerminal;
|
|
106
|
-
private assertTerminalEnabled;
|
|
107
|
-
private disposeTerminal;
|
|
108
33
|
}
|
|
109
|
-
/** Default terminal process: a plain child process, used when the Host exposes no PTY provider. */
|
|
110
|
-
export declare function pipeTerminalSpawner(): RemoteTerminalSpawner;
|
|
111
|
-
/**
|
|
112
|
-
* Terminal process backed by the Host `subprocess` service, which owns PTY
|
|
113
|
-
* allocation, containment, and process-range termination.
|
|
114
|
-
*/
|
|
115
|
-
export declare function subprocessTerminalSpawner(subprocess: HostSubprocessLike): RemoteTerminalSpawner;
|
|
116
|
-
export {};
|
|
117
34
|
//# sourceMappingURL=workspace-bridge.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-bridge.d.ts","sourceRoot":"","sources":["../src/workspace-bridge.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"workspace-bridge.d.ts","sourceRoot":"","sources":["../src/workspace-bridge.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AACnE,OAAO,EAA4B,mBAAmB,EAAE,MAAM,iCAAiC,CAAA;AAC/F,OAAO,EAAuB,KAAK,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AAC/F,cAAc,+BAA+B,CAAA;AAI7C,qBAAa,oBAAqB,SAAQ,mBAAmB;CAAG;AAChE,MAAM,MAAM,oBAAoB,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;AAyBzG,gHAAgH;AAChH,qBAAa,eAAe;IAKxB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,KAAK;IAEtB,OAAO,CAAC,QAAQ,CAAC,KAAK;IARxB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA0B;IACnD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAiC;gBAG/C,UAAU,EAAE,oBAAoB,EAChC,eAAe,EAAE,MAAM,OAAO,EAC9B,KAAK,kCAA6B,EACnD,aAAa,EAAE,qBAAqB,YAAwB,EAC3C,KAAK,EAAE;QAAE,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAE,GAAG,SAAS,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAA;KAAE;IAKvJ,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAI1B,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;IAgBnG,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;IAc1G,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;YAQjB,QAAQ;YAmDR,YAAY;IAgB1B,OAAO,CAAC,UAAU;YAIJ,OAAO;YASP,QAAQ;CAkBvB"}
|
package/dist/workspace-bridge.js
CHANGED
|
@@ -1,24 +1,12 @@
|
|
|
1
|
-
import { spawn } from 'node:child_process';
|
|
2
1
|
import { realpath, lstat, readdir, readFile, stat, watch } from 'node:fs/promises';
|
|
3
2
|
import { isAbsolute, join, relative, resolve } from 'node:path';
|
|
4
3
|
import { RpcError } from './safe-error.js';
|
|
4
|
+
import { RemoteTerminalController, RemoteTerminalState } from './remote-terminal-controller.js';
|
|
5
|
+
import { pipeTerminalSpawner } from './remote-terminal-provider.js';
|
|
6
|
+
export * from './remote-terminal-provider.js';
|
|
5
7
|
const MAX_READ_BYTES = 4 * 1024 * 1024;
|
|
6
|
-
|
|
7
|
-
const MAX_COLS = 240;
|
|
8
|
-
const MAX_ROWS = 100;
|
|
9
|
-
const MAX_TERMINALS = 256;
|
|
10
|
-
/** Replay journal bound for one terminal; the newest output always survives. */
|
|
11
|
-
const MAX_SCREEN_BYTES = 256 * 1024;
|
|
12
|
-
/** Advertised scrollback rows, matching the official terminal environment shape. */
|
|
13
|
-
const TERMINAL_SCROLLBACK = 2000;
|
|
14
|
-
const TERMINAL_TYPE = 'xterm-256color';
|
|
15
|
-
export class WorkspaceBridgeState {
|
|
16
|
-
terminals = new Map();
|
|
8
|
+
export class WorkspaceBridgeState extends RemoteTerminalState {
|
|
17
9
|
}
|
|
18
|
-
/** One shell this carrier can start; the client only ever picks from `terminal/shells`. */
|
|
19
|
-
const DEFAULT_SHELL = process.platform === 'win32'
|
|
20
|
-
? { path: 'cmd.exe', args: [], name: 'Command Prompt' }
|
|
21
|
-
: { path: '/bin/sh', args: [], name: 'sh' };
|
|
22
10
|
class AsyncQueue {
|
|
23
11
|
values = [];
|
|
24
12
|
waiters = [];
|
|
@@ -51,25 +39,23 @@ class AsyncQueue {
|
|
|
51
39
|
export class WorkspaceBridge {
|
|
52
40
|
resolveCwd;
|
|
53
41
|
terminalEnabled;
|
|
42
|
+
state;
|
|
54
43
|
scope;
|
|
55
|
-
|
|
44
|
+
terminal;
|
|
56
45
|
ownedSubscribers = new Set();
|
|
57
|
-
spawnTerminal;
|
|
58
46
|
constructor(resolveCwd, terminalEnabled, state = new WorkspaceBridgeState(), spawnTerminal = pipeTerminalSpawner(), scope) {
|
|
59
47
|
this.resolveCwd = resolveCwd;
|
|
60
48
|
this.terminalEnabled = terminalEnabled;
|
|
49
|
+
this.state = state;
|
|
61
50
|
this.scope = scope;
|
|
62
|
-
this.
|
|
63
|
-
this.spawnTerminal = spawnTerminal;
|
|
51
|
+
this.terminal = new RemoteTerminalController(state, spawnTerminal, terminalEnabled, (code, message) => this.scopeError(code, message));
|
|
64
52
|
}
|
|
65
53
|
isScope(value) {
|
|
66
54
|
return this.scope.parse(value) !== undefined;
|
|
67
55
|
}
|
|
68
56
|
async call(endpoint, payload, signal) {
|
|
69
57
|
const args = argsOf(payload);
|
|
70
|
-
const
|
|
71
|
-
const rawSession = args.agentId ?? args.sessionId;
|
|
72
|
-
const raw = scope ?? rawSession;
|
|
58
|
+
const raw = toolScope(endpoint, args);
|
|
73
59
|
const session = this.scope.parse(raw);
|
|
74
60
|
if (session === undefined) {
|
|
75
61
|
if (this.scope.owns(raw))
|
|
@@ -78,13 +64,20 @@ export class WorkspaceBridge {
|
|
|
78
64
|
}
|
|
79
65
|
if (endpoint.startsWith('workspaceFiles/'))
|
|
80
66
|
return this.fileCall(endpoint, session.sessionId, args, signal);
|
|
81
|
-
if (endpoint.startsWith('terminal/'))
|
|
82
|
-
|
|
67
|
+
if (endpoint.startsWith('terminal/')) {
|
|
68
|
+
if (!this.terminalEnabled())
|
|
69
|
+
throw new RpcError('TERMINAL_DISABLED', 'Remote terminal is disabled on this Host.');
|
|
70
|
+
const revision = this.state.revision;
|
|
71
|
+
const cwd = await this.rootFor(session.sessionId, signal);
|
|
72
|
+
if (revision !== this.state.revision)
|
|
73
|
+
throw this.scopeError('TERMINAL_UNAVAILABLE', 'The terminal backend changed. Retry the request.');
|
|
74
|
+
return this.terminal.call(endpoint, session.sessionId, cwd, args, signal);
|
|
75
|
+
}
|
|
83
76
|
return undefined;
|
|
84
77
|
}
|
|
85
78
|
async open(endpoint, payload, signal) {
|
|
86
79
|
const args = argsOf(payload);
|
|
87
|
-
const raw =
|
|
80
|
+
const raw = toolScope(endpoint, args);
|
|
88
81
|
const session = this.scope.parse(raw);
|
|
89
82
|
if (session === undefined) {
|
|
90
83
|
if (this.scope.owns(raw))
|
|
@@ -93,15 +86,18 @@ export class WorkspaceBridge {
|
|
|
93
86
|
}
|
|
94
87
|
if (endpoint === 'workspaceFiles/changes')
|
|
95
88
|
return this.watchChanges(session.sessionId, args, signal);
|
|
96
|
-
if (endpoint === 'terminal/retain')
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
89
|
+
if (endpoint === 'terminal/retain' || endpoint === 'terminal/follow') {
|
|
90
|
+
if (!this.terminalEnabled())
|
|
91
|
+
throw new RpcError('TERMINAL_DISABLED', 'Remote terminal is disabled on this Host.');
|
|
92
|
+
await this.rootFor(session.sessionId, signal);
|
|
93
|
+
return this.terminal.open(endpoint, session.sessionId, args, signal);
|
|
94
|
+
}
|
|
100
95
|
return undefined;
|
|
101
96
|
}
|
|
102
97
|
async closeAll() {
|
|
103
98
|
// A transport disconnect closes subscriptions but retains Host-owned terminal
|
|
104
99
|
// processes so a reconnect can use terminal/retain, matching Harness policy.
|
|
100
|
+
this.terminal.closeAll();
|
|
105
101
|
for (const queue of this.ownedSubscribers)
|
|
106
102
|
queue.end();
|
|
107
103
|
this.ownedSubscribers.clear();
|
|
@@ -182,157 +178,6 @@ export class WorkspaceBridge {
|
|
|
182
178
|
})();
|
|
183
179
|
return queue;
|
|
184
180
|
}
|
|
185
|
-
/**
|
|
186
|
-
* `terminal/retain` only acknowledges the retention window: it never takes
|
|
187
|
-
* input ownership and never replays output. Recovery reads the next snapshot.
|
|
188
|
-
*/
|
|
189
|
-
async retain(sessionId, args, signal) {
|
|
190
|
-
this.assertTerminalEnabled();
|
|
191
|
-
await this.rootFor(sessionId, signal);
|
|
192
|
-
signal.throwIfAborted();
|
|
193
|
-
this.requireTerminal(sessionId, String(args.id));
|
|
194
|
-
const queue = new AsyncQueue();
|
|
195
|
-
queue.push({ type: 'retained' });
|
|
196
|
-
this.ownedSubscribers.add(queue);
|
|
197
|
-
signal.addEventListener('abort', () => { this.ownedSubscribers.delete(queue); queue.end(); }, { once: true });
|
|
198
|
-
return queue;
|
|
199
|
-
}
|
|
200
|
-
/** `terminal/follow` takes input ownership and starts with a screen snapshot. */
|
|
201
|
-
async follow(sessionId, args, signal) {
|
|
202
|
-
this.assertTerminalEnabled();
|
|
203
|
-
await this.rootFor(sessionId, signal);
|
|
204
|
-
signal.throwIfAborted();
|
|
205
|
-
const attachmentId = typeof args.attachmentId === 'string' && args.attachmentId.length > 0 ? args.attachmentId : undefined;
|
|
206
|
-
if (attachmentId === undefined)
|
|
207
|
-
throw new RpcError('INVALID_MESSAGE', 'The terminal attachment is invalid.');
|
|
208
|
-
const terminal = this.requireTerminal(sessionId, String(args.id));
|
|
209
|
-
const queue = new AsyncQueue();
|
|
210
|
-
if (terminal.controllerId !== attachmentId) {
|
|
211
|
-
terminal.controllerId = attachmentId;
|
|
212
|
-
// Existing followers keep their output but lose input to the new attachment.
|
|
213
|
-
this.emit(terminal, { type: 'state', info: terminalInfo(terminal) });
|
|
214
|
-
}
|
|
215
|
-
queue.push({ type: 'snapshot', sequence: terminal.sequence, screen: screenOf(terminal), info: terminalInfo(terminal) });
|
|
216
|
-
terminal.subscribers.add(queue);
|
|
217
|
-
this.ownedSubscribers.add(queue);
|
|
218
|
-
signal.addEventListener('abort', () => {
|
|
219
|
-
terminal.subscribers.delete(queue);
|
|
220
|
-
this.ownedSubscribers.delete(queue);
|
|
221
|
-
queue.end();
|
|
222
|
-
if (terminal.controllerId === attachmentId) {
|
|
223
|
-
terminal.controllerId = undefined;
|
|
224
|
-
this.emit(terminal, { type: 'state', info: terminalInfo(terminal) });
|
|
225
|
-
}
|
|
226
|
-
}, { once: true });
|
|
227
|
-
return queue;
|
|
228
|
-
}
|
|
229
|
-
async terminalCall(endpoint, sessionId, args, signal) {
|
|
230
|
-
this.assertTerminalEnabled();
|
|
231
|
-
const cwd = await this.rootFor(sessionId, signal);
|
|
232
|
-
signal.throwIfAborted();
|
|
233
|
-
this.assertTerminalEnabled();
|
|
234
|
-
if (endpoint === 'terminal/environment') {
|
|
235
|
-
return { ok: true, value: { cwd, maxInputBytes: MAX_INPUT_BYTES, maxCols: MAX_COLS, maxRows: MAX_ROWS, scrollback: TERMINAL_SCROLLBACK } };
|
|
236
|
-
}
|
|
237
|
-
if (endpoint === 'terminal/shells')
|
|
238
|
-
return { ok: true, value: [shellInfo(DEFAULT_SHELL)] };
|
|
239
|
-
if (endpoint === 'terminal/list')
|
|
240
|
-
return { ok: true, value: [...this.terminals.values()].filter(item => item.sessionId === sessionId).map(terminalInfo) };
|
|
241
|
-
if (endpoint === 'terminal/create')
|
|
242
|
-
return this.createTerminal(sessionId, cwd, args);
|
|
243
|
-
const id = stringId(args.id);
|
|
244
|
-
const terminal = this.requireTerminal(sessionId, id);
|
|
245
|
-
if (endpoint === 'terminal/write') {
|
|
246
|
-
const data = typeof args.data === 'string' ? args.data : '';
|
|
247
|
-
if (Buffer.byteLength(data) > MAX_INPUT_BYTES)
|
|
248
|
-
throw new RpcError('INVALID_MESSAGE', 'Terminal input is too large.');
|
|
249
|
-
if (terminal.process === undefined)
|
|
250
|
-
throw this.scopeError('TERMINAL_NOT_FOUND', 'The CodeX terminal is no longer available.');
|
|
251
|
-
await terminal.process.write(data);
|
|
252
|
-
return { ok: true };
|
|
253
|
-
}
|
|
254
|
-
if (endpoint === 'terminal/resize') {
|
|
255
|
-
terminal.cols = bounded(args.cols, terminal.cols, MAX_COLS);
|
|
256
|
-
terminal.rows = bounded(args.rows, terminal.rows, MAX_ROWS);
|
|
257
|
-
await terminal.process?.resize(terminal.cols, terminal.rows);
|
|
258
|
-
return { ok: true };
|
|
259
|
-
}
|
|
260
|
-
if (endpoint === 'terminal/rename') {
|
|
261
|
-
if (typeof args.title === 'string' && args.title.length > 0)
|
|
262
|
-
terminal.title = args.title.slice(0, 128);
|
|
263
|
-
return { ok: true };
|
|
264
|
-
}
|
|
265
|
-
if (endpoint === 'terminal/close') {
|
|
266
|
-
this.disposeTerminal(terminal);
|
|
267
|
-
this.terminals.delete(`${sessionId}/${id}`);
|
|
268
|
-
return { ok: true };
|
|
269
|
-
}
|
|
270
|
-
throw new RpcError('METHOD_NOT_FOUND', 'The requested terminal method does not exist.');
|
|
271
|
-
}
|
|
272
|
-
async createTerminal(sessionId, cwd, args) {
|
|
273
|
-
const request = isRecord(args.request) ? args.request : {};
|
|
274
|
-
const id = stringId(request.id);
|
|
275
|
-
if ([...this.terminals.values()].some(item => item.sessionId === sessionId && item.id === id))
|
|
276
|
-
throw new RpcError('REQUEST_CONFLICT', 'The terminal id is already active.');
|
|
277
|
-
if (this.terminals.size >= MAX_TERMINALS)
|
|
278
|
-
throw new RpcError('RATE_LIMITED', 'Too many remote terminals are active.', undefined, true);
|
|
279
|
-
if (request.shellPath !== undefined && request.shellPath !== DEFAULT_SHELL.path)
|
|
280
|
-
throw new RpcError('INVALID_MESSAGE', 'The requested shell is not available for this workspace.');
|
|
281
|
-
const cols = bounded(request.cols, 80, MAX_COLS);
|
|
282
|
-
const rows = bounded(request.rows, 24, MAX_ROWS);
|
|
283
|
-
const terminal = {
|
|
284
|
-
sessionId, id, title: DEFAULT_SHELL.name, shell: DEFAULT_SHELL, cwd, cols, rows,
|
|
285
|
-
sequence: 0, screen: [], screenBytes: 0, truncated: false, subscribers: new Set(),
|
|
286
|
-
state: 'running', exitCode: null,
|
|
287
|
-
};
|
|
288
|
-
this.terminals.set(`${sessionId}/${id}`, terminal);
|
|
289
|
-
try {
|
|
290
|
-
terminal.process = await this.spawnTerminal({
|
|
291
|
-
argv: [DEFAULT_SHELL.path, ...DEFAULT_SHELL.args],
|
|
292
|
-
cwd,
|
|
293
|
-
cols,
|
|
294
|
-
rows,
|
|
295
|
-
terminalType: TERMINAL_TYPE,
|
|
296
|
-
env: { DSH_SESSION_ID: sessionId },
|
|
297
|
-
});
|
|
298
|
-
}
|
|
299
|
-
catch {
|
|
300
|
-
this.terminals.delete(`${sessionId}/${id}`);
|
|
301
|
-
throw this.scopeError('TERMINAL_UNAVAILABLE', 'The CodeX terminal could not be started.');
|
|
302
|
-
}
|
|
303
|
-
void this.pump(terminal, terminal.process);
|
|
304
|
-
return { ok: true, value: terminalInfo(terminal) };
|
|
305
|
-
}
|
|
306
|
-
/** Streams process output as ordered `output` frames, then reports the exit. */
|
|
307
|
-
async pump(terminal, process) {
|
|
308
|
-
try {
|
|
309
|
-
for await (const chunk of process.output) {
|
|
310
|
-
if (chunk.length === 0)
|
|
311
|
-
continue;
|
|
312
|
-
terminal.sequence += 1;
|
|
313
|
-
this.appendScreen(terminal, chunk);
|
|
314
|
-
this.emit(terminal, { type: 'output', sequence: terminal.sequence, data: chunk });
|
|
315
|
-
}
|
|
316
|
-
}
|
|
317
|
-
catch {
|
|
318
|
-
terminal.state = 'failed';
|
|
319
|
-
terminal.error = 'The terminal output stream failed.';
|
|
320
|
-
}
|
|
321
|
-
const outcome = await process.completed;
|
|
322
|
-
terminal.exitCode = outcome.exitCode;
|
|
323
|
-
if (terminal.state === 'running')
|
|
324
|
-
terminal.state = 'exited';
|
|
325
|
-
this.emit(terminal, { type: 'state', info: terminalInfo(terminal) });
|
|
326
|
-
this.endSubscribers(terminal);
|
|
327
|
-
}
|
|
328
|
-
appendScreen(terminal, chunk) {
|
|
329
|
-
terminal.screen.push(chunk);
|
|
330
|
-
terminal.screenBytes += Buffer.byteLength(chunk);
|
|
331
|
-
while (terminal.screenBytes > MAX_SCREEN_BYTES && terminal.screen.length > 1) {
|
|
332
|
-
terminal.screenBytes -= Buffer.byteLength(terminal.screen.shift());
|
|
333
|
-
terminal.truncated = true;
|
|
334
|
-
}
|
|
335
|
-
}
|
|
336
181
|
scopeError(code, message) {
|
|
337
182
|
return new RpcError(`${this.scope.domain}_${code}`, message.replaceAll('CodeX', this.scope.domain === 'CODEX' ? 'CodeX' : this.scope.domain));
|
|
338
183
|
}
|
|
@@ -378,122 +223,20 @@ export class WorkspaceBridge {
|
|
|
378
223
|
throw this.scopeError('WORKSPACE_PATH_DENIED', 'The requested workspace path is unavailable.');
|
|
379
224
|
}
|
|
380
225
|
}
|
|
381
|
-
emit(terminal, value) {
|
|
382
|
-
for (const subscriber of terminal.subscribers)
|
|
383
|
-
subscriber.push(value);
|
|
384
|
-
}
|
|
385
|
-
endSubscribers(terminal) {
|
|
386
|
-
for (const subscriber of terminal.subscribers)
|
|
387
|
-
subscriber.end();
|
|
388
|
-
terminal.subscribers.clear();
|
|
389
|
-
}
|
|
390
|
-
requireTerminal(sessionId, id) {
|
|
391
|
-
const terminal = this.terminals.get(`${sessionId}/${id}`);
|
|
392
|
-
if (!terminal)
|
|
393
|
-
throw this.scopeError('TERMINAL_NOT_FOUND', 'The CodeX terminal is no longer available.');
|
|
394
|
-
return terminal;
|
|
395
|
-
}
|
|
396
|
-
assertTerminalEnabled() { if (!this.terminalEnabled())
|
|
397
|
-
throw new RpcError('TERMINAL_DISABLED', 'Remote terminal is disabled on this Host.'); }
|
|
398
|
-
disposeTerminal(terminal) {
|
|
399
|
-
void Promise.resolve(terminal.process?.terminate()).catch(() => undefined);
|
|
400
|
-
if (terminal.state === 'running') {
|
|
401
|
-
// Followers see a terminal state before their stream ends, so a close from
|
|
402
|
-
// another connection cannot leave a view stuck on "running".
|
|
403
|
-
terminal.state = 'exited';
|
|
404
|
-
this.emit(terminal, { type: 'state', info: terminalInfo(terminal) });
|
|
405
|
-
}
|
|
406
|
-
this.endSubscribers(terminal);
|
|
407
|
-
}
|
|
408
|
-
}
|
|
409
|
-
/** Default terminal process: a plain child process, used when the Host exposes no PTY provider. */
|
|
410
|
-
export function pipeTerminalSpawner() {
|
|
411
|
-
return async (spec) => {
|
|
412
|
-
const child = spawn(spec.argv[0], spec.argv.slice(1), {
|
|
413
|
-
cwd: spec.cwd,
|
|
414
|
-
stdio: 'pipe',
|
|
415
|
-
windowsHide: true,
|
|
416
|
-
env: { ...process.env, ...spec.env },
|
|
417
|
-
});
|
|
418
|
-
const queue = new AsyncQueue();
|
|
419
|
-
child.stdout.on('data', data => queue.push(Buffer.from(data).toString('utf8')));
|
|
420
|
-
child.stderr.on('data', data => queue.push(Buffer.from(data).toString('utf8')));
|
|
421
|
-
child.on('error', () => queue.end());
|
|
422
|
-
const completed = new Promise(resolve => {
|
|
423
|
-
child.on('error', () => { queue.end(); resolve({ exitCode: null }); });
|
|
424
|
-
child.on('exit', code => { queue.end(); resolve({ exitCode: code }); });
|
|
425
|
-
});
|
|
426
|
-
return {
|
|
427
|
-
output: queue,
|
|
428
|
-
write: data => { child.stdin.write(data); },
|
|
429
|
-
resize: () => undefined,
|
|
430
|
-
terminate: () => { if (!child.killed)
|
|
431
|
-
child.kill(); },
|
|
432
|
-
completed,
|
|
433
|
-
};
|
|
434
|
-
};
|
|
435
|
-
}
|
|
436
|
-
/**
|
|
437
|
-
* Terminal process backed by the Host `subprocess` service, which owns PTY
|
|
438
|
-
* allocation, containment, and process-range termination.
|
|
439
|
-
*/
|
|
440
|
-
export function subprocessTerminalSpawner(subprocess) {
|
|
441
|
-
return async (spec) => {
|
|
442
|
-
const handle = await subprocess.spawnTerminal({
|
|
443
|
-
argv: [...spec.argv],
|
|
444
|
-
cwd: spec.cwd,
|
|
445
|
-
cols: spec.cols,
|
|
446
|
-
rows: spec.rows,
|
|
447
|
-
terminalType: spec.terminalType,
|
|
448
|
-
env: spec.env,
|
|
449
|
-
});
|
|
450
|
-
const queue = new AsyncQueue();
|
|
451
|
-
handle.output.setEncoding?.('utf8');
|
|
452
|
-
handle.output.on('data', chunk => queue.push(typeof chunk === 'string' ? chunk : Buffer.from(chunk).toString('utf8')));
|
|
453
|
-
handle.output.once('close', () => queue.end());
|
|
454
|
-
handle.output.once('error', () => queue.end());
|
|
455
|
-
return {
|
|
456
|
-
output: queue,
|
|
457
|
-
write: data => handle.write(data),
|
|
458
|
-
resize: (cols, rows) => handle.resize(cols, rows),
|
|
459
|
-
terminate: () => handle.terminate(),
|
|
460
|
-
completed: handle.done
|
|
461
|
-
.then(outcome => ({ exitCode: typeof outcome?.exitCode === 'number' ? outcome.exitCode : null }))
|
|
462
|
-
.catch(() => ({ exitCode: null })),
|
|
463
|
-
};
|
|
464
|
-
};
|
|
465
|
-
}
|
|
466
|
-
function shellInfo(shell) {
|
|
467
|
-
return { path: shell.path, args: [...shell.args], name: shell.name };
|
|
468
|
-
}
|
|
469
|
-
/** Official WebTerminalInfo shape, including the attachment that owns input. */
|
|
470
|
-
function terminalInfo(terminal) {
|
|
471
|
-
return {
|
|
472
|
-
id: terminal.id,
|
|
473
|
-
title: terminal.title,
|
|
474
|
-
shell: shellInfo(terminal.shell),
|
|
475
|
-
cwd: terminal.cwd,
|
|
476
|
-
cols: terminal.cols,
|
|
477
|
-
rows: terminal.rows,
|
|
478
|
-
state: terminal.state,
|
|
479
|
-
exitCode: terminal.exitCode,
|
|
480
|
-
...(terminal.error === undefined ? {} : { error: terminal.error }),
|
|
481
|
-
...(terminal.controllerId === undefined ? {} : { controllerId: terminal.controllerId }),
|
|
482
|
-
};
|
|
483
|
-
}
|
|
484
|
-
/**
|
|
485
|
-
* The carrier has no terminal emulator: the bounded raw journal is replayed into
|
|
486
|
-
* the client emulator, which re-executes the same control sequences. A truncated
|
|
487
|
-
* journal starts with a reset so a half-captured sequence cannot leak in.
|
|
488
|
-
*/
|
|
489
|
-
function screenOf(terminal) {
|
|
490
|
-
return (terminal.truncated ? '\u001bc' : '') + terminal.screen.join('');
|
|
491
226
|
}
|
|
492
227
|
function argsOf(payload) { const value = isRecord(payload) ? payload : {}; return isRecord(value.args) ? value.args : value; }
|
|
228
|
+
function toolScope(endpoint, args) {
|
|
229
|
+
const session = args.agentId ?? args.sessionId;
|
|
230
|
+
if (!endpoint.startsWith('terminal/'))
|
|
231
|
+
return args.workspaceFileScopeId ?? session;
|
|
232
|
+
// Policy and process dispatch must authorize the same scope; a file scope
|
|
233
|
+
// cannot redirect a terminal call after a different session passed policy.
|
|
234
|
+
if ([args.agentId, args.sessionId, args.workspaceFileScopeId].some(value => value !== undefined && value !== session)) {
|
|
235
|
+
throw new RpcError('PERMISSION_DENIED', 'The terminal scope does not match its session.');
|
|
236
|
+
}
|
|
237
|
+
return session;
|
|
238
|
+
}
|
|
493
239
|
function isRecord(value) { return typeof value === 'object' && value !== null && !Array.isArray(value); }
|
|
494
|
-
function stringId(value) { if (typeof value !== 'string' || !/^[A-Za-z0-9_.:-]{1,128}$/.test(value))
|
|
495
|
-
throw new RpcError('INVALID_MESSAGE', 'The terminal identifier is invalid.'); return value; }
|
|
496
|
-
function bounded(value, fallback, max) { return typeof value === 'number' && Number.isInteger(value) && value > 0 ? Math.min(value, max) : fallback; }
|
|
497
240
|
function byteOrLineRange(args) {
|
|
498
241
|
const options = isRecord(args.options) ? args.options : undefined;
|
|
499
242
|
if (options !== undefined && isRecord(options.range))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-bridge.js","sourceRoot":"","sources":["../src/workspace-bridge.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"workspace-bridge.js","sourceRoot":"","sources":["../src/workspace-bridge.ts"],"names":[],"mappings":"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"}
|
package/dsh-plugin.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ds-harness-remote",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.8",
|
|
4
4
|
"description": "End-to-end encrypted remote access to DeepSeek Harness and experimental Codex workspaces from desktop, web, and Android, with dsh-TUI Host support.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"deepseek",
|
|
@@ -81,7 +81,9 @@
|
|
|
81
81
|
"qrcode": "^1.5.4",
|
|
82
82
|
"werift": "0.24.4",
|
|
83
83
|
"zod": "^3.24.1",
|
|
84
|
-
"ws": "^8.21.3"
|
|
84
|
+
"ws": "^8.21.3",
|
|
85
|
+
"@xterm/headless": "6.0.0",
|
|
86
|
+
"@xterm/addon-serialize": "0.14.0"
|
|
85
87
|
},
|
|
86
88
|
"optionalDependencies": {
|
|
87
89
|
"@roamhq/wrtc": "0.10.0"
|