Skip to content

EPIC: taOS as the harness wrapper - agent comms move into taOStalk + Projects #2150

Description

@jaylfc

EPIC: taOS as the harness wrapper - move all agent comms into taOS

Jay, 2026-07-26: all communication with the lead agents moves out of the Claude
app and into taOS. taOStalk becomes the chat surface, Projects becomes the work
surface, and the A2A realtime stream is the transport. The target is using taOS
to build taOS, on stream.

What already exists (verified in code, not assumed)

  • request_decision agent tool -> DecisionStore -> Decisions app, with
    single_select, multi_select, approve_deny, free_text, options
    normalised to [{label, value}], priorities, and a notification on raise.
  • Decisions app renders and answers those choices today.
  • Chat messages already carry content_blocks (chat/message_store.py).
  • A2A realtime stream is live: authenticated SSE proxy, verified end to end.
  • taOStalk s1 renderer cards are already on the board (text, thinking,
    tool-call, status/question, live badge, connect-session wizard).

The actual gap

Decisions render only in the Decisions app. No chat component renders a
decision, so a question raised by an agent is invisible in the conversation where
it was asked. That is the seam Jay named, and it is the difference between taOS
being a viewer and taOS being the place the work happens.

Design: one decision, two surfaces, one resolution

  • DecisionStore stays the single source of truth. Chat does NOT get its own
    question table. A question raised in chat IS a decision; the chat block is a
    view of it, keyed by decision_id.
  • A decision block in chat renders the same options as buttons inline.
  • Answering from either surface resolves both, live, via the existing broker
    so open clients update without a refresh. First answer wins.
  • Idempotency is the hard requirement: the same decision is visible in two
    places at once, so a second answer must be rejected cleanly (not silently
    overwrite, not 500), and both surfaces must show the resolved state with who
    answered and when. Assume the user has chat open on a phone and Decisions open
    on a desktop, and taps both.
  • Nothing is lost when answered elsewhere: a decision answered in the
    Decisions app must visibly resolve in the chat thread it came from, in place.

Slices

  • W1 decision blocks render inline in chat, read-only first (see it, cannot
    answer it) - proves the join without touching write paths.
  • W2 answer from chat, with idempotent first-answer-wins and live
    propagation to every open surface.
  • W3 taOStalk s1 renderers (already carded) so agent output reads correctly:
    text, thinking, tool-call, status.
  • W4 harness bridge: a Claude Code session's output posted into a taOS
    channel as content blocks, and user replies delivered back to the session.
    This is the piece that makes taOS a wrapper rather than a mirror; it needs
    design before implementation and is NOT free-builder work.

Constraints

  • No new question/answer store. Reusing DecisionStore is the point.
  • No credentials or tokens transit chat.
  • Every surface answers as the real user identity; an agent must never be able to
    answer its own question.
  • Live update uses the existing broker/SSE machinery rather than polling.

Metadata

Metadata

Assignees

No one assigned

    Labels

    kilo-duplicateAuto-generated label by Kilokilo-triagedAuto-generated label by Kilo

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions