poc-memory status: add ratatui TUI dashboard

Per-agent-type tabs (health, replay, linker, separator, transfer,
apply, orphans, cap, digest, digest-links, knowledge) with dynamic
visibility — tabs only appear when tasks or log history exist.

Features:
- Overview tab: health gauges (α, gini, cc, episodic%), in-flight
  tasks, and recent log entries
- Pipeline tab: table with phase ordering and status
- Per-agent tabs: active tasks, output logs, log history
- Log tab: auto-scrolling daemon.log tail
- Vim-style count prefix: e.g. 5r runs 5 iterations of the agent
- Flash messages for RPC feedback
- Tab/Shift-Tab navigation, number keys for tab selection

Also adds run-agent RPC to the daemon: accepts agent type and
iteration count, spawns chained tasks with LLM resource pool.

poc-memory status launches TUI when stdout is a terminal and daemon
is running, falls back to text output otherwise.
This commit is contained in:
ProofOfConcept 2026-03-10 00:41:29 -04:00
parent 06df66cf4c
commit ef760f0053
6 changed files with 1247 additions and 2 deletions

View file

@ -805,6 +805,15 @@ fn cmd_health() -> Result<(), String> {
}
fn cmd_status() -> Result<(), String> {
// If stdout is a tty and daemon is running, launch TUI
if std::io::IsTerminal::is_terminal(&std::io::stdout()) {
// Try TUI first — falls back if daemon not running
match tui::run_tui() {
Ok(()) => return Ok(()),
Err(_) => {} // fall through to text output
}
}
let store = store::Store::load()?;
let g = store.build_graph();
@ -2183,6 +2192,7 @@ fn cmd_daemon(sub: Option<&str>, args: &[String]) -> Result<(), String> {
}
Some("install") => daemon::install_service(),
Some("consolidate") => daemon::rpc_consolidate(),
Some("tui") => tui::run_tui(),
Some(other) => Err(format!("unknown daemon subcommand: {}", other)),
}
}