import assert from "node:assert/strict"; import test from "node:test"; import { getClawBackendConfigForTesting, isClawBackendConfiguredForTesting, } from "../src/lib/execution/backends/claw-config.ts"; function snapshotEnv() { return { BOSS_CLAW_ENABLED: process.env.BOSS_CLAW_ENABLED, BOSS_CLAW_COMMAND: process.env.BOSS_CLAW_COMMAND, BOSS_CLAW_ARGS: process.env.BOSS_CLAW_ARGS, BOSS_CLAW_WORKDIR: process.env.BOSS_CLAW_WORKDIR, BOSS_CLAW_TIMEOUT_MS: process.env.BOSS_CLAW_TIMEOUT_MS, BOSS_CLAW_DEFAULT_MODEL: process.env.BOSS_CLAW_DEFAULT_MODEL, }; } function restoreEnv(snapshot: ReturnType) { process.env.BOSS_CLAW_ENABLED = snapshot.BOSS_CLAW_ENABLED; process.env.BOSS_CLAW_COMMAND = snapshot.BOSS_CLAW_COMMAND; process.env.BOSS_CLAW_ARGS = snapshot.BOSS_CLAW_ARGS; process.env.BOSS_CLAW_WORKDIR = snapshot.BOSS_CLAW_WORKDIR; process.env.BOSS_CLAW_TIMEOUT_MS = snapshot.BOSS_CLAW_TIMEOUT_MS; process.env.BOSS_CLAW_DEFAULT_MODEL = snapshot.BOSS_CLAW_DEFAULT_MODEL; } test("Claw backend 在未配置时默认关闭", () => { const previous = snapshotEnv(); delete process.env.BOSS_CLAW_ENABLED; delete process.env.BOSS_CLAW_COMMAND; delete process.env.BOSS_CLAW_ARGS; delete process.env.BOSS_CLAW_WORKDIR; delete process.env.BOSS_CLAW_TIMEOUT_MS; delete process.env.BOSS_CLAW_DEFAULT_MODEL; const config = getClawBackendConfigForTesting(); assert.equal(config.enabled, false); assert.equal(isClawBackendConfiguredForTesting(config), false); restoreEnv(previous); }); test("Claw backend 在配置完整时返回 command、args 和 timeout", () => { const previous = snapshotEnv(); process.env.BOSS_CLAW_ENABLED = "true"; process.env.BOSS_CLAW_COMMAND = "claw"; process.env.BOSS_CLAW_ARGS = "run --json"; process.env.BOSS_CLAW_WORKDIR = "/tmp/claw"; process.env.BOSS_CLAW_TIMEOUT_MS = "45000"; const config = getClawBackendConfigForTesting(); assert.equal(config.enabled, true); assert.equal(config.command, "claw"); assert.deepEqual(config.args, ["run", "--json"]); assert.equal(config.cwd, "/tmp/claw"); assert.equal(config.timeoutMs, 45000); assert.equal(isClawBackendConfiguredForTesting(config), true); restoreEnv(previous); });