import { runAgent } from "./agent.js";

async function main() {
  const prompt = process.argv.slice(2).join(" ").trim();
  if (!prompt) {
    console.error('usage: npm run cli -- "<prompt>"');
    process.exit(1);
  }

  const cwd = process.env.AGENT_CWD || process.cwd();
  console.log(`[cli] cwd       = ${cwd}`);
  console.log(`[cli] BASE_URL  = ${process.env.ANTHROPIC_BASE_URL ?? "<unset>"}`);
  console.log(`[cli] prompt    = ${prompt}`);
  console.log("---");

  await runAgent({
    id: "cli-1",
    prompt,
    cwd,
    onMessage: (msg) => {
      switch (msg.type) {
        case "turn_started":
          console.log(`[cli] session = ${msg.session_id}`);
          break;
        case "assistant_text":
          process.stdout.write(msg.text);
          break;
        case "tool_use":
          console.log(
            `\n[tool_use] ${msg.tool}(${JSON.stringify(msg.input).slice(0, 120)})`,
          );
          break;
        case "tool_result":
          console.log(
            `[tool_result] ${msg.is_error ? "ERR" : "OK"}: ${msg.output.slice(0, 120)}${msg.output.length > 120 ? "…" : ""}`,
          );
          break;
        case "turn_done":
          console.log(
            `\n---\n[done] cost=$${msg.usage?.total_cost_usd?.toFixed(4) ?? "?"} tokens=in:${msg.usage?.input_tokens ?? "?"}/out:${msg.usage?.output_tokens ?? "?"}`,
          );
          break;
        case "error":
          console.error(`\n[error] ${msg.message}`);
          break;
      }
    },
  });
}

main().catch((err) => {
  console.error(err);
  process.exit(1);
});
