Peter Steinberger
7f59a5e128
test: tighten subagent announce assertions
2026-05-09 18:47:11 +01:00
Peter Steinberger
e74347bbe7
fix(agents): retry overloaded subagent announces
2026-05-07 22:36:31 +01:00
Vincent Koc
c97998ce21
chore(channels): remove bluebubbles bundled surface
2026-05-07 12:52:48 -07:00
Peter Steinberger
92284bc460
fix(agents): clean subagent fallback scaffolding ( #78700 )
...
* fix(agents): clean subagent completion fallback scaffolding
* refactor(agents): use prompt data blocks for child results
* fix(agents): satisfy sanitizer lint
* refactor(agents): remove raw subagent completion fallback
2026-05-07 04:30:04 +01:00
Peter Steinberger
30a2b3049a
feat: default active steering to batched delivery
2026-04-30 01:22:43 +01:00
Peter Steinberger
1382fb5bd7
fix(agents): fail closed missing requester completion routes
2026-04-27 14:30:59 +01:00
Peter Steinberger
7f3f108521
refactor(config): migrate plugin config access
2026-04-27 12:35:58 +01:00
Peter Steinberger
496964fced
test: speed up subagent announce format e2e
2026-04-27 12:03:54 +01:00
Peter Steinberger
30aa1b5223
fix(release): stabilize beta validation lanes
2026-04-26 16:22:12 +01:00
Peter Steinberger
bbef1c5557
fix(release): harden subagent completion delivery
...
(cherry picked from commit 855872986e )
2026-04-24 18:22:24 +01:00
Bek
0e1d324dd8
fix(agents): Wake active requester sessions for subagent completions while keeping dormant sessions externally deliverable ( #62963 )
...
Route subagent completion announces through embedded-run wake for active requesters, preserve external delivery for dormant ones
2026-04-21 18:13:53 -04:00
Peter Steinberger
d6bb36730b
fix(agents): stabilize subagent lifecycle
2026-04-12 16:07:46 +01:00
Guangchi Yuan
110782a26a
fix(gateway): preserve thread routing in delivery context for Slack/Telegram/Mattermost ( #54840 )
...
Merged via squash.
Prepared head SHA: 34bedac747
Co-authored-by: yzzymt <6908291+yzzymt@users.noreply.github.com >
Co-authored-by: jalehman <550978+jalehman@users.noreply.github.com >
Reviewed-by: @jalehman
2026-04-09 14:26:41 -07:00
Tyler Yust
41cf93efff
fix: include extension channels in subagent announce delivery path ( #56348 )
...
* fix: include extension channels in subagent announce delivery path
* test: cover extension announce delivery routes
2026-03-28 21:15:23 +09:00
Peter Steinberger
992b30604d
refactor: move extension-owned tests to extensions
2026-03-27 21:37:09 +00:00
Peter Steinberger
c7b4c34e89
refactor: route provider test seams through extension barrels
2026-03-27 13:46:17 +00:00
Tak Hoffman
6eaff70b55
fix: ignore moved child rows in subagent announces
2026-03-24 19:47:36 -05:00
Tak Hoffman
fee9d4cf37
fix: dedupe stale child completion announces
2026-03-24 17:25:14 -05:00
Tak Hoffman
ab8c834aab
fix: report dropped subagent announce queue deliveries
2026-03-24 00:54:46 -05:00
Vincent Koc
34c57487b4
fix(subagents): recheck timed-out announce waits ( #53127 )
...
Recheck timed-out subagent announce waits against the latest runtime snapshot before announcing timeout, and keep that recheck best-effort so transient gateway failures do not suppress the announcement.
Co-authored-by: Val Alexander <68980965+BunsDev@users.noreply.github.com >
2026-03-23 15:36:49 -05:00
Peter Steinberger
abf2157b18
fix: sync agent and autoreply e2e updates
2026-03-23 01:33:40 -07:00
Vincent Koc
0aa4950d21
fix(core): restore session reset defaults and type seams
2026-03-19 13:33:32 -07:00
Vincent Koc
44cd4fb55f
fix(ci): repair main type and boundary regressions
2026-03-19 08:00:33 -07:00
Gustavo Madeira Santana
f69450b170
Matrix: fix typecheck and boundary drift
2026-03-19 08:03:56 -04:00
Gustavo Madeira Santana
94693f7ff0
Matrix: rebuild plugin migration branch
2026-03-19 01:58:29 -04:00
Tyler Yust
81b93b9ce0
fix(subagents): announce delivery with descendant gating, frozen result refresh, and cron retry ( #35080 )
...
Thanks @tyler6204
2026-03-05 19:20:24 -08:00
Vincent Koc
4dc0c66399
fix(subagents): strip leaked [[reply_to]] tags from completion announces ( #34503 )
...
* fix(subagents): strip reply tags from completion delivery text
* test(subagents): cover reply-tag stripping in cron completion sends
* changelog: note iMessage reply-tag stripping in completion announces
* Update CHANGELOG.md
* Apply suggestion from @greptile-apps[bot]
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
---------
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
2026-03-05 07:50:55 -05:00
Sid
8b8167d547
fix(agents): bypass pendingDescendantRuns guard for cron announce delivery ( #35185 )
...
* fix(agents): bypass pendingDescendantRuns guard for cron announce delivery
Standalone cron job completions were blocked from direct channel delivery
when the cron run had spawned subagents that were still registered as
pending. The pendingDescendantRuns guard exists for live orchestration
coordination and should not apply to fire-and-forget cron announce sends.
Thread the announceType through the delivery chain and skip both the
child-descendant and requester-descendant pending-run guards when the
announce originates from a cron job.
Closes #34966
* fix: ensure outbound session entry for cron announce with named agents (#32432 )
Named agents may not have a session entry for their delivery target,
causing the announce flow to silently fail (delivered=false, no error).
Two fixes:
1. Call ensureOutboundSessionEntry when resolving the cron announce
session key so downstream delivery can find channel metadata.
2. Fall back to direct outbound delivery when announce delivery fails
to ensure cron output reaches the target channel.
Closes #32432
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
* fix: guard announce direct-delivery fallback against suppression leaks (#32432 )
The `!delivered` fallback condition was too broad — it caught intentional
suppressions (active subagents, interim messages, SILENT_REPLY_TOKEN) in
addition to actual announce delivery failures. Add an
`announceDeliveryWasAttempted` flag so the direct-delivery fallback only
fires when `runSubagentAnnounceFlow` was actually called and failed.
Also remove the redundant `if (route)` guard in
`resolveCronAnnounceSessionKey` since `resolved` being truthy guarantees
`route` is non-null.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
* fix(cron): harden announce synthesis follow-ups
---------
Co-authored-by: scoootscooob <zhentongfan@gmail.com >
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com >
2026-03-04 21:31:33 -06:00
Peter Steinberger
fe92113472
test(e2e): isolate module mocks across harnesses
2026-03-03 05:52:14 +00:00
zwffff
8828418111
test(subagent-announce): fix flaky Windows-only test failure ( #31298 ) (openclaw#31370) thanks @zwffff
...
Verified:
- pnpm install --frozen-lockfile
- pnpm build
- pnpm check (fails on main baseline issues in extensions/googlechat and extensions/phone-control)
- pnpm test:e2e src/agents/subagent-announce.format.e2e.test.ts
Co-authored-by: zwffff <5809959+zwffff@users.noreply.github.com >
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com >
2026-03-02 10:33:07 -06:00
Tyler Yust
f918b336d1
fix: agent-only announce path, BB message IDs, sender identity, SSRF allowlist ( #23970 )
...
* fix(agents): defer announces until descendant cleanup settles
* fix(bluebubbles): harden message metadata extraction
* feat(contributors): rank by composite score (commits, PRs, LOC, tenure)
* refactor(control-ui): move method guard after path checks to improve request handling
* fix subagent completion announce when only current run is pending
* fix(subagents): keep orchestrator runs active until descendants finish
* fix: prepare PR feedback follow-ups (#23970 ) (thanks @tyler6204)
2026-03-01 22:52:11 -08:00
Peter Steinberger
a13586619b
test: move integration-heavy suites to e2e lane
2026-03-02 05:33:07 +00:00
Peter Steinberger
c995f9be07
test: reclassify mocked announce and sandbox suites as unit tests
2026-02-22 10:28:43 +00:00
Peter Steinberger
35d5bd4e07
perf(test): shrink subagent announce fast-mode settle waits
2026-02-22 09:29:04 +00:00
Peter Steinberger
703f7213b6
test(agents): simplify subagent announce suite imports and call assertions
2026-02-22 09:29:04 +00:00
Peter Steinberger
c3e13175d2
perf(test): bypass queue debounce in fast mode and tighten announce defaults
2026-02-22 09:13:01 +00:00
Peter Steinberger
833d7574e7
test(agents): consolidate repeated announce deferral and fallback matrices
2026-02-22 09:05:56 +00:00
Peter Steinberger
d9a7b447f5
test(agents): use lightweight clear for active-run announce mock
2026-02-22 09:01:55 +00:00
Peter Steinberger
15657dd48d
test(agents): collapse repeated announce direct-send scenarios
2026-02-22 08:57:39 +00:00
Peter Steinberger
53a7afe238
test(agents): unify hook thread-target announce assertions
2026-02-22 08:55:11 +00:00
Peter Steinberger
d625f888a9
test(core): dedupe command gating and trim announce reset overhead
2026-02-22 08:54:11 +00:00
Peter Steinberger
a1c8525766
test(agents): dedupe subagent announce direct-send variants
2026-02-22 08:49:33 +00:00
Peter Steinberger
5e9cbdc1a1
test(subagents): lighten session delete mock reset in announce spec
2026-02-22 08:17:26 +00:00
Peter Steinberger
76828e8dc8
test(agents): use lightweight clears for stable subagent announce defaults
2026-02-22 07:35:55 +00:00
Peter Steinberger
861718e4dc
test: group remaining suite cleanups
2026-02-21 21:44:57 +00:00
Onur
8178ea472d
feat: thread-bound subagents on Discord ( #21805 )
...
* docs: thread-bound subagents plan
* docs: add exact thread-bound subagent implementation touchpoints
* Docs: prioritize auto thread-bound subagent flow
* Docs: add ACP harness thread-binding extensions
* Discord: add thread-bound session routing and auto-bind spawn flow
* Subagents: add focus commands and ACP/session binding lifecycle hooks
* Tests: cover thread bindings, focus commands, and ACP unbind hooks
* Docs: add plugin-hook appendix for thread-bound subagents
* Plugins: add subagent lifecycle hook events
* Core: emit subagent lifecycle hooks and decouple Discord bindings
* Discord: handle subagent bind lifecycle via plugin hooks
* Subagents: unify completion finalizer and split registry modules
* Add subagent lifecycle events module
* Hooks: fix subagent ended context key
* Discord: share thread bindings across ESM and Jiti
* Subagents: add persistent sessions_spawn mode for thread-bound sessions
* Subagents: clarify thread intro and persistent completion copy
* test(subagents): stabilize sessions_spawn lifecycle cleanup assertions
* Discord: add thread-bound session TTL with auto-unfocus
* Subagents: fail session spawns when thread bind fails
* Subagents: cover thread session failure cleanup paths
* Session: add thread binding TTL config and /session ttl controls
* Tests: align discord reaction expectations
* Agent: persist sessionFile for keyed subagent sessions
* Discord: normalize imports after conflict resolution
* Sessions: centralize sessionFile resolve/persist helper
* Discord: harden thread-bound subagent session routing
* Rebase: resolve upstream/main conflicts
* Subagents: move thread binding into hooks and split bindings modules
* Docs: add channel-agnostic subagent routing hook plan
* Agents: decouple subagent routing from Discord
* Discord: refactor thread-bound subagent flows
* Subagents: prevent duplicate end hooks and orphaned failed sessions
* Refactor: split subagent command and provider phases
* Subagents: honor hook delivery target overrides
* Discord: add thread binding kill switches and refresh plan doc
* Discord: fix thread bind channel resolution
* Routing: centralize account id normalization
* Discord: clean up thread bindings on startup failures
* Discord: add startup cleanup regression tests
* Docs: add long-term thread-bound subagent architecture
* Docs: split session binding plan and dedupe thread-bound doc
* Subagents: add channel-agnostic session binding routing
* Subagents: stabilize announce completion routing tests
* Subagents: cover multi-bound completion routing
* Subagents: suppress lifecycle hooks on failed thread bind
* tests: fix discord provider mock typing regressions
* docs/protocol: sync slash command aliases and delete param models
* fix: add changelog entry for Discord thread-bound subagents (#21805 ) (thanks @onutc)
---------
Co-authored-by: Shadow <hi@shadowing.dev >
2026-02-21 16:14:55 +01:00
Shadow
f555835b09
Channels: add thread-aware model overrides
2026-02-20 19:26:25 -06:00
Tyler Yust
fe57bea088
Subagents: restore announce chain + fix nested retry/drop regressions ( #22223 )
...
* Subagents: restore announce flow and fix nested delivery retries
* fix: prep subagent announce + docs alignment (#22223 ) (thanks @tyler6204)
2026-02-20 15:39:09 -08:00
Peter Steinberger
c25a18493e
test: merge direct announce origin variants
2026-02-18 23:21:03 +00:00
Peter Steinberger
c8e02329cd
test: dedupe subagent announce fallback and thread assertions
2026-02-18 23:15:11 +00:00