Peter Steinberger
0c95e3f073
refactor(plugins): move command ui policy into extensions
2026-04-03 19:30:35 +01:00
Peter Steinberger
45a6f769bb
test: trim core partial mocks
2026-04-03 19:28:19 +01:00
Peter Steinberger
13bc70397a
test: trim test partial mocks
2026-04-03 19:10:56 +01:00
Peter Steinberger
ab96520bba
refactor(plugins): move channel behavior into plugins
2026-04-03 19:09:20 +01:00
Peter Steinberger
379c329f81
test: trim dispatch and command partial mocks
2026-04-03 18:42:52 +01:00
Gustavo Madeira Santana
ddd250d130
feat(skills): add inherited agent skill allowlists ( #59992 )
...
Merged via squash.
Prepared head SHA: 6f60779a57
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
2026-04-03 13:41:28 -04:00
Peter Steinberger
e0580e6863
test: harden shared-worker runtime setup
2026-04-03 18:18:56 +01:00
Vincent Koc
745f1c9812
fix(types): align callers with removed legacy config aliases
2026-04-04 01:50:44 +09:00
Peter Steinberger
b118efea80
test: split reply flow coverage by owner surface
2026-04-03 17:35:01 +01:00
Peter Steinberger
5bafa6edcf
fix(auto-reply): align fallback model runtime state
2026-04-04 01:07:28 +09:00
Peter Steinberger
c563cdc901
fix(telegram): allow target approvals fallback
2026-04-04 01:07:28 +09:00
Shakker
8d5c11d31b
refactor: trim thinking helper import graph
2026-04-04 01:07:28 +09:00
Peter Steinberger
bf6bd7432a
fix: harden discord ack auth and gate fallout ( #60081 ) (thanks @FunJim)
2026-04-04 00:53:45 +09:00
Shakker
fc8ab82aab
refactor: trim cron session startup imports
2026-04-03 16:03:10 +01:00
Vincent Koc
ed166ba338
test(contracts): extract narrow channel contract helpers
2026-04-03 23:14:45 +09:00
Agustin Rivera
3cd9aac6bb
Require owner access for /allowlist writes ( #59836 )
...
* fix(allowlist): require owner access for writes
* docs(changelog): note allowlist owner gate fix
---------
Co-authored-by: Jacob Tomlinson <jtomlinson@nvidia.com>
2026-04-03 07:07:36 -07:00
Peter Steinberger
8d0bed458e
refactor: simplify reply-threading and test helpers
2026-04-03 23:06:22 +09:00
Peter Steinberger
1a75fc9e05
fix: align latest-main gate drift on #60221
2026-04-03 21:52:35 +09:00
Peter Steinberger
f59d0eac68
refactor(plugin-runtime): remove plugin-specific core seams
2026-04-03 13:08:39 +01:00
Peter Steinberger
32ebaa3757
refactor: share session model resolution helpers
2026-04-03 19:37:56 +09:00
Peter Steinberger
2766c27b2a
refactor(plugin-sdk): genericize web channel runtime seams
2026-04-03 11:17:28 +01:00
Peter Steinberger
f2d7a825b1
refactor(plugin-sdk): remove channel-specific sdk seams
2026-04-03 10:45:10 +01:00
Josh Lehman
2b28e75822
fix: enrich session_end lifecycle hooks ( #59715 )
...
Merged via squash.
Prepared head SHA: b3ef62b973
Co-authored-by: jalehman <550978+jalehman@users.noreply.github.com>
Co-authored-by: jalehman <550978+jalehman@users.noreply.github.com>
Reviewed-by: @jalehman
2026-04-03 00:16:14 -07:00
Peter Steinberger
b66197f932
test: reduce import wrapper reload churn
2026-04-03 07:14:58 +01:00
Peter Steinberger
376a042ba1
test: isolate runtime state in memory tests
2026-04-03 07:14:58 +01:00
Leo Zhang
b6debb4382
fix(agent): close remaining internal-context leak paths ( #59649 )
...
* fix(status): strip internal runtime context from task detail surfaces
* fix(agent): narrow legacy internal-context stripping
* fix(tasks): sanitize user-facing task status surfaces
* fix(agent): close remaining internal-context leak paths
* fix(agent): harden internal context delimiter sanitization
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-04-02 23:45:06 +09:00
Vincent Koc
def5b954a8
feat(plugins): surface imported runtime state in status tooling ( #59659 )
...
* feat(plugins): surface imported runtime state
* fix(plugins): keep status imports snapshot-only
* fix(plugins): keep status snapshots manifest-only
* fix(plugins): restore doctor load checks
* refactor(plugins): split snapshot and diagnostics reports
* fix(plugins): track imported erroring modules
* fix(plugins): keep hot metadata where required
* fix(plugins): keep hot doctor and write targeting
* fix(plugins): track throwing module imports
2026-04-02 22:50:17 +09:00
Vincent Koc
d87bc6706c
fix(plugin-sdk): narrow groups runtime discord seam ( #59623 )
2026-04-02 19:51:36 +09:00
Gustavo Madeira Santana
8748b7c54c
Matrix: keep partial previews aligned with block streaming ( #59384 )
...
Merged via squash.
Prepared head SHA: 981aa35a7c
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
2026-04-02 03:39:27 -04:00
Vincent Koc
a7e3c0b0e1
feat(slack): add scoped prompts and mrkdwn hints ( #59100 )
...
* feat(slack): add scoped prompts and mrkdwn hints
* refactor(slack): drop dm prompt override
* refactor(slack): drop exposed prompt config
* chore(changelog): note slack mrkdwn fix
2026-04-02 11:23:43 +09:00
Gustavo Madeira Santana
ba735d0158
Exec approvals: unify effective policy reporting and actions ( #59283 )
...
Merged via squash.
Prepared head SHA: d579b97a93
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
2026-04-01 22:02:39 -04:00
Gustavo Madeira Santana
560ea25294
Matrix: restore ordered progress delivery with explicit streaming modes ( #59266 )
...
Merged via squash.
Prepared head SHA: 523623b7e1
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
2026-04-01 19:35:03 -04:00
Gustavo Madeira Santana
c87c8e66bf
Refactor channel approval capability seams ( #58634 )
...
Merged via squash.
Prepared head SHA: c9ad4e4706
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
2026-04-01 17:10:25 -04:00
Josh Lehman
71346940ad
refactor: add provider replay runtime hook surfaces ( #59143 )
...
Merged via squash.
Prepared head SHA: 56b41e87a5
Co-authored-by: jalehman <550978+jalehman@users.noreply.github.com>
Co-authored-by: jalehman <550978+jalehman@users.noreply.github.com>
Reviewed-by: @jalehman
2026-04-01 13:45:41 -07:00
Joshua Lelon Mitchell
7cb323d84f
feat(plugins): add before_agent_reply hook (claiming pattern) ( #20067 )
...
Merged via squash.
Prepared head SHA: e40dfbdfb9
Co-authored-by: JoshuaLelon <23615754+JoshuaLelon@users.noreply.github.com>
Co-authored-by: jalehman <550978+jalehman@users.noreply.github.com>
Reviewed-by: @jalehman
2026-04-01 13:31:11 -07:00
Josh Lehman
90eb5b073f
fix: pass session identity to plugin commands ( #59044 )
...
Merged via squash.
Prepared head SHA: 0f7a23f139
Co-authored-by: jalehman <550978+jalehman@users.noreply.github.com>
Co-authored-by: jalehman <550978+jalehman@users.noreply.github.com>
Reviewed-by: @jalehman
2026-04-01 13:07:17 -07:00
VACInc
711c9e7249
fix(gateway): emit before_reset on session reset ( #53872 )
...
Merged via squash.
Prepared head SHA: a47894ef16
Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>
Co-authored-by: jalehman <550978+jalehman@users.noreply.github.com>
Reviewed-by: @jalehman
2026-04-01 12:46:53 -07:00
Oguri Cap
1f99c87a44
feat: add `agents.defaults.compaction.notifyUser` config option (default: false) [ Fix #54249 ] ( #54251 )
...
Merged via squash.
Prepared head SHA: 6fd4cdb7c3
Co-authored-by: oguricap0327 <266246182+oguricap0327@users.noreply.github.com>
Co-authored-by: jalehman <550978+jalehman@users.noreply.github.com>
Reviewed-by: @jalehman
2026-04-01 12:29:17 -07:00
Luke
5b73108e58
fix: /context detail severely underestimates token count ( #28391 )
...
Merged via squash.
Prepared head SHA: 5ea6a074f3
Co-authored-by: ImLukeF <92253590+ImLukeF@users.noreply.github.com>
Co-authored-by: jalehman <550978+jalehman@users.noreply.github.com>
Reviewed-by: @jalehman
2026-04-01 12:11:08 -07:00
Peter Steinberger
ab3c646bb1
fix: preserve telegram exec approval topic routing
2026-04-01 13:34:50 +01:00
ImLukeF
4e63dc0b1c
fix: hide raw provider errors from chat replies
2026-04-01 20:53:16 +11:00
HansY
3b1f8e3461
fix: strip inbound metadata before slash command detection ( #58674 )
...
Slash commands like /model and /new were silently ignored when the inbound
message body included metadata prefix blocks (Conversation info, Sender info,
timestamps) injected by buildInboundUserContextPrefix. The command detection
functions (hasControlCommand, isControlCommandMessage, parseSendPolicyCommand)
now call stripInboundMetadata before normalizeCommandBody so embedded slash
commands are correctly recognized.
2026-04-01 10:17:20 +01:00
Forgely3D
4fa11632b4
fix: escalate to model fallback after rate-limit profile rotation cap ( #58707 )
...
* fix: escalate to model fallback after rate-limit profile rotation cap
Per-model rate limits (e.g. Anthropic Sonnet-only quotas) are not
relieved by rotating auth profiles — if all profiles share the same
model quota, cycling between them loops forever without falling back
to the next model in the configured fallbacks chain.
Apply the same rotation-cap pattern introduced for overloaded_error
(#58348 ) to rate_limit errors:
- Add `rateLimitedProfileRotations` to auth.cooldowns config (default: 1)
- After N profile rotations on a rate_limit error, throw FailoverError
to trigger cross-provider model fallback
- Add `resolveRateLimitProfileRotationLimit` helper following the same
pattern as `resolveOverloadProfileRotationLimit`
Fixes #58572
* fix: cap prompt-side rate-limit failover (#58707 ) (thanks @Forgely3D)
* fix: restore latest-main gates for #58707
---------
Co-authored-by: Ember (Forgely3D) <ember@forgely.co>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-04-01 17:54:10 +09:00
Vincent Koc
facdeb3432
feat(tasks): add chat-native task board ( #58828 )
2026-04-01 16:48:36 +09:00
Vincent Koc
cfa307baed
fix(status): keep task snapshots pure
2026-04-01 16:36:57 +09:00
Vincent Koc
340c99d657
fix(status): filter stale task rows from status cards ( #58810 )
...
* fix(status): filter stale task rows
* test(status): use real task snapshot semantics
* fix(status): prefer failure task context in recent failures
2026-04-01 16:19:02 +09:00
Peter Steinberger
622b91d04e
fix: queue model switches behind busy runs
2026-04-01 16:14:10 +09:00
Owen Wang
50cc28c559
fix: differentiate overloaded vs rate-limit user-facing error messages ( #58562 )
2026-03-31 21:10:38 -04:00
Andy Tien
6c3eea3ce9
fix(session): prevent heartbeat/cron/exec events from triggering session reset ( #58605 )
...
Fixes #58409 - Heartbeat system causes silent session reset leading to user data loss.
The issue occurred when automated system events (heartbeat, cron-event, exec-event)
triggered the session initialization logic, which evaluated session freshness based on
idle/daily reset policies. Stale sessions were reset, causing complete context loss.
Changes:
- Detect system event providers (heartbeat, cron-event, exec-event) in initSessionState
- Force freshEntry=true for system events to skip reset policy evaluation
- Add comprehensive test coverage for heartbeat no-reset behavior
This ensures automated check-ins preserve session continuity and never cause
accidental data loss.
2026-03-31 21:10:24 -04:00
Gustavo Madeira Santana
bea53d7a3f
Fix: move bootstrap session grammar into plugin-owned session-key surfaces ( #58400 )
...
Merged via squash.
Prepared head SHA: b062b18b03
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
2026-03-31 19:41:01 -04:00