@gguf/claw
Version:
Multi-channel AI gateway with extensible messaging integrations
413 lines (409 loc) • 13.8 kB
JavaScript
import { _ as defaultRuntime, an as getPrimaryCommand, c as enableConsoleCapture, cn as hasHelpOrVersion, en as normalizeWindowsArgv, i as normalizeEnv, in as getPositiveIntFlagValue, n as isTruthyEnvValue, nn as getCommandPath, on as getVerboseFlag, rn as getFlagValue, sn as hasFlag } from "./entry.js";
import "./auth-profiles-DFa1zzNy.js";
import "./exec-CBKBIMpA.js";
import "./agent-scope-RzK9Zcks.js";
import "./github-copilot-token-DuFIqfeC.js";
import "./model-DY9t1aT6.js";
import "./pi-model-discovery-Do3xMEtM.js";
import "./frontmatter-D-YR-Ghi.js";
import "./skills-DJmGZazd.js";
import "./manifest-registry-DS2iK5AZ.js";
import { U as loadDotEnv, V as VERSION } from "./config-B2kL1ciP.js";
import "./client-CDjZdZtI.js";
import "./call-DXhJGwEy.js";
import "./message-channel-CVHJDItx.js";
import "./pairing-token-Byh6drgn.js";
import "./subagent-registry-C7Edpn23.js";
import "./sessions-BD5dyLxb.js";
import "./tokens-D5RzuaYP.js";
import "./normalize-Db7Xtx2v.js";
import "./accounts-BpzwDfBB.js";
import "./bindings-KqaGKS1E.js";
import "./logging-CFvkxgcX.js";
import "./send-BFiRlO6V.js";
import "./plugins-RqhjLCb6.js";
import "./send-CWDtU8Gi.js";
import "./with-timeout-nVWy7PWz.js";
import "./deliver-CeVE1Jh-.js";
import "./diagnostic-774btyou.js";
import "./diagnostic-session-state-HO94DMou.js";
import "./accounts-B3D4iWUP.js";
import "./send-DCCBUsNn.js";
import "./image-ops-lDlFpoR2.js";
import "./pi-embedded-helpers-NVEtaJwl.js";
import "./sandbox-CO-R8v6J.js";
import "./common-DcSh1hZE.js";
import "./chrome-52ZF7gmE.js";
import "./tailscale-BzRVNhMW.js";
import "./auth-Dq2pFnjj.js";
import "./server-context-C1f7cijA.js";
import "./routes-BJmh1Ify.js";
import "./redact-C2s6sr73.js";
import { r as formatUncaughtError } from "./errors-CFEPAPWc.js";
import "./fs-safe-3YwsxSr5.js";
import "./paths-CXKNzNjU.js";
import "./ssrf-Cv2DiHsm.js";
import "./store-e6fIrP17.js";
import "./ports-59j-bA53.js";
import "./trash-DVLJ0k6q.js";
import "./dock-BZuwgj1O.js";
import "./accounts-Jg3_1Y-r.js";
import "./paths-CXpciDEv.js";
import "./thinking-CJPPUYWd.js";
import "./models-config-5zJ39mUb.js";
import "./reply-prefix-DJOqzjBt.js";
import "./memory-cli-C3uas9sI.js";
import "./manager-D3ZmOwqt.js";
import "./gemini-auth-CdgAkz2K.js";
import "./sqlite-1-TCahE6.js";
import "./retry-BcjnIuo-.js";
import "./chunk-Z2NYDchs.js";
import "./markdown-tables-GCHx-nGT.js";
import "./fetch-guard-B5BAqVyD.js";
import "./local-roots-SkDT1Wv8.js";
import "./ir-DAwVi0a7.js";
import "./render-e7fENCYH.js";
import "./commands-registry-CRmMPJQ9.js";
import "./image-QGUQCdGh.js";
import "./tool-display-Cs1uRaRV.js";
import { u as installUnhandledRejectionHandler } from "./runner-D81xREgc.js";
import "./model-catalog-DLoDxnxL.js";
import "./session-utils-C3Oi9cXA.js";
import "./skill-commands-D2rmj6w8.js";
import "./workspace-dirs-BXftTDSV.js";
import "./pairing-store-CruPwgBw.js";
import "./fetch-vg2oFVIH.js";
import "./exec-approvals-BZA6z4HM.js";
import "./nodes-screen-x7YKy8Ay.js";
import "./session-cost-usage-CpxG9Mup.js";
import "./pi-tools.policy-DeRwGLEO.js";
import "./control-service-DGleRjGJ.js";
import "./stagger-CArN2YVJ.js";
import "./channel-selection-DoXlsBhe.js";
import "./send-C3RIrBTr.js";
import "./outbound-attachment-CdFWGHgJ.js";
import "./delivery-queue-DKdWlR61.js";
import "./send-0Nz3O9Jc.js";
import "./resolve-route-BONxzeyg.js";
import "./channel-activity-BYGpAtHP.js";
import "./tables-BrqD0SUa.js";
import "./proxy-DL3MD6-P.js";
import "./links-CW8Bx7rK.js";
import "./cli-utils-CCaEbxAz.js";
import "./help-format-B0pWGnZs.js";
import "./progress-BAHiAaDW.js";
import "./replies-CuUAAFF2.js";
import "./onboard-helpers-CEx2tGVB.js";
import "./prompt-style-DwCXob2h.js";
import "./pairing-labels-DtxjElSq.js";
import { t as ensureOpenClawCliOnPath } from "./path-env-CNv2YgHO.js";
import "./catalog-vmrRUSxJ.js";
import "./note-D3Xn5qjj.js";
import "./plugin-auto-enable-DR5UZ2Ky.js";
import { t as ensurePluginRegistryLoaded } from "./plugin-registry-CXQ59uvq.js";
import { t as assertSupportedRuntime } from "./runtime-guard-DcwOrtgH.js";
import { t as emitCliBanner } from "./banner-CtyoWCcv.js";
import "./doctor-config-flow-Cr5VX2mY.js";
import { n as ensureConfigReady } from "./config-guard-BRSGlD76.js";
import process$1 from "node:process";
import { fileURLToPath } from "node:url";
//#region src/cli/program/routes.ts
const routeHealth = {
match: (path) => path[0] === "health",
loadPlugins: true,
run: async (argv) => {
const json = hasFlag(argv, "--json");
const verbose = getVerboseFlag(argv, { includeDebug: true });
const timeoutMs = getPositiveIntFlagValue(argv, "--timeout");
if (timeoutMs === null) return false;
const { healthCommand } = await import("./health-75545GOF.js").then((n) => n.i);
await healthCommand({
json,
timeoutMs,
verbose
}, defaultRuntime);
return true;
}
};
const routeStatus = {
match: (path) => path[0] === "status",
loadPlugins: true,
run: async (argv) => {
const json = hasFlag(argv, "--json");
const deep = hasFlag(argv, "--deep");
const all = hasFlag(argv, "--all");
const usage = hasFlag(argv, "--usage");
const verbose = getVerboseFlag(argv, { includeDebug: true });
const timeoutMs = getPositiveIntFlagValue(argv, "--timeout");
if (timeoutMs === null) return false;
const { statusCommand } = await import("./status-Btq6uVbA.js").then((n) => n.t);
await statusCommand({
json,
deep,
all,
usage,
timeoutMs,
verbose
}, defaultRuntime);
return true;
}
};
const routeSessions = {
match: (path) => path[0] === "sessions",
run: async (argv) => {
const json = hasFlag(argv, "--json");
const store = getFlagValue(argv, "--store");
if (store === null) return false;
const active = getFlagValue(argv, "--active");
if (active === null) return false;
const { sessionsCommand } = await import("./sessions-CSCx_t1X.js").then((n) => n.n);
await sessionsCommand({
json,
store,
active
}, defaultRuntime);
return true;
}
};
const routeAgentsList = {
match: (path) => path[0] === "agents" && path[1] === "list",
run: async (argv) => {
const json = hasFlag(argv, "--json");
const bindings = hasFlag(argv, "--bindings");
const { agentsListCommand } = await import("./agents-Dm5MQsPx.js").then((n) => n.t);
await agentsListCommand({
json,
bindings
}, defaultRuntime);
return true;
}
};
const routeMemoryStatus = {
match: (path) => path[0] === "memory" && path[1] === "status",
run: async (argv) => {
const agent = getFlagValue(argv, "--agent");
if (agent === null) return false;
const json = hasFlag(argv, "--json");
const deep = hasFlag(argv, "--deep");
const index = hasFlag(argv, "--index");
const verbose = hasFlag(argv, "--verbose");
const { runMemoryStatus } = await import("./memory-cli-C3uas9sI.js").then((n) => n.t);
await runMemoryStatus({
agent,
json,
deep,
index,
verbose
});
return true;
}
};
function getCommandPositionals(argv) {
const out = [];
const args = argv.slice(2);
for (const arg of args) {
if (!arg || arg === "--") break;
if (arg.startsWith("-")) continue;
out.push(arg);
}
return out;
}
function getFlagValues(argv, name) {
const values = [];
const args = argv.slice(2);
for (let i = 0; i < args.length; i += 1) {
const arg = args[i];
if (!arg || arg === "--") break;
if (arg === name) {
const next = args[i + 1];
if (!next || next === "--" || next.startsWith("-")) return null;
values.push(next);
i += 1;
continue;
}
if (arg.startsWith(`${name}=`)) {
const value = arg.slice(name.length + 1).trim();
if (!value) return null;
values.push(value);
}
}
return values;
}
const routes = [
routeHealth,
routeStatus,
routeSessions,
routeAgentsList,
routeMemoryStatus,
{
match: (path) => path[0] === "config" && path[1] === "get",
run: async (argv) => {
const pathArg = getCommandPositionals(argv)[2];
if (!pathArg) return false;
const json = hasFlag(argv, "--json");
const { runConfigGet } = await import("./config-cli-B75u9iiB.js");
await runConfigGet({
path: pathArg,
json
});
return true;
}
},
{
match: (path) => path[0] === "config" && path[1] === "unset",
run: async (argv) => {
const pathArg = getCommandPositionals(argv)[2];
if (!pathArg) return false;
const { runConfigUnset } = await import("./config-cli-B75u9iiB.js");
await runConfigUnset({ path: pathArg });
return true;
}
},
{
match: (path) => path[0] === "models" && path[1] === "list",
run: async (argv) => {
const provider = getFlagValue(argv, "--provider");
if (provider === null) return false;
const all = hasFlag(argv, "--all");
const local = hasFlag(argv, "--local");
const json = hasFlag(argv, "--json");
const plain = hasFlag(argv, "--plain");
const { modelsListCommand } = await import("./models-B1GTjQZB.js").then((n) => n.t);
await modelsListCommand({
all,
local,
provider,
json,
plain
}, defaultRuntime);
return true;
}
},
{
match: (path) => path[0] === "models" && path[1] === "status",
run: async (argv) => {
const probeProvider = getFlagValue(argv, "--probe-provider");
if (probeProvider === null) return false;
const probeTimeout = getFlagValue(argv, "--probe-timeout");
if (probeTimeout === null) return false;
const probeConcurrency = getFlagValue(argv, "--probe-concurrency");
if (probeConcurrency === null) return false;
const probeMaxTokens = getFlagValue(argv, "--probe-max-tokens");
if (probeMaxTokens === null) return false;
const agent = getFlagValue(argv, "--agent");
if (agent === null) return false;
const probeProfileValues = getFlagValues(argv, "--probe-profile");
if (probeProfileValues === null) return false;
const probeProfile = probeProfileValues.length === 0 ? void 0 : probeProfileValues.length === 1 ? probeProfileValues[0] : probeProfileValues;
const json = hasFlag(argv, "--json");
const plain = hasFlag(argv, "--plain");
const check = hasFlag(argv, "--check");
const probe = hasFlag(argv, "--probe");
const { modelsStatusCommand } = await import("./models-B1GTjQZB.js").then((n) => n.t);
await modelsStatusCommand({
json,
plain,
check,
probe,
probeProvider,
probeProfile,
probeTimeout,
probeConcurrency,
probeMaxTokens,
agent
}, defaultRuntime);
return true;
}
}
];
function findRoutedCommand(path) {
for (const route of routes) if (route.match(path)) return route;
return null;
}
//#endregion
//#region src/cli/route.ts
async function prepareRoutedCommand(params) {
emitCliBanner(VERSION, { argv: params.argv });
await ensureConfigReady({
runtime: defaultRuntime,
commandPath: params.commandPath
});
if (params.loadPlugins) ensurePluginRegistryLoaded();
}
async function tryRouteCli(argv) {
if (isTruthyEnvValue(process.env.OPENCLAW_DISABLE_ROUTE_FIRST)) return false;
if (hasHelpOrVersion(argv)) return false;
const path = getCommandPath(argv, 2);
if (!path[0]) return false;
const route = findRoutedCommand(path);
if (!route) return false;
await prepareRoutedCommand({
argv,
commandPath: path,
loadPlugins: route.loadPlugins
});
return route.run(argv);
}
//#endregion
//#region src/cli/run-main.ts
function rewriteUpdateFlagArgv(argv) {
const index = argv.indexOf("--update");
if (index === -1) return argv;
const next = [...argv];
next.splice(index, 1, "update");
return next;
}
function shouldSkipPluginCommandRegistration(params) {
if (params.hasBuiltinPrimary) return true;
if (!params.primary) return hasHelpOrVersion(params.argv);
return false;
}
function shouldEnsureCliPath(argv) {
if (hasHelpOrVersion(argv)) return false;
const [primary, secondary] = getCommandPath(argv, 2);
if (!primary) return true;
if (primary === "status" || primary === "health" || primary === "sessions") return false;
if (primary === "config" && (secondary === "get" || secondary === "unset")) return false;
if (primary === "models" && (secondary === "list" || secondary === "status")) return false;
return true;
}
async function runCli(argv = process$1.argv) {
const normalizedArgv = normalizeWindowsArgv(argv);
loadDotEnv({ quiet: true });
normalizeEnv();
if (shouldEnsureCliPath(normalizedArgv)) ensureOpenClawCliOnPath();
assertSupportedRuntime();
if (await tryRouteCli(normalizedArgv)) return;
enableConsoleCapture();
const { buildProgram } = await import("./program-CvycZdwq.js");
const program = buildProgram();
installUnhandledRejectionHandler();
process$1.on("uncaughtException", (error) => {
console.error("[openclaw] Uncaught exception:", formatUncaughtError(error));
process$1.exit(1);
});
const parseArgv = rewriteUpdateFlagArgv(normalizedArgv);
const primary = getPrimaryCommand(parseArgv);
if (primary) {
const { getProgramContext } = await import("./program-context--isQKnLs.js").then((n) => n.n);
const ctx = getProgramContext(program);
if (ctx) {
const { registerCoreCliByName } = await import("./command-registry-D81FNA9E.js").then((n) => n.t);
await registerCoreCliByName(program, ctx, primary, parseArgv);
}
const { registerSubCliByName } = await import("./register.subclis-CPEP_g__.js").then((n) => n.a);
await registerSubCliByName(program, primary);
}
if (!shouldSkipPluginCommandRegistration({
argv: parseArgv,
primary,
hasBuiltinPrimary: primary !== null && program.commands.some((command) => command.name() === primary)
})) {
const { registerPluginCliCommands } = await import("./cli-C8BjFW6Z.js");
const { loadConfig } = await import("./config-B2kL1ciP.js").then((n) => n.t);
registerPluginCliCommands(program, loadConfig());
}
await program.parseAsync(parseArgv);
}
//#endregion
export { runCli };