Skip to content

[UI] Restore Subagent Activity Streaming #22

@randomm

Description

@randomm

Problem

Subagent activity streaming is not working in real-time. Users only see brief flashes of activity status.

Root Cause Analysis

How it's supposed to work:

  • Task component displays subagent activity via sync.data.message[childSessionId]
  • Events should update the sync store in real-time
  • Activity extracted from message parts shows current tool/operation

What's broken:

  1. Missing message.updated events for child sessions

    • Child sessions emit message.part.updated events (parts stored correctly)
    • Child sessions emit message.created events
    • BUT message.updated events are NOT being emitted when messages are updated
    • The sync context only adds messages to sync.data.message[sessionID] on message.updated event
  2. Activity display relies on manual sync

    • Child messages only appear via explicit sync.session.sync() API call
    • No REAL-TIME streaming of child session activity
    • Events arrive but messages aren't added to the store

Key Files

  • packages/opencode/src/cli/cmd/tui/routes/session/index.tsx - Task component (~line 1800)
  • packages/opencode/src/cli/cmd/tui/context/sync.tsx - Sync context event handling
  • packages/opencode/src/session/index.ts - updateMessage function (~line 400)

Recommended Fix

  1. Ensure message.updated events are emitted for child sessions when messages are created/updated

    • Verify Session.updateMessage is called during child session processing
    • Ensure event emission happens on every message change
  2. Alternative: Direct event subscription in Task component

    • Have Task component subscribe to SDK events for its child session
    • Update local state on message.part.updated events
    • Bypasses sync context dependency

Related

Priority

High - affects UX when running parallel agents

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions