#!/usr/bin/env node /** * CLI companion for the adapter. * * paperclip-adapter-minimax doctor - check env + connection * paperclip-adapter-minimax list - list available MiniMax models * paperclip-adapter-minimax version - print version * * Useful for verifying your setup before pointing a Paperclip agent at it. */ import process from "node:process"; import { loadConfig } from "./config.js"; import { MiniMaxClient } from "./client.js"; import { adapterMetadata } from "./adapter.js"; const [, , cmd] = process.argv; async function main() { switch (cmd) { case "doctor": { const cfg = loadConfig(); const checks: Array<{ name: string; ok: boolean; detail: string }> = []; checks.push({ name: "MINIMAX_API_KEY", ok: cfg.apiKey.length > 0, detail: cfg.apiKey ? `set (${cfg.apiKey.slice(0, 6)}…)` : "MISSING — set in .env", }); checks.push({ name: "MINIMAX_BASE_URL", ok: cfg.baseUrl.startsWith("http"), detail: cfg.baseUrl, }); checks.push({ name: "PAPERCLIP_API_KEY", ok: cfg.paperclipApiKey.length > 0, detail: cfg.paperclipApiKey ? "set" : "not set (OK for local dev)", }); checks.push({ name: "PAPERCLIP_API_URL", ok: cfg.paperclipApiUrl.startsWith("http"), detail: cfg.paperclipApiUrl, }); checks.push({ name: "minimax connection", ok: false, detail: "checking…", }); try { const client = new MiniMaxClient(cfg); const r = await client.validate(); checks[checks.length - 1] = { name: "minimax connection", ok: r.ok, detail: r.message, }; } catch (e) { checks[checks.length - 1] = { name: "minimax connection", ok: false, detail: e instanceof Error ? e.message : String(e), }; } console.log(`paperclip-adapter-minimax v${adapterMetadata.version}\n`); let allOk = true; for (const c of checks) { const mark = c.ok ? "✅" : "❌"; console.log(` ${mark} ${c.name.padEnd(22)} ${c.detail}`); if (!c.ok) allOk = false; } console.log(); console.log(allOk ? "Ready to be used as a Paperclip adapter." : "Fix the above and re-run `doctor`."); process.exit(allOk ? 0 : 1); } case "list": { const cfg = loadConfig(); const client = new MiniMaxClient(cfg); const r = await client.validate(); if (!r.ok) { console.error(`Failed to list models: ${r.message}`); process.exit(1); } console.log(`Available MiniMax models at ${cfg.baseUrl}:`); for (const m of r.models) console.log(` - ${m}`); process.exit(0); } case "version": case "--version": case "-v": { console.log(`paperclip-adapter-minimax v${adapterMetadata.version}`); process.exit(0); } case "help": case "--help": case "-h": case undefined: { console.log(`paperclip-adapter-minimax v${adapterMetadata.version} Usage: paperclip-adapter-minimax doctor Check env + MiniMax connection paperclip-adapter-minimax list List models at the configured base URL paperclip-adapter-minimax version Print version `); process.exit(0); } default: { console.error(`Unknown command: ${cmd}`); console.error(`Run \`paperclip-adapter-minimax help\` for usage.`); process.exit(2); } } } main().catch((err) => { console.error("fatal:", err); process.exit(1); });