UNPKG

@gguf/claw

Version:

Multi-channel AI gateway with extensible messaging integrations

413 lines (409 loc) 13.8 kB
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 };