Commit Graph

65 Commits

Author SHA1 Message Date
Peter Steinberger
63f5fa47de fix: avoid invalid UTF-16 in truncation (#567) 2026-01-09 15:19:49 +01: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
Onur
d9cbecac7f feat(msteams): add MS Teams provider skeleton
- Add Microsoft 365 Agents SDK packages (@microsoft/agents-hosting,
  @microsoft/agents-hosting-express, @microsoft/agents-hosting-extensions-teams)
- Add MSTeamsConfig type and zod schema
- Create src/msteams/ provider with monitor, token, send, probe
- Wire provider into gateway (server-providers.ts, server.ts)
- Add msteams to all provider type unions (hooks, queue, cron, etc.)
- Update implementation guide with new SDK and progress
2026-01-09 11:05:34 +01:00
Peter Steinberger
9114331218 fix: serialize claude cli runs 2026-01-09 04:58:21 +00:00
Peter Steinberger
64fc5fa9fc fix: allow default model outside allowlist 2026-01-09 04:18:30 +00:00
Peter Steinberger
9a8fe4d683 feat(agent): add claude cli runner 2026-01-09 04:52:37 +01:00
Peter Steinberger
5b46214379 refactor(cron): centralize telegram targets + delivery helpers 2026-01-08 21:36:53 +00:00
Peter Steinberger
e75ca23e7d test(cron): cover telegram topic delivery (#478) (thanks @nachoiacovino) 2026-01-08 21:13:39 +00:00
Nacho Iacovino
5391f1141e fix(cron): parse :topic: suffix for Telegram topic delivery
When cron jobs specify a Telegram topic in the 'to' field like
'-1003420657307:topic:60', the delivery code now correctly parses
this into separate chatId and messageThreadId values.

Previously, the entire string was passed as chatId, causing messages
to fail delivery to forum topics.
2026-01-08 21:12:15 +00:00
Peter Steinberger
0373574f0b refactor(telegram): centralize target parsing 2026-01-08 21:38:59 +01:00
Peter Steinberger
58a9e35233 style(cron): format telegram target tests 2026-01-08 21:23:07 +01:00
Peter Steinberger
5fea53d89c fix(cron): parse telegram targets with prefixes (thanks @mitschabaude-bot) 2026-01-08 21:23:07 +01:00
Peter Steinberger
4c09acb2a9 feat: add telegram topic delivery for cron 2026-01-08 11:05:28 +00:00
Peter Steinberger
73988506fe feat: allow hook model overrides 2026-01-08 09:33:42 +00:00
Emanuel Stadler
7f4248e5e0 Cron: clamp timer to avoid TimeoutOverflowWarning 2026-01-07 19:25:18 +01:00
Peter Steinberger
67bda21811 fix: preserve markdown fences when chunking 2026-01-06 20:23:41 +01:00
Peter Steinberger
2f24ea492b fix: restore Anthropic token accounting 2026-01-06 18:52:01 +00:00
Peter Steinberger
dbfa316d19 feat: multi-agent routing + multi-account providers 2026-01-06 18:33:37 +00:00
Onur
6cf3570c5b feat(agent): add skipBootstrap config to skip bootstrap file creation (#292) 2026-01-06 11:02:51 -06:00
Peter Steinberger
20a361a3cf refactor: centralize agent timeout defaults 2026-01-06 02:48:44 +00:00
Peter Steinberger
0398f684e7 fix: add gateway stop/restart commands 2026-01-06 03:25:32 +01:00
Marcus Neves
67e1452f4a Cron: normalize cron.add inputs + align channels (#256)
* fix: harden cron add and align channels

* fix: keep cron tool id params

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-01-06 02:09:48 +00:00
Peter Steinberger
f790f3f3ba fix/heartbeat ok delivery filter (#246)
* cron: skip delivery for HEARTBEAT_OK responses

When an isolated cron job has deliver:true, skip message delivery if the
response is just HEARTBEAT_OK (or contains HEARTBEAT_OK at edges with
short remaining content <= 30 chars). This allows cron jobs to silently
ack when nothing to report but still deliver actual content when there
is something meaningful to say.

Media is still delivered even if text is HEARTBEAT_OK, since the
presence of media indicates there's something to share.

* fix(heartbeat): make ack padding configurable

* chore(deps): update to latest

---------

Co-authored-by: Josh Lehman <josh@martian.engineering>
2026-01-05 22:52:13 +00:00
Josh Lehman
dae7f560a5 cron: skip delivery for HEARTBEAT_OK responses (#238)
When an isolated cron job has deliver:true, skip message delivery if the
response is just HEARTBEAT_OK (or contains HEARTBEAT_OK at edges with
short remaining content <= 30 chars). This allows cron jobs to silently
ack when nothing to report but still deliver actual content when there
is something meaningful to say.

Media is still delivered even if text is HEARTBEAT_OK, since the
presence of media indicates there's something to share.
2026-01-05 22:16:28 +00:00
Peter Steinberger
ff46f8ce58 chore: format models CLI 2026-01-04 18:11:41 +01:00
Peter Steinberger
734bb6b4fd feat: add models scan and fallbacks 2026-01-04 17:57:52 +01:00
Peter Steinberger
246adaa119 chore: rename project to clawdbot 2026-01-04 14:38:51 +00:00
Peter Steinberger
ec6980cda0 fix: wire slack into delivery routing 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
Peter Steinberger
e7c9b9a749 feat: add sessions tools and send policy 2026-01-03 23:44:42 +01:00
Peter Steinberger
72c0aa63fb style: tidy imports and formatting 2026-01-03 12:35:23 +00:00
Peter Steinberger
933bee220f fix(cron): pass resolved channel to agent tools 2026-01-03 12:35:23 +00:00
Peter Steinberger
b6301c719b fix: default low thinking for reasoning models 2026-01-03 12:19:06 +00:00
Peter Steinberger
772ada4308 fix: refine tool summaries and scope discord tool 2026-01-03 12:33:42 +01:00
Peter Steinberger
5684e2d658 feat: configurable outbound text chunk limits 2026-01-03 01:49:27 +01:00
Peter Steinberger
0766c5e3cb refactor: move whatsapp allowFrom config 2026-01-02 13:00:29 +01:00
Peter Steinberger
eda74d3a55 test: cover every schedule anchor boundary 2026-01-02 11:33:49 +01:00
Peter Steinberger
2d1d5d603d Merge pull request #80 from jamesgroat/fix/cron-every-schedule-infinite-loop
fix(cron): prevent every schedule from firing in infinite loop
2026-01-02 11:29:08 +01:00
James Groat
7154bc6857 fix(cron): prevent every schedule from firing in infinite loop
When anchorMs is not provided (always in production), the schedule
computed nextRunAtMs as nowMs, causing jobs to fire immediately and
repeatedly instead of at the configured interval.

- Change nowMs <= anchor to nowMs < anchor to prevent early return
- Add Math.max(1, ...) to ensure steps is always at least 1
- Add test for anchorMs not provided case
2026-01-01 17:30:05 -07:00
Peter Steinberger
cbac34347b feat: add imessage rpc adapter 2026-01-02 01:19:40 +01:00
Peter Steinberger
c0976ec099 fix(gateway): stream chat events for agent runs 2026-01-02 01:04:59 +01:00
Peter Steinberger
c7364de2f0 fix: align telegram token resolution 2026-01-01 21:22:59 +01:00
Peter Steinberger
c1ccbd58f5 fix(signal): stabilize daemon + add signal delivery 2026-01-01 15:31:41 +00:00
Peter Steinberger
8dda07a1e9 feat(queue): add queue modes and discord gating 2025-12-26 13:35:44 +01:00
Shadow
ac659ff5a7 feat(discord): Discord transport 2025-12-26 13:20:30 +01:00
Peter Steinberger
0d8e0ddc4f feat: unify gateway heartbeat 2025-12-26 02:35:40 +01:00
Peter Steinberger
1ef888ca23 refactor(config): drop agent.provider 2025-12-26 01:13:42 +01:00
Peter Steinberger
8b815bce94 feat(config): allow provider/model shorthand 2025-12-26 01:13:42 +01:00
Peter Steinberger
198f8ea700 fix(agent): serialize runs per session 2025-12-25 23:50:52 +01:00
Peter Steinberger
93af424ce5 refactor: move inbound config 2025-12-24 00:22:52 +00:00