@provos/ironcurtain 0.5.0 → 0.6.0

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 (89) hide show
  1. package/README.md +66 -66
  2. package/dist/cli.js +9 -0
  3. package/dist/cli.js.map +1 -1
  4. package/dist/config/types.d.ts +6 -0
  5. package/dist/docker/adapters/claude-code.js +44 -19
  6. package/dist/docker/adapters/claude-code.js.map +1 -1
  7. package/dist/docker/agent-adapter.d.ts +6 -0
  8. package/dist/docker/agent-adapter.js +6 -1
  9. package/dist/docker/agent-adapter.js.map +1 -1
  10. package/dist/docker/docker-agent-session.d.ts +1 -1
  11. package/dist/docker/docker-agent-session.js +3 -2
  12. package/dist/docker/docker-agent-session.js.map +1 -1
  13. package/dist/docker/docker-infrastructure.js +10 -3
  14. package/dist/docker/docker-infrastructure.js.map +1 -1
  15. package/dist/docker/mitm-proxy.d.ts +5 -2
  16. package/dist/docker/mitm-proxy.js +169 -46
  17. package/dist/docker/mitm-proxy.js.map +1 -1
  18. package/dist/docker/oauth-credentials.d.ts +15 -2
  19. package/dist/docker/oauth-credentials.js +92 -8
  20. package/dist/docker/oauth-credentials.js.map +1 -1
  21. package/dist/docker/oauth-token-manager.d.ts +80 -0
  22. package/dist/docker/oauth-token-manager.js +133 -0
  23. package/dist/docker/oauth-token-manager.js.map +1 -0
  24. package/dist/docker/orientation.d.ts +1 -1
  25. package/dist/docker/orientation.js +2 -1
  26. package/dist/docker/orientation.js.map +1 -1
  27. package/dist/docker/pty-session.d.ts +2 -0
  28. package/dist/docker/pty-session.js +105 -9
  29. package/dist/docker/pty-session.js.map +1 -1
  30. package/dist/escalation/escalation-watcher.js +2 -0
  31. package/dist/escalation/escalation-watcher.js.map +1 -1
  32. package/dist/escalation/listener-command.js +9 -58
  33. package/dist/escalation/listener-command.js.map +1 -1
  34. package/dist/escalation/listener-lock.d.ts +20 -0
  35. package/dist/escalation/listener-lock.js +69 -0
  36. package/dist/escalation/listener-lock.js.map +1 -0
  37. package/dist/index.js +21 -1
  38. package/dist/index.js.map +1 -1
  39. package/dist/mux/mux-app.d.ts +24 -0
  40. package/dist/mux/mux-app.js +445 -0
  41. package/dist/mux/mux-app.js.map +1 -0
  42. package/dist/mux/mux-command.d.ts +7 -0
  43. package/dist/mux/mux-command.js +93 -0
  44. package/dist/mux/mux-command.js.map +1 -0
  45. package/dist/mux/mux-escalation-manager.d.ts +48 -0
  46. package/dist/mux/mux-escalation-manager.js +162 -0
  47. package/dist/mux/mux-escalation-manager.js.map +1 -0
  48. package/dist/mux/mux-input-handler.d.ts +49 -0
  49. package/dist/mux/mux-input-handler.js +457 -0
  50. package/dist/mux/mux-input-handler.js.map +1 -0
  51. package/dist/mux/mux-renderer.d.ts +86 -0
  52. package/dist/mux/mux-renderer.js +758 -0
  53. package/dist/mux/mux-renderer.js.map +1 -0
  54. package/dist/mux/mux-splash.d.ts +17 -0
  55. package/dist/mux/mux-splash.js +322 -0
  56. package/dist/mux/mux-splash.js.map +1 -0
  57. package/dist/mux/pty-bridge.d.ts +79 -0
  58. package/dist/mux/pty-bridge.js +151 -0
  59. package/dist/mux/pty-bridge.js.map +1 -0
  60. package/dist/mux/trusted-input.d.ts +27 -0
  61. package/dist/mux/trusted-input.js +27 -0
  62. package/dist/mux/trusted-input.js.map +1 -0
  63. package/dist/mux/types.d.ts +92 -0
  64. package/dist/mux/types.js +45 -0
  65. package/dist/mux/types.js.map +1 -0
  66. package/dist/sandbox/index.js +6 -0
  67. package/dist/sandbox/index.js.map +1 -1
  68. package/dist/session/agent-session.js +3 -0
  69. package/dist/session/agent-session.js.map +1 -1
  70. package/dist/session/index.js +14 -7
  71. package/dist/session/index.js.map +1 -1
  72. package/dist/session/types.d.ts +6 -0
  73. package/dist/session/workspace-validation.d.ts +17 -0
  74. package/dist/session/workspace-validation.js +65 -0
  75. package/dist/session/workspace-validation.js.map +1 -0
  76. package/dist/trusted-process/auto-approver.d.ts +13 -4
  77. package/dist/trusted-process/auto-approver.js +12 -5
  78. package/dist/trusted-process/auto-approver.js.map +1 -1
  79. package/dist/trusted-process/escalation.js +5 -0
  80. package/dist/trusted-process/escalation.js.map +1 -1
  81. package/dist/trusted-process/index.js +23 -0
  82. package/dist/trusted-process/index.js.map +1 -1
  83. package/dist/trusted-process/mcp-proxy-server.d.ts +0 -2
  84. package/dist/trusted-process/mcp-proxy-server.js +82 -26
  85. package/dist/trusted-process/mcp-proxy-server.js.map +1 -1
  86. package/dist/trusted-process/path-utils.d.ts +15 -0
  87. package/dist/trusted-process/path-utils.js +38 -0
  88. package/dist/trusted-process/path-utils.js.map +1 -1
  89. package/package.json +6 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mux-renderer.js","sourceRoot":"","sources":["../../src/mux/mux-renderer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Matrix-style splash screen for `ironcurtain mux`.
3
+ *
4
+ * Renders a Matrix rain animation where characters fall from the top
5
+ * and lock into ASCII art positions forming "IronCurtain".
6
+ * Shows usage info below the art after the animation completes.
7
+ */
8
+ type TerminalKit = any;
9
+ export interface SplashScreen {
10
+ start(): void;
11
+ stop(): void;
12
+ draw(): void;
13
+ resize(cols: number, viewportRows: number, viewportY: number, reservedBottom: number): void;
14
+ readonly active: boolean;
15
+ }
16
+ export declare function createSplashScreen(term: TerminalKit, cols: number, viewportRows: number, viewportY: number, reservedBottom: number): SplashScreen;
17
+ export {};
@@ -0,0 +1,322 @@
1
+ /**
2
+ * Matrix-style splash screen for `ironcurtain mux`.
3
+ *
4
+ * Renders a Matrix rain animation where characters fall from the top
5
+ * and lock into ASCII art positions forming "IronCurtain".
6
+ * Shows usage info below the art after the animation completes.
7
+ */
8
+ // ---------------------------------------------------------------------------
9
+ // Font data
10
+ // ---------------------------------------------------------------------------
11
+ const GLYPH_HEIGHT = 6;
12
+ const GLYPH_SPACING = 1;
13
+ const FONT = {
14
+ I: {
15
+ width: 5,
16
+ rows: ['#####', ' # ', ' # ', ' # ', ' # ', '#####'],
17
+ },
18
+ r: {
19
+ width: 5,
20
+ rows: [' ', ' ', '# ## ', '## #', '# ', '# '],
21
+ },
22
+ o: {
23
+ width: 5,
24
+ rows: [' ', ' ', ' ### ', '# #', '# #', ' ### '],
25
+ },
26
+ n: {
27
+ width: 5,
28
+ rows: [' ', ' ', '# ## ', '## #', '# #', '# #'],
29
+ },
30
+ C: {
31
+ width: 7,
32
+ rows: [' ##### ', '# #', '# ', '# ', '# #', ' ##### '],
33
+ },
34
+ u: {
35
+ width: 5,
36
+ rows: [' ', ' ', '# #', '# #', '# #', ' ### '],
37
+ },
38
+ t: {
39
+ width: 5,
40
+ rows: [' # ', ' # ', '#####', ' # ', ' # ', ' ## '],
41
+ },
42
+ a: {
43
+ width: 5,
44
+ rows: [' ', ' ### ', ' #', ' ####', '# #', ' ####'],
45
+ },
46
+ i: {
47
+ width: 3,
48
+ rows: [' # ', ' ', '## ', ' # ', ' # ', '###'],
49
+ },
50
+ };
51
+ const WORD = 'IronCurtain';
52
+ // ---------------------------------------------------------------------------
53
+ // Animation constants
54
+ // ---------------------------------------------------------------------------
55
+ const RAIN_CHARS = 'ヲアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン0123456789';
56
+ const TRAIL_LEN = 4;
57
+ const FRAME_MS = 33; // ~30 FPS
58
+ const MAX_START_FRAME = 15;
59
+ // SGR color sequences (true-color)
60
+ const CLR_HEAD = '\x1b[1;38;2;180;255;180m'; // bright white-green head
61
+ const CLR_NEAR = '\x1b[38;2;0;255;70m'; // bright green trail
62
+ const CLR_FAR = '\x1b[38;2;0;120;0m'; // dim green trail
63
+ const CLR_ART = '\x1b[38;2;0;200;0m'; // locked art
64
+ const SGR_RESET = '\x1b[0m';
65
+ // Info text colors
66
+ const CLR_CYAN = '\x1b[36m';
67
+ const CLR_BOLD_GREEN = '\x1b[1;32m';
68
+ const CLR_DIM = '\x1b[2m';
69
+ const INFO_ROWS = 10; // header + blank + 4 commands + blank + ctrl-a + margin
70
+ function computeWordLayout(cols, viewportRows) {
71
+ let totalWidth = 0;
72
+ const glyphs = [];
73
+ for (const char of WORD) {
74
+ const glyph = FONT[char];
75
+ glyphs.push({ char, glyph, offsetX: totalWidth });
76
+ totalWidth += glyph.width + GLYPH_SPACING;
77
+ }
78
+ totalWidth -= GLYPH_SPACING; // remove trailing spacing
79
+ // Too narrow or too short -> fallback
80
+ if (totalWidth > cols || viewportRows < GLYPH_HEIGHT + 6) {
81
+ return null;
82
+ }
83
+ const startX = Math.floor((cols - totalWidth) / 2);
84
+ const startY = Math.max(0, Math.floor((viewportRows - GLYPH_HEIGHT - INFO_ROWS) / 2));
85
+ return { startX, startY, totalWidth, glyphs };
86
+ }
87
+ function buildRainColumns(layout) {
88
+ const columns = [];
89
+ for (const { glyph, offsetX } of layout.glyphs) {
90
+ for (let row = 0; row < GLYPH_HEIGHT; row++) {
91
+ for (let col = 0; col < glyph.width; col++) {
92
+ if (glyph.rows[row][col] === '#') {
93
+ columns.push({
94
+ screenX: layout.startX + offsetX + col,
95
+ targetY: layout.startY + row,
96
+ startFrame: Math.floor(Math.random() * MAX_START_FRAME),
97
+ headY: -1 - Math.floor(Math.random() * 5),
98
+ locked: false,
99
+ });
100
+ }
101
+ }
102
+ }
103
+ }
104
+ return columns;
105
+ }
106
+ function randChar() {
107
+ return RAIN_CHARS[Math.floor(Math.random() * RAIN_CHARS.length)];
108
+ }
109
+ export function createSplashScreen(term, cols, viewportRows, viewportY, reservedBottom) {
110
+ let _cols = cols;
111
+ let _viewportRows = viewportRows;
112
+ let _viewportY = viewportY;
113
+ let _reservedBottom = reservedBottom;
114
+ let _layout = null;
115
+ let _rain = [];
116
+ let _frame = 0;
117
+ let _interval = null;
118
+ let _active = false;
119
+ let _done = false;
120
+ function init() {
121
+ _layout = computeWordLayout(_cols, _viewportRows - _reservedBottom);
122
+ if (_layout) {
123
+ _rain = buildRainColumns(_layout);
124
+ }
125
+ _frame = 0;
126
+ _done = false;
127
+ }
128
+ // -- Render helpers -------------------------------------------------------
129
+ /** Number of rows the splash may draw in (viewport minus reserved overlay). */
130
+ function drawableRows() {
131
+ return Math.max(0, _viewportRows - _reservedBottom);
132
+ }
133
+ /** Returns a buffer pre-filled with escape sequences to clear drawable rows. */
134
+ function clearViewport() {
135
+ const buf = [];
136
+ const rows = drawableRows();
137
+ for (let r = 0; r < rows; r++) {
138
+ buf.push(`\x1b[${_viewportY + r + 1};1H\x1b[2K`);
139
+ }
140
+ return buf;
141
+ }
142
+ /** Renders a single animation frame (or the final static state). */
143
+ function render() {
144
+ if (!_layout) {
145
+ renderFallback();
146
+ return;
147
+ }
148
+ const buf = clearViewport();
149
+ const maxY = drawableRows();
150
+ // Set of locked positions so trails don't overwrite them
151
+ const lockedSet = new Set();
152
+ for (const rc of _rain) {
153
+ if (rc.locked)
154
+ lockedSet.add(`${rc.screenX},${rc.targetY}`);
155
+ }
156
+ // Draw rain trails (under locked cells)
157
+ if (!_done) {
158
+ for (const rc of _rain) {
159
+ if (rc.locked || _frame < rc.startFrame)
160
+ continue;
161
+ for (let d = 0; d <= TRAIL_LEN; d++) {
162
+ const y = rc.headY - d;
163
+ if (y < 0 || y >= maxY)
164
+ continue;
165
+ if (lockedSet.has(`${rc.screenX},${y}`))
166
+ continue;
167
+ const clr = d === 0 ? CLR_HEAD : d <= 2 ? CLR_NEAR : CLR_FAR;
168
+ buf.push(`\x1b[${_viewportY + y + 1};${rc.screenX + 1}H${clr}${randChar()}`);
169
+ }
170
+ }
171
+ }
172
+ // Draw locked cells
173
+ for (const rc of _rain) {
174
+ if (!rc.locked)
175
+ continue;
176
+ if (rc.targetY >= maxY)
177
+ continue;
178
+ buf.push(`\x1b[${_viewportY + rc.targetY + 1};${rc.screenX + 1}H${CLR_ART}\u2588`);
179
+ }
180
+ buf.push(SGR_RESET);
181
+ term.noFormat(buf.join(''));
182
+ if (_done)
183
+ renderInfo();
184
+ }
185
+ /** Plain-text fallback for terminals too small for the art. */
186
+ function renderFallback() {
187
+ const label = 'IronCurtain';
188
+ const maxY = drawableRows();
189
+ const y = Math.floor(maxY / 2);
190
+ const x = Math.max(0, Math.floor((_cols - label.length) / 2));
191
+ const buf = clearViewport();
192
+ buf.push(`\x1b[${_viewportY + y + 1};${x + 1}H${CLR_BOLD_GREEN}${label}${SGR_RESET}`);
193
+ const hint = '/new \u2014 Spawn session | /quit \u2014 Exit | Ctrl-A \u2014 Toggle mode';
194
+ const hx = Math.max(0, Math.floor((_cols - hint.length) / 2));
195
+ if (y + 2 < maxY) {
196
+ buf.push(`\x1b[${_viewportY + y + 3};${hx + 1}H${CLR_DIM}${hint}${SGR_RESET}`);
197
+ }
198
+ term.noFormat(buf.join(''));
199
+ _done = true;
200
+ }
201
+ /** Draws the info text block below the art. */
202
+ function renderInfo() {
203
+ if (!_layout)
204
+ return;
205
+ const infoY = _viewportY + _layout.startY + GLYPH_HEIGHT + 2;
206
+ const header = 'IronCurtain';
207
+ const subtitle = ' \u2014 Secure* Agent Runtime';
208
+ const headerX = Math.max(0, Math.floor((_cols - header.length - subtitle.length) / 2));
209
+ const commands = [
210
+ null,
211
+ { cmd: '/new', desc: 'Spawn a new session (sandbox or workspace)' },
212
+ { cmd: '/tab N', desc: 'Switch to tab N' },
213
+ { cmd: '/close', desc: 'Close the current tab' },
214
+ { cmd: '/quit', desc: 'Exit the multiplexer' },
215
+ null,
216
+ { cmd: 'Ctrl-A', desc: 'Toggle command / PTY mode' },
217
+ ];
218
+ const CMD_WIDTH = 14;
219
+ const maxDescWidth = commands.reduce((max, c) => (c ? Math.max(max, c.desc.length) : max), 0);
220
+ const maxWidth = CMD_WIDTH + maxDescWidth + 4; // 2 leading spaces + 2 padding
221
+ const blockX = Math.max(0, Math.floor((_cols - maxWidth) / 2));
222
+ const buf = [];
223
+ const maxScreenY = _viewportY + drawableRows();
224
+ // Header
225
+ if (infoY < maxScreenY) {
226
+ buf.push(`\x1b[${infoY + 1};${headerX + 1}H${CLR_BOLD_GREEN}${header}${SGR_RESET}${CLR_DIM}${subtitle}${SGR_RESET}`);
227
+ }
228
+ // Command lines
229
+ let y = infoY + 1;
230
+ for (const line of commands) {
231
+ if (y >= maxScreenY)
232
+ break;
233
+ if (!line) {
234
+ y++;
235
+ continue;
236
+ }
237
+ buf.push(`\x1b[${y + 1};${blockX + 1}H ${CLR_CYAN}${line.cmd.padEnd(CMD_WIDTH)}${SGR_RESET}${CLR_DIM}${line.desc}${SGR_RESET}`);
238
+ y++;
239
+ }
240
+ term.noFormat(buf.join(''));
241
+ }
242
+ // -- Animation tick -------------------------------------------------------
243
+ function tick() {
244
+ _frame++;
245
+ let allLocked = true;
246
+ for (const rc of _rain) {
247
+ if (rc.locked)
248
+ continue;
249
+ allLocked = false;
250
+ if (_frame >= rc.startFrame) {
251
+ rc.headY++;
252
+ if (rc.headY >= rc.targetY) {
253
+ rc.locked = true;
254
+ }
255
+ }
256
+ }
257
+ if (allLocked) {
258
+ _done = true;
259
+ if (_interval) {
260
+ clearInterval(_interval);
261
+ _interval = null;
262
+ }
263
+ }
264
+ render();
265
+ }
266
+ // -- Initialize -----------------------------------------------------------
267
+ init();
268
+ // -- Public interface -----------------------------------------------------
269
+ return {
270
+ get active() {
271
+ return _active;
272
+ },
273
+ start() {
274
+ if (_active)
275
+ return;
276
+ _active = true;
277
+ if (!_layout) {
278
+ render();
279
+ return;
280
+ }
281
+ _interval = setInterval(tick, FRAME_MS);
282
+ _interval.unref();
283
+ },
284
+ stop() {
285
+ _active = false;
286
+ if (_interval) {
287
+ clearInterval(_interval);
288
+ _interval = null;
289
+ }
290
+ },
291
+ draw() {
292
+ render();
293
+ },
294
+ resize(cols, viewportRows, viewportY, reservedBottom) {
295
+ _cols = cols;
296
+ _viewportRows = viewportRows;
297
+ _viewportY = viewportY;
298
+ _reservedBottom = reservedBottom;
299
+ _layout = computeWordLayout(_cols, _viewportRows - _reservedBottom);
300
+ if (!_layout) {
301
+ // Terminal too small: stop animation, fall back to plain text on next draw
302
+ _rain = [];
303
+ if (_interval) {
304
+ clearInterval(_interval);
305
+ _interval = null;
306
+ }
307
+ }
308
+ else if (_done) {
309
+ // Re-render final state with new layout
310
+ _rain = buildRainColumns(_layout);
311
+ for (const rc of _rain)
312
+ rc.locked = true;
313
+ }
314
+ else {
315
+ // Restart animation with new positions
316
+ _rain = buildRainColumns(_layout);
317
+ _frame = 0;
318
+ }
319
+ },
320
+ };
321
+ }
322
+ //# sourceMappingURL=mux-splash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mux-splash.js","sourceRoot":"","sources":["../../src/mux/mux-splash.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * PtyBridge -- bridges a node-pty child process to a headless xterm terminal.
3
+ *
4
+ * Data flow:
5
+ * node-pty child -> raw bytes -> @xterm/headless Terminal.write()
6
+ * @xterm/headless buffer -> readBuffer() -> MuxRenderer
7
+ *
8
+ * Each PtyBridge instance owns:
9
+ * - One node-pty child process (the `ironcurtain start --pty` invocation)
10
+ * - One @xterm/headless Terminal (the virtual terminal buffer)
11
+ * - The session's escalation directory path (for trusted input writes)
12
+ */
13
+ import type { Terminal as TerminalType } from '@xterm/headless';
14
+ import type { PtySessionRegistration } from '../docker/pty-types.js';
15
+ export interface PtyBridge {
16
+ /** The headless terminal instance for reading buffer state. */
17
+ readonly terminal: TerminalType;
18
+ /** The session ID (extracted from child process registration). */
19
+ readonly sessionId: string | undefined;
20
+ /** The escalation directory path for this session. */
21
+ readonly escalationDir: string | undefined;
22
+ /** Whether the child process is still running. */
23
+ readonly alive: boolean;
24
+ /** The child process exit code, if exited. */
25
+ readonly exitCode: number | undefined;
26
+ /** The child process PID. */
27
+ readonly pid: number;
28
+ /**
29
+ * Writes raw bytes to the child process's PTY stdin.
30
+ * Used in PTY mode to forward keystrokes.
31
+ */
32
+ write(data: string): void;
33
+ /**
34
+ * Resizes the child PTY and the headless terminal.
35
+ */
36
+ resize(cols: number, rows: number): void;
37
+ /**
38
+ * Kills the child process and cleans up resources.
39
+ */
40
+ kill(): void;
41
+ /**
42
+ * Registers a callback invoked when new output arrives.
43
+ */
44
+ onOutput(callback: () => void): void;
45
+ /**
46
+ * Registers a callback invoked when the child process exits.
47
+ */
48
+ onExit(callback: (exitCode: number) => void): void;
49
+ /**
50
+ * Registers a callback invoked when the child's session registration
51
+ * is discovered (sessionId and escalationDir become available).
52
+ */
53
+ onSessionDiscovered(callback: (registration: PtySessionRegistration | null) => void): void;
54
+ /**
55
+ * Updates the registration if not already set (e.g. from late discovery
56
+ * via the escalation manager's registry polling). Fires any queued
57
+ * session callbacks.
58
+ */
59
+ updateRegistration(registration: PtySessionRegistration): void;
60
+ }
61
+ export interface PtyBridgeOptions {
62
+ /** Columns for the initial PTY size. */
63
+ readonly cols: number;
64
+ /** Rows for the initial PTY size. */
65
+ readonly rows: number;
66
+ /** The ironcurtain binary path (or runtime like tsx/node). */
67
+ readonly ironcurtainBin: string;
68
+ /** Extra args to insert before the 'start' subcommand (e.g. the script path when running via tsx). */
69
+ readonly prefixArgs?: string[];
70
+ /** Agent to pass to --agent flag. */
71
+ readonly agent: string;
72
+ /** Optional workspace directory path (passed as --workspace to the child). */
73
+ readonly workspacePath?: string;
74
+ }
75
+ /**
76
+ * Spawns a new `ironcurtain start --pty` child process via node-pty
77
+ * and wires it to a headless xterm terminal.
78
+ */
79
+ export declare function createPtyBridge(options: PtyBridgeOptions): Promise<PtyBridge>;
@@ -0,0 +1,151 @@
1
+ /**
2
+ * PtyBridge -- bridges a node-pty child process to a headless xterm terminal.
3
+ *
4
+ * Data flow:
5
+ * node-pty child -> raw bytes -> @xterm/headless Terminal.write()
6
+ * @xterm/headless buffer -> readBuffer() -> MuxRenderer
7
+ *
8
+ * Each PtyBridge instance owns:
9
+ * - One node-pty child process (the `ironcurtain start --pty` invocation)
10
+ * - One @xterm/headless Terminal (the virtual terminal buffer)
11
+ * - The session's escalation directory path (for trusted input writes)
12
+ */
13
+ import xtermHeadless from '@xterm/headless';
14
+ const { Terminal } = xtermHeadless;
15
+ import { getPtyRegistryDir } from '../config/paths.js';
16
+ import { readActiveRegistrations } from '../escalation/session-registry.js';
17
+ /** Session discovery timeout (ms). */
18
+ const DISCOVERY_TIMEOUT_MS = 10_000;
19
+ /** Session discovery poll interval (ms). */
20
+ const DISCOVERY_POLL_MS = 200;
21
+ /**
22
+ * Spawns a new `ironcurtain start --pty` child process via node-pty
23
+ * and wires it to a headless xterm terminal.
24
+ */
25
+ export async function createPtyBridge(options) {
26
+ const nodePty = (await import('node-pty'));
27
+ const terminal = new Terminal({
28
+ cols: options.cols,
29
+ rows: options.rows,
30
+ allowProposedApi: true,
31
+ });
32
+ const spawnArgs = [...(options.prefixArgs ?? []), 'start', '--pty', '--agent', options.agent];
33
+ if (options.workspacePath) {
34
+ spawnArgs.push('--workspace', options.workspacePath);
35
+ }
36
+ const child = nodePty.spawn(options.ironcurtainBin, spawnArgs, {
37
+ cols: options.cols,
38
+ rows: options.rows,
39
+ name: 'xterm-256color',
40
+ env: process.env,
41
+ });
42
+ const outputCallbacks = [];
43
+ const exitCallbacks = [];
44
+ const sessionCallbacks = [];
45
+ let _alive = true;
46
+ let _exitCode;
47
+ let _registration;
48
+ // Wire child output to headless terminal
49
+ child.onData((data) => {
50
+ terminal.write(data, () => {
51
+ for (const cb of outputCallbacks)
52
+ cb();
53
+ });
54
+ });
55
+ const discoveryAbort = new AbortController();
56
+ child.onExit(({ exitCode }) => {
57
+ _alive = false;
58
+ _exitCode = exitCode;
59
+ discoveryAbort.abort();
60
+ // If discovery hasn't resolved yet, flush callbacks with null
61
+ if (_registration === undefined) {
62
+ _registration = null;
63
+ for (const cb of sessionCallbacks)
64
+ cb(null);
65
+ sessionCallbacks.length = 0;
66
+ }
67
+ for (const cb of exitCallbacks)
68
+ cb(exitCode);
69
+ });
70
+ // Start session discovery
71
+ void discoverSessionRegistration(child.pid, discoveryAbort.signal).then((registration) => {
72
+ if (!_alive)
73
+ return; // child already exited; ignore late result
74
+ _registration = registration;
75
+ for (const cb of sessionCallbacks)
76
+ cb(registration);
77
+ sessionCallbacks.length = 0;
78
+ });
79
+ return {
80
+ get terminal() {
81
+ return terminal;
82
+ },
83
+ get sessionId() {
84
+ return _registration?.sessionId;
85
+ },
86
+ get escalationDir() {
87
+ return _registration?.escalationDir;
88
+ },
89
+ get alive() {
90
+ return _alive;
91
+ },
92
+ get exitCode() {
93
+ return _exitCode;
94
+ },
95
+ get pid() {
96
+ return child.pid;
97
+ },
98
+ write(data) {
99
+ if (_alive)
100
+ child.write(data);
101
+ },
102
+ resize(cols, rows) {
103
+ if (_alive)
104
+ child.resize(cols, rows);
105
+ terminal.resize(cols, rows);
106
+ },
107
+ kill() {
108
+ if (_alive)
109
+ child.kill();
110
+ },
111
+ onOutput(callback) {
112
+ outputCallbacks.push(callback);
113
+ },
114
+ onExit(callback) {
115
+ exitCallbacks.push(callback);
116
+ },
117
+ onSessionDiscovered(callback) {
118
+ // If already discovered, call immediately with the stored registration
119
+ if (_registration !== undefined || !_alive) {
120
+ callback(_registration ?? null);
121
+ return;
122
+ }
123
+ sessionCallbacks.push(callback);
124
+ },
125
+ updateRegistration(registration) {
126
+ if (_registration)
127
+ return; // already have one
128
+ _registration = registration;
129
+ for (const cb of sessionCallbacks)
130
+ cb(registration);
131
+ sessionCallbacks.length = 0;
132
+ },
133
+ };
134
+ }
135
+ /**
136
+ * Polls the PTY registry for a registration matching the child PID.
137
+ * Stops early if the abort signal fires (e.g. child exited).
138
+ */
139
+ async function discoverSessionRegistration(childPid, signal) {
140
+ const registryDir = getPtyRegistryDir();
141
+ const deadline = Date.now() + DISCOVERY_TIMEOUT_MS;
142
+ while (Date.now() < deadline && !signal.aborted) {
143
+ const registrations = readActiveRegistrations(registryDir);
144
+ const match = registrations.find((r) => r.pid === childPid);
145
+ if (match)
146
+ return match;
147
+ await new Promise((r) => setTimeout(r, DISCOVERY_POLL_MS));
148
+ }
149
+ return null;
150
+ }
151
+ //# sourceMappingURL=pty-bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pty-bridge.js","sourceRoot":"","sources":["../../src/mux/pty-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,MAAM,EAAE,QAAQ,EAAE,GAAG,aAAa,CAAC;AACnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AA6E5E,sCAAsC;AACtC,MAAM,oBAAoB,GAAG,MAAM,CAAC;AACpC,4CAA4C;AAC5C,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAE9B;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAAyB;IAC7D,MAAM,OAAO,GAAG,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,CAA8B,CAAC;IAExE,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC;QAC5B,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,gBAAgB,EAAE,IAAI;KACvB,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9F,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;QAC1B,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACvD,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,SAAS,EAAE;QAC7D,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,IAAI,EAAE,gBAAgB;QACtB,GAAG,EAAE,OAAO,CAAC,GAA6B;KAC3C,CAAC,CAAC;IAEH,MAAM,eAAe,GAAsB,EAAE,CAAC;IAC9C,MAAM,aAAa,GAAsC,EAAE,CAAC;IAC5D,MAAM,gBAAgB,GAAwD,EAAE,CAAC;IAEjF,IAAI,MAAM,GAAG,IAAI,CAAC;IAClB,IAAI,SAA6B,CAAC;IAClC,IAAI,aAAwD,CAAC;IAE7D,yCAAyC;IACzC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAY,EAAE,EAAE;QAC5B,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE;YACxB,KAAK,MAAM,EAAE,IAAI,eAAe;gBAAE,EAAE,EAAE,CAAC;QACzC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG,IAAI,eAAe,EAAE,CAAC;IAE7C,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAwB,EAAE,EAAE;QAClD,MAAM,GAAG,KAAK,CAAC;QACf,SAAS,GAAG,QAAQ,CAAC;QACrB,cAAc,CAAC,KAAK,EAAE,CAAC;QACvB,8DAA8D;QAC9D,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAChC,aAAa,GAAG,IAAI,CAAC;YACrB,KAAK,MAAM,EAAE,IAAI,gBAAgB;gBAAE,EAAE,CAAC,IAAI,CAAC,CAAC;YAC5C,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC;QAC9B,CAAC;QACD,KAAK,MAAM,EAAE,IAAI,aAAa;YAAE,EAAE,CAAC,QAAQ,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,0BAA0B;IAC1B,KAAK,2BAA2B,CAAC,KAAK,CAAC,GAAG,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,EAAE;QACvF,IAAI,CAAC,MAAM;YAAE,OAAO,CAAC,2CAA2C;QAChE,aAAa,GAAG,YAAY,CAAC;QAC7B,KAAK,MAAM,EAAE,IAAI,gBAAgB;YAAE,EAAE,CAAC,YAAY,CAAC,CAAC;QACpD,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,IAAI,QAAQ;YACV,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,IAAI,SAAS;YACX,OAAO,aAAa,EAAE,SAAS,CAAC;QAClC,CAAC;QACD,IAAI,aAAa;YACf,OAAO,aAAa,EAAE,aAAa,CAAC;QACtC,CAAC;QACD,IAAI,KAAK;YACP,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,IAAI,QAAQ;YACV,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,GAAG;YACL,OAAO,KAAK,CAAC,GAAG,CAAC;QACnB,CAAC;QAED,KAAK,CAAC,IAAY;YAChB,IAAI,MAAM;gBAAE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;QAED,MAAM,CAAC,IAAY,EAAE,IAAY;YAC/B,IAAI,MAAM;gBAAE,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACrC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC9B,CAAC;QAED,IAAI;YACF,IAAI,MAAM;gBAAE,KAAK,CAAC,IAAI,EAAE,CAAC;QAC3B,CAAC;QAED,QAAQ,CAAC,QAAoB;YAC3B,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjC,CAAC;QAED,MAAM,CAAC,QAAoC;YACzC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/B,CAAC;QAED,mBAAmB,CAAC,QAAsD;YACxE,uEAAuE;YACvE,IAAI,aAAa,KAAK,SAAS,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC3C,QAAQ,CAAC,aAAa,IAAI,IAAI,CAAC,CAAC;gBAChC,OAAO;YACT,CAAC;YACD,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC;QAED,kBAAkB,CAAC,YAAoC;YACrD,IAAI,aAAa;gBAAE,OAAO,CAAC,mBAAmB;YAC9C,aAAa,GAAG,YAAY,CAAC;YAC7B,KAAK,MAAM,EAAE,IAAI,gBAAgB;gBAAE,EAAE,CAAC,YAAY,CAAC,CAAC;YACpD,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC;QAC9B,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,2BAA2B,CACxC,QAAgB,EAChB,MAAmB;IAEnB,MAAM,WAAW,GAAG,iBAAiB,EAAE,CAAC;IACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,oBAAoB,CAAC;IAEnD,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAChD,MAAM,aAAa,GAAG,uBAAuB,CAAC,WAAW,CAAC,CAAC;QAC3D,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC;QAC5D,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC;QACxB,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}