{"version":3,"file":"cli.mjs","names":["toToon"],"sources":["../src/cli.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { defineCommand, runMain } from \"citty\";\nimport { consola } from \"consola\";\nimport { encode as toToon } from \"@toon-format/toon\";\nimport { version, type AvailableModel, type InvokeResult } from \"./types.ts\";\nimport { getAllHarnesses, getHarness, isHarnessId, listHarnesses } from \"./registry.ts\";\nimport {\n  detectHarnesses,\n  listHarnessModels,\n  TOOL_CALL_TEXT_WARNING,\n  type HarnessStatus,\n  type ModelsOutcome,\n  type RunFailure,\n} from \"./tool-operations.ts\";\nimport { exitOnClosedPipe, sanitize } from \"./commands/output.ts\";\n\nconst s = {\n  cyan: (t: string) => `\\x1B[36m${t}\\x1B[0m`,\n  hi: (t: string) => `\\x1B[96m${t}\\x1B[0m`,\n  green: (t: string) => `\\x1B[32m${t}\\x1B[0m`,\n  red: (t: string) => `\\x1B[31m${t}\\x1B[0m`,\n  dim: (t: string) => `\\x1B[90m${t}\\x1B[0m`,\n  bold: (t: string) => `\\x1B[1m${t}\\x1B[0m`,\n  white: (t: string) => `\\x1B[97m${t}\\x1B[0m`,\n};\n\nfunction header(title: string) {\n  return `\\n  ${s.bold(s.cyan(title))}`;\n}\n\nfunction section(title: string) {\n  return `\\n  ${s.cyan(\"▸\")} ${s.white(title)}`;\n}\n\nfunction entry(content: string) {\n  return `    ${content}`;\n}\n\n/**\n * Read-only Grok loses the network on Linux, so info says it right under the modes.\n *\n * @param network - The harness's answer for this platform.\n * @returns {string} One coloured line, dim when nobody checked.\n */\nfunction readOnlyNetworkLine(network: boolean | null): string {\n  if (network === null) return s.dim(\"readOnly network: unknown\");\n  return network\n    ? s.green(\"readOnly network: kept\")\n    : s.red(\"readOnly network: cut, MCP servers included\");\n}\n\nfunction renderPathSection(\n  title: string,\n  entries: readonly {\n    readonly path: string;\n    readonly scope: string;\n    readonly platforms?: readonly string[];\n    readonly note?: string;\n  }[],\n) {\n  if (!entries.length) return;\n  consola.log(section(title));\n  for (const e of entries) {\n    const tags = [s.dim(e.scope)];\n    if (e.platforms) tags.push(s.dim(e.platforms.join(\", \")));\n    consola.log(entry(`${s.hi(e.path)}  ${tags.join(s.dim(\" · \"))}`));\n    if (e.note) consola.log(entry(`${s.dim(`  ${e.note}`)}`));\n  }\n}\n\nconst formatArgs = {\n  json: { type: \"boolean\" as const, description: \"Output as JSON\" },\n  toon: { type: \"boolean\" as const, description: \"Output as TOON\" },\n};\n\nconst harnessArg = {\n  type: \"positional\" as const,\n  description: \"Harness id\",\n  required: true,\n};\n\nfunction emit(data: unknown, args: Readonly<{ json?: boolean; toon?: boolean }>) {\n  if (args.json) {\n    console.log(JSON.stringify(data, null, 2));\n    return true;\n  }\n  if (args.toon) {\n    console.log(toToon(data));\n    return true;\n  }\n  return false;\n}\n\nfunction resolveHarness(id: string): ReturnType<typeof getHarness> {\n  if (!isHarnessId(id)) {\n    consola.error(`Unknown harness: ${id}\\nKnown: ${listHarnesses().join(\", \")}`);\n    process.exit(1);\n  }\n  return getHarness(id);\n}\n\nfunction renderResolvedPathSection(\n  title: string,\n  entries: readonly { readonly path: string }[],\n): void {\n  if (entries.length === 0) return;\n  consola.log(section(title));\n  for (const item of entries) consola.log(entry(s.hi(item.path)));\n}\n\nfunction parsePositiveTimeout(raw: string | undefined): number | null | undefined {\n  if (!raw) return undefined;\n  const value = Number(raw);\n  return Number.isFinite(value) && value > 0 ? value : null;\n}\n\nfunction modelFailureMessage(details: ModelsOutcome | RunFailure): string {\n  return \"error\" in details ? details.error : \"Failed to list models\";\n}\n\nfunction modelDescription(model: Readonly<AvailableModel>): string {\n  const parts: string[] = [];\n  if (model.name !== undefined) parts.push(model.name);\n  if (model.default) parts.push(\"default\");\n  if (model.contextWindow !== undefined) parts.push(`${model.contextWindow} context`);\n  if (model.maxOutputTokens !== undefined) parts.push(`${model.maxOutputTokens} max-out`);\n  const features: string[] = [];\n  if (model.thinking) features.push(\"thinking\");\n  if (model.images) features.push(\"images\");\n  if (features.length > 0) parts.push(features.join(\", \"));\n  return parts.join(\" · \");\n}\n\nfunction runModes(status: Readonly<HarnessStatus>): string[] {\n  return ([\"advisor\", \"readOnly\", \"agent\"] as const).filter((mode) => status[mode]);\n}\n\nfunction renderModels(details: ModelsOutcome): void {\n  const harness = getHarness(details.id);\n  consola.log(header(`${details.id} models`));\n  consola.log(\"\");\n  for (const model of details.models) {\n    consola.log(\n      entry(\n        `${s.hi(sanitize(harness.modelSelector(model)))}  ${s.dim(sanitize(modelDescription(model)))}`,\n      ),\n    );\n  }\n  if (details.models.length === 0) consola.log(entry(s.dim(\"No models found\")));\n  consola.log(\"\");\n}\n\nfunction finishInvocation(result: InvokeResult, timeoutSeconds: number | undefined): never {\n  if (result.stdout) process.stdout.write(result.stdout);\n  if (result.stderr) process.stderr.write(result.stderr);\n  if (result.toolCallsAsText) consola.warn(TOOL_CALL_TEXT_WARNING);\n  if (result.timedOut) {\n    const idle =\n      result.idleMs === undefined\n        ? \"\"\n        : `; last output ${Math.round(result.idleMs / 1000)}s before`;\n    consola.error(`Timed out after ${timeoutSeconds}s${idle}`);\n    process.exit(124);\n  }\n  process.exit(result.exitCode ?? 1);\n}\n\nconst list = defineCommand({\n  meta: { description: \"List all known harnesses\" },\n  args: { ...formatArgs },\n  run({ args }) {\n    const harnesses = getAllHarnesses();\n    const data = harnesses.map((harness) => ({ id: harness.id, name: harness.name }));\n\n    if (emit(data, args)) return;\n\n    consola.log(header(\"Harnesses\"));\n    consola.log(\"\");\n    const maxId = Math.max(...data.map((r) => r.id.length));\n    for (const { id, name } of data) {\n      consola.log(entry(`${s.hi(id.padEnd(maxId))}  ${name}`));\n    }\n    consola.log(\"\");\n  },\n});\n\nconst detect = defineCommand({\n  meta: { description: \"Detect installed harnesses, versions and run modes\" },\n  args: { ...formatArgs },\n  run({ args }) {\n    const results = detectHarnesses().details.harnesses;\n\n    if (emit(results, args)) return;\n\n    consola.log(header(\"System Scan\"));\n    consola.log(\"\");\n    const maxId = Math.max(...results.map((r) => r.id.length));\n    const installed = results.filter((r) => r.installed);\n    const maxName = Math.max(...installed.map((r) => r.name.length));\n    const maxVersion = Math.max(...installed.map((r) => (r.version ? r.version.length + 1 : 0)));\n    for (const r of results) {\n      if (r.installed) {\n        const ver = (r.version ? `v${r.version}` : \"\").padEnd(maxVersion);\n        const modes = runModes(r).join(\" · \") || \"no headless mode\";\n        consola.log(\n          entry(\n            `${s.green(\"●\")} ${s.hi(r.id.padEnd(maxId))}  ${r.name.padEnd(maxName)}  ${s.dim(ver)}  ${s.dim(modes)}`,\n          ),\n        );\n      } else {\n        consola.log(entry(`${s.dim(\"○\")} ${s.dim(r.id.padEnd(maxId))}  ${s.dim(r.name)}`));\n      }\n    }\n    consola.log(\"\");\n  },\n});\n\nconst info = defineCommand({\n  meta: { description: \"Show metadata for a harness\" },\n  args: { id: harnessArg, ...formatArgs },\n  run({ args }) {\n    const harness = resolveHarness(args.id as string);\n    const modelFeatures = {\n      listing: harness.modelListing !== null,\n      selection: harness.invocation?.modelArgs !== undefined,\n      effort: harness.invocation?.effortArgs !== undefined,\n    };\n\n    if (\n      emit(\n        {\n          id: harness.id,\n          name: harness.name,\n          binaries: harness.binaries,\n          capabilities: harness.capabilities,\n          invocationModes: harness.invocationModes,\n          readOnlyNetwork: harness.readOnlyNetwork(),\n          modelListing: modelFeatures.listing,\n          modelSelection: modelFeatures.selection,\n          effortSelection: modelFeatures.effort,\n          config: harness.config,\n          sessions: harness.sessions,\n          instructions: harness.instructions,\n          skills: harness.skills,\n          commands: harness.commands,\n          promptTemplates: harness.promptTemplates,\n          hooks: harness.hooks,\n          temp: harness.temp,\n          envOverrides: harness.envOverrides,\n          persistence: harness.persistence,\n          detection: harness.detection,\n        },\n        args,\n      )\n    )\n      return;\n\n    consola.log(header(`${harness.name}  ${s.dim(harness.id)}`));\n\n    consola.log(section(\"Binaries\"));\n    for (const b of harness.binaries) consola.log(entry(s.white(b)));\n\n    consola.log(section(\"Capabilities\"));\n    const caps = Object.entries(harness.capabilities)\n      .map(([k, v]) => (v ? s.green(k) : s.dim(k)))\n      .join(s.dim(\"  ·  \"));\n    consola.log(entry(caps));\n\n    consola.log(section(\"Invocation modes\"));\n    const modes = Object.entries(harness.invocationModes)\n      .map(([k, v]) => (v ? s.green(k) : s.dim(k)))\n      .join(s.dim(\"  ·  \"));\n    consola.log(entry(modes));\n    consola.log(entry(readOnlyNetworkLine(harness.readOnlyNetwork())));\n\n    consola.log(section(\"Models\"));\n    consola.log(\n      entry(\n        Object.entries(modelFeatures)\n          .map(([k, v]) => (v ? s.green(k) : s.dim(k)))\n          .join(s.dim(\"  ·  \")),\n      ),\n    );\n\n    renderPathSection(\"Config\", harness.config);\n    renderPathSection(\"Sessions\", harness.sessions);\n    renderPathSection(\"Instructions\", harness.instructions);\n    renderPathSection(\"Skills\", harness.skills);\n    renderPathSection(\"Commands\", harness.commands);\n    renderPathSection(\"Prompt templates\", harness.promptTemplates);\n    renderPathSection(\"Hooks\", harness.hooks);\n    renderPathSection(\"Temp\", harness.temp);\n    renderPathSection(\n      \"Env overrides\",\n      harness.envOverrides.map((e) => ({\n        ...e,\n        path: `${e.variable}  ${s.dim(`${e.path} → ${e.relocates.join(\", \")}`)}`,\n      })),\n    );\n\n    if (harness.persistence.length) {\n      consola.log(section(\"Persistence\"));\n      for (const e of harness.persistence) {\n        const note = e.note ? `  ${s.dim(e.note)}` : \"\";\n        consola.log(entry(`${s.white(e.format)}${note}`));\n      }\n    }\n\n    consola.log(\"\");\n  },\n});\n\nconst paths = defineCommand({\n  meta: { description: \"Show resolved paths for current platform\" },\n  args: { id: harnessArg, ...formatArgs },\n  run({ args }) {\n    const harness = resolveHarness(args.id as string);\n    const resolved = harness.resolve();\n\n    if (emit(resolved, args)) return;\n\n    consola.log(header(`${harness.name}  ${s.dim(process.platform)}`));\n\n    renderResolvedPathSection(\"Config\", resolved.config);\n    renderResolvedPathSection(\"Sessions\", resolved.sessions);\n    renderResolvedPathSection(\"Instructions\", resolved.instructions);\n    renderResolvedPathSection(\"Skills\", resolved.skills);\n    renderResolvedPathSection(\"Commands\", resolved.commands);\n    renderResolvedPathSection(\"Prompt templates\", resolved.promptTemplates);\n    renderResolvedPathSection(\"Hooks\", resolved.hooks);\n    renderResolvedPathSection(\"Temp\", resolved.temp);\n\n    consola.log(\"\");\n  },\n});\n\nconst models = defineCommand({\n  meta: { description: \"List models available to a harness\" },\n  args: {\n    id: harnessArg,\n    search: {\n      type: \"positional\" as const,\n      description: \"Optional native model search filter\",\n      required: false,\n    },\n    cwd: {\n      type: \"string\" as const,\n      description: \"Working directory used while loading harness configuration\",\n    },\n    timeout: { type: \"string\" as const, description: \"Wall-clock budget in seconds\" },\n    ...formatArgs,\n  },\n  async run({ args }) {\n    const timeoutSeconds = parsePositiveTimeout(args.timeout);\n    if (timeoutSeconds === null) {\n      consola.error(`Invalid timeout: ${args.timeout}`);\n      process.exitCode = 1;\n      return;\n    }\n\n    const result = await listHarnessModels(args.id as string, {\n      search: args.search as string | undefined,\n      cwd: args.cwd,\n      timeoutSeconds,\n    });\n    if (emit(result.details, args)) {\n      if (result.isError) process.exitCode = 1;\n      return;\n    }\n    if (result.isError || !(\"models\" in result.details)) {\n      consola.error(modelFailureMessage(result.details));\n      process.exitCode = 1;\n      return;\n    }\n\n    renderModels(result.details);\n  },\n});\n\nconst run = defineCommand({\n  meta: { description: \"Run one prompt through a harness's non-interactive mode\" },\n  args: {\n    id: harnessArg,\n    prompt: {\n      type: \"positional\" as const,\n      description: \"Prompt to send to the harness\",\n      required: true,\n    },\n    cwd: { type: \"string\" as const, description: \"Working directory for the run\" },\n    model: { type: \"string\" as const, description: \"Harness-native model id or selector\" },\n    effort: {\n      type: \"string\" as const,\n      description: \"Reasoning effort in the harness's own words (low, high, max)\",\n    },\n    timeout: { type: \"string\" as const, description: \"Wall-clock budget in seconds\" },\n    json: {\n      type: \"boolean\" as const,\n      description: \"Use the harness's structured (JSON) output mode\",\n    },\n    tools: {\n      type: \"boolean\" as const,\n      description: \"Enable tools; default false uses native advisor without tools mode\",\n    },\n    \"read-only\": {\n      type: \"boolean\" as const,\n      description:\n        \"Require native read-only tool enforcement; implies --tools, rejected with --no-tools\",\n    },\n  },\n  async run({ args }) {\n    const harness = resolveHarness(args.id as string);\n    const structured = args.json === true;\n    const readOnly = args[\"read-only\"] === true;\n    const tools = args.tools ?? readOnly;\n\n    const invocationOptions = {\n      model: args.model,\n      effort: args.effort,\n      structured,\n      tools,\n      readOnly,\n    };\n    if (!harness.buildInvocation(\"\", invocationOptions)) {\n      consola.error(harness.invocationError(invocationOptions) ?? \"Invalid invocation\");\n      process.exit(1);\n    }\n\n    const timeoutSeconds = parsePositiveTimeout(args.timeout);\n    if (timeoutSeconds === null) {\n      consola.error(`Invalid timeout: ${args.timeout}`);\n      process.exit(1);\n    }\n\n    const result = await harness.invoke(args.prompt as string, {\n      cwd: args.cwd,\n      model: args.model,\n      effort: args.effort,\n      timeoutMs: timeoutSeconds === undefined ? undefined : timeoutSeconds * 1000,\n      structured,\n      tools,\n      readOnly,\n    });\n\n    finishInvocation(result, timeoutSeconds);\n  },\n});\n\nprocess.stdout.on(\"error\", exitOnClosedPipe);\nprocess.stderr.on(\"error\", exitOnClosedPipe);\n\nconst main = defineCommand({\n  meta: {\n    name: \"harnesses\",\n    version,\n    description: \"Metadata toolkit for AI coding harnesses\",\n  },\n  subCommands: {\n    list,\n    detect,\n    info,\n    paths,\n    models,\n    run,\n    \"mcp-servers\": () => import(\"./commands/mcp-servers.ts\").then((m) => m.default),\n    agents: () => import(\"./commands/agents.ts\").then((m) => m.default),\n    prompts: () => import(\"./commands/prompts.ts\").then((m) => m.default),\n    skills: () => import(\"./commands/skills.ts\").then((m) => m.default),\n    mcp: () => import(\"./commands/mcp.ts\").then((m) => m.default),\n  },\n});\n\nawait runMain(main);\n"],"mappings":"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"}