Peter Steinberger
f51cac277c
fix(discord): make message listener non-blocking ( #39154 , thanks @yaseenkadlemakki)
...
Co-authored-by: Yaseen Kadlemakki <yaseen82@gmail.com >
2026-03-07 21:13:47 +00:00
Peter Steinberger
dfe8cd028e
refactor: share discord allowlist resolver scaffolding
2026-03-07 21:09:27 +00:00
Peter Steinberger
30d091b2fb
refactor: share thread binding id parser
2026-03-07 20:33:50 +00:00
Peter Steinberger
2ee8b807f8
refactor: dedupe discord account inspect config merge
2026-03-07 20:33:50 +00:00
Peter Steinberger
2bcd56cfac
refactor: unify DM pairing challenge flows
2026-03-07 20:33:50 +00:00
Peter Steinberger
724d2d58fa
fix(discord): avoid false model picker mismatch warning ( #39105 )
...
Land #39105 by @akropp.
Co-authored-by: Adam Kropp <adam@thekropp.com >
2026-03-07 19:32:35 +00:00
Peter Steinberger
acf3ff91e4
refactor: dedupe discord native command test scaffolding
2026-03-07 19:02:01 +00:00
jsk
262fef6ac8
fix(discord): honor commands.allowFrom in guild slash auth ( #38794 )
...
* fix(discord): honor commands.allowFrom in guild slash auth
* Update native-command.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
* Update native-command.commands-allowfrom.test.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
* fix(discord): address slash auth review feedback
* test(discord): add slash auth coverage for allowFrom variants
* fix: add changelog entry for discord slash auth fix (#38794 ) (thanks @jskoiz)
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
Co-authored-by: Shadow <hi@shadowing.dev >
2026-03-07 12:03:52 -06:00
Peter Steinberger
90a41aa1f7
refactor(discord): dedupe resolve channels fallback tests
2026-03-07 17:58:31 +00:00
Josh Avant
8e20dd22d8
Secrets: harden SecretRef-safe models.json persistence ( #38955 )
2026-03-07 11:28:39 -06:00
Peter Steinberger
bffec0f5d5
refactor(discord): dedupe message preflight test runners
2026-03-07 17:05:23 +00:00
Peter Steinberger
9849ee8390
refactor(discord): share message handler test scaffolding
2026-03-07 17:05:23 +00:00
Peter Steinberger
3381efc5c1
refactor(discord): dedupe native command ACP routing test setup
2026-03-07 17:05:23 +00:00
Peter Steinberger
e51bad0c3a
refactor(discord): dedupe preflight test builders
2026-03-07 17:05:23 +00:00
Muhammed Mukhthar CM
4f08dcccfd
Mattermost: add interactive model picker ( #38767 )
...
Merged via squash.
Prepared head SHA: 0883654e88
Co-authored-by: mukhtharcm <56378562+mukhtharcm@users.noreply.github.com >
Co-authored-by: mukhtharcm <56378562+mukhtharcm@users.noreply.github.com >
Reviewed-by: @mukhtharcm
2026-03-07 21:45:29 +05:30
Peter Steinberger
3c71e2bd48
refactor(core): extract shared dedup helpers
2026-03-07 10:41:05 +00:00
Tak Hoffman
8873e13f1e
fix(gateway): stop stale-socket restarts before first event ( #38643 )
...
* fix(gateway): guard stale-socket restarts by event liveness
* fix(gateway): centralize connect-time liveness tracking
* fix(web): apply connected status patch atomically
* fix(gateway): require active socket for stale checks
* fix(gateway): ignore inherited stale event timestamps
2026-03-07 00:58:08 -06:00
Altay
6e962d8b9e
fix(agents): handle overloaded failover separately ( #38301 )
...
* fix(agents): skip auth-profile failure on overload
* fix(agents): note overload auth-profile fallback fix
* fix(agents): classify overloaded failures separately
* fix(agents): back off before overload failover
* fix(agents): tighten overload probe and backoff state
* fix(agents): persist overloaded cooldown across runs
* fix(agents): tighten overloaded status handling
* test(agents): add overload regression coverage
* fix(agents): restore runner imports after rebase
* test(agents): add overload fallback integration coverage
* fix(agents): harden overloaded failover abort handling
* test(agents): tighten overload classifier coverage
* test(agents): cover all-overloaded fallback exhaustion
* fix(cron): retry overloaded fallback summaries
* fix(cron): treat HTTP 529 as overloaded retry
2026-03-07 01:42:11 +03:00
Vincent Koc
38f46e80b0
chore: code/dead tests cleanup ( #38286 )
...
* Discord: assert bot-self filter queue guard
* Tests: remove dead gateway SIGTERM placeholder
2026-03-06 14:27:02 -05:00
Vincent Koc
9c1786bdd6
Telegram/Discord: honor outbound mediaMaxMb uploads ( #38065 )
...
* Telegram: default media cap to 100MB
* Telegram: honor outbound mediaMaxMb
* Discord: add shared media upload cap
* Discord: pass mediaMaxMb to outbound sends
* Telegram: cover outbound media cap sends
* Discord: cover media upload cap config
* Docs: update Telegram media cap guide
* Docs: update Telegram config reference
* Changelog: note media upload cap fix
* Docs: note Discord upload cap behavior
2026-03-06 10:53:06 -05:00
Josh Avant
0e4245063f
CLI: make read-only SecretRef status flows degrade safely ( #37023 )
...
* CLI: add read-only SecretRef inspection
* CLI: fix read-only SecretRef status regressions
* CLI: preserve read-only SecretRef status fallbacks
* Docs: document read-only channel inspection hook
* CLI: preserve audit coverage for read-only SecretRefs
* CLI: fix read-only status account selection
* CLI: fix targeted gateway fallback analysis
* CLI: fix Slack HTTP read-only inspection
* CLI: align audit credential status checks
* CLI: restore Telegram read-only fallback semantics
2026-03-05 23:07:13 -06:00
Bob
063e493d3d
fix: decouple Discord inbound worker timeout from listener timeout ( #36602 ) (thanks @dutifulbob) ( #36602 )
...
Co-authored-by: Onur Solmaz <2453968+osolmaz@users.noreply.github.com >
2026-03-06 00:09:14 +01:00
Bob
6a705a37f2
ACP: add persistent Discord channel and Telegram topic bindings ( #34873 )
...
* docs: add ACP persistent binding experiment plan
* docs: align ACP persistent binding spec to channel-local config
* docs: scope Telegram ACP bindings to forum topics only
* docs: lock bound /new and /reset behavior to in-place ACP reset
* ACP: add persistent discord/telegram conversation bindings
* ACP: fix persistent binding reuse and discord thread parent context
* docs: document channel-specific persistent ACP bindings
* ACP: split persistent bindings and share conversation id helpers
* ACP: defer configured binding init until preflight passes
* ACP: fix discord thread parent fallback and explicit disable inheritance
* ACP: keep bound /new and /reset in-place
* ACP: honor configured bindings in native command flows
* ACP: avoid configured fallback after runtime bind failure
* docs: refine ACP bindings experiment config examples
* acp: cut over to typed top-level persistent bindings
* ACP bindings: harden reset recovery and native command auth
* Docs: add ACP bound command auth proposal
* Tests: normalize i18n registry zh-CN assertion encoding
* ACP bindings: address review findings for reset and fallback routing
* ACP reset: gate hooks on success and preserve /new arguments
* ACP bindings: fix auth and binding-priority review findings
* Telegram ACP: gate ensure on auth and accepted messages
* ACP bindings: fix session-key precedence and unavailable handling
* ACP reset/native commands: honor fallback targets and abort on bootstrap failure
* Config schema: validate ACP binding channel and Telegram topic IDs
* Discord ACP: apply configured DM bindings to native commands
* ACP reset tails: dispatch through ACP after command handling
* ACP tails/native reset auth: fix target dispatch and restore full auth
* ACP reset detection: fallback to active ACP keys for DM contexts
* Tests: type runTurn mock input in ACP dispatch test
* ACP: dedup binding route bootstrap and reset target resolution
* reply: align ACP reset hooks with bound session key
* docs: replace personal discord ids with placeholders
* fix: add changelog entry for ACP persistent bindings (#34873 ) (thanks @dutifulbob)
---------
Co-authored-by: Onur <2453968+osolmaz@users.noreply.github.com >
2026-03-05 09:38:12 +01:00
Kai
2c8ee593b9
TTS: add baseUrl support to OpenAI TTS config ( #34321 )
...
Merged via squash.
Prepared head SHA: e9a10cf81d
Co-authored-by: RealKai42 <44634134+RealKai42@users.noreply.github.com >
Co-authored-by: shakkernerd <165377636+shakkernerd@users.noreply.github.com >
Reviewed-by: @shakkernerd
2026-03-05 07:25:04 +00:00
Shakker
b5a94d274b
style(skills): align formatting cleanup for dedupe changes
2026-03-05 05:11:06 +00:00
Shivam
fb4f52b710
style: fix formatting in skill-commands.test.ts and provider.ts
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-05 05:11:06 +00:00
Shivam
48decefbf4
fix(skills): deduplicate slash commands by skillName across all interfaces
...
Move skill-command deduplication by skillName from the Discord-only
`dedupeSkillCommandsForDiscord` into `listSkillCommandsForAgents` so
every interface (TUI, Slack, text) consistently sees a clean command
list without platform-specific workarounds.
When multiple agents share a skill with the same name the old code
emitted `github` + `github_2` and relied on Discord to collapse them.
Now `listSkillCommandsForAgents` returns only the first registration
per skillName, and the Discord-specific wrapper is removed.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-05 05:11:06 +00:00
Bob
61f7cea48b
fix: kill stuck ACP child processes on startup and harden sessions in discord threads ( #33699 )
...
* Gateway: resolve agent.wait for chat.send runs
* Discord: harden ACP thread binding + listener timeout
* ACPX: handle already-exited child wait
* Gateway/Discord: address PR review findings
* Discord: keep ACP error-state thread bindings on startup
* gateway: make agent.wait dedupe bridge event-driven
* discord: harden ACP probe classification and cap startup fan-out
* discord: add cooperative timeout cancellation
* discord: fix startup probe concurrency helper typing
* plugin-sdk: avoid Windows root-alias shard timeout
* plugin-sdk: keep root alias reflection path non-blocking
* discord+gateway: resolve remaining PR review findings
* gateway+discord: fix codex review regressions
* Discord/Gateway: address Codex review findings
* Gateway: keep agent.wait lifecycle active with shared run IDs
* Discord: clean up status reactions on aborted runs
* fix: add changelog note for ACP/Discord startup hardening (#33699 ) (thanks @dutifulbob)
---------
Co-authored-by: Onur <2453968+osolmaz@users.noreply.github.com >
2026-03-04 10:52:28 +01:00
Josh Avant
646817dd80
fix(outbound): unify resolved cfg threading across send paths ( #33987 )
2026-03-04 00:20:44 -06:00
Tak Hoffman
9889c6da53
Runtime: stabilize tool/run state transitions under compaction and backpressure
...
Synthesize runtime state transition fixes for compaction tool-use integrity and long-running handler backpressure.
Sources: #33630 , #33583
Co-authored-by: Kevin Shenghui <shenghuikevin@gmail.com >
Co-authored-by: Theo Tarr <theodore@tarr.com >
2026-03-03 21:25:32 -06:00
Josh Avant
1c200ca7ae
follow-up: align ingress, atomic paths, and channel tests with credential semantics ( #33733 )
...
Merged via squash.
Prepared head SHA: c290c2ab6a
Co-authored-by: joshavant <830519+joshavant@users.noreply.github.com >
Co-authored-by: joshavant <830519+joshavant@users.noreply.github.com >
Reviewed-by: @joshavant
2026-03-03 20:29:46 -06:00
Shadow
65816657c2
feat(discord): add allowBots mention gating
2026-03-03 12:47:25 -06:00
Shadow
b0bcea03db
fix: drop discord opus dependency
2026-03-03 12:23:19 -06:00
Shadow
16ebbd24b5
fix(discord): reset thread sessions on archive
2026-03-03 11:32:59 -06:00
Shadow
b8b1eeb052
fix(discord): harden slash command routing
2026-03-03 11:32:05 -06:00
Shadow
0eef7a367d
fix(discord): honor agent media roots in replies
2026-03-03 11:29:58 -06:00
Shadow
548b15d8e0
fix(discord): skip bot messages before debounce
2026-03-03 11:29:58 -06:00
Shadow
e28ff1215c
fix: discord auto presence health signal ( #33277 ) (thanks @thewilloftheshadow) ( #33277 )
2026-03-03 11:20:59 -06:00
Shadow
a7a9a3d3c8
fix: allowlist Discord CDN hostnames for SSRF media ( #33275 ) (thanks @thewilloftheshadow) ( #33275 )
2026-03-03 11:17:27 -06:00
Shadow
d493861c16
fix: discord mention handling ( #33224 ) (thanks @thewilloftheshadow) ( #33224 )
2026-03-03 10:32:22 -06:00
Shadow
3ee8528b17
test(discord): align bound-thread target kind
2026-03-03 10:22:52 -06:00
Shadow
3b3738e41e
fix(discord): use fetch for voice upload slots
2026-03-03 10:22:28 -06:00
Shadow
66d06beec6
fix(discord): stop typing after silent runs
2026-03-03 10:22:27 -06:00
Shadow
5d16d45b20
fix(discord): default presence online when unconfigured
2026-03-03 10:22:27 -06:00
Shadow
6593a57607
fix: improve discord chunk delivery ( #33226 ) (thanks @thewilloftheshadow) ( #33226 )
2026-03-03 10:17:33 -06:00
Mylszd
d89e1e40f9
docs(loop-detection): fix config keys to match schema ( #33182 )
...
Merged via squash.
Prepared head SHA: 612ecc00d3
Co-authored-by: Mylszd <23611557+Mylszd@users.noreply.github.com >
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com >
Reviewed-by: @gumadeiras
2026-03-03 11:02:30 -05:00
Shadow
ca307c3fdf
fix: harden Discord channel resolution ( #33142 ) (thanks @thewilloftheshadow) ( #33142 )
2026-03-03 09:31:26 -06:00
Shadow
4abf398a17
fix: Discord acp inline actions + bound-thread filter ( #33136 ) (thanks @thewilloftheshadow) ( #33136 )
2026-03-03 09:30:21 -06:00
Shadow
8e2e4b2ed5
fix: ignore discord wildcard audit keys ( #33125 ) (thanks @thewilloftheshadow) ( #33125 )
2026-03-03 09:28:30 -06:00
Josh Avant
806803b7ef
feat(secrets): expand SecretRef coverage across user-supplied credentials ( #29580 )
...
* feat(secrets): expand secret target coverage and gateway tooling
* docs(secrets): align gateway and CLI secret docs
* chore(protocol): regenerate swift gateway models for secrets methods
* fix(config): restore talk apiKey fallback and stabilize runner test
* ci(windows): reduce test worker count for shard stability
* ci(windows): raise node heap for test shard stability
* test(feishu): make proxy env precedence assertion windows-safe
* fix(gateway): resolve auth password SecretInput refs for clients
* fix(gateway): resolve remote SecretInput credentials for clients
* fix(secrets): skip inactive refs in command snapshot assignments
* fix(secrets): scope gateway.remote refs to effective auth surfaces
* fix(secrets): ignore memory defaults when enabled agents disable search
* fix(secrets): honor Google Chat serviceAccountRef inheritance
* fix(secrets): address tsgo errors in command and gateway collectors
* fix(secrets): avoid auth-store load in providers-only configure
* fix(gateway): defer local password ref resolution by precedence
* fix(secrets): gate telegram webhook secret refs by webhook mode
* fix(secrets): gate slack signing secret refs to http mode
* fix(secrets): skip telegram botToken refs when tokenFile is set
* fix(secrets): gate discord pluralkit refs by enabled flag
* fix(secrets): gate discord voice tts refs by voice enabled
* test(secrets): make runtime fixture modes explicit
* fix(cli): resolve local qr password secret refs
* fix(cli): fail when gateway leaves command refs unresolved
* fix(gateway): fail when local password SecretRef is unresolved
* fix(gateway): fail when required remote SecretRefs are unresolved
* fix(gateway): resolve local password refs only when password can win
* fix(cli): skip local password SecretRef resolution on qr token override
* test(gateway): cast SecretRef fixtures to OpenClawConfig
* test(secrets): activate mode-gated targets in runtime coverage fixture
* fix(cron): support SecretInput webhook tokens safely
* fix(bluebubbles): support SecretInput passwords across config paths
* fix(msteams): make appPassword SecretInput-safe in onboarding/token paths
* fix(bluebubbles): align SecretInput schema helper typing
* fix(cli): clarify secrets.resolve version-skew errors
* refactor(secrets): return structured inactive paths from secrets.resolve
* refactor(gateway): type onboarding secret writes as SecretInput
* chore(protocol): regenerate swift models for secrets.resolve
* feat(secrets): expand extension credential secretref support
* fix(secrets): gate web-search refs by active provider
* fix(onboarding): detect SecretRef credentials in extension status
* fix(onboarding): allow keeping existing ref in secret prompt
* fix(onboarding): resolve gateway password SecretRefs for probe and tui
* fix(onboarding): honor secret-input-mode for local gateway auth
* fix(acp): resolve gateway SecretInput credentials
* fix(secrets): gate gateway.remote refs to remote surfaces
* test(secrets): cover pattern matching and inactive array refs
* docs(secrets): clarify secrets.resolve and remote active surfaces
* fix(bluebubbles): keep existing SecretRef during onboarding
* fix(tests): resolve CI type errors in new SecretRef coverage
* fix(extensions): replace raw fetch with SSRF-guarded fetch
* test(secrets): mark gateway remote targets active in runtime coverage
* test(infra): normalize home-prefix expectation across platforms
* fix(cli): only resolve local qr password refs in password mode
* test(cli): cover local qr token mode with unresolved password ref
* docs(cli): clarify local qr password ref resolution behavior
* refactor(extensions): reuse sdk SecretInput helpers
* fix(wizard): resolve onboarding env-template secrets before plaintext
* fix(cli): surface secrets.resolve diagnostics in memory and qr
* test(secrets): repair post-rebase runtime and fixtures
* fix(gateway): skip remote password ref resolution when token wins
* fix(secrets): treat tailscale remote gateway refs as active
* fix(gateway): allow remote password fallback when token ref is unresolved
* fix(gateway): ignore stale local password refs for none and trusted-proxy
* fix(gateway): skip remote secret ref resolution on local call paths
* test(cli): cover qr remote tailscale secret ref resolution
* fix(secrets): align gateway password active-surface with auth inference
* fix(cli): resolve inferred local gateway password refs in qr
* fix(gateway): prefer resolvable remote password over token ref pre-resolution
* test(gateway): cover none and trusted-proxy stale password refs
* docs(secrets): sync qr and gateway active-surface behavior
* fix: restore stability blockers from pre-release audit
* Secrets: fix collector/runtime precedence contradictions
* docs: align secrets and web credential docs
* fix(rebase): resolve integration regressions after main rebase
* fix(node-host): resolve gateway secret refs for auth
* fix(secrets): harden secretinput runtime readers
* gateway: skip inactive auth secretref resolution
* cli: avoid gateway preflight for inactive secret refs
* extensions: allow unresolved refs in onboarding status
* tests: fix qr-cli module mock hoist ordering
* Security: align audit checks with SecretInput resolution
* Gateway: resolve local-mode remote fallback secret refs
* Node host: avoid resolving inactive password secret refs
* Secrets runtime: mark Slack appToken inactive for HTTP mode
* secrets: keep inactive gateway remote refs non-blocking
* cli: include agent memory secret targets in runtime resolution
* docs(secrets): sync docs with active-surface and web search behavior
* fix(secrets): keep telegram top-level token refs active for blank account tokens
* fix(daemon): resolve gateway password secret refs for probe auth
* fix(secrets): skip IRC NickServ ref resolution when NickServ is disabled
* fix(secrets): align token inheritance and exec timeout defaults
* docs(secrets): clarify active-surface notes in cli docs
* cli: require secrets.resolve gateway capability
* gateway: log auth secret surface diagnostics
* secrets: remove dead provider resolver module
* fix(secrets): restore gateway auth precedence and fallback resolution
* fix(tests): align plugin runtime mock typings
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-03-03 02:58:20 +00:00