UNPKG

@deep-assistant/agent

Version:

A minimal, public domain AI CLI agent compatible with OpenCode's JSON interface. Bun-only runtime.

59 lines (53 loc) 1.71 kB
import type { Argv } from "yargs" import { Instance } from "../../project/instance" import { Provider } from "../../provider/provider" import { cmd } from "./cmd" import { UI } from "../ui" import { EOL } from "os" export const ModelsCommand = cmd({ command: "models [provider]", describe: "list all available models", builder: (yargs: Argv) => { return yargs .positional("provider", { describe: "provider ID to filter models by", type: "string", array: false, }) .option("verbose", { describe: "use more verbose model output (includes metadata like costs)", type: "boolean", }) }, handler: async (args) => { await Instance.provide({ directory: process.cwd(), async fn() { const providers = await Provider.list() function printModels(providerID: string, verbose?: boolean) { const provider = providers[providerID] for (const [modelID, model] of Object.entries(provider.info.models)) { process.stdout.write(`${providerID}/${modelID}`) process.stdout.write(EOL) if (verbose) { process.stdout.write(JSON.stringify(model, null, 2)) process.stdout.write(EOL) } } } if (args.provider) { const provider = providers[args.provider] if (!provider) { UI.error(`Provider not found: ${args.provider}`) return } printModels(args.provider, args.verbose) return } for (const providerID of Object.keys(providers)) { printModels(providerID, args.verbose) } }, }) }, })