import { bundledReferenceIndex, getBundledReference, referenceRevision, } from "./lib/bundled-references"; import { assertNoUnknownFlags, CliArgError, hasFlag } from "./lib/cli-args"; export const REFERENCE_HELP = `Usage: dench reference [--json] dench reference dench Read the bundled SKILL.md dench reference crm Read the bundled CRM reference dench reference --list [--json] List exact bundled paths and revision References match this installed CLI version and are read locally without signing in.`; export async function runReferenceCommand(argv: string[]): Promise { const args = [...argv]; const json = hasFlag(args, "--json"); const list = hasFlag(args, "--list"); assertNoUnknownFlags(args, "reference"); if (list) { if (args.length) throw new CliArgError("--list does not accept a reference name"); const index = bundledReferenceIndex(); console.log( json ? JSON.stringify(index) : `Revision: ${index.revision}\n${index.references.map((entry) => entry.path).join("\n")}`, ); return; } if (args.length !== 1) throw new CliArgError(REFERENCE_HELP); const name = args[0]; const path = /^(dench|skill(?:\.md)?)$/i.test(name) ? "SKILL.md" : /^[A-Za-z0-9_-]+(?:\.md)?$/i.test(name) ? `references/${name.replace(/\.md$/i, "").toUpperCase()}.md` : name; const content = getBundledReference(path); if (content === undefined) throw new CliArgError( `Unknown bundled reference: ${name}. Run dench reference --list.`, ); console.log( json ? JSON.stringify({ path, revision: referenceRevision, content }) : content, ); }