Skip to content

chore: promote stage to bkmain (Running shelf, collapse-all, Claude subagent end fix) - #312

Merged
bk-agent-01 merged 19 commits into
bkmainfrom
promote/stage-2026-10-13
Oct 13, 2026
Merged

bk-agent-01 merged 19 commits into
bkmainfrom
promote/stage-2026-10-13

Conversation

@bk-agent-01

Copy link
Copy Markdown
Collaborator

Problem

stage carries three changes that are tested on stagebkt3 and are not on bkt3 production.

Change

This PR merges stage into bkmain (no fast-forward, because the two branches split):

The merge was clean. The result equals stage plus the McpOAuth fix that only bkmain had (#309). That fix is kept.

Tushar asked in the session for all of stage to go to bkmain.

How I tested

  • Every change passed CI on its own PR, and stagebkt3 has run it. Tushar checked the sidebar change on stagebkt3.
  • CI runs again on this merge head.

⚠️ This merge deploys bkt3, which restarts every live bkt3 session.

🤖 Generated with Claude Code

bk-agent-01 and others added 19 commits October 11, 2026 09:52
…s Running

A background subagent's task_notification that arrives while the root turn is
idle only went to the wake buffer, so its card completed when a continuation
run drained it. A nested subagent's end never offers a continuation, and a
held queue can keep the continuation from ever starting; on stage a reviewer
subagent showed Running for a day after it finished.

Between turns, a running registered subagent's end now completes its card at
once through the turn that settled last, as its progress already does. The
frame still waits in the wake buffer, so the wake label and continuation
offer are unchanged; the drain skips the card update it already made, and the
undrained end keeps pinning the session until then.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Stop holds every queued run, and each later queued run copied that hold. A
continuation that ProviderContinuationService queues for output the Claude CLI
already produced (it started a turn by itself) was held with them, so it never
ran: the adapter kept that output, and every later wake on the thread, in its
buffer. On stage this lost three agent replies and a subagent's completion.

An adapter continuation (createdBy agent, creationSource provider) no longer
copies the hold, and the queue starts the first queued run that is not held.
Held user runs keep waiting for the user, in their order.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…inuations

A second end that arrives behind a buffered resume must wait for the drain
that re-opens the card, or the card stays Running. The queue helper's comment
now says that a Codex continuation is a real prompt and also starts past a
held queue.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ween-turns

fix(server): Claude subagents that end between turns no longer stay Running
feat(mcp): scheduled prompts, session watches and scoped scheduled tasks for agents
…ns block

A Codex async question is a runtime request answered by message. The
shell leaves those out of pendingRuntimeRequest and only flags them, so
the agent toolkit's loader read nothing: t3_inbox showed the question
without options and t3_answer said nothing waits.

The loader now reads pending message-mode requests whenever the shell
flags one. Every question shows whether it blocks the agent; t3_answer
takes a short requestId, reports how a non-blocking answer reached the
agent, and dismisses a non-blocking question with dismiss: true.
t3_send_message no longer refuses for a non-blocking question.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rs only its question

Review fixes:
- an approval next to a non-blocking question loaded no details, because
  the approval read sat in an else branch;
- t3_answer without requestId now refuses when more than one question is
  open, and every answer hint carries the short requestId, so a retried
  answer cannot land on the next question;
- a secret request (the shell stands it in as a question) now says that a
  person enters it in the app, instead of asking to try again;
- t3_inbox counts the non-blocking questions it does not show;
- the delivery check reads only the answer's own run.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…the secret id type

- the secret stand-in id is compared as a string (TS2367: TurnItemId vs
  RuntimeRequestId);
- t3_answer refuses a question, dismiss or decision that has a
  clientRequestId but no requestId, so a retry cannot land on a request
  asked since; approval hints carry the short requestId;
- t3_send_message names a secret request instead of pointing to t3_answer;
- secret text in JSON output is cut like other agent-written text.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
fix(mcp): t3_answer sees Codex async questions and says which questions block
…stom groups

In custom grouping, a small "Running" switch beside the group-by caption moves
sessions that run with nothing waiting on a human out of their groups into a
Running shelf, docked above Snoozed. The shelf is one flat list, newest
activity first, and each row keeps a pill naming its group. A session with a
question, approval or plan anywhere in its subtree stays in its group with
its highlight.

Every custom group header now says in words what it holds, open or closed:
"1 asking · 2 unread · 3 running". The running count includes the sessions
the shelf took, so the header still tells you which group they belong to.

The switch is a per-device preference (off by default) in the grouping store;
mobile ignores it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ead banner stays quiet

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
feat(web): Running shelf and header summary words for custom groups
Beside the Running switch, custom mode gets one button that closes every
group and every shelf on screen (Running, Snoozed, Settled); pressed again it
opens them all. Any one section open means the press closes everything.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
feat(web): collapse-all button for custom grouping
… end fix

Promotes #310, #311 and #301 (whose own promotion PR is #307).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XL labels Oct 13, 2026
@bk-agent-01
bk-agent-01 merged commit cb9eb33 into bkmain Oct 13, 2026
25 of 26 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XL vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant