init project
This commit is contained in:
Vendored
+37
@@ -0,0 +1,37 @@
|
||||
import { execa } from 'execa';
|
||||
import { config } from '../config.js';
|
||||
import { assertAllowedBinary } from './sandbox.js';
|
||||
/**
|
||||
* Runs a command to completion (foreground) and returns its combined,
|
||||
* length-capped output. Intended for install/build/lint/test-style commands
|
||||
* that the agent needs the final result of, as opposed to long-running dev
|
||||
* servers (see processManager.ts for those).
|
||||
*/
|
||||
export async function runCommand(command, args, options) {
|
||||
assertAllowedBinary(command);
|
||||
const timeoutMs = options.timeoutMs ?? config.defaultCommandTimeoutMs;
|
||||
const result = await execa(command, args, {
|
||||
cwd: options.cwd,
|
||||
env: options.env,
|
||||
timeout: timeoutMs,
|
||||
reject: false,
|
||||
all: true,
|
||||
});
|
||||
const rawOutput = result.all ?? [result.stdout, result.stderr].filter(Boolean).join('\n');
|
||||
return {
|
||||
command,
|
||||
args,
|
||||
cwd: options.cwd,
|
||||
exitCode: result.exitCode ?? null,
|
||||
timedOut: result.timedOut,
|
||||
failed: result.failed,
|
||||
output: truncate(String(rawOutput ?? ''), config.maxToolOutputChars),
|
||||
};
|
||||
}
|
||||
function truncate(text, max) {
|
||||
if (text.length <= max)
|
||||
return text;
|
||||
const omitted = text.length - max;
|
||||
return `${text.slice(0, max)}\n... [truncated ${omitted} more characters] ...`;
|
||||
}
|
||||
//# sourceMappingURL=runCommand.js.map
|
||||
Reference in New Issue
Block a user