feat: add /debug runtime overrides

This commit is contained in:
Peter Steinberger
2026-01-09 16:38:52 +01:00
parent 36bdec0f2c
commit c643ce2a7a
14 changed files with 412 additions and 2 deletions

View File

@@ -0,0 +1,43 @@
import { describe, expect, it, beforeEach } from "vitest";
import type { ClawdbotConfig } from "./types.js";
import {
applyConfigOverrides,
getConfigOverrides,
resetConfigOverrides,
setConfigOverride,
unsetConfigOverride,
} from "./runtime-overrides.js";
describe("runtime overrides", () => {
beforeEach(() => {
resetConfigOverrides();
});
it("sets and applies nested overrides", () => {
const cfg = {
messages: { responsePrefix: "[clawdbot]" },
} as ClawdbotConfig;
setConfigOverride("messages.responsePrefix", "[debug]");
const next = applyConfigOverrides(cfg);
expect(next.messages?.responsePrefix).toBe("[debug]");
});
it("merges object overrides without clobbering siblings", () => {
const cfg = {
whatsapp: { dmPolicy: "pairing", allowFrom: ["+1"] },
} as ClawdbotConfig;
setConfigOverride("whatsapp.dmPolicy", "open");
const next = applyConfigOverrides(cfg);
expect(next.whatsapp?.dmPolicy).toBe("open");
expect(next.whatsapp?.allowFrom).toEqual(["+1"]);
});
it("unsets overrides and prunes empty branches", () => {
setConfigOverride("whatsapp.dmPolicy", "open");
const removed = unsetConfigOverride("whatsapp.dmPolicy");
expect(removed.ok).toBe(true);
expect(removed.removed).toBe(true);
expect(Object.keys(getConfigOverrides()).length).toBe(0);
});
});