Commit Graph

255 Commits

Author SHA1 Message Date
Seb Slight
4072b8c77d TTS: gate auto audio on inbound voice notes (#1667)
Co-authored-by: Sebastian <sebslight@gmail.com>
2026-01-25 04:35:20 +00:00
Peter Steinberger
d9af274572 fix: guard discord thread channel 2026-01-25 04:11:55 +00:00
Peter Steinberger
777caa4762 fix: newline chunking across channels 2026-01-25 04:11:36 +00:00
Peter Steinberger
750c214f5c fix: guard discord forum thread access 2026-01-25 04:11:04 +00:00
Shadow
9e17ec7a57 Discord: add forum parent context 2026-01-24 21:57:48 -06:00
Lucas Czekaj
d1f6849785 feat(discord): add exec approval forwarding to DMs (#1621)
* feat(discord): add exec approval forwarding to DMs

Add support for forwarding exec approval requests to Discord DMs,
allowing users to approve/deny command execution via interactive buttons.

Features:
- New DiscordExecApprovalHandler that connects to gateway and listens
  for exec.approval.requested/resolved events
- Sends DMs with embeds showing command details and 3 buttons:
  Allow once, Always allow, Deny
- Configurable via channels.discord.execApprovals with:
  - enabled: boolean
  - approvers: Discord user IDs to notify
  - agentFilter: only forward for specific agents
  - sessionFilter: only forward for matching session patterns
- Updates message embed when approval is resolved or expires

Also fixes exec completion routing: when async exec completes after
approval, the heartbeat now uses a specialized prompt to ensure the
model relays the result to the user instead of responding HEARTBEAT_OK.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat: generic exec approvals forwarding (#1621) (thanks @czekaj)

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-01-24 20:56:40 +00:00
Peter Steinberger
53c60017f6 fix: normalize heartbeat targets 2026-01-24 13:53:00 +00:00
Peter Steinberger
92694492cb fix: sync tests with config normalization 2026-01-24 13:32:26 +00:00
Peter Steinberger
0953043c9a fix: log discord deploy error details 2026-01-24 12:10:59 +00:00
Peter Steinberger
dd5375883a fix: normalize session keys and outbound mirroring 2026-01-24 11:57:11 +00:00
Peter Steinberger
bc33f09d5f test: cover explicit mention gating across channels 2026-01-24 11:09:33 +00:00
Peter Steinberger
5fc41c5fc5 fix: enforce explicit mention gating across channels 2026-01-24 11:09:33 +00:00
Peter Steinberger
e606ca1841 fix: avoid Discord /tts conflict 2026-01-24 09:58:06 +00:00
Peter Steinberger
54f8ec168c fix: harden discord rate-limit handling 2026-01-24 08:43:28 +00:00
Peter Steinberger
f7cf4caef1 fix: stabilize typing + summary merge 2026-01-23 23:34:30 +00:00
Peter Steinberger
cf21b97e55 refactor: standardize channel logging 2026-01-23 23:34:30 +00:00
Peter Steinberger
b99be93047 refactor: share reply prefix context 2026-01-23 23:34:30 +00:00
Peter Steinberger
92901df429 refactor: unify typing callbacks 2026-01-23 23:33:32 +00:00
Peter Steinberger
4a4d5f9fcd refactor: centralize inbound session updates 2026-01-23 23:33:32 +00:00
Peter Steinberger
4f5b87a4ee refactor: unify pending history helpers 2026-01-23 23:33:32 +00:00
Peter Steinberger
60d75eabed refactor: centralize ack reaction removal 2026-01-23 23:32:14 +00:00
Peter Steinberger
3a8d7f0817 fix: unify inbound dispatch pipeline 2026-01-23 22:58:54 +00:00
Peter Steinberger
45822ef05c refactor: centralize ack reaction gating 2026-01-23 22:24:31 +00:00
Paul van Oorschot
3a4cdd3efd fix(discord): autoThread ack reactions + exec approval null handling (#1511)
* fix(discord): gate autoThread by thread owner

* fix(discord): ack bot-owned autoThreads

* fix(discord): ack mentions in open channels

- Ack reactions in bot-owned autoThreads
- Ack reactions in open channels (no mention required)
- DRY: Pass pre-computed isAutoThreadOwnedByBot to avoid redundant checks
- Consolidate ack logic with explanatory comment

* fix: allow null values in exec.approval.request schema

The ExecApprovalRequestParamsSchema was rejecting null values for optional
fields like resolvedPath, but the calling code in bash-tools.exec.ts passes
null. This caused intermittent 'invalid exec.approval.request params'
validation errors.

Fix: Accept Type.Union([Type.String(), Type.Null()]) for all optional string
fields in the schema. Update test to reflect new behavior.

* fix: align discord ack reactions with mention gating (#1511) (thanks @pvoo)

---------

Co-authored-by: Wimmie <wimmie@tameson.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-01-23 20:01:15 +00:00
Peter Steinberger
6b88bb7ac6 fix: add per-channel markdown table conversion (#1495) (thanks @odysseus0) 2026-01-23 18:39:25 +00:00
Peter Steinberger
bc34d22972 test: streamline slow suites 2026-01-23 07:26:19 +00:00
Peter Steinberger
0598561c63 test: harden onboarding/discord/telegram test setup 2026-01-23 06:38:16 +00:00
Peter Steinberger
4a219c39bc refactor(channels): centralize match metadata 2026-01-21 18:21:19 +00:00
Peter Steinberger
74d5c65d32 fix(discord): align wildcard channel matching 2026-01-21 17:56:01 +00:00
Wimmie
31c0b0ba50 feat(discord): add wildcard channel config support
Add support for '*' wildcard in Discord channel configuration,
matching the existing guild-level wildcard behavior.

This allows applying default channel settings (like autoThread)
to all channels without listing each one explicitly:

  guilds:
    '*':
      channels:
        '*': { autoThread: true }

Specific channel configs still take precedence over the wildcard.
2026-01-21 17:56:01 +00:00
Peter Steinberger
2fe0342fd3 fix: normalize abort signals for fetch 2026-01-21 17:29:46 +00:00
Peter Steinberger
3d96294560 fix: avoid discord gateway abort crash 2026-01-20 19:33:08 +00:00
Peter Steinberger
5f01cce58c fix: unblock discord listener concurrency 2026-01-20 19:30:32 +00:00
Peter Steinberger
ca697acccd refactor: centralize discord api errors 2026-01-20 17:28:19 +00:00
Peter Steinberger
fccb93c917 fix: soften discord resolve warnings 2026-01-20 17:11:52 +00:00
Peter Steinberger
d585a39645 fix: add /skill fallback for native limits
Co-authored-by: thewilloftheshadow <thewilloftheshadow@users.noreply.github.com>
2026-01-20 13:20:29 +00:00
Peter Steinberger
b049deea9c fix: gate gateway restarts and discord abort reconnects 2026-01-19 00:15:45 +00:00
Peter Steinberger
b63055d8d2 refactor(logging): split config + subsystem imports 2026-01-19 00:15:44 +00:00
Peter Steinberger
5e25bb04d9 feat: make inbound envelopes configurable
Co-authored-by: Shiva Prasad <shiv19@users.noreply.github.com>
2026-01-18 18:50:37 +00:00
Peter Steinberger
91c6acd9fa fix: stabilize tests and logging 2026-01-18 18:43:31 +00:00
Peter Steinberger
aae2700936 ci: stabilize vitest runs 2026-01-18 06:58:54 +00:00
Peter Steinberger
679838d9c2 fix: persist session origin metadata 2026-01-18 03:41:51 +00:00
Peter Steinberger
72434aeab3 feat: persist session origin metadata across connectors 2026-01-18 02:42:10 +00:00
Peter Steinberger
df9fcdd0aa style: apply oxfmt 2026-01-18 02:19:35 +00:00
Peter Steinberger
1b25107159 refactor: share allowlist match metadata
Co-authored-by: thewilloftheshadow <thewilloftheshadow@users.noreply.github.com>
2026-01-18 01:49:25 +00:00
Peter Steinberger
6df47475a0 fix: delay discord slow listener warnings 2026-01-18 01:41:10 +00:00
Peter Steinberger
bca39a6561 refactor: unify channel config matching and gating
Co-authored-by: thewilloftheshadow <thewilloftheshadow@users.noreply.github.com>
2026-01-18 01:24:00 +00:00
Peter Steinberger
2718e37986 fix: normalize gateway dev mode detection 2026-01-18 01:08:47 +00:00
Peter Steinberger
d669ecd1b6 fix(channels): clean up discord resolve typing 2026-01-18 01:00:25 +00:00
Peter Steinberger
946f959d3f refactor(channels): share allowlist + resolver helpers 2026-01-18 01:00:25 +00:00