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
22d517a520
fix: clarify WhatsApp owner number prompts
2026-01-09 13:32:52 +01:00
Peter Steinberger
60b282cf1d
fix: improve web media fetch errors
2026-01-09 07:09:15 +00:00
Peter Steinberger
97635a8966
test: assert WhatsApp queued routing context ( #534 ) thanks @mcinteerj
2026-01-09 02:04:05 +01:00
Peter Steinberger
f2246df875
fix: route WhatsApp queued replies to sender ( #534 )
2026-01-09 02:03:30 +01:00
Jake
a52e75d978
WhatsApp: fix routing for queued messages by using correct OriginatingTo
2026-01-09 02:01:33 +01:00
Peter Steinberger
e5dbba7b67
fix: sort imports for lint
2026-01-09 00:57:17 +01:00
Peter Steinberger
01b8f4582f
fix: align discord monitor + whatsapp activity
2026-01-09 00:33:09 +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
69f8af530d
feat(providers): improve doctor + status probes
2026-01-08 23:48:37 +01:00
Peter Steinberger
ed80860c34
chore(format): apply biome fixes
2026-01-08 22:22:17 +00:00
Peter Steinberger
014667e00b
fix: tighten group elevated targeting
2026-01-08 22:57:18 +01:00
Peter Steinberger
35ba99c245
fix: honor non-interactive legacy migrations
2026-01-08 22:13:57 +01:00
Peter Steinberger
699ba410fe
fix: resolve WhatsApp LID inbound mapping
2026-01-08 22:08:54 +01:00
Peter Steinberger
959a19d8ae
fix: clean lint issues
2026-01-08 11:07:11 +00:00
Peter Steinberger
e7b3cc3d3d
fix: add provider account metadata
2026-01-08 11:05:28 +00:00
Peter Steinberger
a483e58860
feat: add quickstart onboarding defaults
2026-01-08 11:54:40 +01:00
Peter Steinberger
e83c6ac088
feat(cli): move provider login/logout
2026-01-08 07:40:08 +01:00
Peter Steinberger
6a81652ebf
fix(typing): keep tool-start ttl mode-safe ( #452 , thanks @thesash)
2026-01-08 06:18:35 +00:00
Peter Steinberger
15379dedf0
fix(telegram): voice-note tag defaults ( #188 , thanks @manmal)
2026-01-08 03:15:08 +00:00
Peter Steinberger
fbeb9e6775
fix(ci): stabilize windows tests
2026-01-08 02:44:19 +00:00
Peter Steinberger
05b8679c8b
feat: add providers CLI and multi-account onboarding
2026-01-08 01:55:59 +01:00
Peter Steinberger
1bc4e1ae88
fix: satisfy lint for slow listener logs
2026-01-08 01:32:52 +01:00
Peter Steinberger
3398fc3820
fix: format slow listener logs
2026-01-08 01:28:21 +01:00
Peter Steinberger
11006d1245
refactor: share backoff helpers
2026-01-07 23:22:12 +00:00
Peter Steinberger
ef644b8369
fix: suppress whatsapp pairing in self-phone mode
2026-01-07 20:49:58 +01:00
Peter Steinberger
3668388912
fix(routing): harden originating reply routing
2026-01-07 05:02:34 +00:00
Peter Steinberger
42ae2341aa
fix: harden pairing flow
2026-01-07 05:06:04 +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
7aa7fa79d0
feat: update heartbeat defaults
2026-01-06 21:54:42 +00:00
Peter Steinberger
84c8209158
fix(slack): clear assistant thread status after replies
2026-01-06 21:41:30 +01:00
Peter Steinberger
67bda21811
fix: preserve markdown fences when chunking
2026-01-06 20:23:41 +01:00
Peter Steinberger
9fb37cbf93
style: format whatsapp inbound allowlist
2026-01-06 18:33:37 +00: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
Peter Steinberger
dbb51006cd
feat: unify group policy allowlists
2026-01-06 06:40:42 +00:00
Shadow
91cb2c02a7
fix: allow optional reply body
2026-01-05 23:47:33 -06:00
Peter Steinberger
b759cb6f37
feat(providers): normalize location parsing
2026-01-06 06:31:09 +01:00
Peter Steinberger
35a2140e48
fix: clean up poll merge
2026-01-06 04:51:05 +00:00
Peter Steinberger
0b27964693
feat: unify poll support
...
Co-authored-by: DBH <5251425+dbhurley@users.noreply.github.com>
2026-01-06 04:51:05 +00:00
DBH
2737e17c67
feat: Add WhatsApp poll support ( #248 )
...
Implements issue #123 - WhatsApp Poll Support
## Gateway Protocol
- Add `poll` RPC method with params: to, question, options (2-12), selectableCount
## ActiveWebListener
- Add `sendPoll(to, poll)` method to interface
- Implementation uses Baileys poll message type
## CLI Command
- `clawdbot poll --to <jid> -q <question> -o <opt1> -o <opt2> [-s count]`
- Supports --dry-run, --json, --verbose flags
- Validates 2-12 options
## Changes
- src/gateway/protocol/schema.ts: Add PollParamsSchema
- src/gateway/protocol/index.ts: Export validator and types
- src/web/active-listener.ts: Add sendPoll to interface
- src/web/inbound.ts: Implement sendPoll using Baileys
- src/web/outbound.ts: Add sendPollWhatsApp function
- src/gateway/server-methods/send.ts: Add poll handler
- src/commands/poll.ts: New CLI command
- src/cli/program.ts: Register poll command
Closes #123
2026-01-06 04:44:15 +00:00
Marcus Neves
9ab0b88ac6
feat(whatsapp,telegram): add groupPolicy config option ( #216 )
...
Co-authored-by: Marcus Neves <conhecendo.contato@gmail.com>
Co-authored-by: Shadow <hi@shadowing.dev>
2026-01-05 22:41:19 -06:00
Peter Steinberger
13eb9c9ee9
refactor: centralize reply dispatch
2026-01-06 04:55:00 +01:00
Peter Steinberger
5946f4c341
test: extend typing idle coverage
2026-01-06 03:42:33 +00:00
Peter Steinberger
ca8f66f844
refactor: unify group allowlist policy
2026-01-06 04:27:51 +01:00
Peter Steinberger
9d656f4269
style: satisfy lint
2026-01-06 03:11:42 +00:00
Peter Steinberger
d5f088978a
fix: stop typing after dispatcher idle
2026-01-06 03:09:49 +00:00
Peter Steinberger
cc0ef4d012
fix(telegram): improve gif handling
2026-01-06 02:22:19 +00:00
Peter Steinberger
811ec8b78b
fix: unify mention gating across providers
2026-01-06 01:32:17 +01:00
Peter Steinberger
291c6f3b60
test: cover WhatsApp DM senderE164
2026-01-06 00:55:41 +01:00
Xin
a6a45f4b84
fix(whatsapp): populate senderE164 for direct chats to enable owner commands ( #247 )
2026-01-05 23:54:35 +00:00
Peter Steinberger
ac3dedaa1b
feat: standardize timestamps to UTC
2026-01-05 23:03:59 +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
Peter Steinberger
c75b2a7067
refactor: unify reply dispatch across providers
2026-01-05 19:43:54 +01:00
Peter Steinberger
f24fe4e9cd
fix(whatsapp): reconnect on crypto unhandled rejection
2026-01-05 13:55:37 +00:00
Peter Steinberger
995f5959af
fix: stage sandbox media for inbound attachments
2026-01-05 06:18:11 +01:00
Peter Steinberger
2eb78b8da7
fix: resolve qrcode ESM import for Node 25
2026-01-05 03:47:57 +01:00
Peter Steinberger
93bb0257f0
fix: include sessions in npm pack and update qrcode import
2026-01-05 03:28:25 +01:00
Peter Steinberger
d92a9e351e
style: fix linting order and formatting
2026-01-05 02:33:59 +01:00
Peter Steinberger
e4335ea094
fix: bundle qr renderer in relay
2026-01-05 02:19:49 +01:00
Peter Steinberger
1bad96aa2b
style: tidy auto-reply imports and formatting
2026-01-05 01:46:16 +01:00
Jake
65a55b97e0
WhatsApp: mark offline/history messages as read
2026-01-05 01:36:29 +01:00
Peter Steinberger
852f947b44
fix: unify control command handling
2026-01-05 01:31:36 +01:00
Peter Steinberger
c6de1b1f7d
feat: add --dev/--profile CLI profiles
2026-01-05 01:27:13 +01:00
Peter Steinberger
c6b8235862
style: format tests and helpers
2026-01-04 14:57:57 +00:00
Peter Steinberger
246adaa119
chore: rename project to clawdbot
2026-01-04 14:38:51 +00:00
Peter Steinberger
c9504a6f20
refactor: split config module
2026-01-04 07:05:17 +01:00
Shadow
3a28e3562c
Discord: tools for uploading emojis and stickers!
2026-01-03 21:20:01 -06:00
Peter Steinberger
8724c2aea8
fix: satisfy gate checks
2026-01-04 01:16:53 +01:00
Peter Steinberger
e17c038d18
fix: add gif playback for WhatsApp sends
2026-01-03 23:56:40 +00:00
Shadow
ce92fac983
chore: formatting
2026-01-03 12:35:16 -06:00
Peter Steinberger
591773715e
fix: honor whatsapp per-group mention overrides
2026-01-03 17:51:10 +01:00
Peter Steinberger
1a00175eb7
chore: fix lint formatting
2026-01-03 14:57:49 +00:00
Peter Steinberger
bb54e60179
fix(logging): decouple file logs from console verbose
2026-01-03 12:32:14 +00:00
Peter Steinberger
1ec3512925
refactor!: drop clawdis_ tool prefix
2026-01-03 12:39:52 +01:00
Peter Steinberger
772ada4308
fix: refine tool summaries and scope discord tool
2026-01-03 12:33:42 +01:00
Peter Steinberger
988b67aa30
test: refresh auto-reply expectations
2026-01-03 05:09:59 +01:00
Peter Steinberger
5684e2d658
feat: configurable outbound text chunk limits
2026-01-03 01:49:27 +01:00
Peter Steinberger
9616f4b2b1
feat: stream reply blocks immediately
2026-01-03 00:28:33 +01:00
Peter Steinberger
2c92ccd66e
feat: add reply tags and replyToMode
2026-01-02 23:18:41 +01:00
Peter Steinberger
5cf1a9535e
feat: move group mention gating to provider groups
2026-01-02 22:24:26 +01:00
Peter Steinberger
0766c5e3cb
refactor: move whatsapp allowFrom config
2026-01-02 13:00:29 +01:00
Peter Steinberger
b50df6eb1d
style: format linted files
2026-01-02 12:20:38 +01:00
Peter Steinberger
9adbf47773
refactor: normalize group session keys
2026-01-02 10:14:58 +01:00
Peter Steinberger
76e24653e9
fix(media): preserve GIF animation, skip JPEG optimization
...
- Skip JPEG optimization for image/gif content type (both local and URL)
- Preserves animation in uploaded GIFs to Discord/other providers
- Added tests for GIF preservation from local files and URLs
- Updated changelog
2026-01-02 00:56:04 +00:00
Peter Steinberger
4c2812b429
fix: refine HEARTBEAT_OK handling
2026-01-02 01:42:27 +01:00
Peter Steinberger
06e379a239
fix: suppress stray HEARTBEAT_OK replies
2026-01-01 23:53:29 +01:00
Peter Steinberger
b3f2416a09
test: reduce flaky timeouts
2025-12-30 05:27:18 +01:00
Peter Steinberger
10e1e7fd44
chore: apply biome formatting
2025-12-30 00:16:07 +00:00
Peter Steinberger
eb158545fc
fix: force web reconnect on stalled close
2025-12-28 12:04:20 +00:00
Peter Steinberger
e336b7f27e
fix: use final heartbeat payload
2025-12-26 20:39:20 +00:00
Peter Steinberger
8dda07a1e9
feat(queue): add queue modes and discord gating
2025-12-26 13:35:44 +01:00
Peter Steinberger
82ced33747
fix: align pi model discovery with auth storage
2025-12-26 11:49:13 +01:00
Peter Steinberger
d31c5d7a2c
style: format web inbound
2025-12-26 11:39:48 +01:00
Peter Steinberger
2045487d5e
fix: extract quoted WhatsApp reply text
2025-12-26 10:51:08 +01:00
Peter Steinberger
ffe9a2435b
fix: clean up web inbox listeners on close
2025-12-26 09:27:06 +00:00
Peter Steinberger
d6f07c9f91
chore: fix lint after logging tweaks
2025-12-26 09:08:37 +00:00
Peter Steinberger
461db9e469
fix: split whatsapp listen hint from subsystem log
2025-12-26 08:41:58 +00:00
Peter Steinberger
0d8e0ddc4f
feat: unify gateway heartbeat
2025-12-26 02:35:40 +01:00
Peter Steinberger
9f7b1f0942
feat: move heartbeat config to agent.heartbeat
2025-12-26 01:13:42 +01:00
Peter Steinberger
59443d7ec6
style: format reply changes
2025-12-24 23:06:20 +01:00
Peter Steinberger
cf8d1cf0e7
fix: avoid threaded replies for agent output
2025-12-24 22:36:42 +01:00
Peter Steinberger
93af424ce5
refactor: move inbound config
2025-12-24 00:22:52 +00:00
Peter Steinberger
364a6a9444
feat: add per-session model selection
2025-12-23 23:45:20 +00:00
Peter Steinberger
df5284beaf
fix: suppress thinking stream + typing
2025-12-23 14:17:18 +00:00
Peter Steinberger
96d57a18ee
chore: demote reply chunk logs
2025-12-23 13:25:56 +00:00
Peter Steinberger
cd6ed79433
fix: honor group requireMention default
2025-12-23 12:53:30 +00:00
Peter Steinberger
56245d5646
fix: strip repeated heartbeat ok tails
2025-12-23 03:12:24 +01:00
Peter Steinberger
4af08b1606
fix: preserve whatsapp group JIDs
2025-12-23 03:05:59 +01:00
Peter Steinberger
a5f4332f21
style: apply biome formatting
2025-12-23 02:49:49 +01:00
Peter Steinberger
67a3dda53a
fix: inject reply context into body
2025-12-23 02:44:38 +01:00
Peter Steinberger
950432eac0
test: update whatsapp reply quote assertions
2025-12-23 02:30:21 +01:00
Peter Steinberger
6550e7d562
fix: add whatsapp reply context
2025-12-23 02:30:21 +01:00
Peter Steinberger
918cbdcf03
refactor: lint cleanups and helpers
2025-12-23 00:28:55 +00:00
Peter Steinberger
9118884e92
fix(web): restore creds before auth check
2025-12-22 22:55:27 +00:00
Peter Steinberger
9717f2d374
fix: bump pi deps and fix lint
2025-12-22 20:45:38 +00:00
Peter Steinberger
f10c8f2b4c
feat: add group activation command
2025-12-22 20:36:29 +01:00
Peter Steinberger
15e468f5dd
feat: add group chat activation mode
2025-12-22 19:32:12 +01:00
Peter Steinberger
2d7c5f8c53
refactor: migrate embedded pi to sdk
2025-12-22 18:05:44 +01:00
Peter Steinberger
52e7a4456a
refactor(logging): streamline whatsapp console output
2025-12-21 17:36:24 +00:00
Peter Steinberger
ff63204d17
fix(web): harden WhatsApp creds persistence
2025-12-21 13:58:31 +00:00
Peter Steinberger
3b63d1cb77
fix: auto-restart WhatsApp QR login
2025-12-21 13:36:26 +01:00
Peter Steinberger
98891103d0
fix: streamline WhatsApp login flow
2025-12-21 01:07:35 +01:00
Peter Steinberger
873daf079c
feat(web): emit provider status updates
2025-12-20 23:43:27 +01:00
Peter Steinberger
50e817f193
fix: use local timestamps in agent envelope
2025-12-20 19:40:48 +01:00
Peter Steinberger
929a10e33d
fix(web): handle self-chat mode
2025-12-20 19:32:06 +01:00
Peter Steinberger
96cbab2b22
test: expand mime detection coverage
2025-12-20 19:16:53 +01:00
Peter Steinberger
36c85a617a
fix: use file-type for mime sniffing
2025-12-20 19:13:50 +01:00
Peter Steinberger
5687a03f0b
chore: biome format
2025-12-20 18:39:17 +01:00
Peter Steinberger
ea5333e5f7
fix: make web inbox non-blocking
2025-12-20 18:24:05 +01:00
Peter Steinberger
759ab8acbc
test: mock embedded queue in auto-reply tests
2025-12-20 18:01:09 +01:00
Peter Steinberger
4e491757ef
feat(web): add whatsapp QR login tool
2025-12-20 16:52:11 +00:00
Peter Steinberger
d95c09d94a
feat(gateway): enrich agent WS logs
2025-12-20 14:54:38 +00:00
Peter Steinberger
44c951e432
test(web): cover tool summary streaming
2025-12-20 13:53:56 +00:00
Peter Steinberger
70faa4ff36
feat(web): stream tool summaries
2025-12-20 13:47:07 +00:00
Peter Steinberger
0e94c6b025
fix(browser): restore tsc types
2025-12-20 01:27:51 +00:00
Peter Steinberger
afa4a234f9
fix: remove WhatsApp batching delay
2025-12-20 01:48:29 +01:00
Peter Steinberger
bb7f4abd4b
feat(gateway): support bun-compiled embedded gateway
2025-12-19 19:21:26 +01:00
Peter Steinberger
ae58838cc5
Web: fix lint/format for error formatter
2025-12-18 18:22:32 +00:00
Peter Steinberger
9a4fc3e086
Web: improve WhatsApp error formatting
2025-12-18 18:03:25 +00:00
Peter Steinberger
0241f1a29c
Web: harden WhatsApp creds handling
2025-12-18 17:19:53 +00:00
Peter Steinberger
a0c4b1e061
test(web): avoid ENOTEMPTY cleanup race
2025-12-17 19:15:19 +00:00
Peter Steinberger
fece42ce0a
feat: embed pi agent runtime
2025-12-17 11:29:04 +01:00
Peter Steinberger
c3528fb201
test(web): stabilize group heartbeat test
2025-12-14 05:36:01 +00:00
Peter Steinberger
357a1a982b
style: satisfy formatters
2025-12-14 04:03:32 +00:00
Peter Steinberger
38a773f245
test(web): make heartbeat call selection deterministic
2025-12-14 03:59:40 +00:00
Peter Steinberger
694a10f604
fix(web): use heartbeat inbound msg for delivery
2025-12-14 01:55:40 +00:00