Austin Mudd
1be8d06cca
Slack: expose threadTs in agent sendMessage tool for thread replies
2026-01-09 21:59:27 +01:00
Peter Steinberger
72b0777341
fix(messages): restore explicit responsePrefix default
2026-01-09 19:18:34 +00:00
Jake
a05916bee8
Config: add support for per-provider blockStreaming override
2026-01-09 18:11:27 +00:00
Peter Steinberger
d099dabf37
refactor: centralize slack threading helpers
2026-01-09 16:01:53 +00:00
Peter Steinberger
36bdec0f2c
refactor(messages): centralize per-agent prefixes
2026-01-09 16:54:54 +01:00
Peter Steinberger
1eecce9a15
Merge pull request #578 from p6l-richard/feature/identity-based-message-prefix
...
fix(messages): derive messagePrefix from identity.name
2026-01-09 15:40:52 +00:00
Peter Steinberger
66bbb723c5
fix: derive prefixes from routed identity ( #578 ) (thanks @p6l-richard)
2026-01-09 16:39:32 +01:00
Peter Steinberger
facf5c09a0
fix: honor slack reply threading ( #574 , thanks @bolismauro)
2026-01-09 15:38:43 +00:00
Mauro Bolis
96149d1f71
fix: honor slack reply threading
2026-01-09 15:35:54 +00:00
Peter Steinberger
7b81d97ec2
feat: wire multi-agent config and routing
...
Co-authored-by: Mark Pors <1078320+pors@users.noreply.github.com>
2026-01-09 12:48:42 +00:00
Peter Steinberger
721183e259
feat: unify message cli and tools
2026-01-09 08:30:24 +01:00
Peter Steinberger
3a99ac7e9a
fix: honor mention-bypass for group commands
2026-01-09 02:52:44 +01:00
Peter Steinberger
e5dbba7b67
fix: sort imports for lint
2026-01-09 00:57:17 +01:00
Peter Steinberger
7ece3717e6
refactor(pairing): centralize reply formatting
2026-01-08 23:29:23 +00:00
Peter Steinberger
e0439df4ce
feat(pairing): show sender ids across providers
2026-01-08 23:19:13 +00:00
Peter Steinberger
014667e00b
fix: tighten group elevated targeting
2026-01-08 22:57:18 +01:00
Peter Steinberger
8930ec32cb
feat: add slack multi-account routing
2026-01-08 08:49:16 +01:00
Peter Steinberger
05b8679c8b
feat: add providers CLI and multi-account onboarding
2026-01-08 01:55:59 +01:00
Peter Steinberger
d81cb886ce
fix: polish thread session routing
2026-01-07 20:09:57 +01:00
Peter Steinberger
cb9f8146c4
refactor: centralize thread helpers
2026-01-07 20:01:19 +01:00
Peter Steinberger
42b637bbc8
test: cover thread session routing
2026-01-07 19:50:17 +01:00
Peter Steinberger
0d021391a9
fix: scope thread sessions and discord starter fetch
2026-01-07 19:42:50 +01:00
Shadow
7e5cef29a0
Threads: add Slack/Discord thread sessions
2026-01-07 19:30:30 +01:00
Peter Steinberger
1011640a13
refactor: drop autoReply, add topic requireMention
...
Co-authored-by: kitze <kristijan.mkd@gmail.com>
2026-01-07 12:07:15 +01:00
Peter Steinberger
43c6bb7595
feat: add channel/topic overrides for skills + auto-reply
2026-01-07 11:44:37 +01:00
Josh Lehman
2d67ec5bfa
fix(routing): only route to originating channel when cross-provider
...
When OriginatingChannel matches Surface (same provider), use normal
dispatcher. Only route via routeReply() when they differ, ensuring
cross-provider messages (e.g., Telegram queued while Slack active)
get routed back to their origin.
2026-01-07 04:51:33 +00:00
Josh Lehman
9d50ebad7d
feat(routing): route replies to originating channel
...
Implement reply routing based on OriginatingChannel/OriginatingTo fields.
This ensures replies go back to the provider where the message originated
instead of using the session's lastChannel.
Changes:
- Add OriginatingChannel/OriginatingTo fields to MsgContext (templating.ts)
- Add originatingChannel/originatingTo fields to FollowupRun (queue.ts)
- Create route-reply.ts with provider-agnostic router
- Update all providers (Telegram, Slack, Discord, Signal, iMessage)
to pass originating channel info
- Update reply.ts to pass originating channel to followupRun
- Update followup-runner.ts to use route-reply for originating channels
This addresses the issue where messages from one provider (e.g., Slack)
would receive replies on a different provider (e.g., Telegram) because
the queue used the last active dispatcher instead of the originating one.
2026-01-07 04:51:33 +00:00
Peter Steinberger
42ae2341aa
fix: harden pairing flow
2026-01-07 05:06:04 +01:00
Peter Steinberger
3afef2d504
feat: unify provider reaction tools
2026-01-07 04:16:39 +01:00
Peter Steinberger
e0efcda77f
fix(commands): wire /stop across chat commands
2026-01-06 23:11:57 +00:00
Peter Steinberger
84c8209158
fix(slack): clear assistant thread status after replies
2026-01-06 21:41:30 +01:00
Shadow
8ebc789d25
Slack: send assistant thread status while typing
2026-01-06 21:34:52 +01:00
Shadow
9b22e1f6e9
feat(commands): unify chat commands ( #275 )
...
* Chat commands: registry, access groups, Carbon
* Chat commands: clear native commands on disable
* fix(commands): align command surface typing
* docs(changelog): note commands registry (PR #275 )
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-01-06 20:17:56 +00:00
Peter Steinberger
67bda21811
fix: preserve markdown fences when chunking
2026-01-06 20:23:41 +01:00
Peter Steinberger
dbfa316d19
feat: multi-agent routing + multi-account providers
2026-01-06 18:33:37 +00:00
Peter Steinberger
967cef80bc
fix(security): lock down inbound DMs by default
2026-01-06 17:51:56 +01:00
Simon Kelly
5aa1ed2c96
fix(slack): use named import for @slack/bolt App class ( #299 )
...
* fix(slack): use named import for @slack/bolt App class
The default import `import bolt from '@slack/bolt'` followed by
`const { App } = bolt` doesn't work correctly in Bun due to ESM/CJS
interop issues. The default export comes through as a function rather
than the module object.
Switching to a named import `import { App } from '@slack/bolt'`
resolves the issue and allows the Slack provider to start successfully.
* fix(slack): align Bolt mock with named App export
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-01-06 14:22:14 +00:00
Peter Steinberger
dbb51006cd
feat: unify group policy allowlists
2026-01-06 06:40:42 +00:00
Peter Steinberger
53c9feb597
test: cover slack thread reply routing
2026-01-06 05:11:06 +01:00
Steve Caldwell
7034d4f807
fix(slack): preserve thread context in auto-replies
...
When replying to a message in a Slack thread, the response now stays
in the thread instead of going to the channel root.
Only threads replies when the incoming message was already in a thread
(has thread_ts). Top-level messages get top-level replies.
Fixes #250
2026-01-06 05:09:04 +01:00
Peter Steinberger
13eb9c9ee9
refactor: centralize reply dispatch
2026-01-06 04:55:00 +01:00
Peter Steinberger
1a4f7d3388
feat: add ack reaction defaults
2026-01-06 03:28:47 +00:00
Peter Steinberger
811ec8b78b
fix: unify mention gating across providers
2026-01-06 01:32:17 +01:00
Peter Steinberger
5356adba8f
fix: keep Slack thread replies in thread
2026-01-06 01:09:25 +01:00
Peter Steinberger
c75b2a7067
refactor: unify reply dispatch across providers
2026-01-05 19:43:54 +01:00
Peter Steinberger
1bad96aa2b
style: tidy auto-reply imports and formatting
2026-01-05 01:46:16 +01:00
Peter Steinberger
50d26d827e
fix: avoid duplicate senderName in slack monitor
2026-01-05 00:43:31 +00:00
Peter Steinberger
852f947b44
fix: unify control command handling
2026-01-05 01:31:36 +01:00
Peter Steinberger
1657c5e3d2
fix: route system events per session
2026-01-04 22:11:04 +01:00
Peter Steinberger
476bbd2915
fix: update lockfile and lint
2026-01-04 14:12:00 +01:00
Peter Steinberger
b234d82bf3
fix: add slack deps and send helpers
2026-01-04 11:44:41 +00:00
Shadow
8c38a7fee8
Slack: add some fixes and connect it all up
2026-01-04 01:53:26 -06:00
Shadow
0085b2e0a9
Slack: refine scopes and onboarding
2026-01-04 07:22:02 +01:00