Repository navigation
OMP live timeline parity: messages, reasoning, tools, edits, errors, usage #70
Copy link
Copy link
Open
Labels
acp-migrationOMP Native Chat ACP migrationOMP Native Chat ACP migrationphase-BPhase B parity completionPhase B parity completion
Description
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#20parity 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_chunkdropped 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. !cmdpasses through the composer unclaimed.
Non-goals
- Compaction (ACP compaction updates → compaction boundary and usage invalidation (provider-neutral) #80), commands (OMP commands, options and composer over ACP #71), approvals/questions (ACP elicitation forms and OMP approval-policy parity #81). Expansion rows (collapsible reasoning, lowercase edit diff cards) may land but never gate.
Depends on
- Register omp acp as an opt-in structured ACP agent behind the availability gate #68
- ACP: stream non-assistant transcript entries live; accept !/python execution input oh-my-pi#16
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
displayis true; fileMentions render as@pathnotes;!lstyped 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_updatebeforetool_call; failed tool; cancel mid-tool. - Two identical consecutive user messages both render.
- Dialect ignores unknown
_metakeys and unknown update kinds.
Base branch
acp-migration (44madfire/orca).
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
acp-migrationOMP Native Chat ACP migrationOMP Native Chat ACP migrationphase-BPhase B parity completionPhase B parity completion
Activity
[-]Render ACP timeline at transcript parity or better[/-][+]OMP live timeline parity: messages, reasoning, tools, edits, errors, usage[/+]