Skip to content

feat: plumb provider_id through message_created for replay#155

Open
morgmart wants to merge 1 commit intomainfrom
morganm/per-message-provider-id
Open

feat: plumb provider_id through message_created for replay#155
morgmart wants to merge 1 commit intomainfrom
morganm/per-message-provider-id

Conversation

@morgmart
Copy link
Copy Markdown
Collaborator

Summary

  • Adds provider_id to the acp:message_created event payload so assistant messages carry their provider identity during both live streaming and session replay
  • During replay, the dispatcher reads the route-level provider_id (passed from the frontend's stored session metadata via load_session)
  • The frontend's useAcpStream reads providerId from the event payload and stamps it on message metadata, enabling correct provider icon/name display for historical messages

Depends on

Requires block/goose PRmorganm/per-message-provider-id branch that persists provider_id in MessageMetadata on each assistant message.

Files changed

Tauri (Rust):

  • payloads.rs — add provider_id field to MessageCreatedPayload
  • writer.rs — include provider_id in live streaming event
  • dispatcher.rs — include route provider_id in replay event
  • session_ops.rs / manager.rs / command_dispatch.rs — thread provider_id through load_session
  • commands/acp.rs — accept provider_id from frontend

Frontend (TypeScript):

  • useAcpStream.ts — read providerId from event payload
  • messages.ts — add providerId to MessageMetadata type
  • acp.ts — pass providerId in acpLoadSession
  • AppShell.tsx — pass session providerId when loading

Test plan

  • Load a historical session — messages should show the session-level provider icon/name
  • Send a new message — the live streaming path should stamp providerId from the event
  • Switch providers mid-conversation and reload — messages get the thread-level provider (future improvement: per-message from backend)

Add provider_id to MessageCreatedPayload so assistant messages carry
their provider identity in both the live streaming and session replay
paths. During replay, the dispatcher reads the route-level provider_id
(passed from the frontend's stored session metadata via load_session).

Changes:
- payloads.rs: add provider_id field
- writer.rs: include provider_id in live event
- dispatcher.rs: include route provider_id in replay event
- session_ops/manager: thread provider_id through load_session
- acp command: accept provider_id from frontend
- useAcpStream.ts: read providerId from event payload
- messages.ts: add providerId to MessageMetadata type
@morgmart morgmart requested a review from wesbillman as a code owner April 12, 2026 06:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant