Peter Steinberger
2f4cd74b72
feat: restore voice-call plugin parity
2026-01-12 21:44:19 +00:00
Zach Knickerbocker
5e4914012e
Discord: add allowBots config option ( #802 )
...
Co-authored-by: Shadow <shadow@clawd.bot>
2026-01-12 15:30:05 -06:00
Peter Steinberger
492fabf5d8
style: italicize reasoning output
2026-01-12 21:24:36 +00:00
Peter Steinberger
6481544dbd
fix(image): accept @-prefixed file paths
2026-01-12 20:53:16 +00:00
Jake
b0eea4c5c6
fix(agent): restore reasoning tag enforcement for non-ollama providers
...
This restores the fix from PR #754 which was accidentally reverted in 811fb69ee .
2026-01-13 09:47:04 +13:00
Peter Steinberger
bee4d0a477
fix(gateway): quiet loopback ws closes
2026-01-12 20:38:34 +00:00
Peter Steinberger
8a836a90e4
fix(image): route MiniMax vision to VLM
2026-01-12 20:38:34 +00:00
David Guttman
de1a8bc1aa
Discord: per-channel autoThread ( #800 )
...
Co-authored-by: Shadow <shadow@clawd.bot>
2026-01-12 14:33:07 -06:00
Peter Steinberger
ae02a8943b
test(browser): cover downloads + responsebody
2026-01-12 19:41:12 +00:00
Peter Steinberger
f4d0933154
feat(browser): add downloads + response bodies
2026-01-12 19:41:12 +00:00
Peter Steinberger
285f2e327b
fix: prevent onboarding TUI auto-delivery ( #791 ) (thanks @roshanasingh4)
2026-01-12 19:38:52 +00:00
Roshan Singh
4c6b9cacb5
Fix: prevent onboarding TUI auto-delivery
2026-01-12 19:31:04 +00:00
Peter Steinberger
0fea0bdd7a
fix(image): drop temperature for OpenAI
2026-01-12 19:09:15 +00:00
Peter Steinberger
18ae992454
fix(tools): accept legacy bash tool calls
2026-01-12 19:09:15 +00:00
Peter Steinberger
4924044fc6
fix(models): preserve implicit vision models
2026-01-12 19:09:15 +00:00
Peter Steinberger
989b81e4c6
feat: add dashboard command
2026-01-12 19:08:29 +00:00
Peter Steinberger
ad4349bdd6
fix: close memory index and refresh protocol outputs
2026-01-12 18:49:24 +00:00
Peter Steinberger
9c64715653
fix(logging): honor silent console level
2026-01-12 18:46:40 +00:00
Peter Steinberger
09f0345e28
refactor(models): share implicit providers
2026-01-12 18:46:40 +00:00
Peter Steinberger
d25f147c1b
fix(image): fail over on empty output
2026-01-12 18:46:16 +00:00
Peter Steinberger
6a19de3ef4
test(browser): extend automation coverage
2026-01-12 18:42:46 +00:00
Peter Steinberger
43cd4cb733
chore: log elevated and reasoning toggles
2026-01-12 18:37:44 +00:00
Peter Steinberger
415700e573
fix(image): normalize mime type handling
2026-01-12 18:24:11 +00:00
Peter Steinberger
6ae2236a28
fix: stabilize session tools and tests
2026-01-12 18:21:20 +00:00
Peter Steinberger
22b8c8c535
fix: keep session sanitizer stable
2026-01-12 18:19:30 +00:00
Peter Steinberger
7e40984654
chore: format tool guard files
2026-01-12 18:19:30 +00:00
Peter Steinberger
1ceb3a5cf4
fix: add subagent default model typing
2026-01-12 18:18:15 +00:00
Peter Steinberger
fc184f19f0
fix(image): support data URLs
2026-01-12 18:17:43 +00:00
Peter Steinberger
083f4d87f5
fix: relax image tool agentDir guard
2026-01-12 18:12:51 +00:00
Peter Steinberger
0a2ee1cb31
feat: subagent model defaults
2026-01-12 18:08:30 +00:00
Peter Steinberger
08f742bf78
fix(sandbox): always allow image tool
2026-01-12 18:07:34 +00:00
Peter Steinberger
fcad0b05cb
feat(sandbox): allow image tool
2026-01-12 17:56:51 +00:00
Peter Steinberger
f8b0904055
fix: keep image sanitizer scoped
2026-01-12 17:55:45 +00:00
Peter Steinberger
fe985cbca9
feat(image): auto-pair image model
2026-01-12 17:50:47 +00:00
Peter Steinberger
db4675d18e
fix: add copilot tests and lint fixes
2026-01-12 17:48:08 +00:00
Ayaan Zaidi
321d7cf248
Merge pull request #792 from clawdbot/fix/gateway-auth-off
...
fix: clear gateway auth when set to off
2026-01-12 23:10:15 +05:30
Peter Steinberger
973a7c66ff
feat(cli): expand browser commands
2026-01-12 17:32:44 +00:00
Peter Steinberger
9db6ff26bb
test(browser): add regression coverage
2026-01-12 17:32:44 +00:00
Peter Steinberger
1342dceeed
feat(browser): expand browser control surface
2026-01-12 17:32:44 +00:00
Ayaan Zaidi
53a2664e53
fix: clear gateway auth on off selection
2026-01-12 22:59:37 +05:30
Peter Steinberger
1ef34798b9
fix: guard session tool results
2026-01-12 17:28:46 +00:00
Peter Steinberger
14b27c8f6b
fix: keep main agent in list output
2026-01-12 17:24:03 +00:00
Peter Steinberger
a624a019fb
fix: restore heartbeat defaults and model listing
2026-01-12 17:17:54 +00:00
Peter Steinberger
ae2d188eef
test: update heartbeat and agent list thresholds
2026-01-12 17:14:04 +00:00
Peter Steinberger
1d844cf92b
fix: clean up models-config provider normalization
2026-01-12 17:14:04 +00:00
Peter Steinberger
17abef2657
refactor: split models-config provider helpers
2026-01-12 17:05:53 +00:00
Peter Steinberger
63ca0554c1
Merge pull request #705 from TAGOOZ/feat/github-copilot-onboard
...
feat: add GitHub Copilot provider
2026-01-12 16:56:51 +00:00
Peter Steinberger
fe2510c3bb
fix: honor copilot config and profiles ( #705 ) (thanks @TAGOOZ)
2026-01-12 16:55:47 +00:00
Peter Steinberger
f047c80f7c
test: cover models.json apiKey fill
2026-01-12 16:52:43 +00:00
Peter Steinberger
352f6706be
fix: make models.json generation fill apiKey
2026-01-12 16:52:43 +00:00
Mustafa Tag Eldeen
96a1b923f7
feat: add GitHub Copilot provider
...
Copilot device login + onboarding option; model list auth detection.
2026-01-12 16:52:15 +00:00
Ayaan Zaidi
dd8d7d7d42
test(telegram): cover General topic typing fallback
2026-01-12 22:03:42 +05:30
Azade
724ca44d79
fix(telegram): show typing indicator in General forum topic
...
In forum supergroups, messages from the General topic arrive without
message_thread_id in updates, but sendChatAction requires one to display
the typing indicator in the correct topic.
Use message_thread_id=1 (Telegram's internal ID for General topic) as
fallback when messageThreadId is undefined in a forum chat.
2026-01-12 22:01:21 +05:30
Peter Steinberger
811fb69eee
feat: add memory vector search
2026-01-12 11:23:44 +00:00
Peter Steinberger
713ee5d9ec
chore: sanitize onboarding api keys
2026-01-12 11:18:31 +00:00
Peter Steinberger
0d7102bc4d
feat: add cron agent binding
2026-01-12 11:07:38 +00:00
Peter Steinberger
c0549ac4f8
chore: raise heartbeat ack window
2026-01-12 11:06:46 +00:00
Peter Steinberger
74e01756ff
test: cover minimax env provider injection
2026-01-12 11:05:08 +00:00
Peter Steinberger
764dfd6155
fix: auto-add minimax provider from auth
2026-01-12 11:05:08 +00:00
Peter Steinberger
d4e998edf7
fix: avoid duplicate status replies
2026-01-12 11:04:03 +00:00
Peter Steinberger
821d24bbf1
chore: release 2026.1.11-4
2026-01-12 10:52:34 +00:00
Peter Steinberger
580a1d6933
chore: release 2026.1.11-3
2026-01-12 10:35:50 +00:00
Peter Steinberger
f34aefbe6b
test: skip lan auto-token on windows
2026-01-12 09:20:37 +00:00
Peter Steinberger
1f3bcb861f
chore: tidy changelog and format
2026-01-12 09:14:44 +00:00
Peter Steinberger
b841cf895c
fix: add ws handshake user agent
2026-01-12 09:08:07 +00:00
Peter Steinberger
b6e5cb8bfb
fix: strip gemini cli tool ids ( #756 )
2026-01-12 09:01:19 +00:00
Peter Steinberger
98c434bf79
fix: default groupPolicy to open for discord/telegram
2026-01-12 08:55:02 +00:00
Peter Steinberger
0f2687c61f
fix: default groupPolicy to open
2026-01-12 08:55:02 +00:00
Peter Steinberger
81e5e399ac
fix: only strip inline /status for allowlisted senders
2026-01-12 08:55:02 +00:00
Peter Steinberger
5980804253
feat: role snapshot refs for browser
2026-01-12 08:55:02 +00:00
Peter Steinberger
d9a2b02736
fix: finalize tool param aliasing ( #768 ) (thanks @hsrvc)
2026-01-12 08:49:11 +00:00
hsrvc
0808b972f4
Agents: add Claude Code parameter aliasing for read/write/edit tools
2026-01-12 08:49:11 +00:00
Peter Steinberger
95540a9eda
Merge pull request #754 from mcinteerj/fix/reasoning-tag-strip
...
fix(agent): prevent reasoning and tag leaks for Gemini 3/Antigravity models
2026-01-12 08:47:15 +00:00
Peter Steinberger
2bb8e0d369
test: align group policy defaults
2026-01-12 08:45:57 +00:00
Peter Steinberger
56d4790f03
fix: enforce final tag gating ( #754 ) (thanks @mcinteerj)
2026-01-12 08:45:23 +00:00
Keith the Silly Goose
01c323f1a0
fix(agent): buffer streaming output until <final> tag appears
...
- Enforces strict buffering when enforceFinalTag is enabled.
- Prevents 'thinking out loud' planning steps (e.g. '*Locating Manulife*') from leaking to WhatsApp.
- Hardens <final> tag stripping to remove nested/hallucinated tags.
2026-01-12 08:34:06 +00:00
Keith the Silly Goose
93f9fa2bb4
fix(agent): correctly strip <final> tags from reasoning providers
...
- Added src/utils/provider-utils.ts to track reasoning provider logic
- Updated isReasoningTagProvider to loosely match 'google-antigravity' (fixes sub-models)
- Enabled enforceFinalTag in reply.ts when provider matches
- Verified <final> tag stripping logic in pi-embedded-subscribe.ts
- Updated pi-embedded-runner to use consistent provider check for prompt hints
2026-01-12 08:34:06 +00:00
Peter Steinberger
ad0e62b9ea
fix: improve daemon node selection
2026-01-12 08:33:32 +00:00
Peter Steinberger
c0dd3d0628
fix: harden msteams group access
2026-01-12 08:32:08 +00:00
Peter Steinberger
97e5fd0c74
fix: add ws handshake context
2026-01-12 08:30:08 +00:00
Peter Steinberger
b6583cd14c
fix: default groupPolicy to allowlist
2026-01-12 08:22:01 +00:00
Peter Steinberger
b996ea4709
fix: set default model after auth choice
2026-01-12 08:04:32 +00:00
Peter Steinberger
63e81346ae
fix: correct MiniMax Lightning hint
2026-01-12 08:04:32 +00:00
Peter Steinberger
1abb19bd40
test(model): cover provider-less id fuzzy match
2026-01-12 08:02:55 +00:00
Peter Steinberger
102325276a
feat(model): fuzzy /model matching
2026-01-12 07:57:53 +00:00
Peter Steinberger
d11f227637
feat: improve onboarding auth prompts
2026-01-12 07:47:15 +00:00
Peter Steinberger
52cf5b994b
fix: streamline configure section flow
2026-01-12 07:47:15 +00:00
Peter Steinberger
b2abbda5f1
test: expand memory flush coverage
2026-01-12 07:42:03 +00:00
Peter Steinberger
99f8a4d3e6
fix(auto-reply): preserve inline /status text for unauthorized senders
2026-01-12 07:42:03 +00:00
Peter Steinberger
c98f2a39e3
fix: cap ai snapshots for tool calls ( #763 ) (thanks @thesash)
2026-01-12 07:40:34 +00:00
Sash Catanzarite
7e383368c2
Browser: cap AI snapshots to avoid context overflow
2026-01-12 07:40:34 +00:00
Peter Steinberger
0f71b53661
fix(auto-reply): show config models in /model
2026-01-12 07:31:20 +00:00
Peter Steinberger
1e8e19a256
fix: ignore inline status directives
2026-01-12 07:13:08 +00:00
Peter Steinberger
6564e952c0
feat(control-ui): add model presets
2026-01-12 07:09:58 +00:00
Peter Steinberger
140f1e3b2f
fix: clean up lint + guardCancel typing
2026-01-12 07:07:27 +00:00
Peter Steinberger
1f921afa8b
fix: modernize live tests and gemini ids
2026-01-12 07:05:33 +00:00
Peter Steinberger
d65fbf3065
feat: add Moonshot auth choice
2026-01-12 06:48:06 +00:00
Peter Steinberger
7f9158a447
test(model): expand /model picker coverage
2026-01-12 06:34:33 +00:00
Peter Steinberger
6cddcca8a2
fix: skip memory flush on read-only workspace
2026-01-12 06:33:27 +00:00
Peter Steinberger
e13ebf3946
fix: handle inline status for allowlisted senders
2026-01-12 06:33:27 +00:00
Peter Steinberger
2bc10b7ed7
fix: sender fallback for command auth ( #755 ) (thanks @juanpablodlc)
2026-01-12 06:28:53 +00:00
juanpablodlc
2cc7924e1c
fix: use logical OR for sender ID fallback in command auth
...
The nullish coalescing operator (??) only skips null/undefined, not
empty strings. For direct WhatsApp messages, ctx.SenderId was an empty
string, causing senderRaw to be "" instead of falling through to the
valid ctx.SenderE164 value.
This caused commands like /status to be rejected with "unauthorized
sender" for self-chat WhatsApp messages.
Tested: Verified /status command now works correctly for self-chat
WhatsApp messages after the fix.
2026-01-12 06:20:51 +00:00
Peter Steinberger
fc978423a3
test: cover pi session jsonl ordering
2026-01-12 06:19:58 +00:00
Peter Steinberger
35fca9cb15
test: clean unused var
2026-01-12 06:14:45 +00:00
Peter Steinberger
86a772718b
test: fix lint warning
2026-01-12 06:14:45 +00:00
Peter Steinberger
8548fe5396
test: cover inline slash command fast-path
2026-01-12 06:14:45 +00:00
Peter Steinberger
122a7e5d93
test: stabilize lan auto-token onboarding
2026-01-12 06:13:31 +00:00
Peter Steinberger
e9c0eb23d8
fix: dedupe minimax non-interactive auth
2026-01-12 06:13:31 +00:00
Peter Steinberger
93a0b979f0
feat: simplify minimax auth choice
2026-01-12 06:13:00 +00:00
Peter Steinberger
d6d0a6b8f1
feat: loop configure section picker
2026-01-12 06:13:00 +00:00
Peter Steinberger
6fb0c71a2a
fix: fast-path slash commands
2026-01-12 06:10:17 +00:00
Peter Steinberger
9f50b66603
feat(model): add /model picker
2026-01-12 06:02:39 +00:00
Peter Steinberger
ddca2576fa
feat: add pre-compaction memory flush
2026-01-12 05:29:18 +00:00
Peter Steinberger
c001dec696
fix: persist first Pi user message in JSONL
2026-01-12 05:18:05 +00:00
Peter Steinberger
db1e5a16d1
fix(models): default MiniMax to /anthropic
2026-01-12 05:12:07 +00:00
Peter Steinberger
5cf18bdb08
feat: streamline wizard selection prompts
2026-01-12 05:08:07 +00:00
Peter Steinberger
546dd4ff39
refactor: remove mac attach-only setting
2026-01-12 04:58:38 +00:00
Peter Steinberger
821520a64f
fix: require gateway client id
...
# Conflicts:
# apps/macos/Sources/Clawdbot/GatewayChannel.swift
# docs/concepts/typebox.md
# docs/gateway/index.md
# src/commands/onboard-non-interactive.gateway-auth.test.ts
# src/commands/onboard-non-interactive.lan-auto-token.test.ts
# src/gateway/call.ts
# src/gateway/client.ts
# src/gateway/gateway.wizard.e2e.test.ts
# src/gateway/probe.ts
# src/gateway/protocol/schema.ts
# src/gateway/server.auth.test.ts
# src/gateway/server.health.test.ts
# src/gateway/server.ts
# src/gateway/test-helpers.ts
# src/tui/gateway-chat.ts
2026-01-12 04:58:38 +00:00
Peter Steinberger
9433a40651
test: respect openai max tokens floor
2026-01-12 04:04:04 +00:00
Peter Steinberger
4d0beca324
feat: add apply_patch tool (exec-gated)
2026-01-12 03:42:56 +00:00
Peter Steinberger
0fd5e0bb0b
refactor: reuse resolved think default
2026-01-12 03:00:30 +00:00
Peter Steinberger
3962e645a9
fix: flush block reply buffers on tool boundaries ( #750 ) (thanks @sebslight)
2026-01-12 02:54:57 +00:00
The Admiral
11bd1c2420
fix: flush block reply coalescer on tool boundaries
...
When block streaming is enabled with verbose=off, tool blocks are hidden
but their boundary information was lost. Text segments before and after
tool execution would get coalesced into a single message because the
coalescer had no signal that a tool had executed between them.
This adds an onBlockReplyFlush callback that fires on tool_execution_start,
allowing the block reply pipeline to flush pending text before the tool
runs. This preserves natural message boundaries even when tools are hidden.
Fixes the issue where:
text → [hidden tool] → text → rendered as one merged message
Now correctly renders as:
text → [hidden tool] → text → two separate messages
Co-diagnosed-by: Krill (Discord assistant)
2026-01-12 02:52:48 +00:00
Peter Steinberger
0e749d85fc
Merge pull request #751 from gabriel-trigo/fix/think-default-743
...
fix: align /think default with model reasoning
2026-01-12 02:52:25 +00:00
Peter Steinberger
dc76244c6b
Merge pull request #748 from myfunc/main
...
fix(bash): use PowerShell on Windows to capture system utility output
2026-01-12 02:50:30 +00:00
Gabriel Trigo
05ebb514ab
fix: align /think default with model reasoning
2026-01-12 02:50:13 +00:00
Peter Steinberger
218e5a52e0
fix: rename bash tool to exec ( #748 ) (thanks @myfunc)
2026-01-12 02:49:55 +00:00
Peter Steinberger
41a1ffe410
fix(sandbox): canonicalize agent main alias
2026-01-12 02:23:02 +00:00
myfunc
555b85681b
fix(bash): use PowerShell on Windows to capture system utility output
...
Windows system utilities like ipconfig, systeminfo, etc. write directly to
the console via WriteConsole API instead of stdout. When Node.js spawns
cmd.exe with piped stdio, these utilities produce empty output.
Changes:
- Switch from cmd.exe to PowerShell on Windows (properly redirects output)
- Disable detached mode on Windows (PowerShell doesn't pipe stdout when detached)
- Add windowsHide option to prevent console window flashing
- Update tests to use PowerShell-compatible syntax (Start-Sleep, semicolons)
2026-01-12 02:13:02 +00:00
Peter Steinberger
ff2b997dc9
docs: fix browser CLI docs link
2026-01-12 02:09:10 +00:00
Peter Steinberger
fa1d9b0cb9
fix(subagents): align wait timeout with run timeout
2026-01-12 02:06:43 +00:00
Peter Steinberger
b2f5f65e17
test(gateway): cover main alias resolve
2026-01-12 02:06:43 +00:00
Peter Steinberger
404bae41f9
refactor(gateway): use canonical session store keys
2026-01-12 02:06:43 +00:00
Peter Steinberger
bc73513e11
test: fix windows nix config path assertion
2026-01-12 02:05:38 +00:00
Peter Steinberger
1567911d84
test: add normalizeConfigPaths unit test
2026-01-12 01:55:55 +00:00
Peter Steinberger
eb701e92b9
test: cover tilde path expansion
2026-01-12 01:53:42 +00:00
Peter Steinberger
0238d571b4
fix: normalize ~ in path config
2026-01-12 01:53:42 +00:00
Peter Steinberger
b47003adca
refactor(sandbox): normalize main session aliases
2026-01-12 01:37:56 +00:00
Peter Steinberger
7a62ca34dd
fix(plugins): extract archives without system tar
2026-01-12 01:36:18 +00:00
Peter Steinberger
7a4c55fdfb
test: run npm pack via npm-cli.js
2026-01-12 01:31:26 +00:00
Peter Steinberger
5442dd4efb
style: format plugin install test
2026-01-12 01:27:01 +00:00
Peter Steinberger
d9f9a8a0f6
fix: load plugin packages from config dirs
2026-01-12 01:25:56 +00:00
Peter Steinberger
072c5696e2
test: pack plugin archives via npm
2026-01-12 01:25:40 +00:00
Peter Steinberger
9d40555147
fix(sandbox): avoid sandboxing main DM sessions
2026-01-12 01:24:44 +00:00
Peter Steinberger
ac6f2643bc
test: plugin install + docker e2e
2026-01-12 01:16:42 +00:00
Peter Steinberger
d72f800c90
feat: plugin system + voice-call
2026-01-12 01:16:39 +00:00
Peter Steinberger
2570f88d74
fix(gateway): canonicalize main session aliases
2026-01-12 01:05:43 +00:00
user
fb8cef20cc
fix(gateway): normalize session key to canonical form before store writes
...
Ensure 'main' alias is always stored as 'agent:main:main' to prevent
duplicate entries. Also update loadSessionEntry to check both forms
when looking up entries.
Fixes duplicate main sessions in session store.
2026-01-12 00:53:20 +00:00
user
cb0f4c8aa7
fix(subagent): make announce prompt more emphatic
...
The previous prompt was too permissive about skipping announcements.
Updated to strongly encourage announcing results since the requester
is waiting for a response.
- Add 'You MUST announce your result' instruction
- Clarify ANNOUNCE_SKIP is only for complete failures
- Improve guidance on providing useful summaries
2026-01-12 00:52:36 +00:00
user
563d40976c
fix(subagent): wait for completion before announce
...
The previous immediate probe (timeoutMs: 0) only caught already-completed
runs. Cross-process spawns need to actually wait via agent.wait RPC for
the gateway to signal completion, then trigger the announce flow.
- Rename probeImmediateCompletion to waitForSubagentCompletion
- Use 10 minute wait timeout for agent.wait RPC
- Remove leftover debug console.log statements
2026-01-12 00:52:36 +00:00
Peter Steinberger
ee66fe7f6e
test: cover unset docker env vars
2026-01-12 00:46:55 +00:00
Peter Steinberger
32dd40b3b7
test: fix includes tests on windows
2026-01-12 00:39:14 +00:00
Peter Steinberger
dc08a6e797
style: biome fixes
2026-01-12 00:32:47 +00:00
Peter Steinberger
ada3142a31
fix: make codex keychain platform-aware
2026-01-12 00:32:47 +00:00
Peter Steinberger
b5598c29f3
test: expand include coverage
2026-01-12 00:30:26 +00:00
Peter Steinberger
1e4298b8a6
fix: skip pnpm patch fallback
2026-01-12 00:28:34 +00:00
Peter Steinberger
6044afebec
fix: reset session after compaction overflow
2026-01-12 00:28:16 +00:00
Peter Steinberger
a143956e84
fix: stabilize invalid-connect handshake response
2026-01-12 00:19:47 +00:00
Peter Steinberger
f99bbee218
fix: guard config includes ( #731 ) (thanks @pasogott)
2026-01-12 00:12:03 +00:00
sheeek
e5d6194bb0
refactor(config): simplify includes with class-based processor
...
- Replace free functions with IncludeProcessor class
- Simplify IncludeResolver interface: { readFile, parseJson }
- Break down loadFile into focused private methods
- Use reduce() for array include merging
- Cleaner separation of concerns
2026-01-12 00:08:27 +00:00
sheeek
c094b914dc
refactor(config): extract includes logic to separate module
...
- Move $include resolution to src/config/includes.ts
- Simplify io.ts by importing from includes module
- Cleaner API: resolveConfigIncludes(obj, configPath, resolver?)
- Re-export errors from io.ts for backwards compatibility
- Rename test file to match module name
2026-01-12 00:08:27 +00:00
sheeek
027033d8b5
feat(config): add $include directive for modular configs
...
Adds support for splitting clawdbot.json into multiple files using the
$include directive. This enables:
- Single file includes: { "$include": "./agents.json5" }
- Multiple file merging: { "$include": ["./a.json5", "./b.json5"] }
- Nested includes (up to 10 levels deep)
- Sibling key merging with includes
Features:
- Relative paths resolved from including file
- Absolute paths supported
- Circular include detection
- Clear error messages with resolved paths
Use case: Per-client agent configs for isolated sandboxed environments
(e.g., legal case management with strict data separation).
2026-01-12 00:08:27 +00:00
Peter Steinberger
531dd80356
fix: apply model extra params without overwriting stream ( #732 ) (thanks @peschee)
2026-01-12 00:03:48 +00:00
Peter Siska
c2d8a7d7af
style: fix formatting (biome)
2026-01-12 00:03:25 +00:00
Peter Siska
958702b36f
feat: wire up model extraParams (temperature, maxTokens) to pi agent
...
- Use resolveExtraParams() which was defined but unused
- Create streamFn wrapper that injects config-driven params
- Apply to both compaction and run sessions
Config path: agents.defaults.models["provider/model"].params.temperature
Example:
agents.defaults.models["anthropic/claude-sonnet-4"].params.temperature = 0.7
agents.defaults.models["openai/gpt-4"].params.maxTokens = 8192
2026-01-12 00:03:24 +00:00
Peter Steinberger
4e11a347e8
chore: harden installer and add smoke ci
2026-01-12 00:00:54 +00:00
Peter Steinberger
b7b631c731
fix: preserve handshake close code and test truncation
2026-01-11 23:57:37 +00:00
Peter Steinberger
418c034a20
fix: surface handshake reasons
2026-01-11 23:46:20 +00:00
Peter Steinberger
42d1e4c10e
fix: read codex keychain credentials
2026-01-11 23:39:10 +00:00
Peter Steinberger
ad4b230464
Merge pull request #733 from AbhisekBasu1/patch-1
...
Readme Fix: Update section title from 'macOS app' to 'Apps'
2026-01-11 23:38:38 +00:00
Peter Steinberger
553fb02880
fix: land PR #733 (thanks @AbhisekBasu1)
2026-01-11 23:37:44 +00:00
Peter Steinberger
665651666d
test: expand voice-call coverage
2026-01-11 23:35:47 +00:00
Peter Steinberger
9680c2ac3d
fix: strip markup heartbeat acks
2026-01-11 23:26:51 +00:00
Peter Steinberger
e34d36978b
feat: implement voice-call plugin
2026-01-11 23:23:14 +00:00
Ayaan Zaidi
828c6e231d
fix: add discord channel actions
2026-01-11 22:32:17 +05:30
Ayaan Zaidi
31fcfe5840
fix: format discord parentId
2026-01-11 22:28:05 +05:30
Ayaan Zaidi
f717785f3a
Merge pull request #728 from pkrmf/feature/dm-history-limit
...
feat: add configurable DM history limits with per-chat overrides
2026-01-11 22:25:12 +05:30
Ayaan Zaidi
b3550cd9c6
fix: skip dm history limit for non-dm sessions
2026-01-11 22:18:15 +05:30
Nicholas Spisak
64de054d87
feat(discord): expose channel management actions via message tool
...
Add channel-create, channel-edit, channel-delete, channel-move,
category-create, category-edit, and category-delete actions to the
unified message tool. These actions were already implemented in the
Discord-specific handler but weren't accessible via the pi_message tool.
Changes:
- Add 7 new channel/category management actions to MessageActionSchema
- Add parameters: name, type, parentId, topic, position, nsfw,
rateLimitPerUser, categoryId
- Gate actions behind discord.actions.channels (disabled by default)
- Add execute handlers routing to existing Discord action handlers
- Update Discord skill SKILL.md with documentation
Channel types: 0=text, 2=voice, 4=category
2026-01-11 10:01:32 -06:00
Ayaan Zaidi
32932dda32
fix: normalize telegram command mentions
2026-01-11 21:06:04 +05:30
Marc Terns
e808d12cb0
test: add comprehensive per-DM override tests for all providers
2026-01-11 08:55:32 -06:00
Marc Terns
8825269a39
feat: add per-DM history limit overrides
2026-01-11 08:53:50 -06:00
Marc Terns
115803e901
refactor: move dmHistoryLimit to provider-level config
2026-01-11 08:38:19 -06:00
Marc Terns
7ef50a43b4
feat: add configurable DM history limit
2026-01-11 08:21:14 -06:00
Peter Steinberger
218b3c47da
test: add plugin docker e2e
2026-01-11 12:21:45 +00:00
Peter Steinberger
71c1446394
feat: add plugin architecture
2026-01-11 12:11:12 +00:00
Peter Steinberger
30a1fd5dec
Move provider to a plugin-architecture ( #661 )
...
* refactor: introduce provider plugin registry
* refactor: move provider CLI to plugins
* docs: add provider plugin implementation notes
* refactor: shift provider runtime logic into plugins
* refactor: add plugin defaults and summaries
* docs: update provider plugin notes
* feat(commands): add /commands slash list
* Auto-reply: tidy help message
* Auto-reply: fix status command lint
* Tests: align google shared expectations
* Auto-reply: tidy help message
* Auto-reply: fix status command lint
* refactor: move provider routing into plugins
* test: align agent routing expectations
* docs: update provider plugin notes
* refactor: route replies via provider plugins
* docs: note route-reply plugin hooks
* refactor: extend provider plugin contract
* refactor: derive provider status from plugins
* refactor: unify gateway provider control
* refactor: use plugin metadata in auto-reply
* fix: parenthesize cron target selection
* refactor: derive gateway methods from plugins
* refactor: generalize provider logout
* refactor: route provider logout through plugins
* refactor: move WhatsApp web login methods into plugin
* refactor: generalize provider log prefixes
* refactor: centralize default chat provider
* refactor: derive provider lists from registry
* refactor: move provider reload noops into plugins
* refactor: resolve web login provider via alias
* refactor: derive CLI provider options from plugins
* refactor: derive prompt provider list from plugins
* style: apply biome lint fixes
* fix: resolve provider routing edge cases
* docs: update provider plugin refactor notes
* fix(gateway): harden agent provider routing
* refactor: move provider routing into plugins
* refactor: move provider CLI to plugins
* refactor: derive provider lists from registry
* fix: restore slash command parsing
* refactor: align provider ids for schema
* refactor: unify outbound target resolution
* fix: keep outbound labels stable
* feat: add msteams to cron surfaces
* fix: clean up lint build issues
* refactor: localize chat provider alias normalization
* refactor: drive gateway provider lists from plugins
* docs: update provider plugin notes
* style: format message-provider
* fix: avoid provider registry init cycles
* style: sort message-provider imports
* fix: relax provider alias map typing
* refactor: move provider routing into plugins
* refactor: add plugin pairing/config adapters
* refactor: route pairing and provider removal via plugins
* refactor: align auto-reply provider typing
* test: stabilize telegram media mocks
* docs: update provider plugin refactor notes
* refactor: pluginize outbound targets
* refactor: pluginize provider selection
* refactor: generalize text chunk limits
* docs: update provider plugin notes
* refactor: generalize group session/config
* fix: normalize provider id for room detection
* fix: avoid provider init in system prompt
* style: formatting cleanup
* refactor: normalize agent delivery targets
* test: update outbound delivery labels
* chore: fix lint regressions
* refactor: extend provider plugin adapters
* refactor: move elevated/block streaming defaults to plugins
* refactor: defer outbound send deps to plugins
* docs: note plugin-driven streaming/elevated defaults
* refactor: centralize webchat provider constant
* refactor: add provider setup adapters
* refactor: delegate provider add config to plugins
* docs: document plugin-driven provider add
* refactor: add plugin state/binding metadata
* refactor: build agent provider status from plugins
* docs: note plugin-driven agent bindings
* refactor: centralize internal provider constant usage
* fix: normalize WhatsApp targets for groups and E.164 (#631 ) (thanks @imfing)
* refactor: centralize default chat provider
* refactor: centralize WhatsApp target normalization
* refactor: move provider routing into plugins
* refactor: normalize agent delivery targets
* chore: fix lint regressions
* fix: normalize WhatsApp targets for groups and E.164 (#631 ) (thanks @imfing)
* feat: expand provider plugin adapters
* refactor: route auto-reply via provider plugins
* fix: align WhatsApp target normalization
* fix: normalize WhatsApp targets for groups and E.164 (#631 ) (thanks @imfing)
* refactor: centralize WhatsApp target normalization
* feat: add /config chat config updates
* docs: add /config get alias
* feat(commands): add /commands slash list
* refactor: centralize default chat provider
* style: apply biome lint fixes
* chore: fix lint regressions
* fix: clean up whatsapp allowlist typing
* style: format config command helpers
* refactor: pluginize tool threading context
* refactor: normalize session announce targets
* docs: note new plugin threading and announce hooks
* refactor: pluginize message actions
* docs: update provider plugin actions notes
* fix: align provider action adapters
* refactor: centralize webchat checks
* style: format message provider helpers
* refactor: move provider onboarding into adapters
* docs: note onboarding provider adapters
* feat: add msteams onboarding adapter
* style: organize onboarding imports
* fix: normalize msteams allowFrom types
* feat: add plugin text chunk limits
* refactor: use plugin chunk limit fallbacks
* feat: add provider mention stripping hooks
* style: organize provider plugin type imports
* refactor: generalize health snapshots
* refactor: update macOS health snapshot handling
* docs: refresh health snapshot notes
* style: format health snapshot updates
* refactor: drive security warnings via plugins
* docs: note provider security adapter
* style: format provider security adapters
* refactor: centralize provider account defaults
* refactor: type gateway client identity constants
* chore: regen gateway protocol swift
* fix: degrade health on failed provider probe
* refactor: centralize pairing approve hint
* docs: add plugin CLI command references
* refactor: route auth and tool sends through plugins
* docs: expand provider plugin hooks
* refactor: document provider docking touchpoints
* refactor: normalize internal provider defaults
* refactor: streamline outbound delivery wiring
* refactor: make provider onboarding plugin-owned
* refactor: support provider-owned agent tools
* refactor: move telegram draft chunking into telegram module
* refactor: infer provider tool sends via extractToolSend
* fix: repair plugin onboarding imports
* refactor: de-dup outbound target normalization
* style: tidy plugin and agent imports
* refactor: data-drive provider selection line
* fix: satisfy lint after provider plugin rebase
* test: deflake gateway-cli coverage
* style: format gateway-cli coverage test
* refactor(provider-plugins): simplify provider ids
* test(pairing-cli): avoid provider-specific ternary
* style(macos): swiftformat HealthStore
* refactor(sandbox): derive provider tool denylist
* fix(sandbox): avoid plugin init in defaults
* refactor(provider-plugins): centralize provider aliases
* style(test): satisfy biome
* refactor(protocol): v3 providers.status maps
* refactor(ui): adapt to protocol v3
* refactor(macos): adapt to protocol v3
* test: update providers.status v3 fixtures
* refactor(gateway): map provider runtime snapshot
* test(gateway): update reload runtime snapshot
* refactor(whatsapp): normalize heartbeat provider id
* docs(refactor): update provider plugin notes
* style: satisfy biome after rebase
* fix: describe sandboxed elevated in prompt
* feat(gateway): add agent image attachments + live probe
* refactor: derive CLI provider options from plugins
* fix(gateway): harden agent provider routing
* fix(gateway): harden agent provider routing
* refactor: align provider ids for schema
* fix(protocol): keep agent provider string
* fix(gateway): harden agent provider routing
* fix(protocol): keep agent provider string
* refactor: normalize agent delivery targets
* refactor: support provider-owned agent tools
* refactor(config): provider-keyed elevated allowFrom
* style: satisfy biome
* fix(gateway): appease provider narrowing
* style: satisfy biome
* refactor(reply): move group intro hints into plugin
* fix(reply): avoid plugin registry init cycle
* refactor(providers): add lightweight provider dock
* refactor(gateway): use typed client id in connect
* refactor(providers): document docks and avoid init cycles
* refactor(providers): make media limit helper generic
* fix(providers): break plugin registry import cycles
* style: satisfy biome
* refactor(status-all): build providers table from plugins
* refactor(gateway): delegate web login to provider plugin
* refactor(provider): drop web alias
* refactor(provider): lazy-load monitors
* style: satisfy lint/format
* style: format status-all providers table
* style: swiftformat gateway discovery model
* test: make reload plan plugin-driven
* fix: avoid token stringification in status-all
* refactor: make provider IDs explicit in status
* feat: warn on signal/imessage provider runtime errors
* test: cover gateway provider runtime warnings in status
* fix: add runtime kind to provider status issues
* test: cover health degradation on probe failure
* fix: keep routeReply lightweight
* style: organize routeReply imports
* refactor(web): extract auth-store helpers
* refactor(whatsapp): lazy login imports
* refactor(outbound): route replies via plugin outbound
* docs: update provider plugin notes
* style: format provider status issues
* fix: make sandbox scope warning wrap-safe
* refactor: load outbound adapters from provider plugins
* docs: update provider plugin outbound notes
* style(macos): fix swiftformat lint
* docs: changelog for provider plugins
* fix(macos): satisfy swiftformat
* fix(macos): open settings via menu action
* style: format after rebase
* fix(macos): open Settings via menu action
---------
Co-authored-by: LK <luke@kyohere.com>
Co-authored-by: Luke K (pr-0f3t) <2609441+lc0rp@users.noreply.github.com>
Co-authored-by: Xin <xin@imfing.com>
2026-01-11 11:45:25 +00:00
Peter Steinberger
c604052341
fix: update heartbeat prompt
2026-01-11 11:35:52 +00:00
Peter Steinberger
97b40deb1e
fix: add compaction headroom for memory writes
2026-01-11 11:25:15 +00:00
Peter Steinberger
3f12392784
test: skip codex refresh token reuse
2026-01-11 11:24:25 +00:00
Peter Steinberger
0afdb82c7b
fix: route subagent transcripts and keep tool action enums ( #708 ) (thanks @xMikeMickelson)
2026-01-11 11:19:38 +00:00
user
3892ed8bc2
fix(agent): use session key agentId for transcript path
...
Cross-agent subagent spawns wrote transcripts to the spawner's agent
directory instead of the target agent's directory. For example, when
main spawned a codex subagent with session key agent:codex:subagent:...,
the transcript went to agents/main/sessions/ instead of agents/codex/sessions/.
Pass sessionAgentId to resolveSessionFilePath so transcripts are written
to the correct agent's session directory.
2026-01-11 11:11:43 +00:00
Peter Steinberger
a817e60a9e
test: cover messaging tool error fallback ( #717 )
2026-01-11 11:10:03 +00:00
Chris Taylor
fce5f90c2f
fix(message-tool): strip reply/media tags from content in send/thread-reply actions
2026-01-11 11:04:07 +00:00
Chris Taylor
f119423b15
Agents: harden message tool sends
2026-01-11 11:04:07 +00:00
Peter Steinberger
5710cdd2de
test: cover cron cli model overrides
2026-01-11 10:56:46 +00:00
Peter Steinberger
6104deb3ad
style: format cleanup commands
2026-01-11 10:54:33 +00:00
Peter Steinberger
f6ddac430d
Merge pull request #711 from mjrussell/feat/cron-model-override
...
feat(cron): add --model flag to cron add/edit commands
2026-01-11 10:53:42 +00:00
Peter Steinberger
85cee249de
fix: trim cron model overrides and doc guidance ( #711 ) (thanks @mjrussell)
2026-01-11 10:52:40 +00:00
Matthew Russell
8bb2b816f5
feat(cron): add --model flag to cron add/edit commands
...
Expose the existing model override capability via CLI flags:
- Add --model to cron add and cron edit commands
- Document model and thinking overrides in cron-jobs.md
- Add CLI example showing model/thinking usage
The backend already supported model in agentTurn payloads;
this change exposes it through the CLI interface.
2026-01-11 10:49:34 +00:00
Peter Steinberger
4f5ac4466f
test: extend discord tool-result timeout
2026-01-11 10:48:49 +00:00
Peter Steinberger
287b818671
fix: add update env regression test ( #713 ) (thanks @danielz1z)
2026-01-11 10:48:46 +00:00
danielz1z
4bb1d7d470
fix(update): merge custom env with process.env in spawn
...
When the update runner passes custom env vars (like CLAWDBOT_UPDATE_IN_PROGRESS),
the current code uses `env ?? process.env` which replaces the entire environment
instead of merging — losing PATH, HOME, etc.
This causes the doctor step to fail with 'node: No such file or directory'.
Fix: merge custom env with process.env instead of replacing it.
2026-01-11 10:39:07 +00:00
Peter Steinberger
ec765e14a9
style: biome fixes
2026-01-11 10:35:16 +00:00
Peter Steinberger
7a9727b6d6
feat: add reset/uninstall commands
2026-01-11 10:23:52 +00:00
Peter Steinberger
472b4fdfc8
test(live): harden gateway probes
2026-01-11 04:46:30 +00:00
Peter Steinberger
78ba5d492b
fix(agents): sanitize transcripts for strict tool APIs
2026-01-11 04:46:18 +00:00
Peter Steinberger
dbaa996691
fix(testing): stabilize live model runs
2026-01-11 04:22:35 +00:00
Peter Steinberger
566f7f2713
feat: add onboard reset option
2026-01-11 05:04:36 +01:00
Peter Steinberger
0fb2bf622d
fix: clarify sub-agent sandbox limits
2026-01-11 05:04:14 +01:00
Peter Steinberger
56c94e0ee9
style: add blank line after note imports
2026-01-11 05:01:50 +01:00
Peter Steinberger
4e48758d87
fix: restore ZAI provider preference
2026-01-11 04:58:37 +01:00
Peter Steinberger
cffd9c7568
style: fix note import spacing
2026-01-11 04:54:19 +01:00
Peter Steinberger
9b627dc34e
fix: skip tool-only reasoning replay
2026-01-11 04:52:16 +01:00
Peter Steinberger
e19d58262f
test: stabilize doctor + sandbox tests
2026-01-11 04:45:04 +01:00
Peter Steinberger
65f72e527d
chore: keep gate green
2026-01-11 04:42:44 +01:00
Peter Steinberger
779b9de2e1
chore: format sandbox skills test
2026-01-11 04:39:42 +01:00
Peter Steinberger
128fe38996
fix: stabilize notes and reasoning replay
2026-01-11 04:37:06 +01:00
Peter Steinberger
1b6811699d
fix: clamp z.ai developer role
2026-01-11 04:28:30 +01:00
Peter Steinberger
38b06bca21
fix: mirror skills for read-only sandbox
2026-01-11 04:24:19 +01:00
Peter Steinberger
6515bf7821
fix: wrap clack notes for cleaner boxes
2026-01-11 04:23:43 +01:00
Peter Steinberger
2bf2b5d0aa
test: cover whoami command
2026-01-11 04:20:34 +01:00
Peter Steinberger
c8e94f3a0c
fix: tighten WhatsApp ack reactions and migrate config ( #629 ) (thanks @pasogott)
2026-01-11 04:11:04 +01:00
sheeek
9d894fdfdd
fix: remove any casts in backward compat code
2026-01-11 04:10:43 +01:00
sheeek
062a07704b
style: fix biome linting in ack-reaction tests
2026-01-11 04:10:43 +01:00
sheeek
dd184d33fb
feat(whatsapp): redesign ack-reaction as whatsapp-specific feature
...
- Move config from messages.ackReaction to whatsapp.ackReaction
- New structure: {emoji, direct, group} with granular control
- Support per-account overrides in whatsapp.accounts.*.ackReaction
- Add Zod schema validation for new config
- Maintain backward compatibility with old messages.ackReaction format
- Update tests to new config structure (14 tests, all passing)
- Add comprehensive documentation in docs/providers/whatsapp.md
- Timing: reactions sent immediately upon message receipt (before bot reply)
Breaking changes:
- Config moved from messages.ackReaction to whatsapp.ackReaction
- Scope values changed: 'all'/'direct'/'group-all'/'group-mentions'
→ direct: boolean + group: 'always'/'mentions'/'never'
- Old config still supported via fallback for smooth migration
2026-01-11 04:10:43 +01:00
sheeek
8eaa36ec8c
chore: fix linting issues in ack-reaction feature
...
- Remove unused mock variables in tests
- Remove unused ackReactionScope variables in simple test cases
- Fix line length for ackReactionScope declaration
- All lint checks passing (0 warnings, 0 errors)
- All tests passing (8/8)
2026-01-11 04:10:43 +01:00
sheeek
b201429d45
fix(whatsapp): ack reaction logic for group activation 'always' mode
...
- Fix bug where ack reaction was not sent when group activation is 'always'
- When requireMention=false (activation: always), always send reaction
- Add test case for activation='always' scenario
- Update inline comments for clarity
2026-01-11 04:10:43 +01:00
sheeek
b7fb62f639
feat(whatsapp): add ack reaction support after successful replies
...
- Add automatic emoji reactions on inbound WhatsApp messages
- Support all ackReactionScope modes: all, direct, group-all, group-mentions
- Reaction is sent AFTER successful reply (unlike Telegram/Discord)
- Errors are logged with proper context
- Add comprehensive test suite for ack reaction logic
Config usage:
messages:
ackReaction: "👀 "
ackReactionScope: "group-mentions" # default
Closes: WhatsApp ack-reaction feature request
2026-01-11 04:10:42 +01:00
Peter Steinberger
80da2b097e
style: format onboard providers
2026-01-11 04:08:26 +01:00
Peter Steinberger
7c133591e8
fix: improve telegram configuration safety
2026-01-11 03:57:52 +01:00
Peter Steinberger
cbb47c60b5
fix(gateway): show connect vs RPC status
2026-01-11 03:57:52 +01:00
Peter Steinberger
071bcd7ec5
fix: send heartbeat reasoning ( #694 ) (thanks @antons)
2026-01-11 03:51:51 +01:00
Peter Steinberger
ffeda4e7b7
fix: improve provider issue formatting
2026-01-11 03:51:51 +01:00
Anton Sotkov
649f4d22b2
fix: deliver reasoning alongside HEARTBEAT_OK
2026-01-11 03:51:51 +01:00
Anton Sotkov
64f66ecc25
fix: persist reasoning across session resets
2026-01-11 03:51:51 +01:00
Peter Steinberger
59ee336078
test: cover docker setup env plumbing
2026-01-11 03:45:45 +01:00
Peter Steinberger
c62e120de8
fix(status): simplify footer guidance
2026-01-11 03:44:28 +01:00
Peter Steinberger
cb5b247779
Merge pull request #703 from mteam88/openrouter-auth-config
...
Openrouter auth config (AI)
2026-01-11 02:44:24 +00:00
Peter Steinberger
4a1789e68f
fix: stabilize onboarding auth tests ( #703 ) (thanks @mteam88)
2026-01-11 03:42:27 +01:00
Matthew
35622f9665
chore: format OpenRouter auth edits
2026-01-11 03:35:45 +01:00
Matthew
2e94170f5c
CLI: reuse OpenRouter credentials
2026-01-11 03:35:45 +01:00
Matthew
e4bcfbf923
CLI: add OpenRouter auth choice
2026-01-11 03:35:45 +01:00
Peter Steinberger
ac7fcf3d5e
docs(status): make status first-step
2026-01-11 03:34:33 +01:00
Peter Steinberger
a8c6551580
fix: stabilize live probes and docs
2026-01-11 02:26:39 +00:00
Peter Steinberger
f9a6adb00a
fix(agents): enforce single-writer session files
2026-01-11 02:25:45 +00:00
Peter Steinberger
842d1854d0
fix: stabilize cli runner output
2026-01-11 02:25:45 +00:00
Peter Steinberger
d4f96cd6e2
fix: reset unsigned launchd overrides ( #695 ) (thanks @jeffersonwarrior)
2026-01-11 03:19:24 +01:00
Peter Steinberger
f310bb2777
fix: guard update spinner output ( #701 ) (thanks @bjesuiter)
2026-01-11 03:03:09 +01:00
Benjamin Jesuiter
a43d5e9a04
fix(update): use git status --porcelain for dirty check cross-platform
2026-01-11 03:00:43 +01:00