Glucksberg
a25a73e707
discord: expose EventQueue listenerTimeout as configurable option ( fixes #24458 )
2026-03-02 02:06:24 +00:00
Peter Steinberger
0c0f556927
fix(discord): unify reconnect watchdog and land #31025/#30530
...
Landed follow-up intent from contributor PR #31025 (@theotarr) and PR #30530 (@liuxiaopai-ai).
Co-authored-by: theotarr <theotarr@users.noreply.github.com >
Co-authored-by: liuxiaopai-ai <liuxiaopai-ai@users.noreply.github.com >
2026-03-02 00:24:15 +00:00
Onur Solmaz
a7929abad8
Discord: thread bindings idle + max-age lifecycle ( #27845 ) (thanks @osolmaz)
...
* refactor discord thread bindings to idle and max-age lifecycle
* fix: migrate legacy thread binding expiry and reduce hot-path disk writes
* refactor: remove remaining thread-binding ttl legacy paths
* fix: harden thread-binding lifecycle persistence
* Discord: fix thread binding types in message/reply paths
* Infra: handle win32 unknown inode in file identity checks
* Infra: relax win32 guarded-open identity checks
* Config: migrate threadBindings ttlHours to idleHours
* Revert "Infra: relax win32 guarded-open identity checks"
This reverts commit de94126771 .
* Revert "Infra: handle win32 unknown inode in file identity checks"
This reverts commit 96fc5ddfb3 .
* Discord: re-read live binding state before sweep unbind
* fix: add changelog note for thread binding lifecycle update (#27845 ) (thanks @osolmaz)
---------
Co-authored-by: Onur Solmaz <onur@textcortex.com >
2026-02-27 10:02:39 +01:00
Onur Solmaz
a7d56e3554
feat: ACP thread-bound agents ( #23580 )
...
* docs: add ACP thread-bound agents plan doc
* docs: expand ACP implementation specification
* feat(acp): route ACP sessions through core dispatch and lifecycle cleanup
* feat(acp): add /acp commands and Discord spawn gate
* ACP: add acpx runtime plugin backend
* fix(subagents): defer transient lifecycle errors before announce
* Agents: harden ACP sessions_spawn and tighten spawn guidance
* Agents: require explicit ACP target for runtime spawns
* docs: expand ACP control-plane implementation plan
* ACP: harden metadata seeding and spawn guidance
* ACP: centralize runtime control-plane manager and fail-closed dispatch
* ACP: harden runtime manager and unify spawn helpers
* Commands: route ACP sessions through ACP runtime in agent command
* ACP: require persisted metadata for runtime spawns
* Sessions: preserve ACP metadata when updating entries
* Plugins: harden ACP backend registry across loaders
* ACPX: make availability probe compatible with adapters
* E2E: add manual Discord ACP plain-language smoke script
* ACPX: preserve streamed spacing across Discord delivery
* Docs: add ACP Discord streaming strategy
* ACP: harden Discord stream buffering for thread replies
* ACP: reuse shared block reply pipeline for projector
* ACP: unify streaming config and adopt coalesceIdleMs
* Docs: add temporary ACP production hardening plan
* Docs: trim temporary ACP hardening plan goals
* Docs: gate ACP thread controls by backend capabilities
* ACP: add capability-gated runtime controls and /acp operator commands
* Docs: remove temporary ACP hardening plan
* ACP: fix spawn target validation and close cache cleanup
* ACP: harden runtime dispatch and recovery paths
* ACP: split ACP command/runtime internals and centralize policy
* ACP: harden runtime lifecycle, validation, and observability
* ACP: surface runtime and backend session IDs in thread bindings
* docs: add temp plan for binding-service migration
* ACP: migrate thread binding flows to SessionBindingService
* ACP: address review feedback and preserve prompt wording
* ACPX plugin: pin runtime dependency and prefer bundled CLI
* Discord: complete binding-service migration cleanup and restore ACP plan
* Docs: add standalone ACP agents guide
* ACP: route harness intents to thread-bound ACP sessions
* ACP: fix spawn thread routing and queue-owner stall
* ACP: harden startup reconciliation and command bypass handling
* ACP: fix dispatch bypass type narrowing
* ACP: align runtime metadata to agentSessionId
* ACP: normalize session identifier handling and labels
* ACP: mark thread banner session ids provisional until first reply
* ACP: stabilize session identity mapping and startup reconciliation
* ACP: add resolved session-id notices and cwd in thread intros
* Discord: prefix thread meta notices consistently
* Discord: unify ACP/thread meta notices with gear prefix
* Discord: split thread persona naming from meta formatting
* Extensions: bump acpx plugin dependency to 0.1.9
* Agents: gate ACP prompt guidance behind acp.enabled
* Docs: remove temp experiment plan docs
* Docs: scope streaming plan to holy grail refactor
* Docs: refactor ACP agents guide for human-first flow
* Docs/Skill: add ACP feature-flag guidance and direct acpx telephone-game flow
* Docs/Skill: add OpenCode and Pi to ACP harness lists
* Docs/Skill: align ACP harness list with current acpx registry
* Dev/Test: move ACP plain-language smoke script and mark as keep
* Docs/Skill: reorder ACP harness lists with Pi first
* ACP: split control-plane manager into core/types/utils modules
* Docs: refresh ACP thread-bound agents plan
* ACP: extract dispatch lane and split manager domains
* ACP: centralize binding context and remove reverse deps
* Infra: unify system message formatting
* ACP: centralize error boundaries and session id rendering
* ACP: enforce init concurrency cap and strict meta clear
* Tests: fix ACP dispatch binding mock typing
* Tests: fix Discord thread-binding mock drift and ACP request id
* ACP: gate slash bypass and persist cleared overrides
* ACPX: await pre-abort cancel before runTurn return
* Extension: pin acpx runtime dependency to 0.1.11
* Docs: add pinned acpx install strategy for ACP extension
* Extensions/acpx: enforce strict local pinned startup
* Extensions/acpx: tighten acp-router install guidance
* ACPX: retry runtime test temp-dir cleanup
* Extensions/acpx: require proactive ACPX repair for thread spawns
* Extensions/acpx: require restart offer after acpx reinstall
* extensions/acpx: remove workspace protocol devDependency
* extensions/acpx: bump pinned acpx to 0.1.13
* extensions/acpx: sync lockfile after dependency bump
* ACPX: make runtime spawn Windows-safe
* fix: align doctor-config-flow repair tests with default-account migration (#23580 ) (thanks @osolmaz)
2026-02-26 11:00:09 +01:00
Peter Steinberger
e915b4c64a
refactor: unify monitor abort lifecycle handling
2026-02-26 04:36:25 +01:00
Theo Tarr
7af6849c2f
Discord: handle early gateway startup errors
2026-02-26 03:22:02 +00:00
Peter Steinberger
aedf62ac7e
fix: harden discord and slack reaction ingress authorization
2026-02-26 01:26:47 +01:00
Peter Steinberger
97e56cb73c
fix(discord): land proxy/media/reaction/model-picker regressions
...
Reimplements core Discord fixes from #25277 #25523 #25575 #25588 #25731 with expanded tests.
- thread proxy-aware fetch into inbound attachment/sticker downloads
- fetch /gateway/bot via proxy dispatcher before ws connect
- wire statusReactions emojis/timing overrides into controller
- compact model-picker custom_id keys with backward-compatible parsing
Co-authored-by: openperf <openperf@users.noreply.github.com >
Co-authored-by: chilu18 <chilu18@users.noreply.github.com >
Co-authored-by: Yipsh <Yipsh@users.noreply.github.com >
Co-authored-by: lbo728 <lbo728@users.noreply.github.com >
Co-authored-by: s1korrrr <s1korrrr@users.noreply.github.com >
2026-02-25 00:03:30 +00:00
Peter Steinberger
161d9841dc
refactor(security): unify dangerous name matching handling
2026-02-24 01:33:08 +00:00
Peter Steinberger
cfa44ea6b4
fix(security): make allowFrom id-only by default with dangerous name opt-in ( #24907 )
...
* fix(channels): default allowFrom to id-only; add dangerous name opt-in
* docs(security): align channel allowFrom docs with id-only default
2026-02-24 01:01:51 +00:00
Peter Steinberger
296b19e413
test: dedupe gateway browser discord and channel coverage
2026-02-22 17:11:54 +00:00
Peter Steinberger
6dd36a6b77
refactor(channels): reuse runtime group policy helpers
2026-02-22 12:44:23 +01:00
Peter Steinberger
85e5ed3f78
refactor(channels): centralize runtime group policy handling
2026-02-22 12:35:41 +01:00
Peter Steinberger
777817392d
fix: fail closed missing provider group policy across message channels ( #23367 ) (thanks @bmendonca3)
2026-02-22 12:21:04 +01:00
Brian Mendonca
3700151ec0
Channels: fail closed when Slack/Discord config is missing
2026-02-22 12:18:43 +01: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
Wei He
122bdfa4e1
feat(discord): add configurable ephemeral option for slash commands
2026-02-20 21:19:21 -06:00
Shadow
b7644d61a2
fix: restore Discord model picker UX ( #21458 ) (thanks @pejmanjohn)
2026-02-20 21:04:04 -06:00
Shadow
f555835b09
Channels: add thread-aware model overrides
2026-02-20 19:26:25 -06:00
Shadow
ee8dd40509
Discord/Telegram: emit edit system events ( #22310 )
2026-02-20 19:20:07 -06:00
Shadow
ab27d7b05a
Discord: fix voice command typing
2026-02-20 16:31:41 -06:00
Shadow
4ab946eebf
Discord VC: voice channels, transcription, and TTS ( #18774 )
2026-02-20 16:06:07 -06:00
Shadow
f7a8c2df2c
Discord: handle gateway 4014 close
2026-02-19 13:47:28 -06:00
Peter Steinberger
797ea7ed27
perf(test): cut slow monitor/subagent test overhead
2026-02-18 03:50:30 +00:00
Peter Steinberger
b8b43175c5
style: align formatting with oxfmt 0.33
2026-02-18 01:34:35 +00:00
Peter Steinberger
31f9be126c
style: run oxfmt and fix gate failures
2026-02-18 01:29:02 +00:00
cpojer
d0cb8c19b2
chore: wtf.
2026-02-17 13:36:48 +09:00
Sebastian
ed11e93cf2
chore(format)
2026-02-16 23:20:16 -05:00
cpojer
90ef2d6bdf
chore: Update formatting.
2026-02-17 09:18:40 +09:00
尹凯
3f617e33b7
style(discord): format provider after proxy fetch changes
2026-02-17 00:02:09 +01:00
尹凯
e997545d4b
fix(discord): apply proxy to app-id and allowlist REST lookups
2026-02-17 00:02:09 +01:00
Shadow
1b7301051b
Config: require Discord ID strings ( #18220 )
2026-02-16 12:22:58 -06:00
Shadow
a61c2dc4bd
Discord: add component v2 UI tool support ( #17419 )
2026-02-15 21:19:25 -06:00
seewhy
ddcc7a1a5d
fix(discord): dedupe native skill commands by skillName ( #17365 )
...
* fix(discord): dedupe native skill commands by skill name
* Changelog: credit Discord skill dedupe
---------
Co-authored-by: yume <yume@yumedeMacBook-Pro.local >
Co-authored-by: Shadow <hi@shadowing.dev >
2026-02-15 20:33:51 -06:00
Peter Steinberger
1f1e97674f
refactor(allowlists): share user entry collection
2026-02-15 17:45:16 +00:00
Peter Steinberger
25be51967a
refactor(channels): share allowlist resolution summary
2026-02-15 17:26:27 +00:00
Peter Steinberger
9d7113c74c
refactor(channels): share allowlist config patch helper
2026-02-15 13:44:00 +00:00
Peter Steinberger
f41f6d3243
refactor(channels): share allowlist user resolve helpers
2026-02-15 05:28:46 +00:00
Peter Steinberger
47b6cde8ca
refactor(config): add dmPolicy aliases for Slack/Discord
2026-02-14 21:04:27 +01:00
Peter Steinberger
54a242eaad
perf(test): gate monitor runtime logs during vitest
2026-02-14 01:14:56 +00:00
Peter Steinberger
6442512954
perf: reduce hotspot test startup and timeout costs
2026-02-13 20:03:01 +00:00
Peter Steinberger
f02247b6c5
fix(ci): fix discord proxy websocket binding and bluebubbles timeout status
2026-02-13 19:35:55 +00:00
Shadow
4b3c87b82d
fix: finalize discord presence config ( #10855 ) (thanks @h0tp-ftw)
2026-02-13 13:34:19 -06:00
Shadow
6acea69b20
Discord: refine presence config defaults ( #10855 ) (thanks @h0tp-ftw)
2026-02-13 13:34:19 -06:00
h0tp
5d8c6ef91c
feat(discord): add configurable presence (activity/status/type)
...
- Adds `activity`, `status`, `activityType`, and `activityUrl` to Discord provider config schema.
- Implements a `ReadyListener` in `DiscordProvider` to apply these settings on connection.
- Solves the issue where `@buape/carbon` ignores initial presence options in constructor.
- Validated manually and via existing test suite.
2026-02-13 13:34:19 -06:00
Shadow
5645f227f6
Discord: add gateway proxy docs and tests ( #10400 ) (thanks @winter-loo)
2026-02-13 13:26:51 -06:00
ludd50155
e55431bf84
fix(discord): restore gateway reconnect maxAttempts to 50
2026-02-13 13:26:51 -06:00
ludd50155
5f0debdfb2
Fix: check cleanups
2026-02-13 13:26:51 -06:00
ludd50155
0cb69b0f28
Discord: add gateway proxy support
...
Conflicts:
package.json
pnpm-lock.yaml
src/config/schema.ts
src/discord/monitor/provider.ts
2026-02-13 13:26:51 -06:00
Shadow
5325d2ca51
Discord: gate guild prefix to numeric keys
2026-02-13 10:57:29 -06:00