import * as vm from "../vm.ts" import * as state from "../state.ts" import { spinner } from "../spinner.ts" import { renderMarkdown } from "../markdown.ts" import { requireSession, saveChanges } from "./helpers.ts" export async function action( branch: string, prompt: string | undefined, opts: { print?: string; save?: boolean }, ) { const { root, session } = await requireSession(branch) const effectivePrompt = opts.print || prompt if (effectivePrompt) { await state.setSession(root, { ...session, prompt: effectivePrompt }) } const spin = spinner("Starting container", branch) await vm.ensure((msg) => { spin.text = msg }) if (opts.print) { spin.text = "Running prompt…" const output = await vm.claude(session.worktree, { prompt, print: opts.print, continue: true }) if (output) { spin.stop() process.stdout.write(renderMarkdown(output) + "\n") } else { spin.succeed("Done") } } else { spin.succeed("Session ready") await vm.claude(session.worktree, { prompt, print: opts.print, continue: true }) } if (opts.save !== false) await saveChanges(session.worktree, branch) }