Files
openclaw-zero-token/plugin-sdk/run-command.ts
sjhu 571e14a236 feat: upgrade to upstream v2026.3.28
Major upgrade from e26988a38 to upstream v2026.3.28 (f9b107928).
Key changes:
- Upstream src/, ui/, extensions/ (89 bundled extensions)
- Zero-token web providers preserved in src/zero-token/
- AskOnce plugin restored and registered as CLI command
- Added missing packages: @anthropic-ai/vertex-sdk, @modelcontextprotocol/sdk
- Fixed tsconfig rootDir, skipLibCheck for plugin-sdk DTS build
- Added askonce to bundled plugin metadata and package.json exports
- Fixed AskOnce CLI command registration (missing commands metadata)
- Restored AskOnce adapter imports (correct 5-level relative paths)
- Removed stale migration artifacts from root directory
2026-03-30 17:58:12 +08:00

47 lines
1.2 KiB
TypeScript

import { runCommandWithTimeout } from "../process/exec.js";
export type PluginCommandRunResult = {
code: number;
stdout: string;
stderr: string;
};
export type PluginCommandRunOptions = {
argv: string[];
timeoutMs: number;
cwd?: string;
env?: NodeJS.ProcessEnv;
};
/** Run a plugin-managed command with timeout handling and normalized stdout/stderr results. */
export async function runPluginCommandWithTimeout(
options: PluginCommandRunOptions,
): Promise<PluginCommandRunResult> {
const [command] = options.argv;
if (!command) {
return { code: 1, stdout: "", stderr: "command is required" };
}
try {
const result = await runCommandWithTimeout(options.argv, {
timeoutMs: options.timeoutMs,
cwd: options.cwd,
env: options.env,
});
const timedOut = result.termination === "timeout" || result.termination === "no-output-timeout";
return {
code: result.code ?? 1,
stdout: result.stdout,
stderr: timedOut
? result.stderr || `command timed out after ${options.timeoutMs}ms`
: result.stderr,
};
} catch (error) {
return {
code: 1,
stdout: "",
stderr: error instanceof Error ? error.message : String(error),
};
}
}