Peter Steinberger
a76cbc43bb
fix(browser): remote profile tab ops follow-up ( #1060 ) (thanks @mukhtharcm)
...
Landed via follow-up to #1057 .
Gate: pnpm lint && pnpm build && pnpm test
2026-01-17 01:28:22 +00:00
Peter Steinberger
e16ce1a0a1
style: format health/status files
2026-01-17 01:25:10 +00:00
Peter Steinberger
c592f395df
test: update health/status and legacy migration coverage
2026-01-17 01:19:43 +00:00
Peter Steinberger
f14d622c0f
refactor: centralize account bindings + health probes
2026-01-17 01:19:43 +00:00
Peter Steinberger
fd49f39a72
Merge pull request #1057 from mukhtharcm/feat/browser-persistent-tabs-remote-profiles
...
feat(browser): use persistent Playwright connections for remote profile tab operations
2026-01-17 00:57:58 +00:00
Peter Steinberger
bbef30daa5
fix: browser remote tab ops harden ( #1057 ) (thanks @mukhtharcm)
2026-01-17 00:57:35 +00:00
Peter Steinberger
0179717d61
feat: enhance web_fetch fallbacks
2026-01-17 00:43:37 +00:00
Peter Steinberger
7ecf733342
fix: align channel config schemas and env precedence
2026-01-17 00:43:05 +00:00
Shadow
1ad26d6fea
Config: schema-driven channels and settings
2026-01-17 00:43:05 +00:00
Muhammed Mukhthar CM
02a4de0029
feat(browser): use persistent Playwright connections for remote profile tab operations
...
For remote CDP profiles (e.g., Browserless), tab operations now use Playwright's
persistent connection instead of stateless HTTP requests. This ensures tabs
persist across operations rather than being terminated after each request.
Changes:
- pw-session.ts: Add listPagesViaPlaywright, createPageViaPlaywright, and
closePageByTargetIdViaPlaywright functions using the cached Playwright connection
- pw-ai.ts: Export new functions for dynamic import
- server-context.ts: For remote profiles (!cdpIsLoopback), use Playwright-based
tab operations; local profiles continue using HTTP endpoints
- server-context.ts: Fix ensureTabAvailable to not require wsUrl for remote
profiles since Playwright accesses pages directly
This is a follow-up to #895 which added authentication support for remote CDP
profiles. The original PR description mentioned switching to persistent Playwright
connections for tab operations, but only the auth changes were merged.
2026-01-17 00:42:53 +00:00
Peter Steinberger
1be0e9b9fb
Merge pull request #1054 from tyler6204/fix/imsg-remote-attachments
...
iMessage: Add remote attachment support for VM/SSH deployments
2026-01-17 00:37:21 +00:00
Peter Steinberger
6e5eddf292
fix: avoid imessage rpc restart loop
2026-01-17 00:35:24 +00:00
Peter Steinberger
64a2ef4a18
refactor: simplify env var substitution scan
2026-01-17 00:34:00 +00:00
Peter Steinberger
25399d39cb
fix: harden env var substitution parsing ( #1044 ) (thanks @sebslight)
2026-01-17 00:29:08 +00:00
Peter Steinberger
731080375a
Merge pull request #1044 from sebslight/env-var-substitution
...
feat(config): add env var substitution in config values
2026-01-17 00:25:26 +00:00
Sash Catanzarite
89bbbe75a6
fix: honor message tool channel for tool dedupe ( #1053 )
...
- Treat message tool `channel` as provider hint for dedupe/suppression.
- Prefer NO_REPLY after message tool sends to avoid duplicate replies.
Co-authored-by: Sash Catanzarite <1166151+thesash@users.noreply.github.com>
2026-01-17 00:23:51 +00:00
Peter Steinberger
f69298d7eb
docs: clarify model key format
2026-01-17 00:15:37 +00:00
Peter Steinberger
1569db1754
style: format with oxfmt
2026-01-17 00:03:00 +00:00
Peter Steinberger
c54c665f97
feat: enhance web_fetch fallbacks
2026-01-17 00:00:49 +00:00
Peter Steinberger
13e2dd97a7
fix(session): preserve overrides on /new reset
...
Co-authored-by: Yurii Chukhlib <yuri.v.chu@gmail.com>
2026-01-16 23:59:04 +00:00
Yurii Chukhlib
6bba84b043
fix(channels): include linked field in WhatsApp describeAccount
...
Fixes #1030
The describeAccount function for WhatsApp was not returning the
linked field, causing the Channels status section to show
"Not linked" even when WhatsApp was properly linked and working.
The fix adds the linked field to describeAccount, set to the same
value as configured (Boolean(account.authDir)). This ensures that
the Channels section and Health section show consistent status.
2026-01-16 23:59:04 +00:00
Peter Steinberger
e31251293b
fix: scope history injection to pending-only
2026-01-16 23:52:42 +00:00
Tyler Yust
7a9ff18260
iMessage: Add remote attachment support for VM/SSH deployments
2026-01-16 15:51:42 -08:00
Peter Steinberger
37fa4f7eef
feat: improve web_fetch readability extraction
2026-01-16 23:18:01 +00:00
Yurii Chukhlib
171060541a
docs(web-search): document country and language parameters
...
Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-16 23:14:33 +00:00
Yurii Chukhlib
003547c818
test(web-search): add tests for country and language parameters
...
Added three new test cases to verify the new country, search_lang, and ui_lang
parameters are correctly passed to the Brave Search API.
Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-16 23:14:33 +00:00
Yurii Chukhlib
c4e1064066
feat(web-search): pass country and language params to Brave API
...
- Add country, search_lang, and ui_lang optional parameters to runWebSearch
- Pass new parameters to Brave Search API as URL query parameters
- Update cache key to include localization parameters
- Wire parameters through createWebSearchTool execute function
2026-01-16 23:14:33 +00:00
Yurii Chukhlib
d163dbcfcd
feat(web-search): add country and language optional parameters to schema
2026-01-16 23:14:33 +00:00
Yurii Chukhlib
b3b6d421cc
fix(session): reset compactionCount on /new and /reset
2026-01-16 23:14:33 +00:00
Yurii Chukhlib
cf72b9db3c
fix(sessions): preserve 0600 permissions on sessions.json writes
2026-01-16 23:14:33 +00:00
Peter Steinberger
106e308953
fix: prefer config tokens over env for discord/telegram
2026-01-16 23:13:00 +00:00
Peter Steinberger
28a5d124c3
fix: stabilize transport-ready test timing
2026-01-16 23:03:12 +00:00
Peter Steinberger
a7bec3340f
fix: drop unsigned gemini tool calls from history
2026-01-16 22:43:16 +00:00
Peter Steinberger
e44f28bd4f
feat: unify directory across channels
2026-01-16 22:40:36 +00:00
Peter Steinberger
76d3d58b5c
chore: oxfmt
2026-01-16 22:33:47 +00:00
Peter Steinberger
500c75b4f0
fix: align ZAI thinking toggles
2026-01-16 22:26:43 +00:00
Peter Steinberger
3567dc4a47
fix: hard-stop sessions.delete cleanup
2026-01-16 22:24:13 +00:00
Peter Steinberger
05d149a49b
fix: treat reply-to-bot as implicit mention across channels
2026-01-16 21:51:01 +00:00
Peter Steinberger
97a41a6509
fix: suppress zero sub-agent stop note
2026-01-16 21:41:55 +00:00
Peter Steinberger
a0be85c34c
fix: /stop aborts subagents
2026-01-16 21:37:22 +00:00
Sebastian
a36735b913
feat(config): add env var substitution in config values
...
Support ${VAR_NAME} syntax in any config string value, substituted at
config load time. Useful for referencing API keys and secrets from
environment variables without hardcoding them in the config file.
- Only uppercase env vars matched: [A-Z_][A-Z0-9_]*
- Missing/empty env vars throw MissingEnvVarError with path context
- Escape with $${VAR} to output literal ${VAR}
- Works with $include (included files also get substitution)
Closes #1009
2026-01-16 16:32:07 -05:00
tsu
390bd11f33
feat: add zalouser channel + directory CLI ( #1032 ) (thanks @suminhthanh)
...
- Unified UX: channels login + message send; no plugin-specific top-level command\n- Added generic directory CLI for channel identity/groups\n- Docs: channel + plugin pages
2026-01-16 21:28:18 +00:00
Peter Steinberger
16768a9998
fix: start fresh cron sessions each run
2026-01-16 21:27:56 +00:00
adityashaw2
e9d6869290
Telegram: Add reply-chain detection to bypass mention requirement ( #1038 )
...
* Telegram: add reply-chain detection to bypass mention requirement
* fix: allow telegram reply-chain mention bypass (#1038 ) (thanks @adityashaw2)
---------
Co-authored-by: Aditya Shaw <aditya@adityashaw.dev>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-01-16 21:24:45 +00:00
Peter Steinberger
9072e35f08
fix: hard-abort clears queues on /stop
2026-01-16 21:15:25 +00:00
Peter Steinberger
d887027e95
style: run oxfmt
2026-01-16 21:11:55 +00:00
Peter Steinberger
f3a37664d5
fix: tighten Vercel AI Gateway onboarding docs/tests ( #1016 ) (thanks @timolins)
2026-01-16 21:06:21 +00:00
Timo Lins
beb9eac5f7
Models: add Vercel AI Gateway auth
2026-01-16 21:00:15 +00:00
Peter Steinberger
0dcffcd5b0
fix: repair orphaned user turns before embedded prompts
2026-01-16 20:52:18 +00:00
Peter Steinberger
56efbce31e
feat: enable telegram reaction notifications by default
2026-01-16 20:51:42 +00:00
Peter Steinberger
e7c42884fc
test: cover transport readiness waits
2026-01-16 20:48:43 +00:00
Peter Steinberger
08c0405f0f
fix: quiet skill command normalization logs
2026-01-16 20:37:23 +00:00
Peter Steinberger
470add877c
feat: default telegram reaction level minimal
2026-01-16 20:35:47 +00:00
Peter Steinberger
aaa310c047
fix: bound signal/imessage transport readiness waits
...
Co-authored-by: Szpadel <1857251+Szpadel@users.noreply.github.com>
2026-01-16 20:33:04 +00:00
Ruby
0cd24137e8
feat: add session.identityLinks for cross-platform DM session linking ( #1033 )
...
Co-authored-by: Shadow <shadow@clawd.bot>
2026-01-16 14:23:22 -06:00
Marc
5ee4456c6e
fix: merge subagent auth profiles
2026-01-16 20:20:26 +00:00
Marc
de31583021
fix: avoid format keyword in tool schemas
...
Co-authored-by: marcmarg <marcmarg@users.noreply.github.com>
2026-01-16 20:20:26 +00:00
Peter Steinberger
38b49aa0f6
feat: expand skill command registration
2026-01-16 20:17:32 +00:00
Peter Steinberger
69761e8a51
feat: scope telegram inline buttons
2026-01-16 20:16:41 +00:00
Peter Steinberger
3431d3d115
chore: tweak tool call narration guidance ( #1008 )
...
Co-authored-by: Christoph Nakazawa <christoph.pojer@gmail.com>
2026-01-16 19:56:04 +00:00
Peter Steinberger
fe9e027d58
test: deflake background exec timeout
2026-01-16 19:48:52 +00:00
Peter Steinberger
33d17957e5
test: cover doctor launchctl env overrides ( #1037 )
...
* test: cover doctor launchctl env overrides
* style(macos): fix swiftformat lint
2026-01-16 19:40:45 +00:00
Nima Karimi
25ae5f897e
fix(macos): check config file mode for gateway token/password resolution ( #1022 )
...
* fix: honor config gateway mode for credentials
* chore: oxfmt doctor platform notes
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-01-16 19:29:48 +00:00
Peter Steinberger
624ff09314
test: expand gateway auth probe coverage
2026-01-16 19:16:03 +00:00
Peter Steinberger
6bf627bce8
Merge pull request #1011 from ivanrvpereira/fix/security-audit-gateway-auth
...
fix(security): resolve local auth for gateway probe
2026-01-16 19:05:07 +00:00
Wilkins
bb14b19922
fix: truncate skill command descriptions to 100 chars for Discord ( #1018 )
...
* fix: truncate skill command descriptions to 100 chars for Discord
Discord slash commands have a 100 character limit for descriptions.
Skill descriptions were not being truncated, causing command registration
to fail with an empty error from the Discord API.
* style: format
* style: format
2026-01-16 10:01:59 -06:00
Ivan Pereira
544ca062a3
test(security): add coverage for gateway probe auth selection
2026-01-16 13:31:01 +00:00
Ivan Pereira
be9aa5494a
fix(security): resolve local auth for gateway probe
2026-01-16 13:19:55 +00:00
Peter Steinberger
0d6af15d1c
feat: add user-invocable skill commands
2026-01-16 12:10:29 +00:00
Peter Steinberger
eda9410bce
fix: stabilize docker test suite
2026-01-16 11:47:14 +00:00
Peter Steinberger
a51ed8a5dd
fix(cli): auto-update global installs
2026-01-16 11:45:37 +00:00
Peter Steinberger
19bcbf85df
fix: scope whatsapp self-chat response prefix
2026-01-16 10:54:11 +00:00
Peter Steinberger
f49d0e5476
fix: expand exec abort/timeout coverage
2026-01-16 10:43:22 +00:00
gerardward2007
0f34255359
chore: ignore local identity files ( #1001 ) (thanks @gerardward2007)
...
* chore: ignore local identity files (IDENTITY.md, USER.md)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* chore: ignore local identity files (#1001 ) (thanks @gerardward2007)
* chore: format session status tool
* chore: format bash exec background abort test
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-01-16 10:30:04 +00:00
Roshan Singh
e773f84e39
fix: keep background exec aborts from killing sessions ( #1000 ) (thanks @roshanasingh4)
...
When exec returns early in background mode, the tool-call AbortSignal can fire and previously caused killProcessTree(SIGKILL). Ignore abort after yielding/backgrounding so background sessions keep running.
2026-01-16 10:01:39 +00:00
Peter Steinberger
30b3a9de30
fix: drop oauth status from session status
2026-01-16 09:39:12 +00:00
Peter Steinberger
0391f6553b
fix: correct minimax usage + show reset
2026-01-16 09:36:45 +00:00
Peter Steinberger
d0c986c4f0
feat: warn on weak model tiers
2026-01-16 09:34:37 +00:00
Peter Steinberger
384028e12e
refactor: unify session reset helper
2026-01-16 09:33:39 +00:00
Peter Steinberger
4c14d6c8db
chore: format web monitor inbox tests
2026-01-16 09:26:18 +00:00
Peter Steinberger
6fa437613b
fix: delete transcripts on role ordering reset
2026-01-16 09:20:16 +00:00
Peter Steinberger
4965727f39
chore: run format and fix sandbox browser timeouts
2026-01-16 09:18:58 +00:00
Peter Steinberger
072c3dc55c
fix: suppress WhatsApp pairing replies for historical DMs
2026-01-16 09:10:44 +00:00
Peter Steinberger
9838a2850f
fix: reset sessions after role ordering conflicts
2026-01-16 09:04:04 +00:00
Peter Steinberger
6e53c061ff
fix: tune remote CDP timeouts
2026-01-16 09:01:25 +00:00
Peter Steinberger
1773f8aea2
fix: upgrade ws to wss for https CDP
2026-01-16 08:44:08 +00:00
Peter Steinberger
3b1b14b0b1
Merge pull request #895 from mukhtharcm/feat/chrome-browser-improvements
...
feat(browser): add support for authenticated remote browser profiles
2026-01-16 08:32:02 +00:00
Peter Steinberger
bf15c87d2b
fix: support authenticated remote CDP URLs ( #895 ) (thanks @mukhtharcm)
2026-01-16 08:31:51 +00:00
Peter Steinberger
2dae4d382f
Merge pull request #860 from nachoiacovino/feat/telegram-custom-commands
...
feat(telegram): support custom commands in config
2026-01-16 08:26:26 +00:00
Peter Steinberger
e9a47a02d1
fix: stabilize macOS audio test and default browser detection
2026-01-16 08:25:39 +00:00
Peter Steinberger
929666a8c8
fix: add telegram custom commands ( #860 ) (thanks @nachoiacovino)
...
Co-authored-by: Nacho Iacovino <50103937+nachoiacovino@users.noreply.github.com>
2026-01-16 08:22:09 +00:00
Muhammed Mukhthar CM
cd409e5667
fix: exclude google-antigravity from history downgrade hack ( #894 )
...
* Agent: exclude google-antigravity from history downgrade hack
* Lint: fix formatting in test
* Lint: formatting and unused vars in test
* fix: preserve google-antigravity tool calls (#894 ) (thanks @mukhtharcm)
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-01-16 08:14:56 +00:00
Muhammed Mukhthar CM
8e80823b03
test(browser): fix missing getHeadersWithAuth mock in server tests
2026-01-16 08:11:00 +00:00
Muhammed Mukhthar CM
319afd192d
feat(browser): add support for remote playwright websocket auth
2026-01-16 08:11:00 +00:00
Muhammed Mukhthar CM
6e0daf0936
feat(browser): add support for authenticated remote CDP profiles
2026-01-16 08:10:32 +00:00
Peter Steinberger
d0cb4e092f
Merge pull request #845 from MatthieuBizien/fix/issue-841-openrouter-gemini
...
Agents: sanitize OpenRouter Gemini thoughtSignature
2026-01-16 08:03:40 +00:00
Peter Steinberger
f5a881c99d
fix: port OpenRouter Gemini sanitization to split files ( #845 ) (thanks @MatthieuBizien)
2026-01-16 08:02:56 +00:00
Matthieu Bizien
ef36e24522
Agents: sanitize OpenRouter Gemini thoughtSignature
2026-01-16 07:51:49 +00:00
Palash Oswal
d43d4fcced
Gateway auth: accept local Tailscale Serve hostnames and tailnet IPs ( #885 )
...
* Gateway auth: accept local Tailscale Serve hostnames and tailnet IPs
* fix: allow local Tailscale Serve hostnames (#885 ) (thanks @oswalpalash)
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-01-16 07:51:25 +00:00
Peter Steinberger
d42b69df74
Merge pull request #982 from wes-davis/fix/gateway-connection-diagnostics
...
macOS: keep gateway connected (stop port flapping)
2026-01-16 07:36:46 +00:00
Peter Steinberger
1ec1f6dcbf
fix: sync remote ssh targets
2026-01-16 07:33:15 +00:00
Peter Steinberger
e96b939732
feat: add system.which bin probe
2026-01-16 07:31:41 +00:00
Peter Steinberger
e479c870fd
fix: handle MiniMax coding plan usage payloads
2026-01-16 07:28:48 +00:00
Peter Steinberger
f2db894685
Merge pull request #992 from tyler6204/fix/tool-typing-race-condition
...
fix: send text between tool calls to channel immediately
2026-01-16 07:26:10 +00:00
Peter Steinberger
dfa6c5c2b3
fix(google): scrub tool schemas for gemini
2026-01-16 06:57:54 +00:00
Peter Steinberger
028eed5fe8
fix(browser): surface detection details and docs
2026-01-16 06:57:54 +00:00
Peter Steinberger
2b16a87f04
feat: add config get/set/unset helpers
2026-01-16 06:57:54 +00:00
Jamie Openshaw
72f28be648
fix(config): allow discord action flags in schema
...
Ensure discord action flags survive config validation.
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-16 06:48:25 +00:00
Peter Steinberger
c534390bc0
chore: update a2ui bundle
2026-01-16 06:35:05 +00:00
Peter Steinberger
0b3ebb0c63
test: stabilize slow and flaky tests
2026-01-16 06:24:58 +00:00
Peter Steinberger
f2e425dc2b
Merge pull request #995 from roshanasingh4/fix/systemd-execstart-whitespace
...
Fix systemd ExecStart whitespace parsing
2026-01-16 06:03:35 +00:00
Peter Steinberger
e48d68bbc7
Merge pull request #993 from cpojer/reminder-improvement
...
Improve reminder text generation.
2026-01-16 06:03:04 +00:00
Peter Steinberger
54ec14262b
feat: add plugin update tracking
2026-01-16 05:55:05 +00:00
Peter Steinberger
2b8ce3f06b
feat: add json output for daemon lifecycle
2026-01-16 05:40:47 +00:00
Peter Steinberger
41d44021e7
feat(browser): prefer default chromium browser
2026-01-16 05:37:53 +00:00
Peter Steinberger
1ab1e312b2
feat: add TLS for node bridge
2026-01-16 05:28:40 +00:00
Roshan Singh
fa9aafce83
Fix systemd ExecStart parsing whitespace
2026-01-16 05:25:13 +00:00
Tyler Yust
0d5dec4c66
fix: handle async tool start handler rejections
...
Add .catch() to handleToolExecutionStart call to prevent unhandled
promise rejections when onAgentEvent or typing signaling fails.
2026-01-15 21:10:52 -08:00
cpojer
b2d5889f6e
Improve reminder text generation.
2026-01-16 14:03:17 +09:00
Tyler Yust
2ee71e4154
fix: send text between tool calls to channel immediately
...
Previously, when block streaming was disabled (the default), text generated
between tool calls would only appear after all tools completed. This was
because onBlockReply wasn't passed to the subscription when block streaming
was off, so flushBlockReplyBuffer() before tool execution did nothing.
Now onBlockReply is always passed, and when block streaming is disabled,
block replies are sent directly during tool flush. Directly sent payloads
are tracked to avoid duplicates in final payloads.
Also fixes a race condition where tool summaries could be emitted before
the typing indicator started by awaiting onAgentEvent in tool handlers.
2026-01-15 20:55:52 -08:00
Peter Steinberger
1656f491fd
fix: normalize pairing aliases and webhook guard ( #991 ) (thanks @longmaba)
2026-01-16 04:55:16 +00:00
Peter Steinberger
a057b3c9e8
Merge pull request #991 from longmaba/fix/zalo-pairing-and-webhook
...
fix(zalo): fix pairing channel detection and webhook payload format
2026-01-16 04:54:08 +00:00
Ubuntu
ca9688b5cc
feat(session): add dmScope for multi-user DM isolation
...
Co-authored-by: Alphonse-arianee <Alphonse-arianee@users.noreply.github.com>
2026-01-16 04:13:10 +00:00
Peter Steinberger
e6364d031d
fix: stabilize windows queue + pairing tests
2026-01-16 04:02:43 +00:00
Peter Steinberger
01c8d099ad
fix: repair CI formatting + launchd test
2026-01-16 03:52:47 +00:00
Peter Steinberger
f6e619f078
fix: normalize daemon unit paths
2026-01-16 03:47:26 +00:00
Peter Steinberger
b2b331230b
feat: mac node exec policy + remote skills hot reload
2026-01-16 03:45:06 +00:00
Long
c0c9742e44
fix(zalo): fix pairing channel detection and webhook payload format
...
Amp-Thread-ID: https://ampcode.com/threads/T-019bc4e0-fcb1-77be-b0b5-0d498f0c7197
Co-authored-by: Amp <amp@ampcode.com>
2026-01-16 10:43:14 +07:00
Peter Steinberger
abcca86e4e
chore: format and sync protocol outputs
2026-01-16 03:30:56 +00:00
Peter Steinberger
a5d8f89b53
feat(browser): prefer Chrome default + add Brave/Edge fallbacks
...
Co-authored-by: Christoph Nakazawa <christoph.pojer@gmail.com>
2026-01-16 03:28:56 +00:00
Peter Steinberger
a0d2a7232e
fix: allow media-only sends
2026-01-16 03:15:26 +00:00
Peter Steinberger
f449115ec5
test: extend vitest timeouts
2026-01-16 03:11:16 +00:00
Peter Steinberger
16bc4cdef3
chore: drop legacy Relay signing
2026-01-16 03:11:16 +00:00
Peter Steinberger
23e4ba845c
fix: sanitize user-facing errors and strip final tags
...
Co-authored-by: Drake Thomsen <drake.thomsen@example.com>
2026-01-16 03:01:23 +00:00
Peter Steinberger
d9f9e93dee
feat!: move msteams to plugin
2026-01-16 02:59:43 +00:00
Peter Steinberger
29476b222d
fix: restore status usage summary output
2026-01-16 02:49:18 +00:00
Peter Steinberger
3dddbe1053
fix: ignore properties in google tool schema warnings
2026-01-16 02:35:55 +00:00
Peter Steinberger
3e32050601
fix: correct final tag strip typing
2026-01-16 02:16:17 +00:00
Peter Steinberger
7fb45ed9b8
fix: strip final tags from session messages
2026-01-16 02:16:17 +00:00
Peter Steinberger
b7ba94f0c1
fix: harden antigravity claude support ( #968 )
...
Co-authored-by: Max <rdev@users.noreply.github.com>
2026-01-16 02:16:17 +00:00
Peter Steinberger
5b827528f8
fix: show oauth usage in /status
2026-01-16 02:06:27 +00:00
Nima Karimi
068dca3366
Tests: apply suite timeout in node bridge test
2026-01-16 01:56:23 +00:00
Nima Karimi
336a1ad9cf
Tests: extend node bridge server timeout
2026-01-16 01:56:23 +00:00
Peter Steinberger
af370ab23e
fix: align config types after upstream changes
2026-01-16 01:49:07 +00:00
Peter Steinberger
12afec953f
test: stabilize sandbox config tests
2026-01-16 01:44:12 +00:00
Peter Steinberger
8e2707e232
fix: cleanup suspended CLI processes ( #978 ) (thanks @Nachx639)
2026-01-16 01:39:33 +00:00
Tu Nombre Real
8befe7f8a7
fix: cleanup suspended Clawdbot CLI processes
...
Add cleanupSuspendedCliProcesses() to kill accumulated suspended processes
from isolated sessions that don't share sessionIds (e.g., cron jobs).
- Only targets Clawdbot processes (--session-id pattern)
- Only kills suspended processes (state T)
- Only triggers when >10 processes accumulated
- Does not affect user's Claude Code sessions
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-16 01:38:03 +00:00
Peter Steinberger
a70fcc8ae0
chore(cli): set process title
2026-01-16 01:33:28 +00:00
Peter Steinberger
fa521154ff
fix: show disabled channels in onboarding picker
2026-01-16 01:29:25 +00:00
Peter Steinberger
dffc1a4dcd
fix: switch channel onboarding to single-select loop
2026-01-16 01:21:17 +00:00
Peter Steinberger
61e385b331
feat: add per-agent heartbeat config
2026-01-16 01:17:34 +00:00
Peter Steinberger
f8f319713f
fix: show provider/model labels in TUI
2026-01-16 01:13:14 +00:00
Wes
30d3e1da21
CLI: fix status --all gateway auth selection
2026-01-15 17:12:14 -08:00
Peter Steinberger
bb665bf22c
fix: persist local gateway mode in configure wizard
2026-01-16 01:05:55 +00:00
Peter Steinberger
f17dcb6213
fix: refine channel onboarding selection flow
2026-01-16 01:05:50 +00:00
Peter Steinberger
6084421ec6
feat: add provider auth plugins
2026-01-16 00:42:28 +00:00
Peter Steinberger
bca5c0d569
refactor: system prompt sections + docs/tests
2026-01-16 00:28:43 +00:00
Peter Steinberger
8c3cdba21c
feat: sticky auth profile rotation + usage headers
2026-01-16 00:25:49 +00:00
void
e274b5a040
fix: heartbeat prompt + dedupe ( #980 ) (thanks @voidserf)
...
- tighten default heartbeat prompt guidance
- suppress duplicate heartbeat alerts within 24h
Co-authored-by: void <voidserf@users.noreply.github.com>
2026-01-16 00:24:52 +00:00
Josh Lehman
a139d35fa2
feat(slack): add userToken for read-only access to DMs and private channels ( #981 )
...
- Add userToken and userTokenReadOnly (default: true) config fields
- Implement token routing: reads prefer user token, writes use bot token
- Add tests for token routing logic
- Update documentation with required OAuth scopes
User tokens enable reading DMs and private channels without requiring
bot membership. The userTokenReadOnly flag (true by default) ensures
the user token can only be used for reads, preventing accidental
sends as the user.
Required user token scopes:
- channels:history, channels:read
- groups:history, groups:read
- im:history, im:read
- mpim:history, mpim:read
- users:read, reactions:read, pins:read, emoji:read, search:read
2026-01-16 00:11:33 +00:00
Peter Steinberger
8312a19f02
fix: handle Telegram General topic thread params ( #848 ) (thanks @azade-c)
2026-01-16 00:08:56 +00:00
Peter Steinberger
fe8b28cdd9
Merge pull request #848 from azade-c/fix/telegram-general-topic-messages
...
fix(telegram): skip message_thread_id for General topic messages
2026-01-16 00:08:07 +00:00
Peter Steinberger
10eb1beccf
fix: tighten session entry updates
...
Co-authored-by: Tyler Yust <tyler6204@users.noreply.github.com>
2026-01-15 23:44:32 +00:00
Peter Steinberger
a4b347b454
feat: refine subagents + add chat.inject
...
Co-authored-by: Tyler Yust <tyler6204@users.noreply.github.com>
2026-01-15 23:44:31 +00:00
Peter Steinberger
688a0ce439
refactor: harden session store updates
...
Co-authored-by: Tyler Yust <tyler6204@users.noreply.github.com>
2026-01-15 23:41:34 +00:00
Azade
6146acbb69
fix(telegram): separate thread params for typing vs messages
...
Telegram General topic (id=1) has inconsistent API behavior:
- sendMessage: rejects explicit message_thread_id=1
- sendChatAction: requires message_thread_id=1 for typing to show
Split into two helper functions:
- buildTelegramThreadParams: excludes General topic for messages
- buildTypingThreadParams: includes General topic for typing
2026-01-15 23:32:30 +00:00
Peter Steinberger
db9be87d94
refactor: centralize daemon path resolution
2026-01-15 23:19:52 +00:00
juanpablodlc
4a99b9b651
feat(whatsapp): add debounceMs for batching rapid messages ( #971 )
...
* feat(whatsapp): add debounceMs for batching rapid messages
Add a `debounceMs` configuration option to WhatsApp channel settings
that batches rapid consecutive messages from the same sender into a
single response. This prevents triggering separate agent runs for
each message when a user sends multiple short messages in quick
succession (e.g., "Hey!", "how are you?", "I was wondering...").
Changes:
- Add `debounceMs` config to WhatsAppConfig and WhatsAppAccountConfig
- Implement message buffering in `monitorWebInbox` with:
- Map-based buffer keyed by sender (DM) or chat ID (groups)
- Debounce timer that resets on each new message
- Message combination with newline separator
- Single message optimization (no modification if only one message)
- Wire `debounceMs` through account resolution and monitor tuning
- Add UI hints and schema documentation
Usage example:
{
"channels": {
"whatsapp": {
"debounceMs": 5000 // 5 second window
}
}
}
Default behavior: `debounceMs: 0` (disabled by default)
Verified: All existing tests pass (3204 tests), TypeScript compilation
succeeds with no errors.
Implemented with assistance from AI coding tools.
Closes #967
* chore: wip inbound debounce
* fix: debounce inbound messages across channels (#971 ) (thanks @juanpablodlc)
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-01-15 23:07:19 +00:00
Peter Steinberger
7dea403302
chore: purge DS_Store files
2026-01-15 22:59:16 +00:00
Peter Steinberger
d00f2d9c0c
test: cover model picker ordering and openrouter index
2026-01-15 22:56:11 +00:00
Peter Steinberger
8b89980a89
feat(date-time): standardize time context and tool timestamps
2026-01-15 22:27:06 +00:00
Jake
634a429c50
fix(model-picker): list each provider/model combo separately ( #970 )
...
* fix(model-picker): list each provider/model combo separately
Previously, /model grouped models by name and showed all providers
that offer the same model (e.g. 'claude-sonnet-4-5 — anthropic, google-antigravity').
This was confusing because:
1. Users couldn't tell which provider would be used when selecting by number
2. The display implied choice between providers but selection was automatic
Now each provider/model combination is listed separately so users
can explicitly select the exact provider they want.
- Remove model grouping in buildModelPickerItems
- Display format changed from 'model — providers' to 'provider/model'
- pickProviderForModel now returns the single provider directly
- Updated tests to reflect new behavior
* fix: simplify model picker entries (#970 ) (thanks @mcinteerj)
---------
Co-authored-by: Keith the Silly Goose <keith@42bolton.macnet.nz>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-01-15 22:20:11 +00:00
Benjamin Jesuiter
7f6a288bd3
docs: clarify multi-gateway rescue bot guidance
2026-01-15 22:10:27 +00:00
Benjamin Jesuiter
daf471c450
fix: unify daemon service label resolution with env
2026-01-15 22:10:27 +00:00
Peter Steinberger
cb78fa46a1
fix: make node-llama-cpp optional
2026-01-15 18:37:02 +00:00
Shadow
316e8b2eb2
Discord: fix allowlist gating. Closes #961
2026-01-15 11:53:13 -06:00
Peter Steinberger
b6fb24f6d2
Merge pull request #964 from bohdanpodvirnyi/feat/telegram-reactions
...
feat(telegram): add bidirectional emoji reactions support
2026-01-15 17:21:51 +00:00
Peter Steinberger
2b1c26f900
fix: refine telegram reactions ( #964 ) (thanks @bohdanpodvirnyi)
2026-01-15 17:20:17 +00:00
Peter Steinberger
47ea9356d1
Merge pull request #959 from rdev/rdev/finally-fix-antigravity-claude
...
Fix antigravity claude
2026-01-15 17:10:04 +00:00
Bohdan Podvirnyi
f12c1b391f
fix: lint errors
2026-01-15 17:08:31 +00:00
Peter Steinberger
05658b6609
fix: tighten command arg value types
2026-01-15 17:08:09 +00:00
Bohdan Podvirnyi
dfb6630de1
fix: remove dup definitions + add reaction config
2026-01-15 17:07:38 +00:00
Bohdan Podvirnyi
eb7656d68c
fix: lint errors
2026-01-15 17:07:38 +00:00
Bohdan Podvirnyi
0e1dcf9cb4
feat: added capability for clawdbot to react
2026-01-15 17:07:38 +00:00
Bohdan Podvirnyi
d05c3d0659
feat: make telegram reactions visible to clawdbot
2026-01-15 17:07:38 +00:00
Peter Steinberger
36292d3fbb
fix: preserve Antigravity Claude signatures ( #959 ) (thanks @rdev)
2026-01-15 17:06:39 +00:00
Max
1ae344d8a6
Fix antigravity claude
2026-01-15 17:06:39 +00:00
Peter Steinberger
01c43b0b0c
fix: avoid base string coercion in auto-reply formatting
2026-01-15 17:03:34 +00:00
Peter Steinberger
fc4aa9a683
Merge pull request #954 from roshanasingh4/fix/946-openai-completions-trim
...
Fix model fallback crash on undefined provider/model (#946 )
2026-01-15 16:59:19 +00:00
Peter Steinberger
c043e9767f
fix: default model fallback when provider/model missing ( #954 ) (thanks @roshanasingh4)
2026-01-15 16:58:41 +00:00
Peter Steinberger
8b48299d8f
Merge pull request #953 from roshanasingh4/fix/cli-quick-reference-system-prompt
...
Fix system prompt: prevent invented CLI commands
2026-01-15 16:55:52 +00:00
Roshan Singh
0f27cff247
Fix model fallback crash on undefined provider/model ( #946 )
2026-01-15 16:50:46 +00:00
Roshan Singh
d0455f2683
fix(system-prompt): add CLI quick reference to prevent invented commands
2026-01-15 11:43:22 +00:00
Peter Steinberger
0a5b1fbcd1
fix(browser): handle extension relay page selection
2026-01-15 11:16:53 +00:00
Peter Steinberger
3a446dd400
style: oxfmt
2026-01-15 10:48:04 +00:00
Peter Steinberger
c7615aa559
fix(browser): improve chrome relay tab selection
2026-01-15 10:44:11 +00:00
Peter Steinberger
6042485367
fix(browser): default chrome profile to host
2026-01-15 10:43:39 +00:00
Peter Steinberger
9abd7ceda2
test: cover dynamic command arg menus
2026-01-15 10:25:35 +00:00
Peter Steinberger
cf81cb942b
fix: guard Slack cmdarg decode
2026-01-15 10:25:35 +00:00
Peter Steinberger
9097ef90b7
docs(browser): clarify chrome extension profile usage
2026-01-15 10:22:29 +00:00
Peter Steinberger
4f1a4ab072
feat(browser): add snapshot refs=aria mode
2026-01-15 10:22:29 +00:00
Peter Steinberger
0facc63019
fix(skills): improve summarize selection
2026-01-15 10:14:59 +00:00
Peter Steinberger
d5d33d4848
fix(browser): persist role refs per targetId
2026-01-15 09:56:24 +00:00
Peter Steinberger
84e9401d53
fix(ci): repair format + android tests
2026-01-15 09:50:18 +00:00
Peter Steinberger
84bee3d7d0
Merge pull request #936 from clawdbot/shadow/dynamic-command-args
...
Commands: add dynamic arg menus
2026-01-15 09:44:08 +00:00
Peter Steinberger
6ff3c39989
test: add command arg parsing coverage ( #936 ) (thanks @thewilloftheshadow)
2026-01-15 09:38:21 +00:00
Peter Steinberger
f9170c5d02
fix(browser): keep tab stable across snapshot and act
2026-01-15 09:36:48 +00:00
Peter Steinberger
52f876bfbc
fix: native command arg menus follow-ups ( #936 ) (thanks @thewilloftheshadow)
2026-01-15 09:33:31 +00:00
Shadow
74bc5bfd7c
Commands: add dynamic arg menus
2026-01-15 09:31:16 +00:00
Peter Steinberger
7e1e7ba2d8
fix(agents): skip thinking tags in code spans
2026-01-15 09:23:56 +00:00
Peter Steinberger
c86b257d38
docs(tools): hint chrome extension in browser tool prompt
2026-01-15 09:13:36 +00:00
Peter Steinberger
4291d56e0b
chore: format + fix telegram thread ids
2026-01-15 09:13:19 +00:00
Peter Steinberger
5599603bdb
feat: offer local plugin install in git checkouts
2026-01-15 09:07:48 +00:00
Peter Steinberger
510915a801
fix(onboarding): wait for gateway before health
2026-01-15 09:07:30 +00:00
Peter Steinberger
4275ed68a2
fix(browser): default to chrome extension takeover
2026-01-15 09:02:42 +00:00
Peter Steinberger
75d2785d20
fix(browser): make extension relay zero-config
2026-01-15 09:02:42 +00:00
Peter Steinberger
725a6b71dc
feat: add matrix channel plugin
2026-01-15 08:40:37 +00:00
Peter Steinberger
a39bb4310c
fix(onboarding): daemon progress + web search setup
2026-01-15 08:31:02 +00:00
Peter Steinberger
f1ac18933c
fix(cli): daemon output + health colors
2026-01-15 08:31:02 +00:00
Peter Steinberger
1797233989
fix(tui): surface model errors
2026-01-15 08:31:02 +00:00
Peter Steinberger
c269d5f258
fix: isolate Slack thread sessions ( #758 )
2026-01-15 08:11:03 +00:00
Peter Steinberger
53d0bf653a
fix: canonicalize main session keys
2026-01-15 08:05:41 +00:00
Peter Steinberger
a5a9788b20
fix: imessage dm replies and error details ( #935 )
2026-01-15 08:05:10 +00:00
Peter Steinberger
f3519d895c
fix: normalize slack channel types for sessions
2026-01-15 08:00:20 +00:00
Peter Steinberger
0ac5480034
fix(onboarding): move web search hint to end
2026-01-15 07:57:18 +00:00
Peter Steinberger
8dacafce7f
fix: harden whatsapp command auth
2026-01-15 07:54:39 +00:00
Peter Steinberger
79f340a410
chore: prep 2026.1.14 npm release
2026-01-15 07:47:18 +00:00
Peter Steinberger
081e5ef572
fix(tools): enable web_fetch by default
2026-01-15 07:42:07 +00:00
Peter Steinberger
0a1eeedc10
fix: unblock control commands during active runs
2026-01-15 07:08:48 +00:00
Peter Steinberger
1c96477686
fix: harden session cache + heartbeat restore
...
Co-authored-by: Ronak Guliani <ronak-guliani@users.noreply.github.com>
2026-01-15 07:07:12 +00:00
Peter Steinberger
154b8e3e0e
fix: bridge respawned child signals ( #933 ) (thanks @roshanasingh4)
...
Co-authored-by: Roshan Singh <roshanasingh4@users.noreply.github.com>
2026-01-15 06:37:27 +00:00
Roshan Singh
d9f2ee40f7
Fix entry respawn signal forwarding
...
Fixes #931
2026-01-15 06:33:28 +00:00
Peter Steinberger
728cd5e974
fix: document WhatsApp read receipts toggle ( #882 ) (thanks @chrisrodz)
2026-01-15 06:22:33 +00:00
Christian A. Rodriguez
d763926364
style: fix biome formatting
2026-01-15 06:22:09 +00:00
Christian A. Rodriguez
7a683a4b62
feat(whatsapp): add sendReadReceipts config option
...
Add option to disable automatic read receipts for WhatsApp messages.
When set to false, Clawdbot will not mark messages as read (blue ticks).
Closes #344
Changes:
- Add sendReadReceipts to WhatsAppConfig and WhatsAppAccountConfig types
- Add sendReadReceipts to zod schemas for validation
- Add sendReadReceipts to ResolvedWhatsAppAccount with fallback chain
- Pass sendReadReceipts through to monitorWebInbox
- Gate sock.readMessages() call based on config option
Default behavior (true) is preserved - only explicitly setting false
will disable read receipts.
2026-01-15 06:22:09 +00:00
Peter Steinberger
44a237b637
feat(browser): copy extension path to clipboard
2026-01-15 06:19:47 +00:00
Peter Steinberger
375304bf13
test: remove legacy config migration test
2026-01-15 06:18:44 +00:00
Peter Steinberger
d59aab7fd3
chore: drop Clawdis legacy references
2026-01-15 06:18:44 +00:00
Peter Steinberger
624cb33534
feat: expand Telegram allowFrom guidance
...
Co-authored-by: Christoph Nakazawa <cpojer@users.noreply.github.com>
2026-01-15 06:15:06 +00:00
Peter Steinberger
0cbfea79fa
docs(cli): add per-command CLI pages
2026-01-15 06:13:10 +00:00
Cash Williams
51e871f9e5
Make timezone and 24 hour clock explicit in system prompt
2026-01-15 06:08:43 +00:00
Peter Steinberger
47634c294d
style: format pi embedded utils
2026-01-15 06:08:17 +00:00
Peter Steinberger
9c1122def0
test: fix Windows security audit perms
2026-01-15 06:04:39 +00:00
Peter Steinberger
2bd9e84851
fix(agents): strip tool leak text ( #905 )
...
Thanks @erikpr1994.
Co-authored-by: Erik Pastor Rios <erikpastorrios1994@gmail.com>
2026-01-15 05:58:02 +00:00
Erik
5c2eedc340
test: add thought tag stripping test case
2026-01-15 05:58:02 +00:00
Erik
3b7d103758
fix(agent): strip thinking tags from text content
2026-01-15 05:58:02 +00:00
Erik
8146c43aa3
fix(agents): strip leaked tool call text from assistant messages
...
When replaying conversation history to Gemini, tool calls without
thought_signature are downgraded to text blocks like [Tool Call: ...].
This leaked internal technical info into user-facing chat messages.
Added stripDowngradedToolCallText filter alongside existing Minimax
filter to remove these text representations before extraction.
2026-01-15 05:58:02 +00:00
Peter Steinberger
0c18b2c442
feat(status): add security audit section
2026-01-15 05:52:01 +00:00
Peter Steinberger
54fb59b8f3
feat: extend Telegram dock commands and config hashing ( #929 )
...
Thanks @grp06.
Co-authored-by: George Pickett <gpickett00@gmail.com>
2026-01-15 05:49:28 +00:00
Peter Steinberger
2e70c3ceab
fix: return setup hint when web_search lacks key
2026-01-15 05:35:22 +00:00
Peter Steinberger
ca1902fb4e
feat(security): expand audit and safe --fix
2026-01-15 05:31:43 +00:00
Peter Steinberger
f11a89031b
chore: format reply dispatcher
2026-01-15 05:31:03 +00:00
Peter Steinberger
3c22fab679
docs(cli): add dedicated browser command page
2026-01-15 05:30:03 +00:00
Peter Steinberger
ad46e95df9
test: relax browser act contract timeout on Windows
2026-01-15 05:29:37 +00:00
Peter Steinberger
7d4f2d9aed
Merge pull request #928 from sebslight/feature/response-prefix-template-variables
...
feat: add dynamic template variables to messages.responsePrefix
2026-01-15 05:27:20 +00:00
Peter Steinberger
738b3592cd
fix: remove conflict marker in google helper ( #875 )
2026-01-15 05:25:45 +00:00
Peter Steinberger
cd2af64860
fix: cap tool call IDs for OpenAI/OpenRouter ( #875 ) (thanks @j1philli)
2026-01-15 05:25:45 +00:00
Josh Phillips
04f1e767b2
Fix OpenAI tool_call id length for OpenRouter
2026-01-15 05:25:45 +00:00
Peter Steinberger
1c7ac2a6ab
test: fix windows-only expectations
2026-01-15 05:25:08 +00:00
Peter Steinberger
77cf40da87
feat: profile-aware gateway service names ( #671 )
...
Thanks @bjesuiter.
Co-authored-by: Benjamin Jesuiter <bjesuiter@gmail.com>
2026-01-15 05:23:41 +00:00
Peter Steinberger
139f80a291
chore: format sources and update protocol outputs
2026-01-15 05:17:19 +00:00
Peter Steinberger
757243993c
fix: stabilize gateway config tests + tool schema
2026-01-15 05:16:28 +00:00
Peter Steinberger
57c66fe813
fix: clean up onboarding + channel selection types
2026-01-15 05:12:33 +00:00
Peter Steinberger
042b65dfcc
feat: add web tools config to configure
2026-01-15 05:08:56 +00:00
Peter Steinberger
f6a72ef3c2
feat: improve browser extension install output
2026-01-15 05:05:27 +00:00
Peter Steinberger
568cc368ae
feat: add onboarding plugin install flow
2026-01-15 05:04:09 +00:00
Peter Steinberger
5abe3c2145
feat: add plugin HTTP hooks + Zalo plugin
2026-01-15 05:04:09 +00:00
Peter Steinberger
ef78b198cb
feat: add Chrome extension browser relay
2026-01-15 04:52:28 +00:00
Peter Steinberger
5fdaef3646
fix: downgrade unsigned gemini thinking
2026-01-15 04:51:21 +00:00
Peter Steinberger
fa4670c5fe
feat: improve agent auth guidance
2026-01-15 04:51:21 +00:00
Peter Steinberger
edd8c613d6
feat(security): add audit --fix
2026-01-15 04:50:06 +00:00
Peter Steinberger
0a7f5bf6a5
test(gateway): fix config.patch baseHash fixtures
2026-01-15 04:50:06 +00:00
Peter Steinberger
eb3e865f15
fix(build): restore tool policy typing
2026-01-15 04:50:06 +00:00
Roshan Singh
1baa55c145
Structured subagent announce output + include run outcome ( #835 )
...
* docs: clarify subagent announce status
* Make subagent announce structured and include run outcome
* fix: stabilize sub-agent announce status (#835 ) (thanks @roshanasingh4)
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-01-15 04:48:07 +00:00
Sebastian
6ef3837e73
Remove debug logging for responsePrefix template resolution
2026-01-14 23:36:47 -05:00
Sebastian
e7167e35ed
debug: use console.log instead of logVerbose for always-visible logging
2026-01-14 23:29:17 -05:00
Peter Steinberger
2e0325e3bf
feat: add web search hint to onboarding
2026-01-15 04:25:19 +00:00
Sebastian
56b3b44342
debug: add responsePrefix template logging
2026-01-14 23:23:21 -05:00
Sebastian
113eea5047
fix: mutate prefixContext object instead of reassigning for closure correctness
2026-01-14 23:20:19 -05:00
Sebastian
7b04e6ac42
debug: add prefix template resolution logging
2026-01-14 23:15:46 -05:00
Peter Steinberger
f275cc180b
feat: add web tools
2026-01-15 04:07:40 +00:00
Peter Steinberger
31d3aef8d6
fix: prevent config clobbering
2026-01-15 04:06:11 +00:00
Sebastian
d0a4cce41e
feat: add dynamic template variables to messages.responsePrefix ( #923 )
...
Adds support for template variables in `messages.responsePrefix` that
resolve dynamically at runtime with the actual model used (including
after fallback).
Supported variables (case-insensitive):
- {model} - short model name (e.g., "claude-opus-4-5", "gpt-4o")
- {modelFull} - full model identifier (e.g., "anthropic/claude-opus-4-5")
- {provider} - provider name (e.g., "anthropic", "openai")
- {thinkingLevel} or {think} - thinking level ("high", "low", "off")
- {identity.name} or {identityName} - agent identity name
Example: "[{model} | think:{thinkingLevel}]" → "[claude-opus-4-5 | think:high]"
Variables show the actual model used after fallback, not the intended
model. Unresolved variables remain as literal text.
Implementation:
- New module: src/auto-reply/reply/response-prefix-template.ts
- Template interpolation in normalize-reply.ts via context provider
- onModelSelected callback in agent-runner-execution.ts
- Updated all 6 provider message handlers (web, signal, discord,
telegram, slack, imessage)
- 27 unit tests covering all variables and edge cases
- Documentation in docs/gateway/configuration.md and JSDoc
Fixes #923
2026-01-14 23:05:08 -05:00
Peter Steinberger
429f973280
test: cover browser snapshot labels and efficient mode
2026-01-15 04:04:30 +00:00
Peter Steinberger
6320f739d4
refactor: centralize whatsapp auth detection
2026-01-15 04:01:06 +00:00
Peter Steinberger
1732932c57
fix: unblock launchctl stub on windows
2026-01-15 03:58:32 +00:00
Peter Steinberger
1c737f88fe
test: cover provider tool policies
2026-01-15 03:55:20 +00:00
Peter Steinberger
fa8d9b9189
feat: add provider-specific tool policies
2026-01-15 03:55:20 +00:00
Peter Steinberger
1078d178d7
fix: doctor ack reaction migration ( #927 )
...
Thanks @grp06.
Co-authored-by: George Pickett <gpickett00@gmail.com>
2026-01-15 03:51:55 +00:00
Peter Steinberger
a6e780b2f6
feat: add browser snapshot modes
2026-01-15 03:50:57 +00:00
Peter Steinberger
dfea2991c9
fix(daemon): clear launchd disabled state before bootstrap ( #849 ) (thanks @ndraiman)
2026-01-15 03:35:24 +00:00
Netanel Draiman
d51a9ebb0e
fix(daemon): enable launchd service before bootstrap
...
When a launchd service is uninstalled via bootout, macOS marks it as
disabled in /var/db/com.apple.xpc.launchd/disabled.*.plist. This persists
across reboots and plist recreation. Future bootstrap calls fail with
error 5 (I/O error) because the service is still marked disabled.
Fix: Call 'launchctl enable' before 'launchctl bootstrap' to clear the
disabled state, matching the fix already applied to the macOS Swift app
in GatewayLaunchAgentManager.swift.
Related: #306
2026-01-15 03:31:52 +00:00
Peter Steinberger
5c52dbf661
style: oxfmt fixes ( #925 ) (thanks @grp06)
2026-01-15 03:22:54 +00:00
George Pickett
8f797f213e
Logging: tolerate EIO console writes
2026-01-15 03:20:48 +00:00
Peter Steinberger
aa74e28112
fix(telegram): aggregate split inbound messages
2026-01-15 03:04:59 +00:00
Peter Steinberger
e569f15631
fix: scrub tuple items schemas for Gemini tools ( #926 ) — thanks @grp06
...
Co-authored-by: George Pickett <gpickett00@gmail.com>
2026-01-15 02:59:35 +00:00
Peter Steinberger
eaace34233
fix: restore docker binds and PATH in sandbox exec ( #873 )
...
Thanks @akonyer.
Co-authored-by: Aaron Konyer <aaronk@gomodular.ca>
2026-01-15 02:58:20 +00:00
Peter Steinberger
1b24b6a02b
fix: add plugin runtime registry
2026-01-15 02:44:45 +00:00
Peter Steinberger
2b4a68e276
feat: load channel plugins
2026-01-15 02:42:44 +00:00
Peter Steinberger
2fb2035dbf
fix: normalize Claude CLI auth mode to oauth ( #855 )
...
Thanks @sebslight.
Co-authored-by: Sebastian <sebslight@gmail.com>
2026-01-15 02:29:43 +00:00
Peter Steinberger
765196d5c3
style(slack): satisfy oxfmt ( #850 )
2026-01-15 02:23:22 +00:00
Jonathan Wilkins
09ce6ff99e
fix(slack): respect top-level requireMention config
...
The `channels.slack.requireMention` setting was defined in the schema
but never passed to `resolveSlackChannelConfig()`, which always
defaulted to `true`. This meant setting `requireMention: false` at the
top level had no effect—channels still required mentions.
Pass `slackCfg.requireMention` as `defaultRequireMention` to the
resolver and use it as the fallback instead of hardcoded `true`.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-15 02:17:27 +00:00
Peter Steinberger
6ffd7111a6
fix: add TUI status spinner
2026-01-15 02:11:12 +00:00
Peter Steinberger
7904a14af1
fix: render TUI pickers as overlays
2026-01-15 01:59:05 +00:00
Peter Steinberger
1b79730db8
style: apply oxfmt fixes
2026-01-15 01:53:14 +00:00
Peter Steinberger
ad8799522c
feat(config): gate channel config writes
2026-01-15 01:41:15 +00:00
Peter Steinberger
f65668cb5f
fix: suppress raw API error payloads ( #924 ) (thanks @grp06)
...
Co-authored-by: George Pickett <gpickett00@gmail.com>
2026-01-15 01:34:19 +00:00
George Pickett
393d21d86c
Format: fix report + telegram formatting
2026-01-15 01:27:16 +00:00
George Pickett
232c512502
Format: apply oxfmt fixes
2026-01-15 01:27:16 +00:00
George Pickett
8c1e6a82b2
Tests: add Gemini thoughtSignature for tool-call ids
2026-01-15 01:27:16 +00:00
George Pickett
2d54efe851
Embedded runner: suppress raw API error payloads ( #919 )
2026-01-15 01:27:16 +00:00
Peter Steinberger
c2a4f256c8
feat: add security audit + onboarding checkpoint
2026-01-15 01:25:11 +00:00
Peter Steinberger
326d4049da
fix(telegram): migrate group config on supergroup IDs ( #906 )
...
Thanks @sleontenko.
Co-authored-by: Stan <sleontenko@users.noreply.github.com>
2026-01-15 01:10:30 +00:00
sleontenko
9b7c4b3884
feat(telegram): auto-migrate group config on supergroup migration
...
When a Telegram group is upgraded to a supergroup, the chat ID changes
(e.g., -123456 → -100123456). This causes the bot to lose its group
configuration since it's keyed by chat ID.
This change:
- Adds handler for `message:migrate_to_chat_id` event
- Logs the migration (old_id → new_id) for visibility
- If the old chat ID has config in channels.telegram.groups, automatically:
- Copies the config to the new chat ID
- Removes the old chat ID entry
- Saves the updated config file
This eliminates the need to manually update clawdbot.json when groups
migrate to supergroups.
2026-01-15 01:10:30 +00:00
Peter Steinberger
bcde09ae91
feat: add /context prompt breakdown
2026-01-15 01:06:35 +00:00
Peter Steinberger
e5c8abab9e
fix: preserve markdown code fences
2026-01-15 00:31:07 +00:00
Peter Steinberger
9f1a8be2bf
refactor: unify markdown formatting pipeline
2026-01-15 00:31:07 +00:00
Peter Steinberger
bd7d362d3b
refactor: unify markdown formatting pipeline
2026-01-15 00:31:07 +00:00
Peter Steinberger
0d0b77ded6
fix(telegram): wire delete action for message tool ( #903 ) - thanks @sleontenko
...
Co-authored-by: Stan <sleontenko@users.noreply.github.com>
2026-01-15 00:29:53 +00:00
sleontenko
83a25d26fc
feat(telegram): add deleteMessage action
...
Add ability to delete messages in Telegram chats via the message tool.
Changes:
- Add deleteMessageTelegram function in send.ts
- Add deleteMessage action handler in telegram-actions.ts
- Add delete action support in telegram message plugin adapter
- Add deleteMessage to TelegramActionConfig type
- Update message tool description to mention delete action
Usage:
- Via message tool: action="delete", chatId, messageId
- Can be disabled via channels.telegram.actions.deleteMessage=false
Limitations (Telegram API):
- Bot can delete its own messages in any chat
- Bot can delete others' messages only if admin with "Delete Messages"
- Messages older than 48h in groups may fail to delete
2026-01-15 00:29:53 +00:00
Peter Steinberger
9b7df414e6
test: add gemini 3 antigravity switch live repro
2026-01-15 00:29:53 +00:00
Peter Steinberger
5894ffe82e
refactor(auth): streamline allowFrom normalization
2026-01-14 23:42:50 +00:00
Peter Steinberger
57b4865ab3
fix(whatsapp): normalize user JIDs for group allowlists ( #838 )
...
Thanks @peschee.
Co-authored-by: Peter Siska <63866+peschee@users.noreply.github.com>
2026-01-14 23:25:42 +00:00
Peter Steinberger
fd41000bc3
test(whatsapp): add context isolation coverage
...
Includes outbound gating, threading fallback, and web auto-reply context assertions.
2026-01-14 23:23:36 +00:00
Peter Steinberger
a70937c926
refactor(discord): centralize autoThread reply plan ( #856 )
2026-01-14 23:07:05 +00:00
Peter Steinberger
fe974f420d
chore: standardize Claude Code CLI naming ( #915 )
...
Follow-up to #915 .
2026-01-14 20:07:35 +00:00
Peter Steinberger
e65e5f40c9
fix(whatsapp): use conversation id for context isolation ( #911 )
...
Thanks @tristanmanchester.
Co-authored-by: Tristan Manchester <tmanchester96@gmail.com>
2026-01-14 20:06:20 +00:00
Peter Steinberger
0235eb6c72
refactor(discord): clean autoThread context wiring ( #856 )
...
Build reply/session context once (no post-hoc ctx mutation) and type into the actual delivery target.
Thanks @davidguttman.
Co-authored-by: David Guttman <david@davidguttman.com>
2026-01-14 20:04:25 +00:00
Peter Steinberger
e943e63174
chore(auth): rename Claude CLI to Claude Code CLI ( #915 )
...
Thanks @SeanZoR.
Co-authored-by: Sean Katz <connect@sean8.com>
2026-01-14 19:57:42 +00:00
Shadow
b4ba6e4eaf
Discord: isolate autoThread thread context ( #856 )
2026-01-14 12:25:35 -06:00
Peter Steinberger
dadef27d7a
fix(slack): drop mismatched Socket Mode events ( #889 )
...
Filter Slack Socket Mode events by api_app_id/team_id.
Refs: #828
Contributor: @roshanasingh4
Co-authored-by: Roshan Singh <roshanasingh4@users.noreply.github.com>
2026-01-14 15:54:37 +00:00
Peter Steinberger
53465a4d2d
fix: split long Telegram captions ( #907 ) - thanks @jalehman
...
Co-authored-by: Josh Lehman <josh@martian.engineering>
2026-01-14 15:52:54 +00:00
Peter Steinberger
c379191f80
chore: migrate to oxlint and oxfmt
...
Co-authored-by: Christoph Nakazawa <christoph.pojer@gmail.com>
2026-01-14 15:02:19 +00:00
Peter Steinberger
b7a11b7bd4
test(telegram): cover per-account timeoutSeconds ( #863 )
...
Co-authored-by: Snaver <194855+Snaver@users.noreply.github.com>
2026-01-14 10:35:42 +00:00
Peter Steinberger
95bdb28a05
test(doctor): bump timeouts for slow cases
2026-01-14 10:35:39 +00:00
Peter Steinberger
9930ba91c5
fix(telegram): honor timeoutSeconds (thanks @Snaver) ( #863 )
2026-01-14 10:10:05 +00:00
Peter Steinberger
802c02eb74
style(lint): fix minimax usage lint
2026-01-14 10:10:04 +00:00
Peter Steinberger
2d4e3253ca
fix(lint): tidy minimax usage fetch
2026-01-14 10:04:26 +00:00
Peter Steinberger
18b4575e4d
feat(usage): add minimax usage snapshot
2026-01-14 09:57:32 +00:00
Peter Steinberger
40fb59e5f7
refactor(live-tests): stabilize docker live suites
2026-01-14 09:52:39 +00:00
Peter Steinberger
ce59e2dd76
refactor(telegram): split bot handlers
2026-01-14 09:11:32 +00:00
Peter Steinberger
32cfc49002
refactor(tui): split handlers
2026-01-14 09:11:28 +00:00
Peter Steinberger
d19bc1562b
refactor(gateway): split server runtime
2026-01-14 09:11:21 +00:00
Peter Steinberger
ea018a68cc
refactor(auto-reply): split reply pipeline
2026-01-14 09:11:16 +00:00
Peter Steinberger
1089444807
fix(gateway): reduce flaky ws rpc timeouts
2026-01-14 05:41:02 +00:00
Peter Steinberger
4af8228c34
test(web): rename split suites
2026-01-14 05:40:58 +00:00
Peter Steinberger
ebea98b8ec
test(slack): rename split suites
2026-01-14 05:40:55 +00:00
Peter Steinberger
51683071e8
test(signal): rename split suites
2026-01-14 05:40:52 +00:00
Peter Steinberger
bfa46b2471
test(providers): rename split suites
2026-01-14 05:40:49 +00:00
Peter Steinberger
de62797128
test(imessage): rename split suites
2026-01-14 05:40:45 +00:00