codebuff 1.0.256 → 1.0.258

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 (124) hide show
  1. package/dist/background-process-manager.d.ts +50 -0
  2. package/dist/background-process-manager.js +359 -0
  3. package/dist/background-process-manager.js.map +1 -0
  4. package/dist/browser-runner.d.ts +35 -0
  5. package/dist/browser-runner.js +680 -0
  6. package/dist/browser-runner.js.map +1 -0
  7. package/dist/chat-storage.d.ts +2 -0
  8. package/dist/chat-storage.js +93 -0
  9. package/dist/chat-storage.js.map +1 -0
  10. package/dist/checkpoints/checkpoint-manager.d.ts +94 -0
  11. package/dist/checkpoints/checkpoint-manager.js +280 -0
  12. package/dist/checkpoints/checkpoint-manager.js.map +1 -0
  13. package/dist/checkpoints/file-manager.d.ts +72 -0
  14. package/dist/checkpoints/file-manager.js +294 -0
  15. package/dist/checkpoints/file-manager.js.map +1 -0
  16. package/dist/cli-handlers/api-key.d.ts +25 -0
  17. package/dist/cli-handlers/api-key.js +66 -0
  18. package/dist/cli-handlers/api-key.js.map +1 -0
  19. package/dist/cli-handlers/checkpoint.d.ts +18 -0
  20. package/dist/cli-handlers/checkpoint.js +195 -0
  21. package/dist/cli-handlers/checkpoint.js.map +1 -0
  22. package/dist/cli-handlers/diff.d.ts +2 -0
  23. package/dist/cli-handlers/diff.js +31 -0
  24. package/dist/cli-handlers/diff.js.map +1 -0
  25. package/dist/cli-handlers/easter-egg.d.ts +1 -0
  26. package/dist/cli-handlers/easter-egg.js +126 -0
  27. package/dist/cli-handlers/easter-egg.js.map +1 -0
  28. package/dist/cli-handlers/inititalization-flow.d.ts +1 -0
  29. package/dist/cli-handlers/inititalization-flow.js +24 -0
  30. package/dist/cli-handlers/inititalization-flow.js.map +1 -0
  31. package/dist/cli.d.ts +44 -0
  32. package/dist/cli.js +485 -0
  33. package/dist/cli.js.map +1 -0
  34. package/dist/client.d.ts +151 -0
  35. package/dist/client.js +833 -0
  36. package/dist/client.js.map +1 -0
  37. package/dist/common/constants/analytics-events.d.ts +2 -1
  38. package/dist/common/constants/analytics-events.js +2 -1
  39. package/dist/common/constants/analytics-events.js.map +1 -1
  40. package/dist/config.d.ts +4 -0
  41. package/dist/config.js +12 -0
  42. package/dist/config.js.map +1 -0
  43. package/dist/create-template-project.d.ts +1 -0
  44. package/dist/create-template-project.js +107 -0
  45. package/dist/create-template-project.js.map +1 -0
  46. package/dist/credentials.d.ts +4 -0
  47. package/dist/credentials.js +38 -0
  48. package/dist/credentials.js.map +1 -0
  49. package/dist/dev-process-manager.d.ts +10 -0
  50. package/dist/dev-process-manager.js +54 -0
  51. package/dist/dev-process-manager.js.map +1 -0
  52. package/dist/display.d.ts +9 -0
  53. package/dist/display.js +68 -0
  54. package/dist/display.js.map +1 -0
  55. package/dist/fingerprint.d.ts +1 -0
  56. package/dist/fingerprint.js +48 -0
  57. package/dist/fingerprint.js.map +1 -0
  58. package/dist/index.d.ts +2 -0
  59. package/dist/index.js +119 -0
  60. package/dist/index.js.map +1 -0
  61. package/dist/menu.d.ts +3 -0
  62. package/dist/menu.js +126 -0
  63. package/dist/menu.js.map +1 -0
  64. package/dist/project-files.d.ts +114 -0
  65. package/dist/project-files.js +513 -0
  66. package/dist/project-files.js.map +1 -0
  67. package/dist/startup-process-handler.d.ts +2 -0
  68. package/dist/startup-process-handler.js +21 -0
  69. package/dist/startup-process-handler.js.map +1 -0
  70. package/dist/tool-handlers.d.ts +28 -0
  71. package/dist/tool-handlers.js +240 -0
  72. package/dist/tool-handlers.js.map +1 -0
  73. package/dist/types.d.ts +15 -0
  74. package/dist/types.js +3 -0
  75. package/dist/types.js.map +1 -0
  76. package/dist/update-codebuff.d.ts +1 -0
  77. package/dist/update-codebuff.js +160 -0
  78. package/dist/update-codebuff.js.map +1 -0
  79. package/dist/utils/__tests__/background-process-manager.test.d.ts +1 -0
  80. package/dist/utils/__tests__/background-process-manager.test.js +289 -0
  81. package/dist/utils/__tests__/background-process-manager.test.js.map +1 -0
  82. package/dist/utils/__tests__/tool-renderers.test.d.ts +1 -0
  83. package/dist/utils/__tests__/tool-renderers.test.js +51 -0
  84. package/dist/utils/__tests__/tool-renderers.test.js.map +1 -0
  85. package/dist/utils/__tests__/xml-stream-parser.test.d.ts +1 -0
  86. package/dist/utils/__tests__/xml-stream-parser.test.js +229 -0
  87. package/dist/utils/__tests__/xml-stream-parser.test.js.map +1 -0
  88. package/dist/utils/analytics.d.ts +6 -0
  89. package/dist/utils/analytics.js +75 -0
  90. package/dist/utils/analytics.js.map +1 -0
  91. package/dist/utils/detect-shell.d.ts +1 -0
  92. package/dist/utils/detect-shell.js +60 -0
  93. package/dist/utils/detect-shell.js.map +1 -0
  94. package/dist/utils/git.d.ts +1 -0
  95. package/dist/utils/git.js +23 -0
  96. package/dist/utils/git.js.map +1 -0
  97. package/dist/utils/logger.d.ts +21 -0
  98. package/dist/utils/logger.js +105 -0
  99. package/dist/utils/logger.js.map +1 -0
  100. package/dist/utils/spinner.d.ts +11 -0
  101. package/dist/utils/spinner.js +87 -0
  102. package/dist/utils/spinner.js.map +1 -0
  103. package/dist/utils/system-info.d.ts +8 -0
  104. package/dist/utils/system-info.js +22 -0
  105. package/dist/utils/system-info.js.map +1 -0
  106. package/dist/utils/terminal.d.ts +43 -0
  107. package/dist/utils/terminal.js +493 -0
  108. package/dist/utils/terminal.js.map +1 -0
  109. package/dist/utils/tool-renderers.d.ts +16 -0
  110. package/dist/utils/tool-renderers.js +148 -0
  111. package/dist/utils/tool-renderers.js.map +1 -0
  112. package/dist/utils/xml-stream-parser.d.ts +9 -0
  113. package/dist/utils/xml-stream-parser.js +128 -0
  114. package/dist/utils/xml-stream-parser.js.map +1 -0
  115. package/dist/web-scraper.d.ts +3 -0
  116. package/dist/web-scraper.js +57 -0
  117. package/dist/web-scraper.js.map +1 -0
  118. package/dist/workers/checkpoint-worker.d.ts +1 -0
  119. package/dist/workers/checkpoint-worker.js +48 -0
  120. package/dist/workers/checkpoint-worker.js.map +1 -0
  121. package/dist/workers/project-context.d.ts +1 -0
  122. package/dist/workers/project-context.js +17 -0
  123. package/dist/workers/project-context.js.map +1 -0
  124. package/package.json +1 -1
@@ -0,0 +1,493 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.runCommandPty = exports.runTerminalCommand = exports.resetShell = exports.recreateShell = exports.isCommandRunning = exports.persistentProcess = void 0;
30
+ exports.runBackgroundCommand = runBackgroundCommand;
31
+ exports.killAndResetPersistentProcess = killAndResetPersistentProcess;
32
+ const assert_1 = __importDefault(require("assert"));
33
+ const child_process_1 = require("child_process");
34
+ const fs_1 = require("fs");
35
+ const os = __importStar(require("os"));
36
+ const path_1 = __importStar(require("path"));
37
+ const analytics_events_1 = require("../common/constants/analytics-events");
38
+ const array_1 = require("../common/util/array");
39
+ const string_1 = require("../common/util/string");
40
+ const picocolors_1 = require("picocolors");
41
+ const background_process_manager_1 = require("../background-process-manager");
42
+ const project_files_1 = require("../project-files");
43
+ const analytics_1 = require("./analytics");
44
+ const detect_shell_1 = require("./detect-shell");
45
+ let pty;
46
+ const tempConsoleError = console.error;
47
+ console.error = () => { };
48
+ try {
49
+ pty = require('@homebridge/node-pty-prebuilt-multiarch');
50
+ }
51
+ catch (error) {
52
+ }
53
+ finally {
54
+ console.error = tempConsoleError;
55
+ }
56
+ const COMMAND_OUTPUT_LIMIT = 10_000;
57
+ const promptIdentifier = '@36261@';
58
+ const createPersistantProcess = (dir) => {
59
+ if (pty && process.env.NODE_ENV !== 'test') {
60
+ const isWindows = os.platform() === 'win32';
61
+ const currShell = (0, detect_shell_1.detectShell)();
62
+ const shell = isWindows
63
+ ? currShell === 'powershell'
64
+ ? 'powershell.exe'
65
+ : 'cmd.exe'
66
+ : 'bash';
67
+ const shellWithoutExe = shell.split('.')[0];
68
+ // Prepare shell init commands
69
+ let shellInitCommands = '';
70
+ if (!isWindows) {
71
+ const rcFile = currShell === 'zsh'
72
+ ? '~/.zshrc'
73
+ : currShell === 'fish'
74
+ ? '~/.config/fish/config.fish'
75
+ : '~/.bashrc';
76
+ shellInitCommands = `source ${rcFile} 2>/dev/null || true\n`;
77
+ }
78
+ else if (currShell === 'powershell') {
79
+ // Try to source PowerShell profile if it exists
80
+ shellInitCommands =
81
+ '$PSProfile = $PROFILE.CurrentUserAllHosts; if (Test-Path $PSProfile) { . $PSProfile }\n';
82
+ }
83
+ const persistentPty = pty.spawn(shell, isWindows ? [] : ['--login'], {
84
+ name: 'xterm-256color',
85
+ cols: process.stdout.columns || 80,
86
+ rows: process.stdout.rows || 24,
87
+ cwd: dir,
88
+ env: {
89
+ ...process.env,
90
+ PAGER: 'cat',
91
+ GIT_PAGER: 'cat',
92
+ GIT_TERMINAL_PROMPT: '0',
93
+ ...(isWindows
94
+ ? {
95
+ TERM: 'cygwin',
96
+ ANSICON: '1', // Better ANSI support in cmd.exe
97
+ PROMPT: promptIdentifier,
98
+ }
99
+ : {
100
+ TERM: 'xterm-256color',
101
+ }),
102
+ LESS: '-FRX',
103
+ TERM_PROGRAM: 'mintty',
104
+ FORCE_COLOR: '1', // Enable colors in CI/CD
105
+ // Locale settings for consistent output
106
+ LANG: 'en_US.UTF-8',
107
+ LC_ALL: 'en_US.UTF-8',
108
+ // Shell-specific settings
109
+ SHELL: shellWithoutExe,
110
+ },
111
+ });
112
+ // Source the shell config file if available
113
+ if (shellInitCommands) {
114
+ persistentPty.write(shellInitCommands);
115
+ }
116
+ // Set prompt for Unix shells after sourcing config
117
+ if (!isWindows) {
118
+ persistentPty.write(`PS1='${promptIdentifier}' && PS2='${promptIdentifier}'\n`);
119
+ }
120
+ return { type: 'pty', shell: 'pty', pty: persistentPty, timerId: null };
121
+ }
122
+ else {
123
+ // Fallback to child_process
124
+ const isWindows = os.platform() === 'win32';
125
+ const currShell = (0, detect_shell_1.detectShell)();
126
+ const shell = isWindows
127
+ ? currShell === 'powershell'
128
+ ? 'powershell.exe'
129
+ : 'cmd.exe'
130
+ : 'bash';
131
+ const childProcess = null;
132
+ return {
133
+ type: 'process',
134
+ shell,
135
+ childProcess,
136
+ timerId: null,
137
+ };
138
+ }
139
+ };
140
+ exports.persistentProcess = null;
141
+ process.stdout.on('resize', () => {
142
+ if (!exports.persistentProcess)
143
+ return;
144
+ if (exports.persistentProcess.type === 'pty') {
145
+ exports.persistentProcess.pty.resize(process.stdout.columns, process.stdout.rows);
146
+ }
147
+ });
148
+ let commandIsRunning = false;
149
+ const isCommandRunning = () => {
150
+ return commandIsRunning;
151
+ };
152
+ exports.isCommandRunning = isCommandRunning;
153
+ const recreateShell = (projectPath) => {
154
+ exports.persistentProcess = createPersistantProcess(projectPath);
155
+ };
156
+ exports.recreateShell = recreateShell;
157
+ const resetShell = (projectPath) => {
158
+ commandIsRunning = false;
159
+ if (exports.persistentProcess) {
160
+ if (exports.persistentProcess.timerId) {
161
+ clearTimeout(exports.persistentProcess.timerId);
162
+ exports.persistentProcess.timerId = null;
163
+ }
164
+ if (exports.persistentProcess.type === 'pty') {
165
+ exports.persistentProcess.pty.kill();
166
+ (0, exports.recreateShell)(projectPath);
167
+ }
168
+ else {
169
+ exports.persistentProcess.childProcess?.kill();
170
+ exports.persistentProcess = {
171
+ ...exports.persistentProcess,
172
+ childProcess: null,
173
+ };
174
+ }
175
+ }
176
+ };
177
+ exports.resetShell = resetShell;
178
+ function formatResult(command, stdout, status) {
179
+ return (0, array_1.buildArray)(`<command>${command}</command>`, '<terminal_command_result>', `<output>${(0, string_1.truncateStringWithMessage)({ str: stdout, maxLength: COMMAND_OUTPUT_LIMIT, remove: 'MIDDLE' })}</output>`, `<status>${status}</status>`, '</terminal_command_result>').join('\n');
180
+ }
181
+ const MAX_EXECUTION_TIME = 30_000;
182
+ function runBackgroundCommand(options, resolveCommand) {
183
+ const { toolCallId, command, mode, projectPath, stdoutFile, stderrFile } = options;
184
+ const isWindows = os.platform() === 'win32';
185
+ const shell = isWindows ? 'cmd.exe' : 'bash';
186
+ const shellArgs = isWindows ? ['/c'] : ['-c'];
187
+ if (mode === 'assistant') {
188
+ console.log((0, picocolors_1.green)(`Running background process...\n> ${command}`));
189
+ }
190
+ const initialStdout = '';
191
+ const initialStderr = '';
192
+ try {
193
+ const childProcess = (0, background_process_manager_1.spawnAndTrack)(shell, [...shellArgs, command], {
194
+ cwd: projectPath,
195
+ env: { ...process.env, FORCE_COLOR: '1' },
196
+ // Ensure detached is always false to link child lifetime to parent
197
+ detached: false,
198
+ stdio: 'pipe',
199
+ });
200
+ // An error should have been thrown when we called `spawn`
201
+ (0, assert_1.default)(childProcess.pid !== undefined, 'Failed to spawn process: no PID assigned.');
202
+ const processId = childProcess.pid;
203
+ const processInfo = {
204
+ pid: processId,
205
+ toolCallId,
206
+ command,
207
+ process: childProcess,
208
+ stdoutBuffer: [],
209
+ stderrBuffer: [],
210
+ status: 'running',
211
+ startTime: Date.now(),
212
+ endTime: null,
213
+ lastReportedStdoutLength: 0,
214
+ lastReportedStderrLength: 0,
215
+ lastReportedStatus: null,
216
+ stdoutFile,
217
+ stderrFile,
218
+ };
219
+ background_process_manager_1.backgroundProcesses.set(processId, processInfo);
220
+ // Set up file streams if paths are provided
221
+ let stdoutStream;
222
+ let stderrStream;
223
+ if (stdoutFile) {
224
+ const stdoutAbs = path_1.default.isAbsolute(stdoutFile)
225
+ ? stdoutFile
226
+ : path_1.default.join(projectPath, stdoutFile);
227
+ (0, fs_1.mkdirSync)((0, path_1.dirname)(stdoutAbs), { recursive: true });
228
+ stdoutStream = (0, fs_1.createWriteStream)(stdoutAbs);
229
+ }
230
+ const realStderrFile = stderrFile || stdoutFile;
231
+ if (realStderrFile) {
232
+ const stderrAbs = path_1.default.isAbsolute(realStderrFile)
233
+ ? realStderrFile
234
+ : path_1.default.join(projectPath, realStderrFile);
235
+ (0, fs_1.mkdirSync)((0, path_1.dirname)(stderrAbs), { recursive: true });
236
+ stderrStream = (0, fs_1.createWriteStream)(stderrAbs);
237
+ }
238
+ childProcess.stdout.on('data', (data) => {
239
+ const output = (0, string_1.stripColors)(data.toString());
240
+ processInfo.stdoutBuffer.push(output);
241
+ // Write to file if stream exists
242
+ if (stdoutStream) {
243
+ stdoutStream.write(output);
244
+ }
245
+ });
246
+ childProcess.stderr.on('data', (data) => {
247
+ const output = (0, string_1.stripColors)(data.toString());
248
+ processInfo.stderrBuffer.push(output);
249
+ // Write to file if stream exists
250
+ if (stderrStream) {
251
+ stderrStream.write(output);
252
+ }
253
+ });
254
+ childProcess.on('error', (error) => {
255
+ processInfo.status = 'error';
256
+ processInfo.stderrBuffer.push(`\nError spawning command: ${error.message}`);
257
+ processInfo.endTime = Date.now();
258
+ // Close file streams
259
+ stdoutStream?.end();
260
+ stderrStream?.end();
261
+ });
262
+ childProcess.on('close', (code) => {
263
+ processInfo.status = code === 0 ? 'completed' : 'error';
264
+ processInfo.endTime = Date.now();
265
+ // Close file streams
266
+ stdoutStream?.end();
267
+ stderrStream?.end();
268
+ });
269
+ // Unreference the process so the parent can exit independently IF the child is the only thing keeping it alive.
270
+ childProcess.unref();
271
+ const resultMessage = `<background_process>
272
+ <process_id>${processId}</process_id>
273
+ <command>${command}</command>
274
+ <status>${processInfo.status}</status>
275
+ </background_process>`;
276
+ resolveCommand({
277
+ result: resultMessage,
278
+ stdout: initialStdout + initialStderr,
279
+ exitCode: undefined,
280
+ });
281
+ }
282
+ catch (error) {
283
+ const errorMessage = `<background_process>\n<command>${command}</command>\n<error>${error.message}</error>\n</background_process>`;
284
+ resolveCommand({
285
+ result: errorMessage,
286
+ stdout: error.message,
287
+ exitCode: undefined,
288
+ });
289
+ }
290
+ }
291
+ const runTerminalCommand = async (toolCallId, command, mode, projectPath, processType, stdoutFile, stderrFile) => {
292
+ return new Promise((resolve) => {
293
+ if (!exports.persistentProcess) {
294
+ throw new Error('Shell not initialized');
295
+ }
296
+ if (commandIsRunning) {
297
+ (0, exports.resetShell)(projectPath);
298
+ }
299
+ commandIsRunning = true;
300
+ // Add special case for git log to limit output
301
+ const modifiedCommand = command.trim() === 'git log' ? 'git log -n 5' : command;
302
+ const resolveCommand = (value) => {
303
+ commandIsRunning = false;
304
+ (0, analytics_1.trackEvent)(analytics_events_1.AnalyticsEvent.TERMINAL_COMMAND_COMPLETED, {
305
+ command,
306
+ result: value.result,
307
+ stdout: value.stdout,
308
+ exitCode: value.exitCode,
309
+ mode,
310
+ processType,
311
+ });
312
+ resolve(value);
313
+ };
314
+ if (processType === 'BACKGROUND') {
315
+ runBackgroundCommand({
316
+ toolCallId,
317
+ command: modifiedCommand,
318
+ mode,
319
+ projectPath,
320
+ stdoutFile,
321
+ stderrFile,
322
+ }, resolveCommand);
323
+ }
324
+ else if (exports.persistentProcess.type === 'pty') {
325
+ (0, exports.runCommandPty)(exports.persistentProcess, modifiedCommand, mode, resolveCommand, projectPath);
326
+ }
327
+ else {
328
+ // Fallback to child_process implementation
329
+ runCommandChildProcess(exports.persistentProcess, modifiedCommand, mode, resolveCommand, projectPath);
330
+ }
331
+ });
332
+ };
333
+ exports.runTerminalCommand = runTerminalCommand;
334
+ const runCommandPty = (persistentProcess, command, mode, resolve, projectPath) => {
335
+ const ptyProcess = persistentProcess.pty;
336
+ let commandOutput = '';
337
+ let buffer = promptIdentifier;
338
+ let foundFirstNewLine = false;
339
+ let echoLinesRemaining = command.split('\n').length;
340
+ if (mode === 'assistant') {
341
+ console.log((0, picocolors_1.green)(`> ${command}`));
342
+ }
343
+ const timer = setTimeout(() => {
344
+ if (mode === 'assistant') {
345
+ // Kill and recreate PTY
346
+ (0, exports.resetShell)(projectPath);
347
+ resolve({
348
+ result: formatResult(command, commandOutput, `Command timed out after ${MAX_EXECUTION_TIME / 1000} seconds and was terminated. Shell has been restarted.`),
349
+ stdout: commandOutput,
350
+ exitCode: 124,
351
+ });
352
+ }
353
+ }, MAX_EXECUTION_TIME);
354
+ persistentProcess.timerId = timer;
355
+ const longestSuffixThatsPrefixOf = (str, target) => {
356
+ for (let len = target.length; len > 0; len--) {
357
+ const prefix = target.slice(0, len);
358
+ if (str.endsWith(prefix)) {
359
+ return prefix;
360
+ }
361
+ }
362
+ return '';
363
+ };
364
+ const toRemovePattern = new RegExp(`${promptIdentifier}[^\n]*\n`, 'g');
365
+ const dataDisposable = ptyProcess.onData((data) => {
366
+ buffer += data;
367
+ const suffix = longestSuffixThatsPrefixOf(buffer, promptIdentifier);
368
+ const toProcess = buffer.slice(0, buffer.length - suffix.length);
369
+ buffer = suffix;
370
+ const matches = toProcess.match(toRemovePattern);
371
+ if (matches) {
372
+ echoLinesRemaining -= matches.length;
373
+ }
374
+ // Process normal output line
375
+ const toPrint = toProcess.replaceAll(toRemovePattern, '');
376
+ process.stdout.write(toPrint);
377
+ commandOutput += toPrint;
378
+ if (buffer === promptIdentifier && echoLinesRemaining === 0) {
379
+ // Command is done
380
+ clearTimeout(timer);
381
+ dataDisposable.dispose();
382
+ if (command.startsWith('cd ') && mode === 'user') {
383
+ let newWorkingDirectory = command.split(' ')[1];
384
+ if (newWorkingDirectory === '~') {
385
+ newWorkingDirectory = os.homedir();
386
+ }
387
+ else if (newWorkingDirectory.startsWith('~/')) {
388
+ newWorkingDirectory = path_1.default.join(os.homedir(), newWorkingDirectory.slice(2));
389
+ }
390
+ else if (!path_1.default.isAbsolute(newWorkingDirectory)) {
391
+ newWorkingDirectory = path_1.default.join(projectPath, newWorkingDirectory);
392
+ }
393
+ (0, analytics_1.trackEvent)(analytics_events_1.AnalyticsEvent.CHANGE_DIRECTORY, {
394
+ from: projectPath,
395
+ to: newWorkingDirectory,
396
+ isSubdir: !path_1.default
397
+ .relative(projectPath, newWorkingDirectory)
398
+ .startsWith('..'),
399
+ });
400
+ projectPath = (0, project_files_1.setProjectRoot)(newWorkingDirectory);
401
+ }
402
+ const exitCode = commandOutput.includes('Command completed')
403
+ ? 0
404
+ : (() => {
405
+ const match = commandOutput.match(/Command failed with exit code (\d+)\./);
406
+ return match ? parseInt(match[1]) : undefined;
407
+ })();
408
+ // Reset the PTY to the project root
409
+ ptyProcess.write(`cd ${projectPath}\r`);
410
+ resolve({
411
+ result: formatResult(command, commandOutput, 'Command completed'),
412
+ stdout: commandOutput,
413
+ exitCode,
414
+ });
415
+ return;
416
+ }
417
+ });
418
+ const isWindows = os.platform() === 'win32';
419
+ if (command.trim() === 'clear') {
420
+ // `clear` needs access to the main process stdout. This is a workaround.
421
+ (0, child_process_1.execSync)('clear', { stdio: 'inherit' });
422
+ }
423
+ // Write the command
424
+ const commandWithCheck = isWindows
425
+ ? command
426
+ : `${command}; ec=$?; if [ $ec -eq 0 ]; then printf "Command completed. "; else printf "Command failed with exit code $ec. "; fi`;
427
+ ptyProcess.write(commandWithCheck + '\r');
428
+ };
429
+ exports.runCommandPty = runCommandPty;
430
+ const runCommandChildProcess = (persistentProcess, command, mode, resolve, projectPath) => {
431
+ const isWindows = os.platform() === 'win32';
432
+ let commandOutput = '';
433
+ if (mode === 'assistant') {
434
+ console.log((0, picocolors_1.green)(`> ${command}`));
435
+ }
436
+ const childProcess = (0, child_process_1.spawn)(persistentProcess.shell, [isWindows ? '/c' : '-c', command], {
437
+ cwd: projectPath,
438
+ env: {
439
+ ...process.env,
440
+ PAGER: 'cat',
441
+ GIT_PAGER: 'cat',
442
+ GIT_TERMINAL_PROMPT: '0',
443
+ LESS: '-FRX',
444
+ },
445
+ });
446
+ persistentProcess = {
447
+ ...persistentProcess,
448
+ childProcess,
449
+ };
450
+ const timer = setTimeout(() => {
451
+ (0, exports.resetShell)(projectPath);
452
+ if (mode === 'assistant') {
453
+ resolve({
454
+ result: formatResult(command, commandOutput, `Command timed out after ${MAX_EXECUTION_TIME / 1000} seconds and was terminated.`),
455
+ stdout: commandOutput,
456
+ exitCode: 124,
457
+ });
458
+ }
459
+ }, MAX_EXECUTION_TIME);
460
+ persistentProcess.timerId = timer;
461
+ childProcess.stdout.on('data', (data) => {
462
+ const output = data.toString();
463
+ process.stdout.write(output);
464
+ commandOutput += output;
465
+ });
466
+ childProcess.stderr.on('data', (data) => {
467
+ const output = data.toString();
468
+ process.stdout.write(output);
469
+ commandOutput += output;
470
+ });
471
+ childProcess.on('close', (code) => {
472
+ clearTimeout(timer);
473
+ if (command.startsWith('cd ') && mode === 'user') {
474
+ const newWorkingDirectory = command.split(' ')[1];
475
+ projectPath = (0, project_files_1.setProjectRoot)(path_1.default.join(projectPath, newWorkingDirectory));
476
+ }
477
+ if (mode === 'assistant') {
478
+ console.log((0, picocolors_1.green)(`Command completed`));
479
+ }
480
+ resolve({
481
+ result: formatResult(command, commandOutput, `Command completed`),
482
+ stdout: commandOutput,
483
+ exitCode: childProcess.exitCode ?? undefined,
484
+ });
485
+ });
486
+ };
487
+ function killAndResetPersistentProcess() {
488
+ if (exports.persistentProcess?.type === 'pty') {
489
+ exports.persistentProcess.pty.kill();
490
+ exports.persistentProcess = null;
491
+ }
492
+ }
493
+ //# sourceMappingURL=terminal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal.js","sourceRoot":"","sources":["../../src/utils/terminal.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { ToolName } from '../common/constants/tools';
2
+ /**
3
+ * Interface for handling tool call rendering
4
+ */
5
+ export interface ToolCallRenderer {
6
+ onToolStart?: (toolName: string, attributes: Record<string, string>) => string | null;
7
+ onParamStart?: (paramName: string, toolName: string) => string | null;
8
+ onParamChunk?: (content: string, paramName: string, toolName: string) => string | null;
9
+ onParamEnd?: (paramName: string, toolName: string, content: string) => string | null;
10
+ onToolEnd?: (toolName: string, params: Record<string, string>) => string | null;
11
+ }
12
+ /**
13
+ * Default renderer for tool calls that formats them nicely for the console
14
+ */
15
+ export declare const defaultToolCallRenderer: ToolCallRenderer;
16
+ export declare const toolRenderers: Record<ToolName, ToolCallRenderer>;