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
Logan Ye
d9a7ffe003
failover: classify AbortError / stream-abort messages as timeout ( #58315 ) ( #58324 )
...
Merged via squash.
Prepared head SHA: d8412f27e6
Co-authored-by: yelog <14227866+yelog@users.noreply.github.com >
Co-authored-by: altaywtf <9790196+altaywtf@users.noreply.github.com >
Reviewed-by: @altaywtf
2026-04-02 00:02:31 +03:00
zqchris
75ab5bce6b
fix(bluebubbles): add enrichGroupParticipantsFromContacts to core Zod schema ( #56889 )
...
* fix(bluebubbles): add enrichGroupParticipantsFromContacts to core Zod schema
The field was added to the extension config schema in #54984 but not
synced to the core strict Zod validator, causing config validation to
reject the key at startup with 'Unrecognized key'.
* test(config): add BlueBubbles schema regression coverage
* fix(bluebubbles): accept enrichGroupParticipantsFromContacts config
---------
Co-authored-by: Chris Zhang <chris@ChrisdeMac-mini.local >
Co-authored-by: Altay <altay@uinaf.dev >
2026-04-01 23:55:58 +03: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
Bruno Lorente
ca76e2fedc
fix(cron-tool): add typed properties to job/patch schemas ( #55043 )
...
Merged via squash.
Prepared head SHA: 979bb0e8b7
Co-authored-by: brunolorente <127802443+brunolorente@users.noreply.github.com >
Co-authored-by: altaywtf <9790196+altaywtf@users.noreply.github.com >
Reviewed-by: @altaywtf
2026-04-01 23:41:19 +03: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
Nimrod Gutman
017bc5261c
fix(gateway): prefer bootstrap auth over tailscale ( #59232 )
...
* fix(gateway): prefer bootstrap auth over tailscale
* fix(gateway): prefer bootstrap auth over tailscale (#59232 ) (thanks @ngutman)
2026-04-01 23:20:10 +03:00
9ra55
5cf254a5f7
fix: honor authHeader provider config by injecting Authorization Bear… ( #54390 )
...
Merged via squash.
Prepared head SHA: 9889615571
Co-authored-by: lndyzwdxhs <16411017+lndyzwdxhs@users.noreply.github.com >
Co-authored-by: jalehman <550978+jalehman@users.noreply.github.com >
Reviewed-by: @jalehman
2026-04-01 13:18:37 -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
Josh Lehman
1c83e2eec7
fix: scope session create aliases to requested agent ( #58207 )
...
Merged via squash.
Prepared head SHA: 9462848777
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 11:39:31 -07:00
Peter Steinberger
8abba663c5
chore: bump version to 2026.4.2
2026-04-01 19:39:27 +01:00
Moliendo
d076153fc9
fix(config): coerce numeric Discord IDs to strings instead of rejecting ( #45125 )
...
Merged via squash.
Prepared head SHA: 099ba514a1
Co-authored-by: moliendocode <29582793+moliendocode@users.noreply.github.com >
Co-authored-by: altaywtf <9790196+altaywtf@users.noreply.github.com >
Reviewed-by: @altaywtf
2026-04-01 21:07:28 +03:00
Doğu Abaris
5190b3b3fa
fix: avoid locally caught ACP session init exception ( #55136 ) (thanks @doguabaris)
2026-04-01 19:46:22 +02:00
Peter Steinberger
da64a978e5
chore: prepare 2026.4.1 release
2026-04-01 17:57:10 +01:00
Vincent Koc
ec426ac356
perf(test): narrow slack string normalization imports
2026-04-02 00:29:50 +09:00
Vincent Koc
0453d355fd
perf(test): narrow discord monitor runtime seams
2026-04-01 23:47:22 +09:00
Vincent Koc
76c4ecd651
perf(test): narrow sdk seams for channel hotspots
2026-04-01 23:14:48 +09:00
Peter Steinberger
8988894ff7
build: prepare 2026.4.1-beta.1 release
2026-04-01 15:09:19 +01:00
Vincent Koc
da9ffad368
fix(channels): restore target parsing barrel seam
2026-04-01 22:46:10 +09:00
Peter Steinberger
00218ac8a4
fix(auth): persist codex oauth refresh tokens
2026-04-01 14:25:33 +01:00
Jacob Tomlinson
14a779ee8d
revert: sandbox: block sensitive external bind sources ( #59016 )
...
This reverts commit 8db20c1965 .
2026-04-01 14:01:05 +01:00
Peter Steinberger
131f6dac37
refactor: unify failover signal classification
2026-04-01 21:50:58 +09:00
Peter Steinberger
25e2934809
refactor: route session target matching through plugin parsers
2026-04-01 13:42:57 +01:00
Peter Steinberger
33fbd9b770
refactor: dedupe auth profile store normalization
2026-04-01 13:37:37 +01:00
Peter Steinberger
ab3c646bb1
fix: preserve telegram exec approval topic routing
2026-04-01 13:34:50 +01:00
openperf
ac68321d4d
fix(auth-profiles ): ensure credential key and token are strings to prevent crash
...
Fixes #58861
2026-04-01 21:33:10 +09:00
Peter Steinberger
cd4b03c568
fix: unify structured provider failover classification ( #58856 ) (thanks @aaron-he-zhu)
2026-04-01 21:31:18 +09:00
Aaron Zhu
c96ee42300
fix(agents): normalize provider errors for better failover
...
Add provider-specific error patterns for AWS Bedrock, Ollama, Mistral,
Cohere, DeepSeek, Together AI, and Cloudflare Workers AI. These providers
return errors in non-standard formats that the generic classifiers miss,
causing incorrect failover behavior (e.g., context overflow misclassified
as format error, ThrottlingException not recognized as rate limit).
Wire provider patterns into isContextOverflowError() and
classifyFailoverReason() as catch-all layers after generic classifiers.
2026-04-01 21:31:18 +09:00
Chinar Amrutkar
74b9f22a42
fix: add Telegram error suppression controls ( #51914 ) (thanks @chinar-amrutkar)
...
* feat(telegram): add error policy for suppressing repetitive error messages
Introduces per-account error policy configuration that can suppress
repetitive error messages (e.g., 429 rate limit, ECONNRESET) to
prevent noisy error floods in Telegram channels.
Closes #34498
* fix(telegram): track error cooldown per message
* fix(telegram): prune expired error cooldowns
* fix: add Telegram error suppression controls (#51914 ) (thanks @chinar-amrutkar)
---------
Co-authored-by: chinar-amrutkar <chinar-amrutkar@users.noreply.github.com >
Co-authored-by: Ayaan Zaidi <hi@obviy.us >
2026-04-01 17:52:28 +05:30
Ayaan Zaidi
ef286987e7
test: fix context pruning runtime fixtures
2026-04-01 16:48:00 +05:30
Ayaan Zaidi
f70ad924a6
fix: align cache-ttl pruning with thinking replay sanitization
2026-04-01 16:33:57 +05:30
Ayaan Zaidi
c65e152b39
fix: preserve anthropic thinking replay ( #58916 )
...
* test: add anthropic thinking replay regressions
* fix: preserve anthropic thinking blocks on replay
* fix: preserve anthropic thinking replay (#58916 )
* fix: move anthropic replay changelog entry (#58916 )
2026-04-01 16:23:47 +05:30
Charles Dusek
32ae841098
feat(web-search): add SearXNG as bundled web search provider plugin ( #57317 )
...
* feat(web-search): add bundled searxng plugin
* test(web-search): cover searxng config wiring
* test(web-search): include searxng in bundled provider inventory
* test(web-search): keep searxng ordering aligned
* fix(web-search): sanitize searxng result rows
---------
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
2026-04-01 19:24:33 +09:00
Chinar Amrutkar
3f67581e50
fix: retry safe wrapped Telegram send failures ( #51895 ) (thanks @chinar-amrutkar)
...
* fix(telegram): traverse error .cause chain in formatErrorMessage and match grammY HttpError
grammY wraps network failures in HttpError with message
'Network request for ... failed!' and the original error in .cause.
formatErrorMessage only checked err.message, so shouldRetry never
fired for the most common transient failure class.
Changes:
- formatErrorMessage now traverses .cause chain, appending nested
error messages (with cycle protection)
- Added 'Network request' to TELEGRAM_RETRY_RE as belt-and-suspenders
- Added tests for .cause traversal, circular references, and grammY
HttpError retry behavior
Fixes #51525
* style: fix oxfmt formatting in retry-policy.ts
* fix: add braces to satisfy oxlint requirement
* fix(telegram): keep send retries strict
* test(telegram): cover wrapped retry paths
* fix(telegram): retry rate-limited sends safely
* fix: retry safe wrapped Telegram send failures (#51895 ) (thanks @chinar-amrutkar)
* fix: preserve wrapped Telegram rate-limit retries (#51895 ) (thanks @chinar-amrutkar)
---------
Co-authored-by: chinar-amrutkar <chinar-amrutkar@users.noreply.github.com >
Co-authored-by: Ayaan Zaidi <hi@obviy.us >
2026-04-01 15:54:29 +05:30
Luke
1654c3a851
feat(gateway): make chat history max chars configurable ( #58900 )
...
* feat(gateway): make chat history max chars configurable
* fix(gateway): address review feedback
* docs(changelog): note configurable chat history limits
2026-04-01 21:08:37 +11:00
ImLukeF
101c31f5e1
test: harden ci-sensitive unit suites
2026-04-01 20:53:16 +11:00
ImLukeF
4e63dc0b1c
fix: hide raw provider errors from chat replies
2026-04-01 20:53:16 +11:00
ryanlee-gemini
fbe3ca4d7d
fix(plugins): pass dangerouslyForceUnsafeInstall through archive and … ( #58879 )
...
Merged via squash.
Prepared head SHA: 87eb27d902
Co-authored-by: ryanlee-gemini <181323138+ryanlee-gemini@users.noreply.github.com >
Co-authored-by: odysseus0 <8635094+odysseus0@users.noreply.github.com >
Reviewed-by: @odysseus0
2026-04-01 02:52:01 -07:00
Vincent Koc
07c60ae461
fix(agent): treat webchat exec approvals as native UI ( #58904 )
...
* fix(agent): treat webchat exec approvals as native UI
* docs(changelog): note webchat exec approval UI fix
* test(agent): cover webchat native approval guidance
2026-04-01 18:36:21 +09:00
Peter Steinberger
f6317fb747
fix(gateway): stop pinning node commands to pairing state
2026-04-01 18:27:06 +09:00
Peter Steinberger
fe57ee513f
test: drop stale task boundary allowlist entries
2026-04-01 10:17:47 +01:00
Peter Steinberger
d005cc8b42
test: align cron abort regression with #58833
2026-04-01 10:17:47 +01:00
Peter Steinberger
f559ea126d
fix: land slash command metadata parsing ( #58725 ) (thanks @Mlightsnow)
2026-04-01 10:17:47 +01: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
Ayaan Zaidi
fb28b02540
fix: preserve bundled channel plugin compat ( #58873 )
...
* fix: preserve bundled channel plugin compat
* fix: preserve bundled channel plugin compat (#58873 )
* fix: scope channel plugin compat to bundled plugins (#58873 )
2026-04-01 14:42:36 +05:30
Vincent Koc
2d53ffdec1
fix(exec): resolve remote approval regressions ( #58792 )
...
* fix(exec): restore remote approval policy defaults
* fix(exec): handle headless cron approval conflicts
* fix(exec): make allow-always durable
* fix(exec): persist exact-command shell trust
* fix(doctor): match host exec fallback
* fix(exec): preserve blocked and inline approval state
* Doctor: surface allow-always ask bypass
* Doctor: match effective exec policy
* Exec: match node durable command text
* Exec: tighten durable approval security
* Exec: restore owner approver fallback
* Config: refresh Slack approval metadata
---------
Co-authored-by: scoootscooob <zhentongfan@gmail.com >
2026-04-01 02:07:20 -07:00
Peter Steinberger
db0cea5689
refactor(gateway): extract node pairing reconciliation
2026-04-01 18:02:31 +09:00