import { createInterface } from "node:readline/promises"; import { stdin, stdout } from "node:process"; import { createSharedDeps, describeModel } from "./agent.js"; import { LaneManager } from "./lanes.js"; const KEY = "cli"; async function main() { const deps = await createSharedDeps(); const lanes = new LaneManager(deps); const skills = deps.resourceLoader.getSkills().skills.map((s) => s.name).join(", "); console.log(`disclaw cli — ${describeModel()}`); console.log(`skills: ${skills || "(none)"}`); console.log(`/exit to quit\n`); const rl = createInterface({ input: stdin, output: stdout, terminal: true }); while (true) { const line = await rl.question("> "); const trimmed = line.trim(); if (!trimmed) continue; if (trimmed === "/exit") break; const result = await lanes.send(KEY, trimmed, { onDelta: (s) => stdout.write(s), onToolStart: (name) => stdout.write(`\n ⟫ ${name}\n`), }); if (result.steered) stdout.write("\n[steered into running turn]"); stdout.write("\n"); } rl.close(); lanes.dispose(); } main().catch((err) => { console.error(err); process.exit(1); });