brosh 0.2.2

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 (200) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +181 -0
  3. package/brosh_brandmark.svg +3 -0
  4. package/brosh_logo.svg +27 -0
  5. package/cli_icon.svg +52 -0
  6. package/dist/client.d.ts +5 -0
  7. package/dist/client.d.ts.map +1 -0
  8. package/dist/client.js +138 -0
  9. package/dist/client.js.map +1 -0
  10. package/dist/index.d.ts +3 -0
  11. package/dist/index.d.ts.map +1 -0
  12. package/dist/index.js +618 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/lib.d.ts +25 -0
  15. package/dist/lib.d.ts.map +1 -0
  16. package/dist/lib.js +28 -0
  17. package/dist/lib.js.map +1 -0
  18. package/dist/mode-selector.d.ts +7 -0
  19. package/dist/mode-selector.d.ts.map +1 -0
  20. package/dist/mode-selector.js +138 -0
  21. package/dist/mode-selector.js.map +1 -0
  22. package/dist/prompts/index.d.ts +3 -0
  23. package/dist/prompts/index.d.ts.map +1 -0
  24. package/dist/prompts/index.js +79 -0
  25. package/dist/prompts/index.js.map +1 -0
  26. package/dist/recording/index.d.ts +4 -0
  27. package/dist/recording/index.d.ts.map +1 -0
  28. package/dist/recording/index.js +3 -0
  29. package/dist/recording/index.js.map +1 -0
  30. package/dist/recording/manager.d.ts +62 -0
  31. package/dist/recording/manager.d.ts.map +1 -0
  32. package/dist/recording/manager.js +123 -0
  33. package/dist/recording/manager.js.map +1 -0
  34. package/dist/recording/recorder.d.ts +95 -0
  35. package/dist/recording/recorder.d.ts.map +1 -0
  36. package/dist/recording/recorder.js +330 -0
  37. package/dist/recording/recorder.js.map +1 -0
  38. package/dist/recording/types.d.ts +65 -0
  39. package/dist/recording/types.d.ts.map +1 -0
  40. package/dist/recording/types.js +2 -0
  41. package/dist/recording/types.js.map +1 -0
  42. package/dist/sandbox/ModeSelector.d.ts +2 -0
  43. package/dist/sandbox/ModeSelector.d.ts.map +1 -0
  44. package/dist/sandbox/ModeSelector.js +2 -0
  45. package/dist/sandbox/ModeSelector.js.map +1 -0
  46. package/dist/sandbox/config.d.ts +46 -0
  47. package/dist/sandbox/config.d.ts.map +1 -0
  48. package/dist/sandbox/config.js +144 -0
  49. package/dist/sandbox/config.js.map +1 -0
  50. package/dist/sandbox/controller.d.ts +72 -0
  51. package/dist/sandbox/controller.d.ts.map +1 -0
  52. package/dist/sandbox/controller.js +208 -0
  53. package/dist/sandbox/controller.js.map +1 -0
  54. package/dist/sandbox/index.d.ts +6 -0
  55. package/dist/sandbox/index.d.ts.map +1 -0
  56. package/dist/sandbox/index.js +4 -0
  57. package/dist/sandbox/index.js.map +1 -0
  58. package/dist/sandbox/mode-prompt.d.ts +10 -0
  59. package/dist/sandbox/mode-prompt.d.ts.map +1 -0
  60. package/dist/sandbox/mode-prompt.js +130 -0
  61. package/dist/sandbox/mode-prompt.js.map +1 -0
  62. package/dist/sandbox/prompt.d.ts +10 -0
  63. package/dist/sandbox/prompt.d.ts.map +1 -0
  64. package/dist/sandbox/prompt.js +434 -0
  65. package/dist/sandbox/prompt.js.map +1 -0
  66. package/dist/server.d.ts +28 -0
  67. package/dist/server.d.ts.map +1 -0
  68. package/dist/server.js +59 -0
  69. package/dist/server.js.map +1 -0
  70. package/dist/terminal/index.d.ts +5 -0
  71. package/dist/terminal/index.d.ts.map +1 -0
  72. package/dist/terminal/index.js +3 -0
  73. package/dist/terminal/index.js.map +1 -0
  74. package/dist/terminal/manager.d.ts +153 -0
  75. package/dist/terminal/manager.d.ts.map +1 -0
  76. package/dist/terminal/manager.js +276 -0
  77. package/dist/terminal/manager.js.map +1 -0
  78. package/dist/terminal/session.d.ts +137 -0
  79. package/dist/terminal/session.d.ts.map +1 -0
  80. package/dist/terminal/session.js +752 -0
  81. package/dist/terminal/session.js.map +1 -0
  82. package/dist/tools/definitions.d.ts +18 -0
  83. package/dist/tools/definitions.d.ts.map +1 -0
  84. package/dist/tools/definitions.js +114 -0
  85. package/dist/tools/definitions.js.map +1 -0
  86. package/dist/tools/getContent.d.ts +32 -0
  87. package/dist/tools/getContent.d.ts.map +1 -0
  88. package/dist/tools/getContent.js +38 -0
  89. package/dist/tools/getContent.js.map +1 -0
  90. package/dist/tools/index.d.ts +4 -0
  91. package/dist/tools/index.d.ts.map +1 -0
  92. package/dist/tools/index.js +49 -0
  93. package/dist/tools/index.js.map +1 -0
  94. package/dist/tools/screenshot.d.ts +20 -0
  95. package/dist/tools/screenshot.d.ts.map +1 -0
  96. package/dist/tools/screenshot.js +28 -0
  97. package/dist/tools/screenshot.js.map +1 -0
  98. package/dist/tools/sendKey.d.ts +31 -0
  99. package/dist/tools/sendKey.d.ts.map +1 -0
  100. package/dist/tools/sendKey.js +38 -0
  101. package/dist/tools/sendKey.js.map +1 -0
  102. package/dist/tools/startRecording.d.ts +68 -0
  103. package/dist/tools/startRecording.d.ts.map +1 -0
  104. package/dist/tools/startRecording.js +111 -0
  105. package/dist/tools/startRecording.js.map +1 -0
  106. package/dist/tools/stopRecording.d.ts +31 -0
  107. package/dist/tools/stopRecording.d.ts.map +1 -0
  108. package/dist/tools/stopRecording.js +76 -0
  109. package/dist/tools/stopRecording.js.map +1 -0
  110. package/dist/tools/type.d.ts +31 -0
  111. package/dist/tools/type.d.ts.map +1 -0
  112. package/dist/tools/type.js +31 -0
  113. package/dist/tools/type.js.map +1 -0
  114. package/dist/transport/gui-protocol.d.ts +163 -0
  115. package/dist/transport/gui-protocol.d.ts.map +1 -0
  116. package/dist/transport/gui-protocol.js +68 -0
  117. package/dist/transport/gui-protocol.js.map +1 -0
  118. package/dist/transport/gui-stream.d.ts +139 -0
  119. package/dist/transport/gui-stream.d.ts.map +1 -0
  120. package/dist/transport/gui-stream.js +440 -0
  121. package/dist/transport/gui-stream.js.map +1 -0
  122. package/dist/transport/index.d.ts +6 -0
  123. package/dist/transport/index.d.ts.map +1 -0
  124. package/dist/transport/index.js +6 -0
  125. package/dist/transport/index.js.map +1 -0
  126. package/dist/transport/socket.d.ts +46 -0
  127. package/dist/transport/socket.d.ts.map +1 -0
  128. package/dist/transport/socket.js +310 -0
  129. package/dist/transport/socket.js.map +1 -0
  130. package/dist/types/mcp-client-info.d.ts +226 -0
  131. package/dist/types/mcp-client-info.d.ts.map +1 -0
  132. package/dist/types/mcp-client-info.js +62 -0
  133. package/dist/types/mcp-client-info.js.map +1 -0
  134. package/dist/ui/index.d.ts +12 -0
  135. package/dist/ui/index.d.ts.map +1 -0
  136. package/dist/ui/index.js +84 -0
  137. package/dist/ui/index.js.map +1 -0
  138. package/dist/utils/env.d.ts +17 -0
  139. package/dist/utils/env.d.ts.map +1 -0
  140. package/dist/utils/env.js +35 -0
  141. package/dist/utils/env.js.map +1 -0
  142. package/dist/utils/keys.d.ts +16 -0
  143. package/dist/utils/keys.d.ts.map +1 -0
  144. package/dist/utils/keys.js +155 -0
  145. package/dist/utils/keys.js.map +1 -0
  146. package/dist/utils/platform.d.ts +16 -0
  147. package/dist/utils/platform.d.ts.map +1 -0
  148. package/dist/utils/platform.js +41 -0
  149. package/dist/utils/platform.js.map +1 -0
  150. package/dist/utils/session-logger.d.ts +31 -0
  151. package/dist/utils/session-logger.d.ts.map +1 -0
  152. package/dist/utils/session-logger.js +125 -0
  153. package/dist/utils/session-logger.js.map +1 -0
  154. package/dist/utils/stats.d.ts +46 -0
  155. package/dist/utils/stats.d.ts.map +1 -0
  156. package/dist/utils/stats.js +89 -0
  157. package/dist/utils/stats.js.map +1 -0
  158. package/dist/utils/version.d.ts +2 -0
  159. package/dist/utils/version.d.ts.map +1 -0
  160. package/dist/utils/version.js +9 -0
  161. package/dist/utils/version.js.map +1 -0
  162. package/logo.png +0 -0
  163. package/package.json +61 -0
  164. package/packages/desktop-electron/THIRD-PARTY-NOTICES +56 -0
  165. package/packages/desktop-electron/build/afterPack.cjs +147 -0
  166. package/packages/desktop-electron/package-lock.json +10071 -0
  167. package/packages/desktop-electron/package.json +170 -0
  168. package/packages/desktop-electron/resources/icons/mac/icon.icns +0 -0
  169. package/packages/desktop-electron/resources/icons/png/1024x1024.png +0 -0
  170. package/packages/desktop-electron/resources/icons/png/128x128.png +0 -0
  171. package/packages/desktop-electron/resources/icons/png/16x16.png +0 -0
  172. package/packages/desktop-electron/resources/icons/png/24x24.png +0 -0
  173. package/packages/desktop-electron/resources/icons/png/256x256.png +0 -0
  174. package/packages/desktop-electron/resources/icons/png/32x32.png +0 -0
  175. package/packages/desktop-electron/resources/icons/png/48x48.png +0 -0
  176. package/packages/desktop-electron/resources/icons/png/512x512.png +0 -0
  177. package/packages/desktop-electron/resources/icons/png/64x64.png +0 -0
  178. package/packages/desktop-electron/resources/icons/win/icon.ico +0 -0
  179. package/packages/desktop-electron/scripts/download-models.js +97 -0
  180. package/packages/desktop-electron/scripts/prepare-sandbox-bins.js +186 -0
  181. package/packages/desktop-electron/tests/main/ai-detection/additionalFunctions.test.ts +224 -0
  182. package/packages/desktop-electron/tests/main/ai-detection/checkOverridePrefix.test.ts +162 -0
  183. package/packages/desktop-electron/tests/main/ai-detection/classifyInput.test.ts +132 -0
  184. package/packages/desktop-electron/tests/main/ai-detection/detectTypos.test.ts +342 -0
  185. package/packages/desktop-electron/tests/main/ai-detection/fixtures/commands.ts +134 -0
  186. package/packages/desktop-electron/tests/main/ai-detection/fixtures/natural-language.ts +133 -0
  187. package/packages/desktop-electron/tests/main/ai-detection/fixtures/typos.ts +123 -0
  188. package/packages/desktop-electron/tests/main/ai-detection/hasValidSubcommand.test.ts +218 -0
  189. package/packages/desktop-electron/tests/main/ai-detection/isCommandNotFound.test.ts +117 -0
  190. package/packages/desktop-electron/tests/main/error-triage/buildTriagePrompt.test.ts +133 -0
  191. package/packages/desktop-electron/tests/main/error-triage/parseTriageResponse.test.ts +123 -0
  192. package/packages/desktop-electron/tests/main/terminal-bridge/battery-optimization.test.ts +243 -0
  193. package/packages/desktop-electron/tests/main/terminal-bridge/command-fast-track.test.ts +292 -0
  194. package/packages/desktop-electron/tests/main/terminal-bridge/default-cwd.test.ts +70 -0
  195. package/packages/desktop-electron/tests/setup.ts +274 -0
  196. package/packages/desktop-electron/tsconfig.json +18 -0
  197. package/packages/desktop-electron/tsconfig.main.json +20 -0
  198. package/packages/desktop-electron/vite.config.ts +19 -0
  199. package/packages/desktop-electron/vitest.config.ts +18 -0
  200. package/tsconfig.json +19 -0
package/dist/index.js ADDED
@@ -0,0 +1,618 @@
1
+ #!/usr/bin/env node
2
+ import * as fs from "fs";
3
+ import { createRequire } from "module";
4
+ import { startMcpClientMode } from "./client.js";
5
+ import { TerminalManager } from "./terminal/index.js";
6
+ import { createToolProxyServer, checkSocketAndWarn, GUIOutputStream, isGuiMessageToBackend } from "./transport/index.js";
7
+ import { getBanner } from "./ui/index.js";
8
+ import { getDefaultSocketPath, getDefaultShell } from "./utils/platform.js";
9
+ import { getEnv } from "./utils/env.js";
10
+ import { SandboxController, loadConfigFromFile, promptForPermissions, } from "./sandbox/index.js";
11
+ import { promptForMode } from "./sandbox/mode-prompt.js";
12
+ const require = createRequire(import.meta.url);
13
+ const { version } = require("../package.json");
14
+ // Default socket path
15
+ const DEFAULT_SOCKET_PATH = getDefaultSocketPath();
16
+ // Parse command line arguments
17
+ const args = process.argv.slice(2);
18
+ const options = {};
19
+ for (let i = 0; i < args.length; i++) {
20
+ const arg = args[i];
21
+ const next = args[i + 1];
22
+ switch (arg) {
23
+ case "--cols":
24
+ if (next) {
25
+ options.cols = parseInt(next, 10);
26
+ i++;
27
+ }
28
+ break;
29
+ case "--rows":
30
+ if (next) {
31
+ options.rows = parseInt(next, 10);
32
+ i++;
33
+ }
34
+ break;
35
+ case "--shell":
36
+ if (next) {
37
+ options.shell = next;
38
+ i++;
39
+ }
40
+ break;
41
+ case "--socket":
42
+ if (next) {
43
+ options.socket = next;
44
+ i++;
45
+ }
46
+ break;
47
+ case "--sandbox":
48
+ options.sandbox = true;
49
+ break;
50
+ case "--sandbox-config":
51
+ if (next) {
52
+ options.sandboxConfig = next;
53
+ options.sandbox = true; // Implicitly enable sandbox
54
+ i++;
55
+ }
56
+ break;
57
+ case "--record":
58
+ // Support bare --record (defaults to 'always')
59
+ if (!next || next.startsWith('-')) {
60
+ options.record = 'always';
61
+ }
62
+ else if (['always', 'on-failure', 'off'].includes(next)) {
63
+ options.record = next;
64
+ i++;
65
+ }
66
+ else {
67
+ // Unknown value, treat as bare --record
68
+ options.record = 'always';
69
+ }
70
+ break;
71
+ case "--record-dir":
72
+ if (next) {
73
+ options.recordDir = next;
74
+ i++;
75
+ }
76
+ break;
77
+ case "--record-format":
78
+ if (next) {
79
+ options.recordFormat = next;
80
+ i++;
81
+ }
82
+ break;
83
+ case "--idle-time-limit":
84
+ if (next) {
85
+ options.idleTimeLimit = parseFloat(next);
86
+ i++;
87
+ }
88
+ break;
89
+ case "--max-duration":
90
+ if (next) {
91
+ options.maxDuration = parseFloat(next);
92
+ i++;
93
+ }
94
+ break;
95
+ case "--inactivity-timeout":
96
+ if (next) {
97
+ options.inactivityTimeout = parseFloat(next);
98
+ i++;
99
+ }
100
+ break;
101
+ case "--gui-mode":
102
+ options.guiMode = true;
103
+ break;
104
+ case "--prompt-mode-only":
105
+ options.promptModeOnly = true;
106
+ break;
107
+ case "--version":
108
+ case "-v":
109
+ console.log(`brosh v${version}`);
110
+ process.exit(0);
111
+ case "--help":
112
+ case "-h":
113
+ console.log(`
114
+ brosh v${version} — AI-native terminal emulator
115
+
116
+ A modern terminal with built-in AI integration via the Model Context
117
+ Protocol (MCP), session recording, and sandboxed execution.
118
+
119
+ Usage: brosh [options]
120
+
121
+ Options:
122
+ --cols <number> Terminal width (default: auto or 120)
123
+ --rows <number> Terminal height (default: auto or 40)
124
+ --shell <path> Shell to use (default: $SHELL or bash)
125
+ --socket <path> MCP socket path (default: ${DEFAULT_SOCKET_PATH})
126
+ --sandbox Enable sandbox mode
127
+ --sandbox-config <path> Load sandbox config from JSON file
128
+ --gui-mode Enable GUI protocol mode (for desktop app)
129
+ --version, -v Show version
130
+ --help, -h Show this help
131
+
132
+ Recording:
133
+ --record [mode] Record session (modes: always, on-failure, off)
134
+ --record-dir <dir> Output directory (default: ~/.local/state/brosh/recordings)
135
+ --record-format <f> Format (default: v2, asciicast v2)
136
+ --idle-time-limit <sec> Max idle time in recordings (default: 2s)
137
+ --max-duration <sec> Max recording length (default: 3600s)
138
+ --inactivity-timeout <sec> Auto-stop after silence (default: 600s)
139
+
140
+ Environment Variables:
141
+ BROSH_RECORD_DIR Default recording output directory
142
+
143
+ How It Works:
144
+ brosh runs as an interactive terminal that exposes a Unix socket for
145
+ AI tools. Any MCP-compatible client (Claude Code, Claude Desktop, etc.)
146
+ can connect and observe, type, take screenshots, and run commands in
147
+ your terminal — with your full environment, tools, and context.
148
+
149
+ TTY detected → Interactive mode (shell + MCP socket)
150
+ No TTY → MCP client mode (proxies to running session)
151
+
152
+ Getting Started:
153
+ brosh Start a terminal session
154
+ brosh --sandbox Start with filesystem/network restrictions
155
+ brosh --record Start with session recording
156
+
157
+ Then add to your MCP client config (e.g. Claude Code):
158
+ {
159
+ "mcpServers": {
160
+ "terminal": { "command": "brosh" }
161
+ }
162
+ }
163
+
164
+ Sandbox Mode:
165
+ Restricts filesystem and network access. Without --sandbox-config,
166
+ an interactive prompt lets you choose permissions.
167
+
168
+ Example config (~/.brosh-sandbox.json):
169
+ {
170
+ "filesystem": {
171
+ "readWrite": [".", "/tmp"],
172
+ "readOnly": ["~"],
173
+ "blocked": ["~/.ssh", "~/.aws"]
174
+ },
175
+ "network": { "mode": "all" }
176
+ }
177
+
178
+ Recording:
179
+ Sessions are saved as asciicast v2 files, playable with asciinema.
180
+
181
+ brosh --record
182
+ brosh --record=on-failure --idle-time-limit=5
183
+ brosh --record --record-dir=./recordings
184
+ `);
185
+ process.exit(0);
186
+ }
187
+ }
188
+ async function main() {
189
+ const socketPath = options.socket || DEFAULT_SOCKET_PATH;
190
+ const isInteractive = process.stdin.isTTY;
191
+ // Prevent recursive invocation - only for interactive mode
192
+ // MCP client mode (non-TTY) is allowed from within a brosh session
193
+ // because it connects to a different socket as a proxy
194
+ if (getEnv('BROSH', 'TERMINAL_MCP') === '1' && isInteractive) {
195
+ console.error('Error: brosh cannot be run from within itself.\n' +
196
+ 'You are already inside a brosh session.\n\n' +
197
+ 'To use MCP tools, configure your MCP client to connect to this session.');
198
+ process.exit(1);
199
+ }
200
+ // Prompt-only mode: Just show mode selector and output result
201
+ // Used by GUI wrappers to get user's mode choice before creating terminal
202
+ if (options.promptModeOnly) {
203
+ try {
204
+ const mode = await promptForMode();
205
+ // Output result as JSON for parent process to read
206
+ console.log(JSON.stringify({ mode }));
207
+ process.exit(0);
208
+ }
209
+ catch (error) {
210
+ if (error instanceof Error && error.message === 'Cancelled by user') {
211
+ console.log(JSON.stringify({ mode: null, cancelled: true }));
212
+ process.exit(0);
213
+ }
214
+ throw error;
215
+ }
216
+ }
217
+ // GUI mode takes priority - used by Electron/desktop wrappers
218
+ if (options.guiMode) {
219
+ await startGuiMode();
220
+ }
221
+ else if (isInteractive) {
222
+ // Interactive mode: Shell on stdin/stdout, tool proxy on Unix socket
223
+ await startInteractiveMode(socketPath);
224
+ }
225
+ else {
226
+ // MCP client mode: Connect to socket, serve MCP over stdio
227
+ await startMcpClientMode(socketPath);
228
+ }
229
+ }
230
+ async function startInteractiveMode(socketPath) {
231
+ // Get terminal size from environment or use defaults
232
+ const cols = options.cols ?? (process.stdout.columns || 120);
233
+ const rows = options.rows ?? (process.stdout.rows || 40);
234
+ const shell = options.shell || getDefaultShell();
235
+ // 1. Show mode selection prompt (unless --sandbox flag overrides)
236
+ let mode;
237
+ if (options.sandbox) {
238
+ mode = 'sandbox';
239
+ }
240
+ else {
241
+ try {
242
+ mode = await promptForMode();
243
+ }
244
+ catch (error) {
245
+ if (error instanceof Error && error.message === 'Cancelled by user') {
246
+ console.log("[brosh] Cancelled.");
247
+ process.exit(0);
248
+ }
249
+ throw error;
250
+ }
251
+ }
252
+ // Initialize sandbox if enabled
253
+ let sandboxController;
254
+ let sandboxEnabled = false;
255
+ if (mode === 'sandbox') {
256
+ sandboxController = new SandboxController();
257
+ // Check platform support and dependencies BEFORE showing the modal
258
+ if (!sandboxController.isSupported()) {
259
+ const platform = sandboxController.getPlatform();
260
+ if (platform === "win32") {
261
+ console.error("[brosh] Error: Sandbox mode is not supported on Windows.");
262
+ }
263
+ else {
264
+ console.error(`[brosh] Error: Sandbox mode is not supported on platform '${platform}'.`);
265
+ }
266
+ console.error("[brosh] Please run without the --sandbox flag.");
267
+ process.exit(1);
268
+ }
269
+ // Check Linux-specific dependencies
270
+ const depCheck = sandboxController.checkLinuxDependencies();
271
+ if (!depCheck.supported) {
272
+ console.error(`[brosh] Error: Sandbox dependencies not available.`);
273
+ console.error(`[brosh] Missing: ${depCheck.message}`);
274
+ console.error("");
275
+ console.error("To install on Arch Linux:");
276
+ console.error(" sudo pacman -S bubblewrap socat");
277
+ console.error("");
278
+ console.error("To install on Debian/Ubuntu:");
279
+ console.error(" sudo apt install bubblewrap socat");
280
+ console.error("");
281
+ console.error("Or run without the --sandbox flag.");
282
+ process.exit(1);
283
+ }
284
+ // Determine permissions
285
+ let permissions;
286
+ if (options.sandboxConfig) {
287
+ try {
288
+ permissions = loadConfigFromFile(options.sandboxConfig);
289
+ console.log(`[brosh] Loaded sandbox config from ${options.sandboxConfig}`);
290
+ }
291
+ catch (error) {
292
+ console.error(`[brosh] Failed to load sandbox config: ${error}`);
293
+ process.exit(1);
294
+ }
295
+ }
296
+ else {
297
+ // Interactive permission prompt
298
+ try {
299
+ permissions = await promptForPermissions();
300
+ }
301
+ catch (error) {
302
+ if (error instanceof Error && error.message === "cancelled") {
303
+ console.log("[brosh] Cancelled.");
304
+ process.exit(0);
305
+ }
306
+ throw error;
307
+ }
308
+ }
309
+ // Initialize sandbox
310
+ const status = await sandboxController.initialize(permissions);
311
+ sandboxEnabled = status.enabled;
312
+ if (status.enabled) {
313
+ console.log(`[brosh] Sandbox enabled (${status.platform})`);
314
+ }
315
+ else {
316
+ // If we get here, something unexpected failed during initialization
317
+ console.error(`[brosh] Error: Failed to initialize sandbox: ${status.reason}`);
318
+ console.error("[brosh] Please run without the --sandbox flag or fix the issue above.");
319
+ process.exit(1);
320
+ }
321
+ }
322
+ // Generate startup banner
323
+ const startupBanner = getBanner({
324
+ socketPath,
325
+ cols,
326
+ rows,
327
+ shell,
328
+ sandboxEnabled,
329
+ });
330
+ // Create terminal manager (prompt customization handled in session.ts)
331
+ const manager = new TerminalManager({
332
+ cols,
333
+ rows,
334
+ shell: options.shell,
335
+ startupBanner,
336
+ sandboxController,
337
+ record: options.record,
338
+ recordDir: options.recordDir,
339
+ recordFormat: options.recordFormat,
340
+ idleTimeLimit: options.idleTimeLimit,
341
+ maxDuration: options.maxDuration,
342
+ inactivityTimeout: options.inactivityTimeout,
343
+ });
344
+ // Get the session and set up interactive I/O
345
+ const session = await manager.initSession();
346
+ // Track if we've shown the banner (for Windows, show after shell init)
347
+ let bannerShown = false;
348
+ const isWindows = process.platform === "win32";
349
+ // Pipe PTY output to stdout
350
+ session.onData((data) => {
351
+ process.stdout.write(data);
352
+ // On Windows, show banner after first prompt appears
353
+ if (isWindows && !bannerShown && data.includes("\uDB84\uDC55")) {
354
+ bannerShown = true;
355
+ process.stdout.write("\n" + startupBanner + "\n");
356
+ // Send Enter to get a fresh prompt
357
+ session.write("\r");
358
+ }
359
+ });
360
+ // On non-Windows, banner is shown via shell rc file
361
+ if (!isWindows) {
362
+ bannerShown = true;
363
+ }
364
+ // Handle PTY exit
365
+ session.onExit(async (code) => {
366
+ // Finalize recordings and get results
367
+ const recordings = await manager.finalizeRecordings(code);
368
+ console.log(`\n[brosh] Shell exited with code ${code}`);
369
+ // Show recording info if any were saved
370
+ const savedRecordings = recordings.filter(r => r.saved);
371
+ if (savedRecordings.length > 0) {
372
+ console.log('\nRecordings saved:');
373
+ for (const rec of savedRecordings) {
374
+ console.log(` ${rec.path}`);
375
+ }
376
+ console.log('\nPlay with: asciinema play <file>');
377
+ console.log('Install: pip install asciinema or brew install asciinema');
378
+ }
379
+ cleanup();
380
+ process.exit(code);
381
+ });
382
+ // Set up raw mode for stdin if it's a TTY
383
+ if (process.stdin.isTTY) {
384
+ process.stdin.setRawMode(true);
385
+ }
386
+ process.stdin.resume();
387
+ // Pipe stdin directly to PTY
388
+ process.stdin.on("data", (data) => {
389
+ session.write(data.toString());
390
+ });
391
+ // Handle terminal resize
392
+ process.stdout.on("resize", () => {
393
+ const newCols = process.stdout.columns || cols;
394
+ const newRows = process.stdout.rows || rows;
395
+ session.resize(newCols, newRows);
396
+ });
397
+ // Check if another brosh instance is using the socket and warn
398
+ await checkSocketAndWarn(socketPath);
399
+ // Start tool proxy socket server
400
+ const socketServer = createToolProxyServer(socketPath, manager);
401
+ // Cleanup function (sync version for exit handler)
402
+ function cleanup() {
403
+ manager.dispose();
404
+ socketServer.close();
405
+ try {
406
+ fs.unlinkSync(socketPath);
407
+ }
408
+ catch {
409
+ // Ignore
410
+ }
411
+ }
412
+ // Async cleanup that also cleans up sandbox resources
413
+ async function cleanupAsync() {
414
+ await manager.disposeAsync();
415
+ socketServer.close();
416
+ try {
417
+ fs.unlinkSync(socketPath);
418
+ }
419
+ catch {
420
+ // Ignore
421
+ }
422
+ }
423
+ // Handle signals
424
+ process.on("SIGINT", () => {
425
+ // Pass Ctrl+C to the shell instead of exiting
426
+ session.write("\x03");
427
+ });
428
+ process.on("SIGTERM", () => {
429
+ cleanupAsync().then(() => process.exit(0));
430
+ });
431
+ process.on("exit", () => {
432
+ cleanup();
433
+ });
434
+ }
435
+ /**
436
+ * GUI Mode: Streams JSON protocol over stdin/stdout for GUI applications.
437
+ * Used by Electron/Tauri wrappers that embed brosh.
438
+ *
439
+ * Protocol:
440
+ * - Input (stdin): Newline-delimited JSON messages (GuiMessageToBackend)
441
+ * - Output (stdout): Newline-delimited JSON messages (GuiMessageToFrontend)
442
+ * - Stderr: Error/debug logging
443
+ */
444
+ async function startGuiMode() {
445
+ const cols = options.cols ?? 120;
446
+ const rows = options.rows ?? 40;
447
+ const shell = options.shell || getDefaultShell();
448
+ // 1. Show mode selection prompt FIRST (outputs ANSI codes to stdout)
449
+ let mode;
450
+ if (options.sandbox) {
451
+ mode = 'sandbox';
452
+ }
453
+ else {
454
+ try {
455
+ mode = await promptForMode();
456
+ }
457
+ catch (error) {
458
+ if (error instanceof Error && error.message === 'Cancelled by user') {
459
+ console.log("[brosh] Cancelled.");
460
+ process.exit(0);
461
+ }
462
+ throw error;
463
+ }
464
+ }
465
+ // 2. If sandbox mode, get permissions and initialize
466
+ let sandboxController;
467
+ if (mode === 'sandbox') {
468
+ sandboxController = new SandboxController();
469
+ // Check platform support
470
+ if (!sandboxController.isSupported()) {
471
+ const platform = sandboxController.getPlatform();
472
+ if (platform === "win32") {
473
+ console.error("[brosh] Error: Sandbox mode is not supported on Windows.");
474
+ }
475
+ else {
476
+ console.error(`[brosh] Error: Sandbox mode is not supported on platform '${platform}'.`);
477
+ }
478
+ console.error("[brosh] Please run without the --sandbox flag.");
479
+ process.exit(1);
480
+ }
481
+ // Check Linux-specific dependencies
482
+ const depCheck = sandboxController.checkLinuxDependencies();
483
+ if (!depCheck.supported) {
484
+ console.error(`[brosh] Error: Sandbox dependencies not available.`);
485
+ console.error(`[brosh] Missing: ${depCheck.message}`);
486
+ console.error("");
487
+ console.error("To install on Arch Linux:");
488
+ console.error(" sudo pacman -S bubblewrap socat");
489
+ console.error("");
490
+ console.error("To install on Debian/Ubuntu:");
491
+ console.error(" sudo apt install bubblewrap socat");
492
+ console.error("");
493
+ console.error("Or run without the --sandbox flag.");
494
+ process.exit(1);
495
+ }
496
+ // Determine permissions
497
+ let permissions;
498
+ if (options.sandboxConfig) {
499
+ try {
500
+ permissions = loadConfigFromFile(options.sandboxConfig);
501
+ console.log(`[brosh] Loaded sandbox config from ${options.sandboxConfig}`);
502
+ }
503
+ catch (error) {
504
+ console.error(`[brosh] Failed to load sandbox config: ${error}`);
505
+ process.exit(1);
506
+ }
507
+ }
508
+ else {
509
+ // Interactive permission prompt (will also render in xterm.js)
510
+ try {
511
+ permissions = await promptForPermissions();
512
+ }
513
+ catch (error) {
514
+ if (error instanceof Error && error.message === "cancelled") {
515
+ console.log("[brosh] Cancelled.");
516
+ process.exit(0);
517
+ }
518
+ throw error;
519
+ }
520
+ }
521
+ // Initialize sandbox
522
+ const status = await sandboxController.initialize(permissions);
523
+ if (status.enabled) {
524
+ console.log(`[brosh] Sandbox enabled (${status.platform})`);
525
+ }
526
+ else {
527
+ console.error(`[brosh] Error: Failed to initialize sandbox: ${status.reason}`);
528
+ console.error("[brosh] Please run without the --sandbox flag or fix the issue above.");
529
+ process.exit(1);
530
+ }
531
+ }
532
+ // 3. NOW start GUI protocol
533
+ // Create terminal manager
534
+ const manager = new TerminalManager({
535
+ cols,
536
+ rows,
537
+ shell: options.shell,
538
+ sandboxController,
539
+ record: options.record,
540
+ recordDir: options.recordDir,
541
+ recordFormat: options.recordFormat,
542
+ idleTimeLimit: options.idleTimeLimit,
543
+ maxDuration: options.maxDuration,
544
+ inactivityTimeout: options.inactivityTimeout,
545
+ });
546
+ // Create GUI output stream
547
+ const guiStream = new GUIOutputStream();
548
+ guiStream.attachManager(manager);
549
+ // Add a client for stdout communication
550
+ const clientId = guiStream.addClient((message) => {
551
+ // Write JSON message to stdout (newline-delimited)
552
+ process.stdout.write(JSON.stringify(message) + "\n");
553
+ });
554
+ // Handle error events
555
+ guiStream.on("error", (error) => {
556
+ console.error("[gui-mode] Stream error:", error.message);
557
+ });
558
+ // Parse incoming JSON messages from stdin
559
+ let buffer = "";
560
+ process.stdin.setEncoding("utf8");
561
+ process.stdin.on("data", async (chunk) => {
562
+ buffer += chunk;
563
+ // Process complete lines
564
+ let newlineIndex;
565
+ while ((newlineIndex = buffer.indexOf("\n")) !== -1) {
566
+ const line = buffer.slice(0, newlineIndex).trim();
567
+ buffer = buffer.slice(newlineIndex + 1);
568
+ if (line.length === 0)
569
+ continue;
570
+ try {
571
+ const message = JSON.parse(line);
572
+ if (isGuiMessageToBackend(message)) {
573
+ await guiStream.handleMessage(clientId, message);
574
+ }
575
+ else {
576
+ console.error("[gui-mode] Invalid message format:", line);
577
+ }
578
+ }
579
+ catch (error) {
580
+ console.error("[gui-mode] Failed to parse message:", line);
581
+ }
582
+ }
583
+ });
584
+ process.stdin.on("end", () => {
585
+ console.error("[gui-mode] stdin closed, shutting down");
586
+ cleanup();
587
+ process.exit(0);
588
+ });
589
+ // Cleanup function
590
+ function cleanup() {
591
+ guiStream.dispose();
592
+ manager.dispose();
593
+ }
594
+ // Handle signals
595
+ process.on("SIGINT", () => {
596
+ cleanup();
597
+ process.exit(0);
598
+ });
599
+ process.on("SIGTERM", () => {
600
+ cleanup();
601
+ process.exit(0);
602
+ });
603
+ process.on("exit", () => {
604
+ cleanup();
605
+ });
606
+ // Send ready message
607
+ const readyMessage = {
608
+ type: "session-list",
609
+ sessions: [],
610
+ };
611
+ process.stdout.write(JSON.stringify(readyMessage) + "\n");
612
+ console.error(`[gui-mode] Ready. Shell: ${shell}, Size: ${cols}x${rows}`);
613
+ }
614
+ main().catch((error) => {
615
+ console.error("Failed to start:", error);
616
+ process.exit(1);
617
+ });
618
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/lib.d.ts ADDED
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Library Exports
3
+ *
4
+ * This file exports all public APIs for use as a library.
5
+ * The main index.ts is the CLI entry point; this file is for programmatic usage.
6
+ */
7
+ export { TerminalSession, TerminalManager } from "./terminal/index.js";
8
+ export type { TerminalSessionOptions, ScreenshotResult, TerminalManagerOptions, CreateSessionOptions, ManagedSession, } from "./terminal/index.js";
9
+ export { GUIOutputStream, createGUIOutputStream, } from "./transport/index.js";
10
+ export type { GuiClientCallback, GUIOutputStreamEvents, } from "./transport/index.js";
11
+ export { encodeData, decodeData, isGuiMessageToBackend, isGuiMessageToFrontend, } from "./transport/index.js";
12
+ export type { GuiMessageToBackend, GuiMessageToFrontend, GuiInputMessage, GuiCreateSessionMessage, GuiCloseSessionMessage, GuiResizeMessage, GuiStartRecordingMessage, GuiStopRecordingMessage, GuiGetContentMessage, GuiListSessionsMessage, BackendOutputMessage, BackendSessionCreatedMessage, BackendSessionClosedMessage, BackendResizeMessage, BackendRecordingStartedMessage, BackendRecordingStoppedMessage, BackendContentMessage, BackendSessionListMessage, BackendErrorMessage, } from "./transport/index.js";
13
+ export { SocketTransport, createSocketServer, createToolProxyServer, isSocketInUse, checkSocketAndWarn, } from "./transport/index.js";
14
+ export { RecordingManager } from "./recording/index.js";
15
+ export type { RecordingMode, RecordingFormat, RecordingOptions, RecordingMetadata, } from "./recording/index.js";
16
+ export { getDefaultShell, getDefaultSocketPath, getDefaultRecordDir } from "./utils/platform.js";
17
+ export { getKeySequence, KEY_SEQUENCES, getAvailableKeys } from "./utils/keys.js";
18
+ export { promptForMode } from "./sandbox/mode-prompt.js";
19
+ export { promptForPermissions } from "./sandbox/prompt.js";
20
+ export { SandboxController, loadConfigFromFile, DEFAULT_PERMISSIONS } from "./sandbox/index.js";
21
+ export type { SandboxPermissions } from "./sandbox/index.js";
22
+ export { ClientInfoSchema, RuntimeInfoSchema, CapabilitiesSchema, SessionMetadataSchema, ObservabilitySchema, ExtendedClientInfoSchema, generateClientId, } from "./types/mcp-client-info.js";
23
+ export type { ClientInfo, RuntimeInfo, Capabilities, SessionMetadata, Observability, ExtendedClientInfo, TrackedClient, SessionLogEntry, SessionConnectEntry, SessionDisconnectEntry, SessionToolCallEntry, } from "./types/mcp-client-info.js";
24
+ export { SessionLogger } from "./utils/session-logger.js";
25
+ //# sourceMappingURL=lib.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACvE,YAAY,EACV,sBAAsB,EACtB,gBAAgB,EAChB,sBAAsB,EACtB,oBAAoB,EACpB,cAAc,GACf,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,eAAe,EACf,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,UAAU,EACV,UAAU,EACV,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,EACf,uBAAuB,EACvB,sBAAsB,EACtB,gBAAgB,EAChB,wBAAwB,EACxB,uBAAuB,EACvB,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,4BAA4B,EAC5B,2BAA2B,EAC3B,oBAAoB,EACpB,8BAA8B,EAC9B,8BAA8B,EAC9B,qBAAqB,EACrB,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,qBAAqB,EACrB,aAAa,EACb,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,YAAY,EACV,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACjG,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGlF,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAChG,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAG7D,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,wBAAwB,EACxB,gBAAgB,GACjB,MAAM,4BAA4B,CAAC;AACpC,YAAY,EACV,UAAU,EACV,WAAW,EACX,YAAY,EACZ,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC"}