chore: rename project to clawdbot

This commit is contained in:
Peter Steinberger
2026-01-04 14:32:47 +00:00
parent d48dc71fa4
commit 246adaa119
841 changed files with 4590 additions and 4328 deletions

View File

@@ -101,7 +101,7 @@ function isTailscaleProxyRequest(req?: IncomingMessage): boolean {
export function assertGatewayAuthConfigured(auth: ResolvedGatewayAuth): void {
if (auth.mode === "token" && !auth.token) {
throw new Error(
"gateway auth mode is token, but no token was configured (set gateway.auth.token or CLAWDIS_GATEWAY_TOKEN)",
"gateway auth mode is token, but no token was configured (set gateway.auth.token or CLAWDBOT_GATEWAY_TOKEN)",
);
}
if (auth.mode === "password" && !auth.password) {

View File

@@ -45,7 +45,7 @@ export async function callGateway<T = unknown>(
? typeof remote?.token === "string" && remote.token.trim().length > 0
? remote.token.trim()
: undefined
: process.env.CLAWDIS_GATEWAY_TOKEN?.trim() ||
: process.env.CLAWDBOT_GATEWAY_TOKEN?.trim() ||
(typeof authToken === "string" && authToken.trim().length > 0
? authToken.trim()
: undefined));
@@ -53,7 +53,7 @@ export async function callGateway<T = unknown>(
(typeof opts.password === "string" && opts.password.trim().length > 0
? opts.password.trim()
: undefined) ||
process.env.CLAWDIS_GATEWAY_PASSWORD?.trim() ||
process.env.CLAWDBOT_GATEWAY_PASSWORD?.trim() ||
(typeof remote?.password === "string" && remote.password.trim().length > 0
? remote.password.trim()
: undefined);

View File

@@ -1,7 +1,7 @@
import chokidar from "chokidar";
import type {
ClawdisConfig,
ClawdbotConfig,
ConfigFileSnapshot,
GatewayReloadMode,
} from "../config/config.js";
@@ -142,7 +142,7 @@ export function diffConfigPaths(
}
export function resolveGatewayReloadSettings(
cfg: ClawdisConfig,
cfg: ClawdbotConfig,
): GatewayReloadSettings {
const rawMode = cfg.gateway?.reload?.mode;
const mode =
@@ -251,13 +251,13 @@ export type GatewayConfigReloader = {
};
export function startGatewayConfigReloader(opts: {
initialConfig: ClawdisConfig;
initialConfig: ClawdbotConfig;
readSnapshot: () => Promise<ConfigFileSnapshot>;
onHotReload: (
plan: GatewayReloadPlan,
nextConfig: ClawdisConfig,
nextConfig: ClawdbotConfig,
) => Promise<void>;
onRestart: (plan: GatewayReloadPlan, nextConfig: ClawdisConfig) => void;
onRestart: (plan: GatewayReloadPlan, nextConfig: ClawdbotConfig) => void;
log: {
info: (msg: string) => void;
warn: (msg: string) => void;

View File

@@ -87,10 +87,10 @@ function serveFile(res: ServerResponse, filePath: string) {
}
function injectControlUiBasePath(html: string, basePath: string): string {
const script = `<script>window.__CLAWDIS_CONTROL_UI_BASE_PATH__=${JSON.stringify(
const script = `<script>window.__CLAWDBOT_CONTROL_UI_BASE_PATH__=${JSON.stringify(
basePath,
)};</script>`;
if (html.includes("__CLAWDIS_CONTROL_UI_BASE_PATH__")) return html;
if (html.includes("__CLAWDBOT_CONTROL_UI_BASE_PATH__")) return html;
const headClose = html.indexOf("</head>");
if (headClose !== -1) {
return `${html.slice(0, headClose)}${script}${html.slice(headClose)}`;

View File

@@ -39,7 +39,7 @@ describe("hooks mapping", () => {
});
it("runs transform module", async () => {
const dir = fs.mkdtempSync(path.join(os.tmpdir(), "clawdis-hooks-"));
const dir = fs.mkdtempSync(path.join(os.tmpdir(), "clawdbot-hooks-"));
const modPath = path.join(dir, "transform.mjs");
const placeholder = "${" + "payload.name}";
fs.writeFileSync(
@@ -75,7 +75,7 @@ describe("hooks mapping", () => {
});
it("treats null transform as a handled skip", async () => {
const dir = fs.mkdtempSync(path.join(os.tmpdir(), "clawdis-hooks-skip-"));
const dir = fs.mkdtempSync(path.join(os.tmpdir(), "clawdbot-hooks-skip-"));
const modPath = path.join(dir, "transform.mjs");
fs.writeFileSync(modPath, "export default () => null;");

View File

@@ -2,7 +2,7 @@ import path from "node:path";
import { pathToFileURL } from "node:url";
import {
CONFIG_PATH_CLAWDIS,
CONFIG_PATH_CLAWDBOT,
type HookMappingConfig,
type HooksConfig,
} from "../config/config.js";
@@ -130,7 +130,7 @@ export function resolveHookMappings(
}
if (mappings.length === 0) return [];
const configDir = path.dirname(CONFIG_PATH_CLAWDIS);
const configDir = path.dirname(CONFIG_PATH_CLAWDBOT);
const transformsDir = hooks?.transformsDir
? resolvePath(configDir, hooks.transformsDir)
: configDir;

View File

@@ -1,6 +1,6 @@
import type { IncomingMessage } from "node:http";
import { describe, expect, test } from "vitest";
import type { ClawdisConfig } from "../config/config.js";
import type { ClawdbotConfig } from "../config/config.js";
import {
extractHookToken,
normalizeAgentPayload,
@@ -16,7 +16,7 @@ describe("gateway hooks helpers", () => {
token: "secret",
path: "hooks///",
},
} as ClawdisConfig;
} as ClawdbotConfig;
const resolved = resolveHooksConfig(base);
expect(resolved?.basePath).toBe("/hooks");
expect(resolved?.token).toBe("secret");
@@ -25,7 +25,7 @@ describe("gateway hooks helpers", () => {
test("resolveHooksConfig rejects root path", () => {
const cfg = {
hooks: { enabled: true, token: "x", path: "/" },
} as ClawdisConfig;
} as ClawdbotConfig;
expect(() => resolveHooksConfig(cfg)).toThrow("hooks.path may not be '/'");
});
@@ -33,14 +33,14 @@ describe("gateway hooks helpers", () => {
const req = {
headers: {
authorization: "Bearer top",
"x-clawdis-token": "header",
"x-clawdbot-token": "header",
},
} as unknown as IncomingMessage;
const url = new URL("http://localhost/hooks/wake?token=query");
expect(extractHookToken(req, url)).toBe("top");
const req2 = {
headers: { "x-clawdis-token": "header" },
headers: { "x-clawdbot-token": "header" },
} as unknown as IncomingMessage;
expect(extractHookToken(req2, url)).toBe("header");

View File

@@ -1,6 +1,6 @@
import { randomUUID } from "node:crypto";
import type { IncomingMessage } from "node:http";
import type { ClawdisConfig } from "../config/config.js";
import type { ClawdbotConfig } from "../config/config.js";
import {
type HookMappingResolved,
resolveHookMappings,
@@ -17,7 +17,7 @@ export type HooksConfigResolved = {
};
export function resolveHooksConfig(
cfg: ClawdisConfig,
cfg: ClawdbotConfig,
): HooksConfigResolved | null {
if (cfg.hooks?.enabled !== true) return null;
const token = cfg.hooks?.token?.trim();
@@ -57,8 +57,8 @@ export function extractHookToken(
if (token) return token;
}
const headerToken =
typeof req.headers["x-clawdis-token"] === "string"
? req.headers["x-clawdis-token"].trim()
typeof req.headers["x-clawdbot-token"] === "string"
? req.headers["x-clawdbot-token"].trim()
: "";
if (headerToken) return headerToken;
const queryToken = url.searchParams.get("token");

View File

@@ -26,7 +26,7 @@ import type { CliDeps } from "../cli/deps.js";
import { agentCommand } from "../commands/agent.js";
import type { HealthSummary } from "../commands/health.js";
import {
CONFIG_PATH_CLAWDIS,
CONFIG_PATH_CLAWDBOT,
loadConfig,
parseConfigJson5,
readConfigFileSnapshot,
@@ -249,7 +249,7 @@ export function createBridgeHandlers(ctx: BridgeHandlersContext) {
ok: true,
payloadJSON: JSON.stringify({
ok: true,
path: CONFIG_PATH_CLAWDIS,
path: CONFIG_PATH_CLAWDBOT,
config: validated.config,
}),
};

View File

@@ -3,10 +3,10 @@ export type BrowserControlServer = {
};
export async function startBrowserControlServerIfEnabled(): Promise<BrowserControlServer | null> {
if (process.env.CLAWDIS_SKIP_BROWSER_CONTROL_SERVER === "1") return null;
if (process.env.CLAWDBOT_SKIP_BROWSER_CONTROL_SERVER === "1") return null;
// Lazy import: keeps startup fast, but still bundles for the embedded
// gateway (bun --compile) via the static specifier path.
const override = process.env.CLAWDIS_BROWSER_CONTROL_MODULE?.trim();
const override = process.env.CLAWDBOT_BROWSER_CONTROL_MODULE?.trim();
const mod = override
? await import(override)
: await import("../browser/server.js");

View File

@@ -13,16 +13,16 @@ export type ResolveBonjourCliPathOptions = {
export function formatBonjourInstanceName(displayName: string) {
const trimmed = displayName.trim();
if (!trimmed) return "Clawdis";
if (/clawdis/i.test(trimmed)) return trimmed;
return `${trimmed} (Clawdis)`;
if (!trimmed) return "Clawdbot";
if (/clawdbot/i.test(trimmed)) return trimmed;
return `${trimmed} (Clawdbot)`;
}
export function resolveBonjourCliPath(
opts: ResolveBonjourCliPathOptions = {},
): string | undefined {
const env = opts.env ?? process.env;
const envPath = env.CLAWDIS_CLI_PATH?.trim();
const envPath = env.CLAWDBOT_CLI_PATH?.trim();
if (envPath) return envPath;
const statSync = opts.statSync ?? fs.statSync;
@@ -36,7 +36,7 @@ export function resolveBonjourCliPath(
const execPath = opts.execPath ?? process.execPath;
const execDir = path.dirname(execPath);
const siblingCli = path.join(execDir, "clawdis");
const siblingCli = path.join(execDir, "clawdbot");
if (isFile(siblingCli)) return siblingCli;
const argv = opts.argv ?? process.argv;
@@ -49,7 +49,7 @@ export function resolveBonjourCliPath(
const cwd = opts.cwd ?? process.cwd();
const distCli = path.join(cwd, "dist", "index.js");
if (isFile(distCli)) return distCli;
const binCli = path.join(cwd, "bin", "clawdis.js");
const binCli = path.join(cwd, "bin", "clawdbot.js");
if (isFile(binCli)) return binCli;
return undefined;
@@ -60,7 +60,7 @@ export async function resolveTailnetDnsHint(opts?: {
exec?: typeof runExec;
}): Promise<string | undefined> {
const env = opts?.env ?? process.env;
const envRaw = env.CLAWDIS_TAILNET_DNS?.trim();
const envRaw = env.CLAWDBOT_TAILNET_DNS?.trim();
const envValue = envRaw && envRaw.length > 0 ? envRaw.replace(/\.$/, "") : "";
if (envValue) return envValue;

View File

@@ -1,5 +1,5 @@
import {
CONFIG_PATH_CLAWDIS,
CONFIG_PATH_CLAWDBOT,
parseConfigJson5,
readConfigFileSnapshot,
validateConfigObject,
@@ -96,7 +96,7 @@ export const configHandlers: GatewayRequestHandlers = {
true,
{
ok: true,
path: CONFIG_PATH_CLAWDIS,
path: CONFIG_PATH_CLAWDBOT,
config: validated.config,
},
undefined,

View File

@@ -1,4 +1,4 @@
import type { ClawdisConfig } from "../../config/config.js";
import type { ClawdbotConfig } from "../../config/config.js";
import {
loadConfig,
readConfigFileSnapshot,
@@ -250,7 +250,7 @@ export const providersHandlers: GatewayRequestHandlers = {
if (nextTelegram) {
delete nextTelegram.botToken;
}
const nextCfg = { ...cfg } as ClawdisConfig;
const nextCfg = { ...cfg } as ClawdbotConfig;
if (nextTelegram && Object.keys(nextTelegram).length > 0) {
nextCfg.telegram = nextTelegram;
} else {

View File

@@ -1,7 +1,7 @@
import { installSkill } from "../../agents/skills-install.js";
import { buildWorkspaceSkillStatus } from "../../agents/skills-status.js";
import { DEFAULT_AGENT_WORKSPACE_DIR } from "../../agents/workspace.js";
import type { ClawdisConfig } from "../../config/config.js";
import type { ClawdbotConfig } from "../../config/config.js";
import { loadConfig, writeConfigFile } from "../../config/config.js";
import { resolveUserPath } from "../../utils.js";
import {
@@ -112,7 +112,7 @@ export const skillsHandlers: GatewayRequestHandlers = {
}
entries[p.skillKey] = current;
skills.entries = entries;
const nextConfig: ClawdisConfig = {
const nextConfig: ClawdbotConfig = {
...cfg,
skills,
};

View File

@@ -1,4 +1,4 @@
import type { ClawdisConfig } from "../config/config.js";
import type { ClawdbotConfig } from "../config/config.js";
import { monitorDiscordProvider } from "../discord/index.js";
import { probeDiscord } from "../discord/probe.js";
import { shouldLogVerbose } from "../globals.js";
@@ -70,7 +70,7 @@ export type ProviderRuntimeSnapshot = {
type SubsystemLogger = ReturnType<typeof createSubsystemLogger>;
type ProviderManagerOptions = {
loadConfig: () => ClawdisConfig;
loadConfig: () => ClawdbotConfig;
logWhatsApp: SubsystemLogger;
logTelegram: SubsystemLogger;
logDiscord: SubsystemLogger;

View File

@@ -24,7 +24,7 @@ installGatewayTestHooks();
describe("gateway server agent", () => {
test("agent falls back to allowFrom when lastTo is stale", async () => {
testState.allowFrom = ["+436769770569"];
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdis-gw-"));
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdbot-gw-"));
testState.sessionStorePath = path.join(dir, "sessions.json");
await fs.writeFile(
testState.sessionStorePath,
@@ -67,7 +67,7 @@ describe("gateway server agent", () => {
});
test("agent routes main last-channel whatsapp", async () => {
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdis-gw-"));
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdbot-gw-"));
testState.sessionStorePath = path.join(dir, "sessions.json");
await fs.writeFile(
testState.sessionStorePath,
@@ -111,7 +111,7 @@ describe("gateway server agent", () => {
});
test("agent routes main last-channel telegram", async () => {
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdis-gw-"));
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdbot-gw-"));
testState.sessionStorePath = path.join(dir, "sessions.json");
await fs.writeFile(
testState.sessionStorePath,
@@ -155,7 +155,7 @@ describe("gateway server agent", () => {
});
test("agent routes main last-channel discord", async () => {
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdis-gw-"));
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdbot-gw-"));
testState.sessionStorePath = path.join(dir, "sessions.json");
await fs.writeFile(
testState.sessionStorePath,
@@ -199,7 +199,7 @@ describe("gateway server agent", () => {
});
test("agent routes main last-channel signal", async () => {
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdis-gw-"));
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdbot-gw-"));
testState.sessionStorePath = path.join(dir, "sessions.json");
await fs.writeFile(
testState.sessionStorePath,
@@ -244,7 +244,7 @@ describe("gateway server agent", () => {
test("agent ignores webchat last-channel for routing", async () => {
testState.allowFrom = ["+1555"];
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdis-gw-"));
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdbot-gw-"));
testState.sessionStorePath = path.join(dir, "sessions.json");
await fs.writeFile(
testState.sessionStorePath,
@@ -415,7 +415,7 @@ describe("gateway server agent", () => {
});
test("agent events stream to webchat clients when run context is registered", async () => {
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdis-gw-"));
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdbot-gw-"));
testState.sessionStorePath = path.join(dir, "sessions.json");
await fs.writeFile(
testState.sessionStorePath,

View File

@@ -32,7 +32,7 @@ describe("gateway server auth/connect", () => {
);
test("connect (req) handshake returns hello-ok payload", async () => {
const { CONFIG_PATH_CLAWDIS, STATE_DIR_CLAWDIS } = await import(
const { CONFIG_PATH_CLAWDBOT, STATE_DIR_CLAWDBOT } = await import(
"../config/config.js"
);
const port = await getFreePort();
@@ -49,8 +49,8 @@ describe("gateway server auth/connect", () => {
}
| undefined;
expect(payload?.type).toBe("hello-ok");
expect(payload?.snapshot?.configPath).toBe(CONFIG_PATH_CLAWDIS);
expect(payload?.snapshot?.stateDir).toBe(STATE_DIR_CLAWDIS);
expect(payload?.snapshot?.configPath).toBe(CONFIG_PATH_CLAWDBOT);
expect(payload?.snapshot?.stateDir).toBe(STATE_DIR_CLAWDBOT);
ws.close();
await server.close();
@@ -79,9 +79,9 @@ describe("gateway server auth/connect", () => {
ws.close();
await server.close();
if (prevToken === undefined) {
delete process.env.CLAWDIS_GATEWAY_TOKEN;
delete process.env.CLAWDBOT_GATEWAY_TOKEN;
} else {
process.env.CLAWDIS_GATEWAY_TOKEN = prevToken;
process.env.CLAWDBOT_GATEWAY_TOKEN = prevToken;
}
});

View File

@@ -19,7 +19,7 @@ installGatewayTestHooks();
describe("gateway server chat", () => {
test("chat.send blocked by send policy", async () => {
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdis-gw-"));
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdbot-gw-"));
testState.sessionStorePath = path.join(dir, "sessions.json");
testState.sessionConfig = {
sendPolicy: {
@@ -68,7 +68,7 @@ describe("gateway server chat", () => {
});
test("agent blocked by send policy for sessionKey", async () => {
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdis-gw-"));
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdbot-gw-"));
testState.sessionStorePath = path.join(dir, "sessions.json");
testState.sessionConfig = {
sendPolicy: {
@@ -158,7 +158,7 @@ describe("gateway server chat", () => {
return typeof text === "string" ? text : undefined;
};
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdis-gw-"));
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdbot-gw-"));
testState.sessionStorePath = path.join(dir, "sessions.json");
await fs.writeFile(
testState.sessionStorePath,
@@ -274,7 +274,7 @@ describe("gateway server chat", () => {
reasoning: true,
},
];
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdis-gw-"));
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdbot-gw-"));
testState.sessionStorePath = path.join(dir, "sessions.json");
await fs.writeFile(
testState.sessionStorePath,
@@ -316,7 +316,7 @@ describe("gateway server chat", () => {
});
test("chat.history caps payload bytes", { timeout: 15_000 }, async () => {
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdis-gw-"));
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdbot-gw-"));
testState.sessionStorePath = path.join(dir, "sessions.json");
await fs.writeFile(
testState.sessionStorePath,
@@ -371,7 +371,7 @@ describe("gateway server chat", () => {
});
test("chat.send does not overwrite last delivery route", async () => {
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdis-gw-"));
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdbot-gw-"));
testState.sessionStorePath = path.join(dir, "sessions.json");
await fs.writeFile(
testState.sessionStorePath,
@@ -416,7 +416,7 @@ describe("gateway server chat", () => {
"chat.abort cancels an in-flight chat.send",
{ timeout: 15000 },
async () => {
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdis-gw-"));
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdbot-gw-"));
testState.sessionStorePath = path.join(dir, "sessions.json");
await fs.writeFile(
testState.sessionStorePath,
@@ -521,7 +521,7 @@ describe("gateway server chat", () => {
);
test("chat.abort cancels while saving the session store", async () => {
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdis-gw-"));
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdbot-gw-"));
testState.sessionStorePath = path.join(dir, "sessions.json");
await fs.writeFile(
testState.sessionStorePath,
@@ -608,7 +608,7 @@ describe("gateway server chat", () => {
});
test("chat.abort returns aborted=false for unknown runId", async () => {
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdis-gw-"));
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdbot-gw-"));
testState.sessionStorePath = path.join(dir, "sessions.json");
await fs.writeFile(
testState.sessionStorePath,
@@ -632,7 +632,7 @@ describe("gateway server chat", () => {
});
test("chat.abort rejects mismatched sessionKey", async () => {
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdis-gw-"));
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdbot-gw-"));
testState.sessionStorePath = path.join(dir, "sessions.json");
await fs.writeFile(
testState.sessionStorePath,
@@ -709,7 +709,7 @@ describe("gateway server chat", () => {
}, 15_000);
test("chat.abort is a no-op after chat.send completes", async () => {
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdis-gw-"));
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdbot-gw-"));
testState.sessionStorePath = path.join(dir, "sessions.json");
await fs.writeFile(
testState.sessionStorePath,
@@ -764,7 +764,7 @@ describe("gateway server chat", () => {
});
test("chat.send preserves run ordering for queued runs", async () => {
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdis-gw-"));
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdbot-gw-"));
testState.sessionStorePath = path.join(dir, "sessions.json");
await fs.writeFile(
testState.sessionStorePath,

View File

@@ -27,7 +27,7 @@ installGatewayTestHooks();
describe("gateway server cron", () => {
test("supports cron.add and cron.list", async () => {
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdis-gw-cron-"));
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdbot-gw-cron-"));
testState.cronStorePath = path.join(dir, "cron", "jobs.json");
await fs.mkdir(path.dirname(testState.cronStorePath), { recursive: true });
await fs.writeFile(
@@ -70,7 +70,7 @@ describe("gateway server cron", () => {
test("writes cron run history to runs/<jobId>.jsonl", async () => {
const dir = await fs.mkdtemp(
path.join(os.tmpdir(), "clawdis-gw-cron-log-"),
path.join(os.tmpdir(), "clawdbot-gw-cron-log-"),
);
testState.cronStorePath = path.join(dir, "cron", "jobs.json");
await fs.mkdir(path.dirname(testState.cronStorePath), { recursive: true });
@@ -143,7 +143,7 @@ describe("gateway server cron", () => {
test("writes cron run history to per-job runs/ when store is jobs.json", async () => {
const dir = await fs.mkdtemp(
path.join(os.tmpdir(), "clawdis-gw-cron-log-jobs-"),
path.join(os.tmpdir(), "clawdbot-gw-cron-log-jobs-"),
);
const cronDir = path.join(dir, "cron");
testState.cronStorePath = path.join(cronDir, "jobs.json");
@@ -216,7 +216,7 @@ describe("gateway server cron", () => {
test("enables cron scheduler by default and runs due jobs automatically", async () => {
const dir = await fs.mkdtemp(
path.join(os.tmpdir(), "clawdis-gw-cron-default-on-"),
path.join(os.tmpdir(), "clawdbot-gw-cron-default-on-"),
);
testState.cronStorePath = path.join(dir, "cron", "jobs.json");
testState.cronEnabled = undefined;

View File

@@ -103,7 +103,7 @@ describe("gateway server hooks", () => {
await server.close();
});
test("hooks wake accepts x-clawdis-token header", async () => {
test("hooks wake accepts x-clawdbot-token header", async () => {
testState.hooksConfig = { enabled: true, token: "hook-secret" };
const port = await getFreePort();
const server = await startGatewayServer(port);
@@ -111,7 +111,7 @@ describe("gateway server hooks", () => {
method: "POST",
headers: {
"Content-Type": "application/json",
"x-clawdis-token": "hook-secret",
"x-clawdbot-token": "hook-secret",
},
body: JSON.stringify({ text: "Header auth" }),
});

View File

@@ -18,8 +18,8 @@ installGatewayTestHooks();
describe("gateway server misc", () => {
test("hello-ok advertises the gateway port for canvas host", async () => {
const prevToken = process.env.CLAWDIS_GATEWAY_TOKEN;
process.env.CLAWDIS_GATEWAY_TOKEN = "secret";
const prevToken = process.env.CLAWDBOT_GATEWAY_TOKEN;
process.env.CLAWDBOT_GATEWAY_TOKEN = "secret";
testTailnetIPv4.value = "100.64.0.1";
testState.gatewayBind = "lan";
const canvasPort = await getFreePort();
@@ -41,9 +41,9 @@ describe("gateway server misc", () => {
ws.close();
await server.close();
if (prevToken === undefined) {
delete process.env.CLAWDIS_GATEWAY_TOKEN;
delete process.env.CLAWDBOT_GATEWAY_TOKEN;
} else {
process.env.CLAWDIS_GATEWAY_TOKEN = prevToken;
process.env.CLAWDBOT_GATEWAY_TOKEN = prevToken;
}
});

View File

@@ -21,7 +21,7 @@ describe("gateway server models + voicewake", () => {
"voicewake.get returns defaults and voicewake.set broadcasts",
{ timeout: 15_000 },
async () => {
const homeDir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdis-home-"));
const homeDir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdbot-home-"));
const prevHome = process.env.HOME;
process.env.HOME = homeDir;
@@ -60,7 +60,7 @@ describe("gateway server models + voicewake", () => {
const onDisk = JSON.parse(
await fs.readFile(
path.join(homeDir, ".clawdis", "settings", "voicewake.json"),
path.join(homeDir, ".clawdbot", "settings", "voicewake.json"),
"utf8",
),
) as { triggers?: unknown; updatedAtMs?: unknown };
@@ -79,7 +79,7 @@ describe("gateway server models + voicewake", () => {
);
test("pushes voicewake.changed to nodes on connect and on updates", async () => {
const homeDir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdis-home-"));
const homeDir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdbot-home-"));
const prevHome = process.env.HOME;
process.env.HOME = homeDir;

View File

@@ -37,7 +37,7 @@ installGatewayTestHooks();
describe("gateway server node/bridge", () => {
test("supports gateway-owned node pairing methods and events", async () => {
const homeDir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdis-home-"));
const homeDir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdbot-home-"));
const prevHome = process.env.HOME;
process.env.HOME = homeDir;
@@ -149,7 +149,7 @@ describe("gateway server node/bridge", () => {
});
test("routes node.invoke to the node bridge", async () => {
const homeDir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdis-home-"));
const homeDir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdbot-home-"));
const prevHome = process.env.HOME;
process.env.HOME = homeDir;
@@ -198,7 +198,7 @@ describe("gateway server node/bridge", () => {
});
test("routes camera.list invoke to the node bridge", async () => {
const homeDir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdis-home-"));
const homeDir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdbot-home-"));
const prevHome = process.env.HOME;
process.env.HOME = homeDir;
@@ -245,7 +245,7 @@ describe("gateway server node/bridge", () => {
});
test("node.describe returns supported invoke commands for paired nodes", async () => {
const homeDir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdis-home-"));
const homeDir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdbot-home-"));
const prevHome = process.env.HOME;
process.env.HOME = homeDir;
@@ -303,7 +303,7 @@ describe("gateway server node/bridge", () => {
});
test("node.describe works for connected unpaired nodes (caps + commands)", async () => {
const homeDir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdis-home-"));
const homeDir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdbot-home-"));
const prevHome = process.env.HOME;
process.env.HOME = homeDir;
@@ -363,7 +363,7 @@ describe("gateway server node/bridge", () => {
});
test("node.list includes connected unpaired nodes with capabilities + commands", async () => {
const homeDir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdis-home-"));
const homeDir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdbot-home-"));
const prevHome = process.env.HOME;
process.env.HOME = homeDir;
@@ -470,7 +470,7 @@ describe("gateway server node/bridge", () => {
});
test("emits presence updates for bridge connect/disconnect", async () => {
const homeDir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdis-home-"));
const homeDir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdbot-home-"));
const prevHome = process.env.HOME;
process.env.HOME = homeDir;
try {
@@ -539,7 +539,7 @@ describe("gateway server node/bridge", () => {
});
test("bridge RPC chat.history returns session messages", async () => {
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdis-gw-"));
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdbot-gw-"));
testState.sessionStorePath = path.join(dir, "sessions.json");
await fs.writeFile(
testState.sessionStorePath,
@@ -598,7 +598,7 @@ describe("gateway server node/bridge", () => {
});
test("bridge RPC sessions.list returns session rows", async () => {
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdis-gw-"));
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdbot-gw-"));
testState.sessionStorePath = path.join(dir, "sessions.json");
await fs.writeFile(
testState.sessionStorePath,
@@ -646,7 +646,7 @@ describe("gateway server node/bridge", () => {
});
test("bridge chat events are pushed to subscribed nodes", async () => {
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdis-gw-"));
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdbot-gw-"));
testState.sessionStorePath = path.join(dir, "sessions.json");
await fs.writeFile(
testState.sessionStorePath,
@@ -723,7 +723,7 @@ describe("gateway server node/bridge", () => {
});
test("bridge voice transcript defaults to main session", async () => {
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdis-gw-"));
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdbot-gw-"));
testState.sessionStorePath = path.join(dir, "sessions.json");
await fs.writeFile(
testState.sessionStorePath,
@@ -771,7 +771,7 @@ describe("gateway server node/bridge", () => {
});
test("bridge voice transcript triggers chat events for webchat clients", async () => {
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdis-gw-"));
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdbot-gw-"));
testState.sessionStorePath = path.join(dir, "sessions.json");
await fs.writeFile(
testState.sessionStorePath,
@@ -862,7 +862,7 @@ describe("gateway server node/bridge", () => {
});
test("bridge chat.abort cancels while saving the session store", async () => {
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdis-gw-"));
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdbot-gw-"));
testState.sessionStorePath = path.join(dir, "sessions.json");
await fs.writeFile(
testState.sessionStorePath,

View File

@@ -163,22 +163,22 @@ describe("gateway hot reload", () => {
let prevSkipGmail: string | undefined;
beforeEach(() => {
prevSkipProviders = process.env.CLAWDIS_SKIP_PROVIDERS;
prevSkipGmail = process.env.CLAWDIS_SKIP_GMAIL_WATCHER;
process.env.CLAWDIS_SKIP_PROVIDERS = "0";
delete process.env.CLAWDIS_SKIP_GMAIL_WATCHER;
prevSkipProviders = process.env.CLAWDBOT_SKIP_PROVIDERS;
prevSkipGmail = process.env.CLAWDBOT_SKIP_GMAIL_WATCHER;
process.env.CLAWDBOT_SKIP_PROVIDERS = "0";
delete process.env.CLAWDBOT_SKIP_GMAIL_WATCHER;
});
afterEach(() => {
if (prevSkipProviders === undefined) {
delete process.env.CLAWDIS_SKIP_PROVIDERS;
delete process.env.CLAWDBOT_SKIP_PROVIDERS;
} else {
process.env.CLAWDIS_SKIP_PROVIDERS = prevSkipProviders;
process.env.CLAWDBOT_SKIP_PROVIDERS = prevSkipProviders;
}
if (prevSkipGmail === undefined) {
delete process.env.CLAWDIS_SKIP_GMAIL_WATCHER;
delete process.env.CLAWDBOT_SKIP_GMAIL_WATCHER;
} else {
process.env.CLAWDIS_SKIP_GMAIL_WATCHER = prevSkipGmail;
process.env.CLAWDBOT_SKIP_GMAIL_WATCHER = prevSkipGmail;
}
});

View File

@@ -1,7 +1,7 @@
import fs from "node:fs/promises";
import path from "node:path";
import { describe, expect, it, vi } from "vitest";
import { createClawdisTools } from "../agents/clawdis-tools.js";
import { createClawdbotTools } from "../agents/clawdbot-tools.js";
import { resolveSessionTranscriptPath } from "../config/sessions.js";
import { emitAgentEvent } from "../infra/agent-events.js";
import {
@@ -16,8 +16,8 @@ installGatewayTestHooks();
describe("sessions_send gateway loopback", () => {
it("returns reply when job finishes before agent.wait", async () => {
const port = await getFreePort();
const prevPort = process.env.CLAWDIS_GATEWAY_PORT;
process.env.CLAWDIS_GATEWAY_PORT = String(port);
const prevPort = process.env.CLAWDBOT_GATEWAY_PORT;
process.env.CLAWDBOT_GATEWAY_PORT = String(port);
const server = await startGatewayServer(port);
const spy = vi.mocked(agentCommand);
@@ -71,7 +71,7 @@ describe("sessions_send gateway loopback", () => {
});
try {
const tool = createClawdisTools().find(
const tool = createClawdbotTools().find(
(candidate) => candidate.name === "sessions_send",
);
if (!tool) throw new Error("missing sessions_send tool");
@@ -94,9 +94,9 @@ describe("sessions_send gateway loopback", () => {
expect(firstCall?.lane).toBe("nested");
} finally {
if (prevPort === undefined) {
delete process.env.CLAWDIS_GATEWAY_PORT;
delete process.env.CLAWDBOT_GATEWAY_PORT;
} else {
process.env.CLAWDIS_GATEWAY_PORT = prevPort;
process.env.CLAWDBOT_GATEWAY_PORT = prevPort;
}
await server.close();
}

View File

@@ -16,7 +16,7 @@ installGatewayTestHooks();
describe("gateway server sessions", () => {
test("lists and patches session store via sessions.* RPC", async () => {
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdis-sessions-"));
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdbot-sessions-"));
const storePath = path.join(dir, "sessions.json");
const now = Date.now();
testState.sessionStorePath = storePath;
@@ -220,7 +220,7 @@ describe("gateway server sessions", () => {
});
test("sessions.delete rejects main and aborts active runs", async () => {
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdis-sessions-"));
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdbot-sessions-"));
const storePath = path.join(dir, "sessions.json");
testState.sessionStorePath = storePath;

View File

@@ -20,12 +20,12 @@ import {
import { createDefaultDeps } from "../cli/deps.js";
import { getHealthSnapshot, type HealthSummary } from "../commands/health.js";
import {
CONFIG_PATH_CLAWDIS,
CONFIG_PATH_CLAWDBOT,
isNixMode,
loadConfig,
migrateLegacyConfig,
readConfigFileSnapshot,
STATE_DIR_CLAWDIS,
STATE_DIR_CLAWDBOT,
writeConfigFile,
} from "../config/config.js";
import { loadSessionStore, resolveStorePath } from "../config/sessions.js";
@@ -49,7 +49,7 @@ import { onHeartbeatEvent } from "../infra/heartbeat-events.js";
import { startHeartbeatRunner } from "../infra/heartbeat-runner.js";
import { requestHeartbeatNow } from "../infra/heartbeat-wake.js";
import { getMachineDisplayName } from "../infra/machine-name.js";
import { ensureClawdisCliOnPath } from "../infra/path-env.js";
import { ensureClawdbotCliOnPath } from "../infra/path-env.js";
import { enqueueSystemEvent } from "../infra/system-events.js";
import {
listSystemPresence,
@@ -131,7 +131,7 @@ import type { DedupeEntry } from "./server-shared.js";
import { formatError } from "./server-utils.js";
import { formatForLog, logWs, summarizeAgentEventForWsLog } from "./ws-log.js";
ensureClawdisCliOnPath();
ensureClawdbotCliOnPath();
const log = createSubsystemLogger("gateway");
const logCanvas = log.child("canvas");
@@ -329,8 +329,8 @@ function buildSnapshot(): Snapshot {
stateVersion: { presence: presenceVersion, health: healthVersion },
uptimeMs,
// Surface resolved paths so UIs can display the true config location.
configPath: CONFIG_PATH_CLAWDIS,
stateDir: STATE_DIR_CLAWDIS,
configPath: CONFIG_PATH_CLAWDBOT,
stateDir: STATE_DIR_CLAWDBOT,
};
}
@@ -367,7 +367,7 @@ export async function startGatewayServer(
);
if (!migrated) {
throw new Error(
'Legacy config entries detected but auto-migration failed. Run "clawdis doctor" to migrate.',
'Legacy config entries detected but auto-migration failed. Run "clawdbot doctor" to migrate.',
);
}
await writeConfigFile(migrated);
@@ -407,9 +407,9 @@ export async function startGatewayServer(
};
const tailscaleMode = tailscaleConfig.mode ?? "off";
const token =
authConfig.token ?? process.env.CLAWDIS_GATEWAY_TOKEN ?? undefined;
authConfig.token ?? process.env.CLAWDBOT_GATEWAY_TOKEN ?? undefined;
const password =
authConfig.password ?? process.env.CLAWDIS_GATEWAY_PASSWORD ?? undefined;
authConfig.password ?? process.env.CLAWDBOT_GATEWAY_PASSWORD ?? undefined;
const authMode: ResolvedGatewayAuth["mode"] =
authConfig.mode ?? (password ? "password" : token ? "token" : "none");
const allowTailscale =
@@ -423,12 +423,12 @@ export async function startGatewayServer(
};
let hooksConfig = resolveHooksConfig(cfgAtStart);
const canvasHostEnabled =
process.env.CLAWDIS_SKIP_CANVAS_HOST !== "1" &&
process.env.CLAWDBOT_SKIP_CANVAS_HOST !== "1" &&
cfgAtStart.canvasHost?.enabled !== false;
assertGatewayAuthConfigured(resolvedAuth);
if (tailscaleMode === "funnel" && authMode !== "password") {
throw new Error(
"tailscale funnel requires gateway auth mode=password (set gateway.auth.password or CLAWDIS_GATEWAY_PASSWORD)",
"tailscale funnel requires gateway auth mode=password (set gateway.auth.password or CLAWDBOT_GATEWAY_PASSWORD)",
);
}
if (tailscaleMode !== "off" && !isLoopbackHost(bindHost)) {
@@ -438,7 +438,7 @@ export async function startGatewayServer(
}
if (!isLoopbackHost(bindHost) && authMode === "none") {
throw new Error(
`refusing to bind gateway to ${bindHost}:${port} without auth (set gateway.auth or CLAWDIS_GATEWAY_TOKEN)`,
`refusing to bind gateway to ${bindHost}:${port} without auth (set gateway.auth or CLAWDBOT_GATEWAY_TOKEN)`,
);
}
@@ -672,7 +672,7 @@ export async function startGatewayServer(
const buildCronService = (cfg: ReturnType<typeof loadConfig>) => {
const storePath = resolveCronStorePath(cfg.cron?.store);
const cronEnabled =
process.env.CLAWDIS_SKIP_CRON !== "1" && cfg.cron?.enabled !== false;
process.env.CLAWDBOT_SKIP_CRON !== "1" && cfg.cron?.enabled !== false;
const cron = new CronService({
storePath,
cronEnabled,
@@ -807,7 +807,7 @@ export async function startGatewayServer(
const bridgeEnabled = (() => {
if (cfgAtStart.bridge?.enabled !== undefined)
return cfgAtStart.bridge.enabled === true;
return process.env.CLAWDIS_BRIDGE_ENABLED !== "0";
return process.env.CLAWDBOT_BRIDGE_ENABLED !== "0";
})();
const bridgePort = (() => {
@@ -817,8 +817,8 @@ export async function startGatewayServer(
) {
return cfgAtStart.bridge.port;
}
if (process.env.CLAWDIS_BRIDGE_PORT !== undefined) {
const parsed = Number.parseInt(process.env.CLAWDIS_BRIDGE_PORT, 10);
if (process.env.CLAWDBOT_BRIDGE_PORT !== undefined) {
const parsed = Number.parseInt(process.env.CLAWDBOT_BRIDGE_PORT, 10);
return Number.isFinite(parsed) && parsed > 0 ? parsed : 18790;
}
return 18790;
@@ -827,7 +827,7 @@ export async function startGatewayServer(
const bridgeHost = (() => {
// Back-compat: allow an env var override when no bind policy is configured.
if (cfgAtStart.bridge?.bind === undefined) {
const env = process.env.CLAWDIS_BRIDGE_HOST?.trim();
const env = process.env.CLAWDBOT_BRIDGE_HOST?.trim();
if (env) return env;
}
@@ -1059,7 +1059,7 @@ export async function startGatewayServer(
const tailnetDns = await resolveTailnetDnsHint();
try {
const sshPortEnv = process.env.CLAWDIS_SSH_PORT?.trim();
const sshPortEnv = process.env.CLAWDBOT_SSH_PORT?.trim();
const sshPortParsed = sshPortEnv ? Number.parseInt(sshPortEnv, 10) : NaN;
const sshPort =
Number.isFinite(sshPortParsed) && sshPortParsed > 0
@@ -1392,7 +1392,7 @@ export async function startGatewayServer(
protocol: PROTOCOL_VERSION,
server: {
version:
process.env.CLAWDIS_VERSION ??
process.env.CLAWDBOT_VERSION ??
process.env.npm_package_version ??
"dev",
commit: process.env.GIT_COMMIT,
@@ -1594,7 +1594,7 @@ export async function startGatewayServer(
}
// Start Gmail watcher if configured (hooks.gmail.account).
if (process.env.CLAWDIS_SKIP_GMAIL_WATCHER !== "1") {
if (process.env.CLAWDBOT_SKIP_GMAIL_WATCHER !== "1") {
try {
const gmailResult = await startGmailWatcher(cfgAtStart);
if (gmailResult.started) {
@@ -1612,15 +1612,15 @@ export async function startGatewayServer(
}
// Launch configured providers (WhatsApp Web, Discord, Slack, Telegram) so gateway replies via the
// surface the message came from. Tests can opt out via CLAWDIS_SKIP_PROVIDERS.
if (process.env.CLAWDIS_SKIP_PROVIDERS !== "1") {
// surface the message came from. Tests can opt out via CLAWDBOT_SKIP_PROVIDERS.
if (process.env.CLAWDBOT_SKIP_PROVIDERS !== "1") {
try {
await startProviders();
} catch (err) {
logProviders.error(`provider startup failed: ${String(err)}`);
}
} else {
logProviders.info("skipping provider start (CLAWDIS_SKIP_PROVIDERS=1)");
logProviders.info("skipping provider start (CLAWDBOT_SKIP_PROVIDERS=1)");
}
const applyHotReload = async (
@@ -1663,7 +1663,7 @@ export async function startGatewayServer(
if (plan.restartGmailWatcher) {
await stopGmailWatcher().catch(() => {});
if (process.env.CLAWDIS_SKIP_GMAIL_WATCHER !== "1") {
if (process.env.CLAWDBOT_SKIP_GMAIL_WATCHER !== "1") {
try {
const gmailResult = await startGmailWatcher(nextConfig);
if (gmailResult.started) {
@@ -1680,15 +1680,15 @@ export async function startGatewayServer(
}
} else {
logHooks.info(
"skipping gmail watcher restart (CLAWDIS_SKIP_GMAIL_WATCHER=1)",
"skipping gmail watcher restart (CLAWDBOT_SKIP_GMAIL_WATCHER=1)",
);
}
}
if (plan.restartProviders.size > 0) {
if (process.env.CLAWDIS_SKIP_PROVIDERS === "1") {
if (process.env.CLAWDBOT_SKIP_PROVIDERS === "1") {
logProviders.info(
"skipping provider reload (CLAWDIS_SKIP_PROVIDERS=1)",
"skipping provider reload (CLAWDBOT_SKIP_PROVIDERS=1)",
);
} else {
const restartProvider = async (
@@ -1780,7 +1780,7 @@ export async function startGatewayServer(
warn: (msg) => logReload.warn(msg),
error: (msg) => logReload.error(msg),
},
watchPath: CONFIG_PATH_CLAWDIS,
watchPath: CONFIG_PATH_CLAWDBOT,
});
return {

View File

@@ -8,7 +8,7 @@ import {
DEFAULT_PROVIDER,
} from "../agents/defaults.js";
import { resolveConfiguredModelRef } from "../agents/model-selection.js";
import { type ClawdisConfig, loadConfig } from "../config/config.js";
import { type ClawdbotConfig, loadConfig } from "../config/config.js";
import {
buildGroupDisplayName,
loadSessionStore,
@@ -97,7 +97,7 @@ export function resolveSessionTranscriptCandidates(
candidates.push(path.join(dir, `${sessionId}.jsonl`));
}
candidates.push(
path.join(os.homedir(), ".clawdis", "sessions", `${sessionId}.jsonl`),
path.join(os.homedir(), ".clawdbot", "sessions", `${sessionId}.jsonl`),
);
return candidates;
}
@@ -180,7 +180,7 @@ export function parseGroupKey(
}
export function getSessionDefaults(
cfg: ClawdisConfig,
cfg: ClawdbotConfig,
): GatewaySessionsDefaults {
const resolved = resolveConfiguredModelRef({
cfg,
@@ -198,7 +198,7 @@ export function getSessionDefaults(
}
export function resolveSessionModelRef(
cfg: ClawdisConfig,
cfg: ClawdbotConfig,
entry?: SessionEntry,
): { provider: string; model: string } {
const resolved = resolveConfiguredModelRef({
@@ -217,7 +217,7 @@ export function resolveSessionModelRef(
}
export function listSessionsFromStore(params: {
cfg: ClawdisConfig;
cfg: ClawdbotConfig;
storePath: string;
store: Record<string, SessionEntry>;
opts: import("./protocol/index.js").SessionsListParams;

View File

@@ -161,7 +161,7 @@ vi.mock("../config/config.js", async () => {
"../config/config.js",
);
const resolveConfigPath = () =>
path.join(os.homedir(), ".clawdis", "clawdis.json");
path.join(os.homedir(), ".clawdbot", "clawdbot.json");
const readConfigFileSnapshot = async () => {
if (testState.legacyIssues.length > 0) {
@@ -230,8 +230,8 @@ vi.mock("../config/config.js", async () => {
return {
...actual,
CONFIG_PATH_CLAWDIS: resolveConfigPath(),
STATE_DIR_CLAWDIS: path.dirname(resolveConfigPath()),
CONFIG_PATH_CLAWDBOT: resolveConfigPath(),
STATE_DIR_CLAWDBOT: path.dirname(resolveConfigPath()),
get isNixMode() {
return testIsNixMode.value;
},
@@ -325,7 +325,7 @@ vi.mock("../commands/agent.js", () => ({
agentCommand,
}));
process.env.CLAWDIS_SKIP_PROVIDERS = "1";
process.env.CLAWDBOT_SKIP_PROVIDERS = "1";
let previousHome: string | undefined;
let tempHome: string | undefined;
@@ -334,7 +334,7 @@ export function installGatewayTestHooks() {
beforeEach(async () => {
previousHome = process.env.HOME;
tempHome = await fs.mkdtemp(
path.join(os.tmpdir(), "clawdis-gateway-home-"),
path.join(os.tmpdir(), "clawdbot-gateway-home-"),
);
process.env.HOME = tempHome;
sessionStoreSaveDelayMs.value = 0;
@@ -440,11 +440,11 @@ export async function startServerWithClient(
opts?: GatewayServerOptions,
) {
const port = await getFreePort();
const prev = process.env.CLAWDIS_GATEWAY_TOKEN;
const prev = process.env.CLAWDBOT_GATEWAY_TOKEN;
if (token === undefined) {
delete process.env.CLAWDIS_GATEWAY_TOKEN;
delete process.env.CLAWDBOT_GATEWAY_TOKEN;
} else {
process.env.CLAWDIS_GATEWAY_TOKEN = token;
process.env.CLAWDBOT_GATEWAY_TOKEN = token;
}
const server = await startGatewayServer(port, opts);
const ws = new WebSocket(`ws://127.0.0.1:${port}`);