Skip to content

Plugin: add monitor channels for cross-thread approvals and unread activity #19

@huntharo

Description

@huntharo

Problem

We need a "monitor the situation" mode/channel that shows cross-thread activity, especially:

  • pending approvals
  • waiting-for-user-input prompts
  • threads with fresh output the user has not read yet

This should feel closer to Codex Desktop's global thread activity view.

Current Findings

  • Codex App Server can list threads and report per-thread status plus updatedAt.
  • Active thread flags currently include waitingOnApproval and waitingOnUserInput.
  • The Thread schema does not expose a built-in global "unread" flag, so unread activity likely has to be inferred client-side (for example from updatedAt, latest turn/item ids, and local last-seen state).
  • The plugin currently has no concept of a monitor channel or cross-thread event fan-out surface.

Proposed Scope

  • Allow a channel/topic/thread to be bound as a monitor surface rather than a single-thread surface.
  • Show pending approvals and pending questions with enough context to answer the right thread/request.
  • Show "thread has unread activity" summaries and let the user jump into a dedicated Discord thread / Telegram topic for that Codex thread.
  • Support detaching monitor mode with /codex_monitor off and compatible /codex_detach behavior.
  • Track local last-seen state per Codex thread so unread detection is meaningful even though the App Server protocol does not provide a first-class unread bit.

Source Notes

  • Thread list params: codex-rs/app-server-protocol/schema/typescript/v2/ThreadListParams.ts:7
  • Thread list response: codex-rs/app-server-protocol/schema/typescript/v2/ThreadListResponse.ts:6
  • Loaded-thread list response: codex-rs/app-server-protocol/schema/typescript/v2/ThreadLoadedListResponse.ts:5
  • Thread schema includes updatedAt, status, cwd, name, but no unread field: codex-rs/app-server-protocol/schema/typescript/v2/Thread.ts:9
  • Thread status active flags: codex-rs/app-server-protocol/schema/typescript/v2/ThreadStatus.ts:6
  • Plugin thread listing client helper: src/client.ts:2503
  • Plugin notification listener plumbing already exists: src/client.ts:2350

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status

    In Progress

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions