codebuff 1.0.315 → 1.0.317

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 (43) hide show
  1. package/dist/cli-definitions.js +2 -2
  2. package/dist/cli-definitions.js.map +1 -1
  3. package/dist/cli-handlers/checkpoint.d.ts +1 -0
  4. package/dist/cli-handlers/checkpoint.js +11 -7
  5. package/dist/cli-handlers/checkpoint.js.map +1 -1
  6. package/dist/cli.js +7 -17
  7. package/dist/cli.js.map +1 -1
  8. package/dist/client.d.ts +1 -0
  9. package/dist/client.js +36 -21
  10. package/dist/client.js.map +1 -1
  11. package/dist/code-map/test-langs/test.d.ts +12 -0
  12. package/dist/code-map/test-langs/test.d.ts.map +1 -0
  13. package/dist/code-map/test-langs/test.js +23 -0
  14. package/dist/code-map/test-langs/test.js.map +1 -0
  15. package/dist/common/browser-actions.d.ts +234 -234
  16. package/dist/common/constants.d.ts +7 -10
  17. package/dist/common/constants.js +3 -4
  18. package/dist/common/constants.js.map +1 -1
  19. package/dist/common/db/schema.d.ts +4 -4
  20. package/dist/common/db/schema.js +2 -2
  21. package/dist/common/db/schema.js.map +1 -1
  22. package/dist/common/util/string.d.ts +17 -0
  23. package/dist/common/util/string.js +31 -1
  24. package/dist/common/util/string.js.map +1 -1
  25. package/dist/dev-process-manager.js +2 -2
  26. package/dist/dev-process-manager.js.map +1 -1
  27. package/dist/index.js +57 -3
  28. package/dist/index.js.map +1 -1
  29. package/dist/json-config/hooks.js +2 -2
  30. package/dist/json-config/hooks.js.map +1 -1
  31. package/dist/terminal/background.d.ts +12 -0
  32. package/dist/terminal/background.js +148 -0
  33. package/dist/terminal/background.js.map +1 -0
  34. package/dist/terminal/base.d.ts +47 -0
  35. package/dist/terminal/base.js +671 -0
  36. package/dist/terminal/base.js.map +1 -0
  37. package/dist/tool-handlers.js +3 -3
  38. package/dist/tool-handlers.js.map +1 -1
  39. package/dist/utils/git.js +0 -1
  40. package/dist/utils/git.js.map +1 -1
  41. package/dist/utils/terminal.js +2 -7
  42. package/dist/utils/terminal.js.map +1 -1
  43. package/package.json +5 -5
@@ -0,0 +1,148 @@
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.runBackgroundCommand = runBackgroundCommand;
30
+ const assert_1 = __importDefault(require("assert"));
31
+ const fs_1 = require("fs");
32
+ const os = __importStar(require("os"));
33
+ const path_1 = __importStar(require("path"));
34
+ const string_1 = require("../common/util/string");
35
+ const picocolors_1 = require("picocolors");
36
+ const background_process_manager_1 = require("../background-process-manager");
37
+ function runBackgroundCommand(options, resolveCommand) {
38
+ const { toolCallId, command, mode, cwd, stdoutFile, stderrFile } = options;
39
+ const isWindows = os.platform() === 'win32';
40
+ const shell = isWindows ? 'cmd.exe' : 'bash';
41
+ const shellArgs = isWindows ? ['/c'] : ['-c'];
42
+ if (mode === 'assistant') {
43
+ console.log((0, picocolors_1.green)(`Running background process...\n> ${command}`));
44
+ }
45
+ const initialStdout = '';
46
+ const initialStderr = '';
47
+ try {
48
+ const childProcess = (0, background_process_manager_1.spawnAndTrack)(shell, [...shellArgs, command], {
49
+ cwd,
50
+ env: { ...process.env, FORCE_COLOR: '1' },
51
+ // Ensure detached is always false to link child lifetime to parent
52
+ detached: false,
53
+ stdio: 'pipe',
54
+ });
55
+ // An error should have been thrown when we called `spawn`
56
+ (0, assert_1.default)(childProcess.pid !== undefined, 'Failed to spawn process: no PID assigned.');
57
+ const processId = childProcess.pid;
58
+ const processInfo = {
59
+ pid: processId,
60
+ toolCallId,
61
+ command,
62
+ process: childProcess,
63
+ stdoutBuffer: [],
64
+ stderrBuffer: [],
65
+ status: 'running',
66
+ startTime: Date.now(),
67
+ endTime: null,
68
+ lastReportedStdoutLength: 0,
69
+ lastReportedStderrLength: 0,
70
+ lastReportedStatus: null,
71
+ stdoutFile,
72
+ stderrFile,
73
+ };
74
+ background_process_manager_1.backgroundProcesses.set(processId, processInfo);
75
+ // Set up file streams if paths are provided
76
+ let stdoutStream;
77
+ let stderrStream;
78
+ if (stdoutFile) {
79
+ const stdoutAbs = path_1.default.isAbsolute(stdoutFile)
80
+ ? stdoutFile
81
+ : path_1.default.join(cwd, stdoutFile);
82
+ (0, fs_1.mkdirSync)((0, path_1.dirname)(stdoutAbs), { recursive: true });
83
+ stdoutStream = (0, fs_1.createWriteStream)(stdoutAbs);
84
+ }
85
+ const realStderrFile = stderrFile || stdoutFile;
86
+ if (realStderrFile) {
87
+ const stderrAbs = path_1.default.isAbsolute(realStderrFile)
88
+ ? realStderrFile
89
+ : path_1.default.join(cwd, realStderrFile);
90
+ (0, fs_1.mkdirSync)((0, path_1.dirname)(stderrAbs), { recursive: true });
91
+ stderrStream = (0, fs_1.createWriteStream)(stderrAbs);
92
+ }
93
+ childProcess.stdout.on('data', (data) => {
94
+ const output = (0, string_1.stripColors)(data.toString());
95
+ processInfo.stdoutBuffer.push(output);
96
+ // Write to file if stream exists
97
+ if (stdoutStream) {
98
+ stdoutStream.write(output);
99
+ }
100
+ });
101
+ childProcess.stderr.on('data', (data) => {
102
+ const output = (0, string_1.stripColors)(data.toString());
103
+ processInfo.stderrBuffer.push(output);
104
+ // Write to file if stream exists
105
+ if (stderrStream) {
106
+ stderrStream.write(output);
107
+ }
108
+ });
109
+ childProcess.on('error', (error) => {
110
+ processInfo.status = 'error';
111
+ processInfo.stderrBuffer.push(`\nError spawning command: ${error.message}`);
112
+ processInfo.endTime = Date.now();
113
+ // Close file streams
114
+ stdoutStream?.end();
115
+ stderrStream?.end();
116
+ });
117
+ let exitCode = null;
118
+ childProcess.on('close', (code) => {
119
+ exitCode = code;
120
+ processInfo.status = code === 0 ? 'completed' : 'error';
121
+ processInfo.endTime = Date.now();
122
+ // Close file streams
123
+ stdoutStream?.end();
124
+ stderrStream?.end();
125
+ });
126
+ // Unreference the process so the parent can exit independently IF the child is the only thing keeping it alive.
127
+ childProcess.unref();
128
+ const resultMessage = `<background_process>
129
+ <process_id>${processId}</process_id>
130
+ <command>${command}</command>
131
+ <status>${processInfo.status}</status>
132
+ </background_process>`;
133
+ resolveCommand({
134
+ result: resultMessage,
135
+ stdout: initialStdout + initialStderr,
136
+ exitCode,
137
+ });
138
+ }
139
+ catch (error) {
140
+ const errorMessage = `<background_process>\n<command>${command}</command>\n<error>${error.message}</error>\n</background_process>`;
141
+ resolveCommand({
142
+ result: errorMessage,
143
+ stdout: error.message,
144
+ exitCode: null,
145
+ });
146
+ }
147
+ }
148
+ //# sourceMappingURL=background.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"background.js","sourceRoot":"","sources":["../../src/terminal/background.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ import { ChildProcessWithoutNullStreams } from 'child_process';
2
+ import type { IPty } from '@homebridge/node-pty-prebuilt-multiarch';
3
+ type PersistentProcess = {
4
+ type: 'pty';
5
+ shell: 'cmd.exe' | 'powershell.exe' | 'bash';
6
+ pty: IPty;
7
+ timerId: NodeJS.Timeout | null;
8
+ globalOutputBuffer: string;
9
+ globalOutputLastReadLength: number;
10
+ } | {
11
+ type: 'process';
12
+ shell: 'bash' | 'cmd.exe' | 'powershell.exe';
13
+ childProcess: ChildProcessWithoutNullStreams | null;
14
+ timerId: NodeJS.Timeout | null;
15
+ globalOutputBuffer: string;
16
+ globalOutputLastReadLength: number;
17
+ };
18
+ declare const createPersistantProcess: (dir: string, forceChildProcess?: boolean) => PersistentProcess;
19
+ export declare let persistentProcess: ReturnType<typeof createPersistantProcess> | null;
20
+ export declare const isCommandRunning: () => boolean;
21
+ export declare const recreateShell: (cwd: string, forceChildProcess?: boolean) => void;
22
+ export declare const resetShell: (cwd: string) => void;
23
+ export declare const runTerminalCommand: (toolCallId: string, command: string, mode: "user" | "assistant" | "manager", processType: "SYNC" | "BACKGROUND", timeoutSeconds: number, cwd?: string, stdoutFile?: string, stderrFile?: string) => Promise<{
24
+ result: string;
25
+ stdout: string;
26
+ exitCode: number | null;
27
+ }>;
28
+ export declare const runCommandPty: (persistentProcess: PersistentProcess & {
29
+ type: "pty";
30
+ }, command: string, mode: "user" | "assistant" | "manager", cwd: string, maybeTimeoutSeconds: number | null, resolve: (value: {
31
+ result: string;
32
+ stdout: string;
33
+ exitCode: number | null;
34
+ }) => void) => void;
35
+ export declare function killAndResetPersistentProcess(): void;
36
+ export declare function clearScreen(): void;
37
+ export declare const runCommandPtyManager: (persistentProcess: PersistentProcess & {
38
+ type: "pty";
39
+ }, command: string, cwd: string, maybeTimeoutSeconds: number | null, resolve: (value: {
40
+ result: string;
41
+ stdout: string;
42
+ exitCode: number | null;
43
+ }) => void) => void;
44
+ export declare const readNewTerminalOutput: (options?: {
45
+ maxLength: number;
46
+ }) => string;
47
+ export {};