github / github/copilot-cli

Expose queued and active processing state for project sessions

オープン
#4,158 コメント 2 件 リアクション 0 件 担当者 0 名 GitHub で見る
area:agents area:sessions
主要言語
Shell
スター
11.2k
フォーク
1.9k
平均マージ
14時間 16分
マージ済み PR(30日)
6

説明

### Describe the feature or problem you'd like to solve

Project-session coordination APIs do not expose whether a child session is actively processing or still has queued user messages. A parent can receive a completion handoff and see static branch/diff metadata from `get_session`, yet remain unable to prove the child is drained before merging its pull request.

This creates a cross-session merge race: if the parent previously sent a follow-up that is still queued, the child can wake after the parent merges, process that message, and push a trailing commit to the already-merged branch.

### Proposed solution

Expose explicit processing and queue state in `get_session` and `list_sessions_and_chats`, for example:

- `is_processing: boolean`
- `queued_messages_count: number`
- the current/last processed message identifier or a monotonic drain generation

Provide a native way for a coordinator to establish a merge barrier: wait until the child reports no active turn and no queued messages, then send a final stop/ready request and verify its acknowledgment belongs to the latest queue generation.

This would make project-session orchestration safe without relying only on conversational conventions or guessing from `updated_at`.

### Example prompts or workflows

1. A parent asks a child to implement a PR, sends two review fixes, then checks `is_processing == false` and `queued_messages_count == 0` before merging.
2. A parent sends “Make no further changes; reply READY_FOR_MERGE,” then verifies the reply drained the latest queue generation before running `gh pr merge`.
3. An orchestration dashboard shows which child sessions are idle, actively processing, or waiting on queued input.
4. A parent avoids archiving a child that still has pending messages even though its latest task handoff is complete.

### Additional context

Observed workflow: a child reported a validated PR head; the parent independently reviewed and merged it. A previously queued follow-up then woke the child, which produced and pushed a test-only commit after merge. The child detected the race and stopped, but the parent had no API field that could have prevented it.

Related queue/session-state reports do not expose a coordinator merge barrier:

- [Messages submitted while background subagents are running get stranded in the Queued UI region](https://github.com/github/copilot-cli/issues/3344)
- [Queued user messages and system notifications delivered out of send order](https://github.com/github/copilot-cli/issues/3517)
- [Project sessions hide context-exhausted and interrupted turn causes](https://github.com/github/copilot-cli/issues/4144)
- [Plan approval in autopilot+fleet mode triggers a dispatch ordering mismatch](https://github.com/github/copilot-cli/issues/2833)

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

まず get_session と list_sessions_and_chats の API パスをたどり、次に issue にリンクされている関連するキューおよびセッション状態のレポートを読んでください。マージ前に child にアクティブな作業もキューに入った作業もないことを coordinator が検証できるように、状態と世代のセマンティクスを定義し、どの acknowledgment によってバリアが完了するのかを文書化してください。

索引モデルが issue の本文から書いたものです。

評価

領域
api, backend-api-design, cli
issue の種類
機能追加
難易度
5/5
見積もり時間
1週間以上
活発さ
静か
明瞭さ
おおむね明確
初心者へのやさしさ
35/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。