[release] v0.115.2 - #6590
Open
github-actions[bot] wants to merge 132 commits into
Open
Conversation
Superseded by the milestone 2 generation-safe watchdog fence. Claude-Session: https://claude.ai/code/session_0164kzT6ttwpBtzvcDC6YzYk
Superseded by the milestone 2 atomic generation-safe watchdog release, which commits database state before Redis cleanup. Claude-Session: https://claude.ai/code/session_0164kzT6ttwpBtzvcDC6YzYk
Superseded with the removed heartbeat guard by the milestone 2 generation-safe watchdog implementation. Claude-Session: https://claude.ai/code/session_0164kzT6ttwpBtzvcDC6YzYk
Symptom: a user approves a tool call, POST /sessions/interactions/<id>/respond returns 202, and the turn never continues. The API log repeats "control delivery unreachable ... Workflow revision has no runnable service URL." three times over six minutes, then the command settles obsolete and the card sits on "Answered, waiting for the agent". Cause: a durable continuation is a server-side invoke, and an invoke finds its service URL only through the request's references. _ensure_request_revision returns at once when the request carries neither data.revision nor references, so _get_service_url gets no revision and returns None. The dispatcher took the references from the gate row alone. A session whose first Send carried no references stamps none on the gate row, so the invoke had no URL and every redelivery failed. Fix: InteractionsDispatcher._session_references resolves the identity from the gate row first, then from the session's own session_turns.references, then from session_streams.references. The new keyed_references helper folds the stored flat list back into the keyed map an invoke carries, and drops any family _validate_execution_reference_families would reject. Both reads are best effort and read-only: a read that fails logs and falls through, because the continuation is already durable. routers.py passes the existing turns and streams services in. Five tests cover the turn fallback, the stream fallback, the gate row winning over both, a session with no identity anywhere, and the helper's family filter. Claude-Session: https://claude.ai/code/session_0164kzT6ttwpBtzvcDC6YzYk
Symptom: after an answer the approval card always showed "Answered, waiting for
the agent", even when the server had marked the continuation recoverable. The
user never saw "Answer saved, retry needed", so the one state that asks for an
action stayed invisible.
Cause: handleApprovalResponse returned answerApproval(...).then(() => { ... }).
The arrow body returned nothing, so the promise resolved to undefined and the
dock's result.value?.recoverable was always false.
Fix: the ordered click is now the extracted answerThenSteer helper. It answers the
gate, sends a denial's steer note after the answer as before, and returns the
submission outcome to the caller. Four tests pin the return value, the steer
ordering, the approve-side suppression, and the blank-note case.
Claude-Session: https://claude.ai/code/session_0164kzT6ttwpBtzvcDC6YzYk
[feat] Session control milestone 3: durable approvals, queue, steer
Contributor
Author
📘 Docs preview
This comment updates in place on every push. |
Contributor
Author
Railway Preview Environment
|
fix(sessions): preserve live transcript and settle reader activity
…ment fix(runner): finish stopped turns before running steered input
…oval-config fix(sdk): retain builder configuration for approval resumes
…rror fix(api): persist final heartbeat state after execution settlement
…-race [fix] Avoid stale app responses in playground test setup
…refresh fix(frontend): refresh configuration after live agent commits
…l-preview fix(frontend): retire tool previews when approvals take over
…-negotiation fix(frontend): negotiate shared responses for durable chat inputs
…-approval fix(api): keep queued messages behind pending approvals
[fix] Keep queued input behind starting approval continuations
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
New version v0.115.2 in