[release] v0.115.2 - #6590
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] Send queued messages directly from their queue row
…ix/release-1152-session-capability-readiness # Conflicts: # web/packages/agenta-chat/src/hooks/useServerSessionInputs.ts
…bility-readiness [fix] Resolve session capabilities before sending or answering
…se-1152-queued-input-edit # Conflicts: # web/packages/agenta-chat/src/components/QueuedMessagesDock.tsx # web/packages/agenta-chat/src/hooks/useAgentChatQueue.ts # web/packages/agenta-chat/src/hooks/useServerSessionInputs.ts # web/packages/agenta-chat/tests/unit/hooks/useAgentChatQueue.test.ts
…-edit [fix] Restore queued message editing on web and mobile
|
@coderabbitai review Release follow-up Validation:
Signed-off-by: Codex |
🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -euo pipefail
echo '--- PR metadata ---'
gh pr view 6590 --repo Agenta-AI/agenta --json number,title,baseRefName,headRefName,commits,files --jq '{
number, title, baseRefName, headRefName,
commits: [.commits[] | {oid: .oid, messageHeadline: .messageHeadline}],
files: [.files[] | {path: .path, additions: .additions, deletions: .deletions}]
}'
echo '--- Follow-up commit summary ---'
git show --stat --oneline --decorate --no-renames 377227fe1d
echo '--- Follow-up commit patch ---'
git show --format=fuller --find-renames --find-copies --no-ext-diff 377227fe1dLength of output: 42578 🏁 Script executed: #!/bin/bash
set -euo pipefail
echo '--- All feature-flag references outside generated/dependency directories ---'
rg -n -C 2 \
-g '!node_modules/**' -g '!dist/**' -g '!build/**' \
-e 'AGENTA_SESSIONS_DURABLE_APPROVALS' \
-e 'AGENTA_SESSIONS_QUEUE' \
-e 'AGENTA_SESSIONS_STEER' \
-e 'AGENTA_SESSIONS_SHARED_READER' \
-e 'AGENTA_SESSIONS_SEQUENCE_WRITES' \
-e 'AGENTA_RUNNER_LIVE_FRAMES' \
.
echo '--- Remaining false defaults for affected flags ---'
rg -n -i -C 2 \
-g '!node_modules/**' -g '!dist/**' -g '!build/**' \
'(AGENTA_(SESSIONS_(DURABLE_APPROVALS|QUEUE|STEER|SHARED_READER|SEQUENCE_WRITES)|RUNNER_LIVE_FRAMES).{0,100}(false|:-false))|((false|:-false).{0,100}AGENTA_(SESSIONS_(DURABLE_APPROVALS|QUEUE|STEER|SHARED_READER|SEQUENCE_WRITES)|RUNNER_LIVE_FRAMES))' \
. || true
echo '--- Helm templates ---'
fd -t f . hosting/kubernetes/helm | sort
rg -n -C 4 'liveFrames|AGENTA_RUNNER_LIVE_FRAMES' hosting/kubernetes/helm
echo '--- Relevant source and test outlines ---'
ast-grep outline api/oss/src/utils/env.py --items all --match 'SessionsConfig|SessionsRedisConfig|_sessions_durable_stop_enabled'
ast-grep outline services/runner/src/sessions/live-frames.ts --items all --match 'envEnabled|LiveFramePublisher'
ast-grep outline services/runner/tests/unit/live-frames.test.ts --items all --match 'LiveFramePublisher'
echo '--- Relevant code excerpts ---'
sed -n '680,730p' api/oss/src/utils/env.py
sed -n '1540,1625p' api/oss/src/utils/env.py
sed -n '1,105p' services/runner/src/sessions/live-frames.ts
sed -n '1,235p' services/runner/tests/unit/live-frames.test.tsLength of output: 40166
|
|
Note Currently processing new changes in this PR. This may take a few minutes, please wait... ⚙️ Run configurationConfiguration used: Repository YAML (base), Organization UI (inherited) Review profile: CHILL Plan: Team Run ID: ⛔ Files ignored due to path filters (23)
📒 Files selected for processing (250)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
New version v0.115.2 in