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.
Files changed (49) hide show
  1. package/dist/acp/adapters/antigravity/transcript-loader.d.ts.map +1 -1
  2. package/dist/acp/adapters/antigravity/transcript-loader.js +4 -1
  3. package/dist/acp/adapters/antigravity/transcript-loader.js.map +1 -1
  4. package/dist/acp/gateway.d.ts +2 -0
  5. package/dist/acp/gateway.d.ts.map +1 -1
  6. package/dist/acp/gateway.js +46 -37
  7. package/dist/acp/gateway.js.map +1 -1
  8. package/dist/acp/workspace-tools.js +1 -1
  9. package/dist/acp/workspace-tools.js.map +1 -1
  10. package/dist/client.github.js +1 -1
  11. package/dist/client.js +1 -1
  12. package/dist/client.js.map +1 -1
  13. package/dist/harness-remote-bridge.js +2 -2
  14. package/dist/harness-remote-bridge.js.map +1 -1
  15. package/dist/index.js +6205 -399
  16. package/dist/index.js.map +4 -4
  17. package/dist/remote-terminal-controller.d.ts +90 -0
  18. package/dist/remote-terminal-controller.d.ts.map +1 -0
  19. package/dist/remote-terminal-controller.js +494 -0
  20. package/dist/remote-terminal-controller.js.map +1 -0
  21. package/dist/remote-terminal-provider.d.ts +46 -0
  22. package/dist/remote-terminal-provider.d.ts.map +1 -0
  23. package/dist/remote-terminal-provider.js +147 -0
  24. package/dist/remote-terminal-provider.js.map +1 -0
  25. package/dist/server-api.d.ts +3 -0
  26. package/dist/server-api.d.ts.map +1 -1
  27. package/dist/server-api.js +24 -9
  28. package/dist/server-api.js.map +1 -1
  29. package/dist/server-connection.d.ts.map +1 -1
  30. package/dist/server-connection.js +2 -0
  31. package/dist/server-connection.js.map +1 -1
  32. package/dist/service.d.ts.map +1 -1
  33. package/dist/service.js +9 -3
  34. package/dist/service.js.map +1 -1
  35. package/dist/terminal-policy.d.ts +6 -0
  36. package/dist/terminal-policy.d.ts.map +1 -1
  37. package/dist/terminal-policy.js +24 -6
  38. package/dist/terminal-policy.js.map +1 -1
  39. package/dist/typert-gateway-switch.d.ts.map +1 -1
  40. package/dist/typert-gateway-switch.js +8 -3
  41. package/dist/typert-gateway-switch.js.map +1 -1
  42. package/dist/version.d.ts +1 -1
  43. package/dist/version.js +1 -1
  44. package/dist/workspace-bridge.d.ts +6 -89
  45. package/dist/workspace-bridge.d.ts.map +1 -1
  46. package/dist/workspace-bridge.js +37 -294
  47. package/dist/workspace-bridge.js.map +1 -1
  48. package/dsh-plugin.json +1 -1
  49. package/package.json +4 -2
@@ -1,76 +1,18 @@
1
1
  import type { TypertRpcResult } from './typert-gateway-contract.js';
2
- export declare class WorkspaceBridgeState {
3
- readonly terminals: Map<string, TerminalContext>;
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 terminals;
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":"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"}
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"}
@@ -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
- const MAX_INPUT_BYTES = 64 * 1024;
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
- terminals;
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.terminals = state.terminals;
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 scope = args.workspaceFileScopeId;
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
- return this.terminalCall(endpoint, session.sessionId, args, signal);
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 = args.workspaceFileScopeId ?? args.agentId ?? args.sessionId;
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
- return this.retain(session.sessionId, args, signal);
98
- if (endpoint === 'terminal/follow')
99
- return this.follow(session.sessionId, args, signal);
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":"AAAA,OAAO,EAAE,KAAK,EAAuC,MAAM,oBAAoB,CAAA;AAC/E,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAClF,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAG1C,MAAM,cAAc,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAA;AACtC,MAAM,eAAe,GAAG,EAAE,GAAG,IAAI,CAAA;AACjC,MAAM,QAAQ,GAAG,GAAG,CAAA;AACpB,MAAM,QAAQ,GAAG,GAAG,CAAA;AACpB,MAAM,aAAa,GAAG,GAAG,CAAA;AACzB,gFAAgF;AAChF,MAAM,gBAAgB,GAAG,GAAG,GAAG,IAAI,CAAA;AACnC,oFAAoF;AACpF,MAAM,mBAAmB,GAAG,IAAI,CAAA;AAChC,MAAM,aAAa,GAAG,gBAAgB,CAAA;AAEtC,MAAM,OAAO,oBAAoB;IACtB,SAAS,GAAG,IAAI,GAAG,EAA2B,CAAA;CACxD;AAUD,2FAA2F;AAC3F,MAAM,aAAa,GAAc,OAAO,CAAC,QAAQ,KAAK,OAAO;IAC3D,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE;IACvD,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;AA+D7C,MAAM,UAAU;IACN,MAAM,GAAQ,EAAE,CAAA;IAChB,OAAO,GAA8C,EAAE,CAAA;IACvD,KAAK,GAAG,KAAK,CAAA;IACrB,IAAI,CAAC,KAAQ;QACX,IAAI,IAAI,CAAC,KAAK;YAAE,OAAM;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;QACnC,IAAI,MAAM;YAAE,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;;YACrC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC9B,CAAC;IACD,GAAG;QACD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM;YAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAG,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAkB,EAAE,CAAC,CAAA;IAC9F,CAAC;IACD,IAAI;QACF,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;QACjC,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;QACvE,IAAI,IAAI,CAAC,KAAK;YAAE,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAkB,EAAE,CAAC,CAAA;QACjF,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;IAC3D,CAAC;IACD,CAAC,MAAM,CAAC,aAAa,CAAC,KAAuB,OAAO,IAAI,CAAA,CAAC,CAAC;CAC3D;AAED,gHAAgH;AAChH,MAAM,OAAO,eAAe;IAMP;IACA;IAGA;IATF,SAAS,CAA8B;IACvC,gBAAgB,GAAG,IAAI,GAAG,EAAuB,CAAA;IACjD,aAAa,CAAuB;IAErD,YACmB,UAAgC,EAChC,eAA8B,EAC/C,KAAK,GAAG,IAAI,oBAAoB,EAAE,EAClC,gBAAuC,mBAAmB,EAAE,EAC3C,KAAoI;QAJpI,eAAU,GAAV,UAAU,CAAsB;QAChC,oBAAe,GAAf,eAAe,CAAe;QAG9B,UAAK,GAAL,KAAK,CAA+H;QAErJ,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAA;QAChC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAA;IACpC,CAAC;IAED,OAAO,CAAC,KAAc;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,SAAS,CAAA;IAC9C,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,QAAgB,EAAE,OAAgB,EAAE,MAAmB;QAChE,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAA;QACvC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAA;QACjD,MAAM,GAAG,GAAG,KAAK,IAAI,UAAU,CAAA;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACrC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;gBAAE,MAAM,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE,0CAA0C,CAAC,CAAC;YAAC,OAAO,SAAS,CAAA;QAAC,CAAC;QAC/J,IAAI,QAAQ,CAAC,UAAU,CAAC,iBAAiB,CAAC;YAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;QAC3G,IAAI,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC;YAAE,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;QACzG,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,QAAgB,EAAE,OAAgB,EAAE,MAAmB;QAChE,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA;QAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAA;QACvE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACrC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;gBAAE,MAAM,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE,0CAA0C,CAAC,CAAC;YAAC,OAAO,SAAS,CAAA;QAAC,CAAC;QAC/J,IAAI,QAAQ,KAAK,wBAAwB;YAAE,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;QACpG,IAAI,QAAQ,KAAK,iBAAiB;YAAE,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;QACvF,IAAI,QAAQ,KAAK,iBAAiB;YAAE,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;QACvF,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,8EAA8E;QAC9E,6EAA6E;QAC7E,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,gBAAgB;YAAE,KAAK,CAAC,GAAG,EAAE,CAAA;QACtD,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAA;IAC/B,CAAC;IAEO,KAAK,CAAC,QAAQ,CAAC,QAAgB,EAAE,SAAiB,EAAE,IAA6B,EAAE,MAAmB;QAC5G,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;QAClD,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAA;QAC5D,MAAM,CAAC,cAAc,EAAE,CAAA;QACvB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,KAAK,qBAAqB,CAAC,CAAA;QAClF,IAAI,CAAC;YACH,IAAI,QAAQ,KAAK,qBAAqB,EAAE,CAAC;gBACvC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAA;gBAC9D,MAAM,MAAM,GAAG,EAAE,CAAA;gBACjB,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;oBAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;oBACrC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,CAAA;oBAC9B,IAAI,IAAI,CAAC,cAAc,EAAE;wBAAE,SAAQ;oBACnC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;gBAC7J,CAAC;gBACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,MAAM,GAAG,GAAG,EAAE,EAAE,CAAA;YACxF,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,CAAA;YAC/B,MAAM,YAAY,GAAG,MAAM,CAAA;YAC3B,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,CAAA;YAC9C,IAAI,QAAQ,KAAK,qBAAqB,EAAE,CAAC;gBACvC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAA;YACzE,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBAAE,MAAM,IAAI,CAAC,UAAU,CAAC,wBAAwB,EAAE,6CAA6C,CAAC,CAAA;YAClH,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;YAC/B,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;YAC7B,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAA;YACpC,IAAI,KAAK,CAAC,UAAU,GAAG,cAAc;gBAAE,MAAM,IAAI,CAAC,UAAU,CAAC,qBAAqB,EAAE,4CAA4C,CAAC,CAAA;YACjI,IAAI,QAAQ,KAAK,0BAA0B,EAAE,CAAC;gBAC5C,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;gBAC5E,OAAO;oBACL,EAAE,EAAE,IAAI;oBACR,KAAK,EAAE;wBACL,YAAY;wBACZ,OAAO;wBACP,KAAK,EAAE,KAAK,CAAC,MAAM;wBACnB,MAAM;wBACN,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;wBAC9B,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM;qBAC3C;iBACF,CAAA;YACH,CAAC;YACD,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;YACnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,CAAA;YAChD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAA;QAChM,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,QAAQ;gBAAE,MAAM,KAAK,CAAA;YAC1C,MAAM,IAAI,CAAC,UAAU,CAAC,uBAAuB,EAAE,0CAA0C,CAAC,CAAA;QAC5F,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,SAAiB,EAAE,IAA6B,EAAE,MAAmB;QAC9F,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;QAClD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QAC/F,MAAM,KAAK,GAAG,IAAI,UAAU,EAAW,CAAA;QACvC,MAAM,CAAC,cAAc,EAAE,CAAA;QACvB,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAA;QACnD,MAAM,KAAK,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAA,CAAC,CAAC,CAAA;QACvD,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;QACvD,KAAK,CAAC,KAAK,IAAI,EAAE;YACf,IAAI,CAAC;gBAAC,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO;oBAAE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC,CAAA;YAAC,CAAC;YAC5H,MAAM,CAAC,CAAC,6CAA6C,CAAC,CAAC;oBAC/C,CAAC;gBAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBAAC,KAAK,CAAC,GAAG,EAAE,CAAA;YAAC,CAAC;QACrE,CAAC,CAAC,EAAE,CAAA;QACJ,OAAO,KAAK,CAAA;IACd,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,MAAM,CAAC,SAAiB,EAAE,IAA6B,EAAE,MAAmB;QACxF,IAAI,CAAC,qBAAqB,EAAE,CAAA;QAC5B,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;QACrC,MAAM,CAAC,cAAc,EAAE,CAAA;QACvB,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;QAChD,MAAM,KAAK,GAAG,IAAI,UAAU,EAAW,CAAA;QACvC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAA;QAChC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAChC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAA,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;QAC5G,OAAO,KAAK,CAAA;IACd,CAAC;IAED,iFAAiF;IACzE,KAAK,CAAC,MAAM,CAAC,SAAiB,EAAE,IAA6B,EAAE,MAAmB;QACxF,IAAI,CAAC,qBAAqB,EAAE,CAAA;QAC5B,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;QACrC,MAAM,CAAC,cAAc,EAAE,CAAA;QACvB,MAAM,YAAY,GAAG,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAA;QAC1H,IAAI,YAAY,KAAK,SAAS;YAAE,MAAM,IAAI,QAAQ,CAAC,iBAAiB,EAAE,qCAAqC,CAAC,CAAA;QAC5G,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;QACjE,MAAM,KAAK,GAAG,IAAI,UAAU,EAAW,CAAA;QACvC,IAAI,QAAQ,CAAC,YAAY,KAAK,YAAY,EAAE,CAAC;YAC3C,QAAQ,CAAC,YAAY,GAAG,YAAY,CAAA;YACpC,6EAA6E;YAC7E,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;QACtE,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;QACvH,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAC/B,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAChC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;YACpC,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAClC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACnC,KAAK,CAAC,GAAG,EAAE,CAAA;YACX,IAAI,QAAQ,CAAC,YAAY,KAAK,YAAY,EAAE,CAAC;gBAC3C,QAAQ,CAAC,YAAY,GAAG,SAAS,CAAA;gBACjC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;YACtE,CAAC;QACH,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;QAClB,OAAO,KAAK,CAAA;IACd,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,QAAgB,EAAE,SAAiB,EAAE,IAA6B,EAAE,MAAmB;QAChH,IAAI,CAAC,qBAAqB,EAAE,CAAA;QAC5B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;QACjD,MAAM,CAAC,cAAc,EAAE,CAAA;QACvB,IAAI,CAAC,qBAAqB,EAAE,CAAA;QAC5B,IAAI,QAAQ,KAAK,sBAAsB,EAAE,CAAC;YACxC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE,eAAe,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,mBAAmB,EAAE,EAAE,CAAA;QAC5I,CAAC;QACD,IAAI,QAAQ,KAAK,iBAAiB;YAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,EAAE,CAAA;QAC1F,IAAI,QAAQ,KAAK,eAAe;YAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAA;QACzJ,IAAI,QAAQ,KAAK,iBAAiB;YAAE,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,CAAA;QACpF,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;QACpD,IAAI,QAAQ,KAAK,gBAAgB,EAAE,CAAC;YAClC,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAA;YAC3D,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,eAAe;gBAAE,MAAM,IAAI,QAAQ,CAAC,iBAAiB,EAAE,8BAA8B,CAAC,CAAA;YACpH,IAAI,QAAQ,CAAC,OAAO,KAAK,SAAS;gBAAE,MAAM,IAAI,CAAC,UAAU,CAAC,oBAAoB,EAAE,4CAA4C,CAAC,CAAA;YAC7H,MAAM,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;YAClC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;QACrB,CAAC;QACD,IAAI,QAAQ,KAAK,iBAAiB,EAAE,CAAC;YACnC,QAAQ,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;YAC3D,QAAQ,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;YAC3D,MAAM,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAA;YAC5D,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;QACrB,CAAC;QACD,IAAI,QAAQ,KAAK,iBAAiB,EAAE,CAAC;YACnC,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;gBAAE,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;YACtG,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;QACrB,CAAC;QACD,IAAI,QAAQ,KAAK,gBAAgB,EAAE,CAAC;YAClC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAA;YAC9B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,SAAS,IAAI,EAAE,EAAE,CAAC,CAAA;YAC3C,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;QACrB,CAAC;QACD,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,+CAA+C,CAAC,CAAA;IACzF,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,SAAiB,EAAE,GAAW,EAAE,IAA6B;QACxF,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAA;QAC1D,MAAM,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QAC/B,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC;YAAE,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,oCAAoC,CAAC,CAAA;QAC3K,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,aAAa;YAAE,MAAM,IAAI,QAAQ,CAAC,cAAc,EAAE,uCAAuC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;QACtI,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,IAAI,OAAO,CAAC,SAAS,KAAK,aAAa,CAAC,IAAI;YAAE,MAAM,IAAI,QAAQ,CAAC,iBAAiB,EAAE,0DAA0D,CAAC,CAAA;QAClL,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAA;QAChD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAA;QAChD,MAAM,QAAQ,GAAoB;YAChC,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI;YAC/E,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,GAAG,EAAE;YACjF,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI;SACjC,CAAA;QACD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,SAAS,IAAI,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAA;QAClD,IAAI,CAAC;YACH,QAAQ,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC;gBAC1C,IAAI,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,GAAG,aAAa,CAAC,IAAI,CAAC;gBACjD,GAAG;gBACH,IAAI;gBACJ,IAAI;gBACJ,YAAY,EAAE,aAAa;gBAC3B,GAAG,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE;aACnC,CAAC,CAAA;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,SAAS,IAAI,EAAE,EAAE,CAAC,CAAA;YAC3C,MAAM,IAAI,CAAC,UAAU,CAAC,sBAAsB,EAAE,0CAA0C,CAAC,CAAA;QAC3F,CAAC;QACD,KAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAA;QAC1C,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAA;IACpD,CAAC;IAED,gFAAgF;IACxE,KAAK,CAAC,IAAI,CAAC,QAAyB,EAAE,OAA8B;QAC1E,IAAI,CAAC;YACH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACzC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;oBAAE,SAAQ;gBAChC,QAAQ,CAAC,QAAQ,IAAI,CAAC,CAAA;gBACtB,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;gBAClC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;YACnF,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAA;YACzB,QAAQ,CAAC,KAAK,GAAG,oCAAoC,CAAA;QACvD,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,SAAS,CAAA;QACvC,QAAQ,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAA;QACpC,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS;YAAE,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAA;QAC3D,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;QACpE,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;IAC/B,CAAC;IAEO,YAAY,CAAC,QAAyB,EAAE,KAAa;QAC3D,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC3B,QAAQ,CAAC,WAAW,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;QAChD,OAAO,QAAQ,CAAC,WAAW,GAAG,gBAAgB,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7E,QAAQ,CAAC,WAAW,IAAI,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAG,CAAC,CAAA;YACnE,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAA;QAC3B,CAAC;IACH,CAAC;IAEO,UAAU,CAAC,IAAY,EAAE,OAAe;QAC9C,OAAO,IAAI,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAChJ,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,SAAiB,EAAE,MAAmB;QAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QAC1C,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE,0CAA0C,CAAC,CAAA;QACjG,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;QAC1D,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,CAAC,UAAU,CAAC,uBAAuB,EAAE,8CAA8C,CAAC,CAAA;QACxG,IAAI,CAAC;YAAC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC;YAAC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;YAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBAAE,MAAM,IAAI,KAAK,EAAE,CAAC;YAAC,OAAO,IAAI,CAAA;QAAC,CAAC;QAChI,MAAM,CAAC;YAAC,MAAM,IAAI,CAAC,UAAU,CAAC,uBAAuB,EAAE,qCAAqC,CAAC,CAAA;QAAC,CAAC;IACjG,CAAC;IAEO,KAAK,CAAC,QAAQ,CAAC,IAAY,EAAE,IAAY,EAAE,SAAkB;QACnE,0EAA0E;QAC1E,2EAA2E;QAC3E,oEAAoE;QACpE,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QACxE,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;QACrC,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,CAAC,UAAU,CAAC,uBAAuB,EAAE,8DAA8D,CAAC,CAAA;QAC3J,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,CAAA;YACnC,IAAI,IAAI,CAAC,cAAc,EAAE;gBAAE,MAAM,IAAI,KAAK,EAAE,CAAA;YAC5C,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,CAAA;YAC3C,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;YAC9C,IAAI,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,YAAY,CAAC;gBAAE,MAAM,IAAI,KAAK,EAAE,CAAA;YAChF,IAAI,SAAS,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBAAE,MAAM,IAAI,KAAK,EAAE,CAAA;YACvD,OAAO,SAAS,CAAA;QAClB,CAAC;QAAC,MAAM,CAAC;YAAC,MAAM,IAAI,CAAC,UAAU,CAAC,uBAAuB,EAAE,8CAA8C,CAAC,CAAA;QAAC,CAAC;IAC5G,CAAC;IAEO,IAAI,CAAC,QAAyB,EAAE,KAAc;QACpD,KAAK,MAAM,UAAU,IAAI,QAAQ,CAAC,WAAW;YAAE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACvE,CAAC;IACO,cAAc,CAAC,QAAyB;QAC9C,KAAK,MAAM,UAAU,IAAI,QAAQ,CAAC,WAAW;YAAE,UAAU,CAAC,GAAG,EAAE,CAAA;QAC/D,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,CAAA;IAC9B,CAAC;IAEO,eAAe,CAAC,SAAiB,EAAE,EAAU;QACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,SAAS,IAAI,EAAE,EAAE,CAAC,CAAA;QACzD,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,CAAC,UAAU,CAAC,oBAAoB,EAAE,4CAA4C,CAAC,CAAA;QACxG,OAAO,QAAQ,CAAA;IACjB,CAAC;IACO,qBAAqB,KAAW,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;QAAE,MAAM,IAAI,QAAQ,CAAC,mBAAmB,EAAE,2CAA2C,CAAC,CAAA,CAAC,CAAC;IACnJ,eAAe,CAAC,QAAyB;QAC/C,KAAK,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;QAC1E,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YACjC,2EAA2E;YAC3E,6DAA6D;YAC7D,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAA;YACzB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;QACtE,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;IAC/B,CAAC;CACF;AAED,mGAAmG;AACnG,MAAM,UAAU,mBAAmB;IACjC,OAAO,KAAK,EAAC,IAAI,EAAC,EAAE;QAClB,MAAM,KAAK,GAAmC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAE,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;YACrF,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,KAAK,EAAE,MAAM;YACb,WAAW,EAAE,IAAI;YACjB,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE;SACrC,CAAC,CAAA;QACF,MAAM,KAAK,GAAG,IAAI,UAAU,EAAU,CAAA;QACtC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QAC/E,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QAC/E,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAA;QACpC,MAAM,SAAS,GAAG,IAAI,OAAO,CAA8B,OAAO,CAAC,EAAE;YACnE,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA,CAAC,CAAC,CAAC,CAAA;YACrE,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA,CAAC,CAAC,CAAC,CAAA;QACxE,CAAC,CAAC,CAAA;QACF,OAAO;YACL,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA,CAAC,CAAC;YAC1C,MAAM,EAAE,GAAG,EAAE,CAAC,SAAS;YACvB,SAAS,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM;gBAAE,KAAK,CAAC,IAAI,EAAE,CAAA,CAAC,CAAC;YACpD,SAAS;SACV,CAAA;IACH,CAAC,CAAA;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CAAC,UAA8B;IACtE,OAAO,KAAK,EAAC,IAAI,EAAC,EAAE;QAClB,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,aAAa,CAAC;YAC5C,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;YACpB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,GAAG,EAAE,IAAI,CAAC,GAAG;SACd,CAA2B,CAAA;QAC5B,MAAM,KAAK,GAAG,IAAI,UAAU,EAAU,CAAA;QACtC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAA;QACnC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAmB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QACpI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAA;QAC9C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAA;QAC9C,OAAO;YACL,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;YACjC,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC;YACjD,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE;YACnC,SAAS,EAAE,MAAM,CAAC,IAAI;iBACnB,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,OAAO,EAAE,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;iBAChG,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;SACrC,CAAA;IACH,CAAC,CAAA;AACH,CAAC;AAED,SAAS,SAAS,CAAC,KAAgB;IACjC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAA;AACtE,CAAC;AAED,gFAAgF;AAChF,SAAS,YAAY,CAAC,QAAyB;IAC7C,OAAO;QACL,EAAE,EAAE,QAAQ,CAAC,EAAE;QACf,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;QAChC,GAAG,EAAE,QAAQ,CAAC,GAAG;QACjB,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,GAAG,CAAC,QAAQ,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC;QAClE,GAAG,CAAC,QAAQ,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE,CAAC;KACxF,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,QAAQ,CAAC,QAAyB;IACzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AACzE,CAAC;AAED,SAAS,MAAM,CAAC,OAAgB,IAA6B,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAA,CAAC,CAAC;AAC/J,SAAS,QAAQ,CAAC,KAAc,IAAkC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA,CAAC,CAAC;AAC/I,SAAS,QAAQ,CAAC,KAAc,IAAY,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC;IAAE,MAAM,IAAI,QAAQ,CAAC,iBAAiB,EAAE,qCAAqC,CAAC,CAAC,CAAC,OAAO,KAAK,CAAA,CAAC,CAAC;AAClN,SAAS,OAAO,CAAC,KAAc,EAAE,QAAgB,EAAE,GAAW,IAAY,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAA,CAAC,CAAC;AACtL,SAAS,eAAe,CAAC,IAA6B;IACpD,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAA;IACjE,IAAI,OAAO,KAAK,SAAS,IAAI,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC,KAAK,CAAA;IAC1E,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA;AACjD,CAAC;AACD,SAAS,UAAU,CAAC,IAA6B;IAC/C,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,CAAA;IACnC,OAAO,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AACnH,CAAC;AACD,SAAS,SAAS,CAAC,IAA6B;IAC9C,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,CAAA;IACnC,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAA;IAC3E,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAA;AAC7H,CAAC"}
1
+ {"version":3,"file":"workspace-bridge.js","sourceRoot":"","sources":["../src/workspace-bridge.ts"],"names":[],"mappings":"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"}
package/dsh-plugin.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "$schema": "https://dsh.community/schemas/dsh-plugin-0.15.json",
3
3
  "id": "com.r2049.ds-harness-remote",
4
4
  "name": "ds-harness-remote",
5
- "version": "0.5.7",
5
+ "version": "0.5.8",
6
6
  "manifestVersion": "0.15",
7
7
  "facets": {
8
8
  "host": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ds-harness-remote",
3
- "version": "0.5.7",
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"