🪃 feat: Wake Parent Agents on Child Completion (#14975)

* feat: wake parent agents on child completion

* wip: harden child completion wakeup lifecycle

* fix: close the completion-wakeup static failures

Type the durable-claim store fixture, the continue-envelope test helper,
and the terminal message's task metadata so the wakeup suites compile
against the shapes they actually exercise. Replace `Array.prototype.at`,
which the package target library does not provide.

Capture the prepared child thread in a non-optional local before the
provider callback closes over it, and narrow the trigger envelope itself
on `mode === 'continue'` rather than a separately copied mode, so reading
the continue target is sound. Lift the parent-message fallback out of a
nested ternary into a named resolver.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01H1cCMDrTWaRNkmtKjpWELZ

* test: cover the active-predecessor admission fence

The Redis job-creation call gained a thirteenth scalar argument, so the
spec helper reconstructed the HSET pairs one slot early and rebuilt an
invalid job hash; three creation tests failed on that alone.

Give the fence itself direct coverage in both store adapters, which it
had none of despite deciding whether an automatic continuation may
replace a live parent turn. Each proves a running and a requires_action
predecessor are refused with the state a controller needs for a finite
409, that an absent or settled predecessor is admitted, and that an
ordinary user turn without the policy still replaces its predecessor.
The Redis case also asserts a refused continuation leaves the parent's
durable job and chunks untouched.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01H1cCMDrTWaRNkmtKjpWELZ

* fix: harden completion wakeup rollout and claims

* fix: close completion wakeup race windows

* test: keep the child store fixture exact

* fix: close final subagent wakeup gaps

* fix: preserve ambiguous completion claims

* fix: release pre-admission wakeup claims

* fix: stabilize subagent completion recovery

---------

Co-authored-by: Claude <noreply@anthropic.com>
This commit is contained in:
Danny Avila 2026-08-19 12:18:31 -04:00 committed by GitHub
parent d175741010
commit 5e3c680761
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
34 changed files with 2526 additions and 126 deletions

View file

@ -1211,11 +1211,17 @@ OPENWEATHER_API_KEY=
# Agent Trigger Delivery #
#===========================#
# Base URL used by trusted in-process event producers to dispatch agent fires and steers.
# Base URL used by trusted in-process event producers to dispatch agent fires, continuations,
# and steers.
# Defaults to this process's bound listener. Set only when internal trigger admission must
# traverse another trusted HTTP origin, such as a TLS front door.
# AGENT_TRIGGERS_SELF_URL=http://127.0.0.1:3080
# Automatically continue a saved parent agent after a detached subagent settles.
# Rolling-deploy safety: deploy support with this disabled first, wait until every API
# replica is upgraded, then enable it in a subsequent rollout.
# ENABLE_SUBAGENT_COMPLETION_WAKEUPS=false
# Trusted event adapters enqueue through the shared durable trigger service. Mongo-backed
# leases make its workers safe across replicas; successful delivery records expire after
# 90 days, while dead letters remain available for explicit operator requeue.