agentd watch: finalize IRC-style persistent transcript formatting

t-819·WorkTask·
·
·
Created12 hours ago·Updated12 hours ago·pipeline runs →

Dependencies

Description

Edit

Finish the persistent agentd watch UX as an IRC-like conversation stream.

Requirements:

  • Human-readable chat transcript feel instead of service-log style.
  • Show both user and assistant messages clearly.
  • Render thinking/tool activity as /me ...-style status lines.
  • Avoid truncating long content in watch output; let terminal wrapping handle it.
  • Keep timestamps useful but de-emphasized.
  • Maintain compatibility with existing persistent session event schemas (message, infer_*, tool_*, custom, result, legacy untyped result).

Also clean up any partial/uncommitted implementation in Omni/Agentd.hs so watch formatting lives in the split module (Omni/Agentd/PersistentView.hs) and tests reflect new behavior.

Git Commits

71a50df8fix(agentd): IRC-style watch and stable typecheck deps
Coder Agent12 hours ago4 files

Timeline (4)

🔄[human]Open → InProgress12 hours ago
💬[human]12 hours ago

Implemented in commit 71a50df8.

What changed:

1) IRC-style persistent watch output

  • Omni/Agentd/PersistentView.hs
  • Reworked formatPersistentWatchLine rendering to conversational transcript style:
  • user> ... and assistant> ... chat lines
  • /me ... status lines for thinking/tool activity and lifecycle events
  • Long message content is no longer hard-truncated in watch formatting; terminal wrapping now handles line width.
  • Kept --details behavior for richer infer/tool metadata.
  • Omni/Agentd.hs
  • Removed partial duplicate local formatPersistentWatchLine implementation from the stuck WIP and rely on split module implementation.
  • Updated watch formatting tests to new IRC-like expectations.

2) typecheck.sh / repl LocalRun dependency fix

  • Omni/Ide/repl.sh
  • Fixed jq extraction for deps so LocalRun/path rundeps are not treated as nixpkgs package names.
  • Avoided empty-string rundeps that produced pkgs. in generated nix expressions.
  • Omni/Bild/Builder.nix
  • Hardened external rundep filtering:
  • exclude empty entries
  • treat path-like string rundeps as local, not nixpkgs externals.

Verification run:

  • lint Omni/Agentd.hs Omni/Agentd/PersistentView.hs Omni/Ide/repl.sh Omni/Bild/Builder.nix
  • typecheck.sh Omni/Agentd.hs
  • typecheck.sh Omni/Agent.hs
  • bild --test Omni/Agentd.hs
  • bild Omni/Agentd.hs
  • Runtime smoke:
  • timeout 3 agentd watch omni-coder --mode persistent
  • confirmed chat-style lines (assistant>, /me calls ...) and non-truncated long message output.
🔄[human]InProgress → Review12 hours ago