@gguf/claw
Version:
Multi-channel AI gateway with extensible messaging integrations
300 lines (298 loc) • 16 kB
JavaScript
import { Dt as theme, _ as defaultRuntime } from "./entry.js";
import "./auth-profiles-DFa1zzNy.js";
import "./exec-CBKBIMpA.js";
import "./agent-scope-RzK9Zcks.js";
import "./github-copilot-token-DuFIqfeC.js";
import "./pi-auth-json-BgkD6ovr.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 "./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 "./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 "./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 { t as formatDocsLink } from "./links-CW8Bx7rK.js";
import { n as runCommandWithRuntime, t as resolveOptionFromCommand } from "./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 "./note-D3Xn5qjj.js";
import "./clack-prompter-DOOcFy2t.js";
import "./table-Ca0mornk.js";
import "./shared-DpLvAirU.js";
import "./auth-token-B5F1NkdJ.js";
import "./logging-BGewRZy0.js";
import { c as githubCopilotLoginCommand } from "./provider-auth-helpers-CSWFmrj3.js";
import { C as modelsAliasesListCommand, S as modelsAliasesAddCommand, _ as modelsAuthOrderSetCommand, a as modelsStatusCommand, b as modelsAuthPasteTokenCommand, c as modelsImageFallbacksClearCommand, d as modelsFallbacksAddCommand, f as modelsFallbacksClearCommand, g as modelsAuthOrderGetCommand, h as modelsAuthOrderClearCommand, i as modelsScanCommand, l as modelsImageFallbacksListCommand, m as modelsFallbacksRemoveCommand, n as modelsSetImageCommand, o as modelsListCommand, p as modelsFallbacksListCommand, r as modelsSetCommand, s as modelsImageFallbacksAddCommand, u as modelsImageFallbacksRemoveCommand, v as modelsAuthAddCommand, w as modelsAliasesRemoveCommand, x as modelsAuthSetupTokenCommand, y as modelsAuthLoginCommand } from "./models-B1GTjQZB.js";
//#region src/cli/models-cli.ts
function runModelsCommand(action) {
return runCommandWithRuntime(defaultRuntime, action);
}
function registerModelsCli(program) {
const models = program.command("models").description("Model discovery, scanning, and configuration").option("--status-json", "Output JSON (alias for `models status --json`)", false).option("--status-plain", "Plain output (alias for `models status --plain`)", false).option("--agent <id>", "Agent id to inspect (overrides OPENCLAW_AGENT_DIR/PI_CODING_AGENT_DIR)").addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/models", "docs.openclaw.ai/cli/models")}\n`);
models.command("list").description("List models (configured by default)").option("--all", "Show full model catalog", false).option("--local", "Filter to local models", false).option("--provider <name>", "Filter by provider").option("--json", "Output JSON", false).option("--plain", "Plain line output", false).action(async (opts) => {
await runModelsCommand(async () => {
await modelsListCommand(opts, defaultRuntime);
});
});
models.command("status").description("Show configured model state").option("--json", "Output JSON", false).option("--plain", "Plain output", false).option("--check", "Exit non-zero if auth is expiring/expired (1=expired/missing, 2=expiring)", false).option("--probe", "Probe configured provider auth (live)", false).option("--probe-provider <name>", "Only probe a single provider").option("--probe-profile <id>", "Only probe specific auth profile ids (repeat or comma-separated)", (value, previous) => {
const next = Array.isArray(previous) ? previous : previous ? [previous] : [];
next.push(value);
return next;
}).option("--probe-timeout <ms>", "Per-probe timeout in ms").option("--probe-concurrency <n>", "Concurrent probes").option("--probe-max-tokens <n>", "Probe max tokens (best-effort)").option("--agent <id>", "Agent id to inspect (overrides OPENCLAW_AGENT_DIR/PI_CODING_AGENT_DIR)").action(async (opts, command) => {
const agent = resolveOptionFromCommand(command, "agent") ?? opts.agent;
await runModelsCommand(async () => {
await modelsStatusCommand({
json: Boolean(opts.json),
plain: Boolean(opts.plain),
check: Boolean(opts.check),
probe: Boolean(opts.probe),
probeProvider: opts.probeProvider,
probeProfile: opts.probeProfile,
probeTimeout: opts.probeTimeout,
probeConcurrency: opts.probeConcurrency,
probeMaxTokens: opts.probeMaxTokens,
agent
}, defaultRuntime);
});
});
models.command("set").description("Set the default model").argument("<model>", "Model id or alias").action(async (model) => {
await runModelsCommand(async () => {
await modelsSetCommand(model, defaultRuntime);
});
});
models.command("set-image").description("Set the image model").argument("<model>", "Model id or alias").action(async (model) => {
await runModelsCommand(async () => {
await modelsSetImageCommand(model, defaultRuntime);
});
});
const aliases = models.command("aliases").description("Manage model aliases");
aliases.command("list").description("List model aliases").option("--json", "Output JSON", false).option("--plain", "Plain output", false).action(async (opts) => {
await runModelsCommand(async () => {
await modelsAliasesListCommand(opts, defaultRuntime);
});
});
aliases.command("add").description("Add or update a model alias").argument("<alias>", "Alias name").argument("<model>", "Model id or alias").action(async (alias, model) => {
await runModelsCommand(async () => {
await modelsAliasesAddCommand(alias, model, defaultRuntime);
});
});
aliases.command("remove").description("Remove a model alias").argument("<alias>", "Alias name").action(async (alias) => {
await runModelsCommand(async () => {
await modelsAliasesRemoveCommand(alias, defaultRuntime);
});
});
const fallbacks = models.command("fallbacks").description("Manage model fallback list");
fallbacks.command("list").description("List fallback models").option("--json", "Output JSON", false).option("--plain", "Plain output", false).action(async (opts) => {
await runModelsCommand(async () => {
await modelsFallbacksListCommand(opts, defaultRuntime);
});
});
fallbacks.command("add").description("Add a fallback model").argument("<model>", "Model id or alias").action(async (model) => {
await runModelsCommand(async () => {
await modelsFallbacksAddCommand(model, defaultRuntime);
});
});
fallbacks.command("remove").description("Remove a fallback model").argument("<model>", "Model id or alias").action(async (model) => {
await runModelsCommand(async () => {
await modelsFallbacksRemoveCommand(model, defaultRuntime);
});
});
fallbacks.command("clear").description("Clear all fallback models").action(async () => {
await runModelsCommand(async () => {
await modelsFallbacksClearCommand(defaultRuntime);
});
});
const imageFallbacks = models.command("image-fallbacks").description("Manage image model fallback list");
imageFallbacks.command("list").description("List image fallback models").option("--json", "Output JSON", false).option("--plain", "Plain output", false).action(async (opts) => {
await runModelsCommand(async () => {
await modelsImageFallbacksListCommand(opts, defaultRuntime);
});
});
imageFallbacks.command("add").description("Add an image fallback model").argument("<model>", "Model id or alias").action(async (model) => {
await runModelsCommand(async () => {
await modelsImageFallbacksAddCommand(model, defaultRuntime);
});
});
imageFallbacks.command("remove").description("Remove an image fallback model").argument("<model>", "Model id or alias").action(async (model) => {
await runModelsCommand(async () => {
await modelsImageFallbacksRemoveCommand(model, defaultRuntime);
});
});
imageFallbacks.command("clear").description("Clear all image fallback models").action(async () => {
await runModelsCommand(async () => {
await modelsImageFallbacksClearCommand(defaultRuntime);
});
});
models.command("scan").description("Scan OpenRouter free models for tools + images").option("--min-params <b>", "Minimum parameter size (billions)").option("--max-age-days <days>", "Skip models older than N days").option("--provider <name>", "Filter by provider prefix").option("--max-candidates <n>", "Max fallback candidates", "6").option("--timeout <ms>", "Per-probe timeout in ms").option("--concurrency <n>", "Probe concurrency").option("--no-probe", "Skip live probes; list free candidates only").option("--yes", "Accept defaults without prompting", false).option("--no-input", "Disable prompts (use defaults)").option("--set-default", "Set agents.defaults.model to the first selection", false).option("--set-image", "Set agents.defaults.imageModel to the first image selection", false).option("--json", "Output JSON", false).action(async (opts) => {
await runModelsCommand(async () => {
await modelsScanCommand(opts, defaultRuntime);
});
});
models.action(async (opts) => {
await runModelsCommand(async () => {
await modelsStatusCommand({
json: Boolean(opts?.statusJson),
plain: Boolean(opts?.statusPlain),
agent: opts?.agent
}, defaultRuntime);
});
});
const auth = models.command("auth").description("Manage model auth profiles");
auth.option("--agent <id>", "Agent id for auth order get/set/clear");
auth.action(() => {
auth.help();
});
auth.command("add").description("Interactive auth helper (setup-token or paste token)").action(async () => {
await runModelsCommand(async () => {
await modelsAuthAddCommand({}, defaultRuntime);
});
});
auth.command("login").description("Run a provider plugin auth flow (OAuth/API key)").option("--provider <id>", "Provider id registered by a plugin").option("--method <id>", "Provider auth method id").option("--set-default", "Apply the provider's default model recommendation", false).action(async (opts) => {
await runModelsCommand(async () => {
await modelsAuthLoginCommand({
provider: opts.provider,
method: opts.method,
setDefault: Boolean(opts.setDefault)
}, defaultRuntime);
});
});
auth.command("setup-token").description("Run a provider CLI to create/sync a token (TTY required)").option("--provider <name>", "Provider id (default: anthropic)").option("--yes", "Skip confirmation", false).action(async (opts) => {
await runModelsCommand(async () => {
await modelsAuthSetupTokenCommand({
provider: opts.provider,
yes: Boolean(opts.yes)
}, defaultRuntime);
});
});
auth.command("paste-token").description("Paste a token into auth-profiles.json and update config").requiredOption("--provider <name>", "Provider id (e.g. anthropic)").option("--profile-id <id>", "Auth profile id (default: <provider>:manual)").option("--expires-in <duration>", "Optional expiry duration (e.g. 365d, 12h). Stored as absolute expiresAt.").action(async (opts) => {
await runModelsCommand(async () => {
await modelsAuthPasteTokenCommand({
provider: opts.provider,
profileId: opts.profileId,
expiresIn: opts.expiresIn
}, defaultRuntime);
});
});
auth.command("login-github-copilot").description("Login to GitHub Copilot via GitHub device flow (TTY required)").option("--profile-id <id>", "Auth profile id (default: github-copilot:github)").option("--yes", "Overwrite existing profile without prompting", false).action(async (opts) => {
await runModelsCommand(async () => {
await githubCopilotLoginCommand({
profileId: opts.profileId,
yes: Boolean(opts.yes)
}, defaultRuntime);
});
});
const order = auth.command("order").description("Manage per-agent auth profile order overrides");
order.command("get").description("Show per-agent auth order override (from auth-profiles.json)").requiredOption("--provider <name>", "Provider id (e.g. anthropic)").option("--agent <id>", "Agent id (default: configured default agent)").option("--json", "Output JSON", false).action(async (opts, command) => {
const agent = resolveOptionFromCommand(command, "agent") ?? opts.agent;
await runModelsCommand(async () => {
await modelsAuthOrderGetCommand({
provider: opts.provider,
agent,
json: Boolean(opts.json)
}, defaultRuntime);
});
});
order.command("set").description("Set per-agent auth order override (locks rotation to this list)").requiredOption("--provider <name>", "Provider id (e.g. anthropic)").option("--agent <id>", "Agent id (default: configured default agent)").argument("<profileIds...>", "Auth profile ids (e.g. anthropic:default)").action(async (profileIds, opts, command) => {
const agent = resolveOptionFromCommand(command, "agent") ?? opts.agent;
await runModelsCommand(async () => {
await modelsAuthOrderSetCommand({
provider: opts.provider,
agent,
order: profileIds
}, defaultRuntime);
});
});
order.command("clear").description("Clear per-agent auth order override (fall back to config/round-robin)").requiredOption("--provider <name>", "Provider id (e.g. anthropic)").option("--agent <id>", "Agent id (default: configured default agent)").action(async (opts, command) => {
const agent = resolveOptionFromCommand(command, "agent") ?? opts.agent;
await runModelsCommand(async () => {
await modelsAuthOrderClearCommand({
provider: opts.provider,
agent
}, defaultRuntime);
});
});
}
//#endregion
export { registerModelsCli };