Skip to content

OMP live timeline parity: messages, reasoning, tools, edits, errors, usage #70

Open

Description

@44madfire

Summary

Make a live OMP ACP chat render every transcript-visible guarantee legacy chat renders, through the generic translator plus a narrow OMP dialect, including the non-assistant entries OMP will stream after 44madfire/oh-my-pi#16.

Context

  • 44madfire/orca#20 parity rows: transcript rendering and ordering, reasoning visibility, tool lifecycle and edit cards, usage metadata, error presentation.
  • Generic mapping: assistant/thought chunks → text deltas, user_message_chunk dropped live, usage_update → context.usage (src/main/acp/acp-session-update.ts:43,78 @76d1b7b); diff content → diff card (src/main/acp/acp-tool-timeline.ts:139-144).
  • Legacy reference decoder: src/main/native-chat/transcript-line-decoders-omp.ts:32 (thinking :263, compaction :46-51, fileMention :102, execution cells :89,192) @76d1b7b.
  • OMP's live mapper emits assistant messages, tools and plans only (packages/coding-agent/src/modes/acp/acp-event-mapper.ts:193 @53f253f); ! input exists only in the TUI (packages/coding-agent/src/modes/controllers/input-controller.ts:1141).
  • Usage at turn end: acp-agent.ts:2167-2182 @53f253f.

Scope

  • OMP dialect: tool naming that edit-card normalization understands, failure text, prompt error detail.
  • Verify or fix each owned row live: reasoning visible, tool start/update/result/error, raw input, diff cards, cancelled-turn presentation, model and usage, pending-send ordering.
  • Render ACP: stream non-assistant transcript entries live; accept !/python execution input oh-my-pi#16 entries (custom messages with display: true, fileMention notes, user execution cells) as existing message/tool rows via the dialect; never pass raw payloads to the renderer.
  • !cmd passes through the composer unclaimed.

Non-goals

Depends on

Parity rows owned

  • P-DECD-01, P-DECD-02, P-DECD-03, P-DECD-04, P-ORDR-01, P-ORDR-02, P-STRM-01, P-RSNG-01, P-TOOL-01, P-TOOL-02, P-TOOL-03, P-TOOL-04, P-EDIT-01, P-META-01, P-META-02, P-ERRS-01, P-ERRS-02, P-QUEU-01.

Acceptance criteria

  • For recorded OMP conversations, the live ACP rendering and the legacy rendering of the resulting transcript agree on roles, order, tool calls/results/errors, arguments, aborted-turn text and visible thinking (a reasoning row may replace inline text).
  • Custom messages appear only when display is true; fileMentions render as @path notes; !ls typed in chat runs as a shell cell and renders as a tool pair.
  • The ring updates at turn end against the model window and is absent for aborted/errored turns.
  • Unknown OMP updates never reach the renderer raw.

Required tests

  • Scripted-ACP fixtures per owned row.
  • Interleaved thought/message/tool chunks keep order; tool_call_update before tool_call; failed tool; cancel mid-tool.
  • Two identical consecutive user messages both render.
  • Dialect ignores unknown _meta keys and unknown update kinds.

Base branch

acp-migration (44madfire/orca).

Metadata

Metadata

Assignees

No one assigned

    Labels

    acp-migrationOMP Native Chat ACP migrationphase-BPhase B parity completion

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions