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.
- package/dist/cli-definitions.js +2 -2
- package/dist/cli-definitions.js.map +1 -1
- package/dist/cli-handlers/checkpoint.d.ts +1 -0
- package/dist/cli-handlers/checkpoint.js +11 -7
- package/dist/cli-handlers/checkpoint.js.map +1 -1
- package/dist/cli.js +7 -17
- package/dist/cli.js.map +1 -1
- package/dist/client.d.ts +1 -0
- package/dist/client.js +36 -21
- package/dist/client.js.map +1 -1
- package/dist/code-map/test-langs/test.d.ts +12 -0
- package/dist/code-map/test-langs/test.d.ts.map +1 -0
- package/dist/code-map/test-langs/test.js +23 -0
- package/dist/code-map/test-langs/test.js.map +1 -0
- package/dist/common/browser-actions.d.ts +234 -234
- package/dist/common/constants.d.ts +7 -10
- package/dist/common/constants.js +3 -4
- package/dist/common/constants.js.map +1 -1
- package/dist/common/db/schema.d.ts +4 -4
- package/dist/common/db/schema.js +2 -2
- package/dist/common/db/schema.js.map +1 -1
- package/dist/common/util/string.d.ts +17 -0
- package/dist/common/util/string.js +31 -1
- package/dist/common/util/string.js.map +1 -1
- package/dist/dev-process-manager.js +2 -2
- package/dist/dev-process-manager.js.map +1 -1
- package/dist/index.js +57 -3
- package/dist/index.js.map +1 -1
- package/dist/json-config/hooks.js +2 -2
- package/dist/json-config/hooks.js.map +1 -1
- package/dist/terminal/background.d.ts +12 -0
- package/dist/terminal/background.js +148 -0
- package/dist/terminal/background.js.map +1 -0
- package/dist/terminal/base.d.ts +47 -0
- package/dist/terminal/base.js +671 -0
- package/dist/terminal/base.js.map +1 -0
- package/dist/tool-handlers.js +3 -3
- package/dist/tool-handlers.js.map +1 -1
- package/dist/utils/git.js +0 -1
- package/dist/utils/git.js.map +1 -1
- package/dist/utils/terminal.js +2 -7
- package/dist/utils/terminal.js.map +1 -1
- 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 {};
|