Commit Graph

1481 Commits

Author SHA1 Message Date
Julian Engel
45dc4ef3cf fix(telegram): make /activation command work by checking session state
The /activation command now properly controls group activation mode:
- Loads session state before filtering messages
- Checks groupActivation field (from /activation command)
- Falls back to config telegram.groups requireMention setting

Previously, the bot only checked config and ignored session state,
making the /activation command appear to work but have no effect.

Changes:
- Add resolveGroupActivation() to check session before config
- Import loadSessionStore to read session state early
- Pass messageThreadId to support forum topics correctly
2026-01-07 11:16:35 +00: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
eef90b47a3 chore: satisfy lint 2026-01-07 11:49:01 +01:00
Peter Steinberger
43c6bb7595 feat: add channel/topic overrides for skills + auto-reply 2026-01-07 11:44:37 +01:00
Peter Steinberger
61f720b945 feat: add skill filter + group system prompt plumbing 2026-01-07 11:44:37 +01:00
Peter Steinberger
9bf6684366 feat: add provider usage tracking 2026-01-07 11:42:46 +01:00
Josh Palmer
4e14123edd Merge pull request #378 from timkrase/system-prompt-weekday
Agents: add weekday to user time (codex assisted)
2026-01-07 11:27:07 +01:00
Peter Steinberger
a700f9896d feat: telegram draft streaming 2026-01-07 11:08:32 +01:00
Peter Steinberger
e8420bd047 fix: refine bootstrap injections 2026-01-07 10:04:23 +00:00
Tobias Bischoff
412990a139 Reduce prompt token overhead with leaner context injections 2026-01-07 10:04:23 +00:00
Tim Krase
e58e13708d Agents: add weekday to user time 2026-01-07 11:02:39 +01:00
Peter Steinberger
7a917602c5 feat(auth): sync OAuth from Claude/Codex CLIs
Add source profiles anthropic:claude-cli and openai-codex:codex-cli; surface them in onboarding/configure.

Co-authored-by: pepicrft <pepicrft@users.noreply.github.com>
2026-01-07 10:47:57 +01:00
Peter Steinberger
0914517ee3 feat(sandbox): add workspace access mode 2026-01-07 09:33:38 +00:00
Peter Steinberger
94d3a9742b fix: clean agents lint warnings 2026-01-07 10:13:03 +01:00
Peter Steinberger
7973fd4caf feat: add agents command 2026-01-07 10:03:53 +01:00
Peter Steinberger
a50ffa69b0 fix(discord): handle multi-attachment inbound media 2026-01-07 09:01:57 +01:00
Peter Steinberger
e5dbe1db9d fix: ensure output for non-streaming models (#369)
Co-authored-by: mneves75 <mneves75@users.noreply.github.com>
2026-01-07 07:47:18 +00:00
Peter Steinberger
34cac1beb0 fix: land PR #350 2026-01-07 07:19:48 +00:00
Peter Steinberger
1b81805d63 fix: align heartbeat session store with default agent 2026-01-07 07:14:24 +00:00
Peter Steinberger
7176b114da fix(auth): harden legacy auth.json cleanup 2026-01-07 06:51:17 +00:00
Peter Steinberger
0707b1e487 Merge PR #368: delete legacy auth.json after migration 2026-01-07 06:47:46 +00:00
Peter Steinberger
2937c4861f fix(auth): doctor-migrate anthropic oauth profiles 2026-01-07 06:31:02 +00:00
Randy Torres
ff79db0a99 fix(auth): use anthropic oauth email profile
Use Anthropic OAuth profile email as the profile identifier when available. This fixes cases where Anthropic returns an email-based profile id rather than an explicit id field.
2026-01-07 06:31:02 +00:00
Peter Steinberger
8b1263ce11 fix: split status activation line 2026-01-07 07:26:52 +01:00
Peter Steinberger
dc941b7e57 fix: refresh status output 2026-01-07 07:22:06 +01:00
Matthew Dicembrino
4f10279ac3 fix: delete legacy auth.json after migration to prevent stale token overwrites (#363) 2026-01-07 01:15:38 -05:00
Peter Steinberger
50dec39d13 fix: honor sandboxed built-in tools 2026-01-07 06:12:56 +00:00
Peter Steinberger
03928106c7 fix: order reasoning before reply text 2026-01-07 07:05:07 +01:00
Peter Steinberger
75c66acfd8 feat: update subagent announce + archive 2026-01-07 06:53:01 +01:00
Peter Steinberger
1673a221f8 feat: add /reasoning reasoning visibility 2026-01-07 06:17:31 +01:00
Peter Steinberger
cb2a72f8a9 test(routing): add route-reply coverage 2026-01-07 05:07:53 +00:00
Peter Steinberger
3668388912 fix(routing): harden originating reply routing 2026-01-07 05:02:34 +00:00
Josh Lehman
5414da9fd4 fix(routing): handle cross-provider messages in collect mode
When queued messages come from different providers (Slack + Telegram),
process them individually instead of collecting into a single prompt.
This ensures each reply routes back to its originating provider.

- Add hasCrossProviderItems() to detect multi-provider queues
- Skip collect mode when cross-provider detected
- Preserve originatingChannel/originatingTo when collecting same-provider
2026-01-07 04:51:33 +00: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
514fcfe77e fix: harden sub-agent model overrides 2026-01-07 04:48:37 +00:00
Peter Steinberger
12d57da53a fix: normalize provider aliases in auth order 2026-01-07 05:43:32 +01:00
mneves75
8187baab18 test: format models list alias coverage 2026-01-07 05:31:01 +01:00
mneves75
3550dc294d fix: normalize z.ai provider ids in auth profiles 2026-01-07 05:31:01 +01:00
mneves75
8954f7719c Test: cover z.ai normalization 2026-01-07 05:30:06 +01:00
mneves75
0ddfbf5534 Feat: normalize z.ai provider ids 2026-01-07 05:30:06 +01:00
Peter Steinberger
42ae2341aa fix: harden pairing flow 2026-01-07 05:06:04 +01:00
Peter Steinberger
6ffece68b0 fix(doctor): add headless flags + auto-migrate sessions 2026-01-07 04:43:24 +01:00
Peter Steinberger
9c9ae5aa54 fix(imessage): harden abort shutdown 2026-01-07 03:41:23 +00:00
Anton Sotkov
08fc0b3809 fix: imsg unhandled promises 2026-01-07 03:41:23 +00:00
Peter Steinberger
8ef0609f8e refactor: share reaction schemas and notes 2026-01-07 04:24:11 +01:00
Peter Steinberger
073b16a3a0 fix: clean up reaction tooling 2026-01-07 04:16:39 +01:00
Peter Steinberger
3afef2d504 feat: unify provider reaction tools 2026-01-07 04:16:39 +01:00
Sash Zats
551a8d5683 Add WhatsApp reactions support
Summary:

Test Plan:
2026-01-07 04:16:39 +01:00
Peter Steinberger
aa87d6cee8 refactor(relay): add --smoke entrypoint 2026-01-07 03:12:30 +00:00