Skip to content

Nano: add an interactive conversation view to Ferrus HQ #86

Description

@RomanEmreis

Planned PR 14 of 18. Phase: N4. Later release.

Series overview and full PR index: #73.

What problem does this solve?

The headless engine already emits session events, but HQ has no native conversation view to drive it interactively. The UI should reuse the same engine and existing HQ presentation.

Proposed solution

  • Add a native conversation view and command producer to HQ, consuming SessionEvent without parsing agent prose.
  • Support one active inference turn, queued user steering, cancellation, tool progress/output, usage, and visible input/approval requests through SessionCommand.
  • Adapt existing HQ transcript/input/rendering in place; share components only when a concrete second consumer exists.
  • Bound and coalesce streaming display updates without blocking durable outcomes or lease renewal.
  • Enable interactive nano Executor capability only when the mode is functional; keep task authority and workflow in the managed host.

Acceptance criteria

  • The same engine works headlessly and interactively, with consistent tool execution and completion behavior.
  • Tests cover long output, resize, scrolling, cursor/input geometry, queued steering, cancellation, and human-question routing.
  • Slow rendering/disconnect does not block the engine's lease or persistence work, and reconnect can reconstruct from durable records.
  • Existing HQ commands/tables and external-agent interactive launch remain functional.
  • Interactive mode does not implicitly grant Supervisor, Reviewer, Consultant, or archive tools.
  • Relevant tests plus cargo fmt --check, cargo clippy -- -D warnings, and cargo test pass; new feature combinations get explicit coverage where applicable.

Impact on workflow (if any)

Adds an interactive frontend to the native Executor while retaining managed task lifecycle and authority.

Dependencies

Implementation boundaries

Standalone packaging, a new TUI framework, broad HQ refactoring, and additional roles are outside this PR.

Keep new harness implementation in src/nano/. Reuse existing Ferrus modules in place and make only the small integration changes this PR needs. Introduce src/shared/ only for an implementation actually shared by HQ and nano; preserve the existing lifecycle and graph/memory domain boundaries.

Code entry points (existing or proposed): src/nano/{cli,engine,agent}.rs and the existing src/hq/tui/ integration points.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions