Skip to content

[Feature RFC] Agent inbox board: one place for tasks, approvals and failures (personal first, team second) #349

Closed

Description

@hsliuustc0106

Why

Users run several bots and today see approvals and progress scattered across the sidebar, approval badge and chats. An Agent inbox board gives one view of what needs me, what is running, and what is done. Inspiration: a three-column agent inbox board (NEEDS YOU / RUNNING / DONE) with per-card elapsed time, tool-call count and an Open button for human-gated tasks.

Draft for discussion. Not a commitment to scope; design review wanted from the team before implementation.

Scope

Phase 1: personal

  • Board with three columns: Needs you (pending approvals, failures), Running, Done; plus a List view toggle.
  • Card: bot, task title, one-line latest activity, elapsed time, tool-call count, primary status.
  • Approve / reject from the card, reusing the existing Bot Social approval flow (no second approval path).
  • Data in phase 1: approvals and in-progress conversations. Task cards wait for the task layer.

Phase 2: team

A manager assigns work to specific colleagues, so ownership is about who is responsible, not whose bot it is.

  • Assigner: assigns the task, sees progress of what they delegated.
  • Owner (responsible person): task appears in their Needs you; they approve.
  • Executing bot: does the work; may belong to the owner or someone else.
  • Views: Assigned to me / Assigned by me / Team overview. Reassignment is allowed and each handoff is audited.

Data model rule from day one

Every card carries assigner, owner, executingBot. In personal mode all three resolve to the user, so phase 2 adds assignment and permission filtering without redoing the UI.

Dependencies

UI guidelines (acceptance)

Out of scope for now

  • Cross-team visibility beyond granted Bots.
  • Auto-approve rules.
  • Any change to the approval security model.

Open questions for discussion

  1. Is Done retained forever or aged out (e.g. 7 days)?
  2. Can an owner delegate approval, or only the assigner reassigns?
  3. Should failures notify, or only appear in the board?
  4. Where does the board live: sidebar entry, top-level page, or both?
  5. How are tasks from non-FlyBot runtimes ([RFC] 跨运行时 Agent 对话与协作:以 OpenCode 为首个试点的目标、需求与两种方案 #198) represented?

Process

Per team rule: implementation via cloud OpenCode, review via Codex; no hand-written code from bots.

Activity

  1. hsliuustc0106 commented on Oct 18, 2026

    @hsliuustc0106
    ContributorAuthor

    Child RFC: 401 merged output digest and acceptance (#401).

  2. Birfy commented on Oct 19, 2026

    @Birfy
    Collaborator

    Owner decision (2026-10-19): Approvals must never be given by the user replying with a chat message. Approving or rejecting happens only through explicit UI controls (buttons on the approval card / board card), reusing the existing Bot Social approval flow. Typed replies must not count as approval.

  3. added
    enhancementNew feature or request
    area:uiWeb/desktop UI and copy
    needs-humanThe agent loop stopped; a person must decide (reason in the last comment)
    on Oct 19, 2026
  4. Birfy commented on Oct 19, 2026

    @Birfy
    Collaborator

    Triage on main 7b9e90b, 2026-10-19 ~12:10 Asia/Shanghai: needs-human, not agent-ready. Recorded constraint: approvals only through explicit UI buttons (owner decision 2026-10-19). Still open: the owner has not approved Phase 1 scope (columns, card fields, where the board lives in the UI, data sources). Question for the owner: approve Phase 1 as written (personal board: Needs you / Running / Done, approve and reject buttons reusing the Bot Social approval flow), or narrow it first?

  5. Birfy commented on Oct 20, 2026

    @Birfy
    Collaborator

    Triage (maintenance, 2026-10-20 08:04 Asia/Shanghai)

    Checked on main a45fc8c. There is no board yet. The building blocks exist:

    • pending approvals in the work snapshot (work.approvals, with DSH's card in a Bot's chat and the overlay for groups)
    • per-row Working / Waiting for your approval in the sidebar
    • task records with open/working/blocked/result-ready/accepted/failed (core/src/host/tasks.js, [Team] Persist a minimal collaboration task lifecycle #54)
    • approval notifications (approval-notices.js)

    Recorded constraint, kept: approvals happen only through explicit UI buttons, never typed replies.

    Expected behavior (phase 1, personal)
    One Inbox view of my own Bots:

    • Needs you: pending tool approvals with Approve / Reject, plus failed turns and tasks with their reason
    • Running: Bots working now, with elapsed time
    • Done: finished in the last 7 days

    Each card has exactly one status and an Open button to its chat.

    First slice (smallest shippable step)

    • A list view with the three groups, built from data that already exists (work.approvals, running state, task records). No new host state.
    • Approve / Reject on the card call the same approval answer the chat card uses, so there is no second approval path. Feedback is shown after the click, with no native confirm dialogs.
    • Empty line per group, keyboard reachable, long titles truncated with the full title on hover.
    • Tests and a docs/subsystems/core-client.md entry. The three-column board and the tool-call count come in slice 2.

    Details I decided (say if you disagree)

    Question for the owner
    Where does Inbox live: (a) one Inbox row at the top of the sidebar with a count, opening a page; (b) only in the account menu and command palette, like Scheduled tasks; or (c) a header icon with a count? Also: is this slice (list view, existing data, same approval buttons) OK as phase 1?
    Recommendation: (a). No new + menu entry and no new sidebar section, just one row.

  6. added
    agent-readyMaintainer-approved spec: an agent may take it. Only maintainers set this; never in a template
    and removed
    needs-humanThe agent loop stopped; a person must decide (reason in the last comment)
    on Oct 20, 2026
  7. Birfy commented on Oct 20, 2026

    @Birfy
    Collaborator

    Owner decision (2026-10-20): Confirmed option (a): Agent inbox step 1 — three columns Need you / In progress / Done, existing data only, owner's Bots only, Done kept 7 days; approvals still use the same in-chat buttons. Entry: a top sidebar Inbox row with a count badge.

  8. added
    agent-workingAn agent has claimed this issue (the claim comment names the branch)
    on Oct 20, 2026
  9. self-assigned this
    on Oct 20, 2026
  10. Birfy commented on Oct 20, 2026

    @Birfy
    Collaborator

    Claimed by maintenance run (2026-10-20 08:55 Asia/Shanghai), branch feat/349-agent-inbox on Birfy/FlyBot, following the Owner decision above.

  11. Birfy commented on Oct 20, 2026

    @Birfy
    Collaborator

    Minor decisions for step 1 (PR #472), 2026-10-20 09:06 Asia/Shanghai:

    • Group names: Needs you / In progress / Done. The decision text says "Need you"; I used the triage's grammatical "Needs you", and "In progress" from the decision instead of the triage's "Running".
    • Where it opens: the Inbox row opens a dialog over the conversation (like Memory), not a Settings page, so Inbox is not a settings entry. Badge = number of Needs you cards.
    • Approve / Reject on the card only for approvals the group chat's card answers (answerable), with the same labels as that card (Reject / Allow once) and the same answerApproval call. An approval in a Bot's own chat is answered by DSH's card there, so its inbox card has Open only. Held Bot messages have Open only (Bot-sent messages are approved in the chat).
    • Tasks: failed, blocked and result-ready go in Needs you (with the reason / question / summary); open, claimed and working go in In progress; accepted and cancelled in Done. Task cards have Open only (task actions are later).
    • Done also lists my Bots' chats whose last turn finished in the last 7 days, with their last line as title, newest 20. Failed tasks age out after 7 days too, since nothing dismisses them.
    • Failed turns with no task record are not shown: there is no host record of them, and adding one would be new host state. That goes with Proactive reminders 1/3: event reminders (approval waiting, failed, finished) in app and desktop #353's event source; listed in Agent inbox phase 2: board view, tool-call counts, failed turns and team views (after #349) #471.
    • Held message in a friend's chat counts: it is my Bot's message waiting for me. A friend's Bot's own work never shows.
    • Deferred scope filed as Agent inbox phase 2: board view, tool-call counts, failed turns and team views (after #349) #471 (needs-human).
  12. added a commit that references this issue on Oct 20, 2026
    c7898dd
  13. Birfy commented on Oct 20, 2026

    @Birfy
    Collaborator

    Cleanup: Agent inbox step 1 shipped (see #491 / related). Removing stale agent-working and assignee.

  14. removed their assignment
    on Oct 20, 2026
  15. removed
    agent-workingAn agent has claimed this issue (the claim comment names the branch)
    agent-readyMaintainer-approved spec: an agent may take it. Only maintainers set this; never in a template
    on Oct 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:uiWeb/desktop UI and copyenhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions