diff --git a/cli/src/commands.ts b/cli/src/commands.ts index 8863819c..6855453b 100644 --- a/cli/src/commands.ts +++ b/cli/src/commands.ts @@ -388,9 +388,12 @@ export async function cmdAgents(): Promise { console.log(); for (const key of agentKeys(manifest)) { const a = manifest.agents[key]; - console.log(` ${pc.green(a.name.padEnd(NAME_COLUMN_WIDTH))} ${pc.dim(a.description)}`); + const implCount = getImplementedClouds(manifest, key).length; + console.log(` ${pc.green(key.padEnd(NAME_COLUMN_WIDTH))} ${a.name.padEnd(NAME_COLUMN_WIDTH)} ${pc.dim(`${implCount} clouds`)}`); } console.log(); + console.log(pc.dim(` Usage: spawn `)); + console.log(); } // ── Clouds ───────────────────────────────────────────────────────────────────── @@ -403,9 +406,11 @@ export async function cmdClouds(): Promise { console.log(); for (const key of cloudKeys(manifest)) { const c = manifest.clouds[key]; - console.log(` ${pc.green(c.name.padEnd(NAME_COLUMN_WIDTH))} ${pc.dim(c.description)}`); + console.log(` ${pc.green(key.padEnd(NAME_COLUMN_WIDTH))} ${c.name.padEnd(NAME_COLUMN_WIDTH)} ${pc.dim(c.description)}`); } console.log(); + console.log(pc.dim(` Usage: spawn `)); + console.log(); } // ── Agent Info ───────────────────────────────────────────────────────────────── diff --git a/cli/src/index.ts b/cli/src/index.ts index a5874499..0d27485b 100644 --- a/cli/src/index.ts +++ b/cli/src/index.ts @@ -10,7 +10,6 @@ import { cmdUpdate, cmdHelp, } from "./commands.js"; -import { loadManifest } from "./manifest.js"; import { VERSION } from "./version.js"; function isInteractiveTTY(): boolean { @@ -51,20 +50,6 @@ function extractFlagValue( } async function handleDefaultCommand(agent: string, cloud: string | undefined, prompt?: string): Promise { - const manifest = await loadManifest(); - if (!manifest.agents[agent]) { - console.error(`Error: Unknown agent "${agent}"`); - console.error(`\nAvailable agents:`); - const agentEntries = Object.entries(manifest.agents).slice(0, 5); - agentEntries.forEach(([key, a]) => console.error(` - ${key.padEnd(16)} ${a.name}`)); - if (Object.keys(manifest.agents).length > 5) { - console.error(` ... and ${Object.keys(manifest.agents).length - 5} more`); - } - console.error(`\nRun 'spawn agents' to see all agents.`); - console.error(`Run 'spawn help' for complete usage.`); - process.exit(1); - } - if (cloud) { await cmdRun(agent, cloud, prompt); } else { @@ -92,6 +77,14 @@ async function main(): Promise { ); filteredArgs = finalArgs; + if (prompt && promptFile) { + console.error("Error: --prompt and --prompt-file cannot be used together"); + console.error(`\nUse one or the other:`); + console.error(` spawn --prompt "your prompt here"`); + console.error(` spawn --prompt-file instructions.txt`); + process.exit(1); + } + if (promptFile) { const { readFileSync } = await import("fs"); try {