Agentd currently uses two different agent runners:
Omni/Agent for one-shot runs (shebang interpreter, emits Trace.Event JSONL, supports agentd replay/debug)pi --mode rpc for persistent runs (stdin RPC loop, no Trace.Event emission, no replay/debug support)This split means persistent agents can't use agentd's replay/debug tooling, and we maintain two runners. The goal is to make Omni/Agent the sole runner for both modes, bringing its Trace.Event integration to persistent workflows, while keeping it Unix-pure (no --mode flags, no RPC JSON schema).
Instead of pi's JSON command schema, agent becomes a well-behaved Unix program:
agent script.md → current behavior, shebang-compatible, exits when loop finishesagent with no script → reads prompts from stdin delimited by null bytes (\0); each prompt runs the loop, then blocks reading the next prompt; EOF → clean exitSIGINT → cancel current iteration (unwinds via SteeringCancel in Op loop)SIGTERM → finish current iteration and exitset_model / shutdown commands — use the signal vocabulary Unix already providesNull-byte delimiter is chosen because it's binary-safe, unambiguous, trivially implemented, and matches xargs -0 / find -print0 conventions.
agent, hold stdin pipe, write null-terminated prompts, read Trace.Event JSONL from stdout1. Add stdin prompt-reading mode to Omni/Agent (null-byte delimited) 2. Signal handling: SIGINT → cancel current iteration, SIGTERM → graceful exit 3. Swap Daemon.hs persistent-agent spawner from pi to agent 4. Remove pi-specific code paths and the steering file mechanism once cutover is verified
No activity yet.