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
Peter Steinberger
05673fb6cf
test(cron): rename split suites
2026-01-14 05:40:42 +00:00
Peter Steinberger
350f4709b7
test(auto-reply): rename split suites
2026-01-14 05:40:39 +00:00
Peter Steinberger
b11eea07b0
refactor(wizard): split onboarding
2026-01-14 05:40:10 +00:00
Peter Steinberger
35cea9be25
refactor(telegram): split bot helpers
2026-01-14 05:40:07 +00:00
Peter Steinberger
3e0e608110
refactor(infra): split provider usage
2026-01-14 05:40:03 +00:00
Peter Steinberger
e2f8909982
refactor(agents): split tools + PI subscribe
2026-01-14 05:39:59 +00:00
Peter Steinberger
ac613b6632
refactor(discord): split send pipeline
2026-01-14 05:39:55 +00:00
Peter Steinberger
5323652cfd
refactor(config): split legacy handling
2026-01-14 05:39:51 +00:00
Peter Steinberger
a58ff1ac63
refactor(commands): split CLI commands
2026-01-14 05:39:47 +00:00
Peter Steinberger
2b60ee96f2
refactor(browser): split pw tools + agent routes
2026-01-14 05:39:44 +00:00
Peter Steinberger
da6f07b7c1
refactor(auto-reply): split directive handling
2026-01-14 05:39:41 +00:00
Peter Steinberger
a44f1912b3
chore(repo): drop .DS_Store
2026-01-14 01:17:56 +00:00
Peter Steinberger
bcbfb357be
refactor(src): split oversized modules
2026-01-14 01:17:56 +00:00
Peter Steinberger
b1102cedd7
fix: support non-interactive token auth
2026-01-14 00:56:34 +00:00
Peter Steinberger
4c932edabc
fix: make postinstall patcher idempotent
2026-01-13 23:12:27 +00:00
Peter Steinberger
b071f73fef
fix: resume subagent registry safely ( #831 ) (thanks @roshanasingh4)
2026-01-13 10:10:15 +00:00
Roshan Singh
714de9d996
Persist subagent registry across restarts
2026-01-13 10:00:30 +00:00
Peter Steinberger
aac3615d7a
test: fix cron delivery channel expectations
2026-01-13 09:07:13 +00:00
Peter Steinberger
7de6e925aa
chore(lint): format entry shim
2026-01-13 08:43:54 +00:00
Peter Steinberger
6fdfe8ea73
fix: finalize channels rename cleanup
2026-01-13 08:40:40 +00:00
Peter Steinberger
84bfaad6e6
fix: finish channels rename sweep
2026-01-13 08:40:40 +00:00
Peter Steinberger
fcac2464e6
refactor: remove redundant spread fallbacks
2026-01-13 08:40:39 +00:00
Peter Steinberger
993c1de361
fix: stabilize channel migration
2026-01-13 08:40:39 +00:00
Peter Steinberger
90342a4f3a
refactor!: rename chat providers to channels
2026-01-13 08:40:39 +00:00
Peter Steinberger
0cd632ba84
Merge pull request #832 from danielz1z/fix/overloaded-error-handling
...
fix: handle Anthropic overloaded_error gracefully
2026-01-13 08:33:16 +00:00
Peter Steinberger
e8779ac329
fix: handle Anthropic overloaded_error gracefully ( #832 ) (thanks @danielz1z)
2026-01-13 08:32:06 +00:00
Peter Steinberger
32d844d3b6
fix: preserve execArgv on reexec
2026-01-13 08:31:50 +00:00
danielz1z
36725ce153
fix: handle Anthropic overloaded_error gracefully
...
When Anthropic's API returns an overloaded_error (temporary capacity issue),
the raw JSON error was being sent to users instead of a friendly message.
Changes:
- Add overloaded error pattern detection
- Return user-friendly message for overloaded errors
- Classify overloaded as failover-worthy (triggers retry logic)
2026-01-13 08:18:59 +00:00
Peter Steinberger
f825dd2897
chore(lint): format live profiles test
2026-01-13 08:03:58 +00:00
Peter Steinberger
9faa95d558
fix: recover from compaction overflow
2026-01-13 08:03:11 +00:00
Peter Steinberger
3a90335b5a
chore(lint): satisfy biome checks
2026-01-13 07:53:38 +00:00
Peter Steinberger
9007920695
fix(auth): drop invalid auth profiles from order
2026-01-13 07:53:38 +00:00
Peter Steinberger
2887376646
test: stabilize gpt-5.2 tool-only live check
2026-01-13 07:51:24 +00:00
Peter Steinberger
165841ae79
fix: suppress experimental sqlite warning at startup
2026-01-13 07:27:32 +00:00
Peter Steinberger
dfbe4041f5
fix: skip Control UI asset check when UI is skipped
2026-01-13 07:27:32 +00:00
Peter Steinberger
4fd1a6dec3
fix: harden doctor install checks
2026-01-13 07:25:25 +00:00
Peter Steinberger
d5b17d344b
Merge pull request #722 from vrknetha/feat/slash-bash-command
...
feat(bash): add host-only /bash slash command
2026-01-13 07:18:35 +00:00
Peter Steinberger
ba7d12f205
refactor: centralize onboarding auth paths
2026-01-13 07:12:20 +00:00
Peter Steinberger
cb0f6cefa4
Deps: update Pi + Vitest and add Bedrock docs
2026-01-13 06:57:11 +00:00
Peter Steinberger
6db0201fcd
Merge pull request #583 from mitschabaude-bot/feat/agent-model-fallbacks
...
Config: per-agent model fallbacks
2026-01-13 06:54:00 +00:00
Peter Steinberger
3368284b2a
fix: per-agent model fallbacks ( #583 ) (thanks @mitschabaude-bot)
2026-01-13 06:50:41 +00:00
Gregor's Bot
9c0c4f50ec
Agents: test per-agent model fallbacks override
2026-01-13 06:50:20 +00:00
Gregor's Bot
6729637f61
Config: support per-agent model fallbacks
2026-01-13 06:50:20 +00:00
Peter Steinberger
18d22aa426
fix: gate xhigh by model ( #444 ) (thanks @grp06)
2026-01-13 06:48:41 +00:00
George Pickett
a3641526ab
Thinking: gate xhigh by model
2026-01-13 06:48:26 +00:00
Peter Steinberger
f50e06a1b6
test(tools): cover tool policy helpers
2026-01-13 06:32:59 +00:00
Peter Steinberger
780a43711f
feat(tools): add tool profiles and group shorthands
2026-01-13 06:30:20 +00:00
Peter Steinberger
d682b604de
fix(tools): harden tool schemas for strict providers
2026-01-13 06:30:20 +00:00
vrknetha
25a5f1cb96
Auto-reply: add host-only /bash + ! bash command
2026-01-13 11:54:34 +05:30
Peter Steinberger
bb2df13be0
Merge pull request #700 from clawdbot/shadow/compaction
...
Agents: safeguard compaction summarization
2026-01-13 05:59:15 +00:00
Peter Steinberger
5918def440
fix: honor gateway service override labels
2026-01-13 05:58:49 +00:00
Peter Steinberger
1fdd3592d3
fix: tune compaction safeguard schema ( #700 ) (thanks @thewilloftheshadow)
2026-01-13 05:58:35 +00:00
Shadow
a96d299971
Agents: safeguard compaction summarization
2026-01-13 05:55:30 +00:00
Peter Steinberger
61b7398cb7
refactor: centralize auth-choice model defaults
2026-01-13 05:25:16 +00:00
Peter Steinberger
0321d5ed74
Merge pull request #740 from jeffersonwarrior/main
...
feat: add Tailscale binary detection, custom gateway IP binding, and health probe auth fix
2026-01-13 05:22:48 +00:00
Peter Steinberger
78627ce7c2
fix: tighten custom bind probing ( #740 ) (thanks @jeffersonwarrior)
2026-01-13 05:21:59 +00:00
Jefferson Warrior
c851bdd47a
feat: add Tailscale binary detection, IP binding modes, and health probe password fix
...
This PR includes three main improvements:
1. Tailscale Binary Detection with Fallback Strategies
- Added findTailscaleBinary() with multi-strategy detection:
* PATH lookup via 'which' command
* Known macOS app path (/Applications/Tailscale.app/Contents/MacOS/Tailscale)
* find /Applications for Tailscale.app
* locate database lookup
- Added getTailscaleBinary() with caching
- Updated all Tailscale operations to use detected binary
- Added TUI warning when Tailscale binary not found for serve/funnel modes
2. Custom Gateway IP Binding with Fallback
- New bind mode "custom" allowing user-specified IP with fallback to 0.0.0.0
- Removed "tailnet" mode (folded into "auto")
- All modes now support graceful fallback: custom (if fail → 0.0.0.0), loopback (127.0.0.1 → 0.0.0.0), auto (tailnet → 0.0.0.0), lan (0.0.0.0)
- Added customBindHost config option for custom bind mode
- Added canBindTo() helper to test IP availability before binding
- Updated configure and onboarding wizards with new bind mode options
3. Health Probe Password Auth Fix
- Gateway probe now tries both new and old passwords
- Fixes issue where password change fails health check if gateway hasn't restarted yet
- Uses nextConfig password first, falls back to baseConfig password if needed
Files changed:
- src/infra/tailscale.ts: Binary detection + caching
- src/gateway/net.ts: IP binding with fallback logic
- src/config/types.ts: BridgeBindMode type + customBindHost field
- src/commands/configure.ts: Health probe dual-password try + Tailscale detection warning + bind mode UI
- src/wizard/onboarding.ts: Tailscale detection warning + bind mode UI
- src/gateway/server.ts: Use new resolveGatewayBindHost
- src/gateway/call.ts: Updated preferTailnet logic (removed "tailnet" mode)
- src/commands/onboard-types.ts: Updated GatewayBind type
- src/commands/onboard-helpers.ts: resolveControlUiLinks updated
- src/cli/*.ts: Updated bind mode casts
- src/gateway/call.test.ts: Removed "tailnet" mode test
2026-01-13 05:20:02 +00:00
Peter Steinberger
01776e0569
refactor: dedupe OAuth flow handlers
2026-01-13 05:14:05 +00:00
Peter Steinberger
8eb1c76337
fix: clean up api key validation
2026-01-13 05:12:42 +00:00
Peter Steinberger
f94ad21f1e
style: format cron cli flags
2026-01-13 05:05:39 +00:00
Peter Steinberger
8d640ccc68
Merge pull request #726 from FrieSei/feature/chutes-oauth
...
Auth: add Chutes OAuth
2026-01-13 05:02:25 +00:00
Peter Steinberger
f566e6451f
fix: harden Chutes OAuth flow ( #726 ) (thanks @FrieSei)
2026-01-13 05:01:08 +00:00
Peter Steinberger
75a7855223
feat: cron ISO at + delete-after-run
2026-01-13 04:55:48 +00:00
Friederike Seiler
3271ff1d6e
Tests: clean chutes fetch spies
2026-01-13 04:50:27 +00:00
Friederike Seiler
0efcfc0864
Chores: fix chutes oauth build
2026-01-13 04:50:27 +00:00
Friederike Seiler
0aba911912
Chores: format chutes oauth
2026-01-13 04:50:26 +00:00
Friederike Seiler
4efb5cc18e
Auth: add Chutes OAuth
2026-01-13 04:50:26 +00:00
Peter Steinberger
57db3f22a1
fix: clean lint in auth-choice + tests
2026-01-13 04:49:04 +00:00
Peter Steinberger
7c7f4d0eb7
chore(discord): restore gateway log context
2026-01-13 04:40:22 +00:00
Peter Steinberger
ccc24e2c26
chore(logging): strip redundant provider tags
2026-01-13 04:40:22 +00:00
Peter Steinberger
62bdbe1821
chore(logging): strip redundant console prefixes
2026-01-13 04:40:22 +00:00
Peter Steinberger
58d1d11762
chore(discord): trim gateway log prefixes
2026-01-13 04:40:22 +00:00
Roshan Singh
7616b02bb1
Fix tailscale allowTailscale bypass in token mode
2026-01-13 04:34:28 +00:00
Peter Steinberger
d4c205f8e1
fix: start typing on message start
2026-01-13 04:33:24 +00:00
Peter Steinberger
0ba60ff69c
Merge pull request #794 from roshanasingh4/fix/777-windows-openurl-quotes
...
Fix Antigravity OAuth login on Windows (quote URL for cmd start)
2026-01-13 04:28:11 +00:00
Peter Steinberger
755a7e1b20
feat: add configurable bootstrap truncation
2026-01-13 04:27:03 +00:00
Peter Steinberger
3061d8e057
fix: preserve Windows cmd start URL quoting ( #794 ) (thanks @roshanasingh4)
2026-01-13 04:26:43 +00:00
Peter Steinberger
ea5597b483
fix: restore implicit providers + copilot auth choice
2026-01-13 04:26:08 +00:00
Peter Steinberger
b41e75a15d
feat: cron agent binding + doctor UI refresh
2026-01-13 04:25:41 +00:00
meaningfool
bfdbaa5ab6
feat(doctor): add UI protocol freshness check
2026-01-13 04:25:41 +00:00
meaningfool
93ae3b8405
fix: sync protocol artifacts and resolve linting errors
2026-01-13 04:25:41 +00:00
meaningfool
f249a82383
fix: resolve CI failures (test timeout & formatting)
2026-01-13 04:25:41 +00:00
Roshan Singh
ea9486ae2d
Fix: quote URLs when opening browser on Windows
2026-01-13 04:23:20 +00:00
Shadow
da95b58a2a
Typing: keep indicators active during tool runs
...
Closes #450
Closes #447
2026-01-12 22:20:29 -06:00
Shadow
e15d5d0533
Cron: persist enabled=false patches
...
Closes #205
2026-01-12 22:16:17 -06:00
Peter Steinberger
1cf45f8439
Merge pull request #805 from marcmarg/fix/strip-thought-signatures
...
fix: strip thought_signature fields for cross-provider compatibility
2026-01-13 04:14:45 +00:00
Peter Steinberger
2a9ef806a0
fix: strip only msg_* thought_signature ( #805 ) (thanks @marcmarg)
2026-01-13 04:13:24 +00:00
Peter Steinberger
32115a8b98
test: expand auth fallback coverage
2026-01-13 04:12:16 +00:00
Marc
c4e8b60d2c
fix: strip thought_signature fields for cross-provider compatibility
...
Claude's extended thinking feature generates thought_signature fields
(message IDs like "msg_abc123...") in content blocks. When these are
sent to Google's Gemini API, it expects Base64-encoded bytes and
rejects Claude's format with a 400 error.
This commit adds stripThoughtSignatures() to remove these fields from
assistant message content blocks during sanitization, enabling session
histories to be shared across different providers (e.g., Claude → Gemini).
Fixes cross-provider session bug where switching from Claude-thinking
to Gemini (or vice versa) would fail with:
"Invalid value at 'thought_signature' (TYPE_BYTES), Base64 decoding failed"
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-13 04:11:02 +00:00
Shadow
c9fdd68232
Telegram: keep forum topic thread ids in replies
...
Closes #727
2026-01-12 22:07:28 -06:00
Peter Steinberger
2c2ca7f03b
fix: treat credential validation errors as auth errors ( #822 ) (thanks @sebslight)
2026-01-13 04:02:47 +00:00
Sebastian
c4014c0092
fix: treat credential validation failures as auth errors for fallback ( #761 )
2026-01-12 22:53:21 -05:00
Shadow
c08441c42c
Telegram: persist polling update offsets
...
Closes #739
2026-01-12 21:52:20 -06:00
Peter Steinberger
980f274fc9
fix: stabilize docs and tests after system event timestamps
2026-01-13 03:51:34 +00:00
Shadow
9f1f65f0e3
Discord: dedupe listener registration on reload
...
Closes #744
2026-01-12 21:41:59 -06:00
Peter Steinberger
cddd836909
Merge pull request #821 from gumadeiras/fix-bindings-telegram-webhook
...
Telegram: fix webhook multi-account routing (respect bindings.accountId)
2026-01-13 03:41:17 +00:00
Peter Steinberger
d45915d39f
fix: refine group intro prompt guidance
2026-01-13 03:40:27 +00:00
Shadow
fcc814accd
System events: add local timestamps in prompt injection
...
Closes #245
2026-01-12 21:38:56 -06:00
Peter Steinberger
66ad8a9289
fix: apply lint fixes
2026-01-13 03:36:53 +00:00
Peter Steinberger
df6634727e
fix: refine synthetic provider + minimax probes
2026-01-13 03:36:53 +00:00
Travis Hinton
8b5cd97ceb
Add Synthetic provider support
2026-01-13 03:36:53 +00:00
Shadow
25297ce3f5
Cron: accept jobId in gateway cron params
...
Closes #252
2026-01-12 21:35:43 -06:00
Gustavo Madeira Santana
3800fea962
Improve webhook test config verification
...
Refactors tests to use a shared config object and adds stricter assertions to verify that the config is passed correctly to createTelegramBot. Ensures the bindings property is checked in the test expectations.
2026-01-13 03:34:32 +00:00
Gustavo Madeira Santana
ecb91bbb1a
Add accountId and config support to Telegram webhook
...
The Telegram webhook and monitor now accept and pass through accountId and config parameters, enabling routing and configuration per Telegram account. Tests have been updated to verify correct bot instantiation and DM routing based on accountId bindings.
2026-01-13 03:34:32 +00:00
Shadow
ab993904d7
Models: normalize Gemini 3 ids in runtime selection
...
Closes #795
2026-01-12 21:32:53 -06:00
Shadow
2467a103b2
TUI: keep streamed text when final output is empty
...
Closes #747
2026-01-12 21:29:15 -06:00
Shadow
68569afb4b
Slack: accept slash command names with or without leading slash
...
Closes #798
2026-01-12 21:27:04 -06:00
Peter Steinberger
da0a062fa7
fix: memory search remote overrides ( #819 ) (thanks @mukhtharcm)
2026-01-13 03:11:03 +00:00
Muhammed Mukhthar CM
ba316a10cc
feat: add remote config overrides to memorySearch
2026-01-13 03:02:43 +00:00
Peter Steinberger
c1f82d9ec1
refactor: dedupe enforceFinalTag resolution
2026-01-13 02:38:07 +00:00
Peter Steinberger
46a694bbc7
fix: preserve explicit maxChars=0 ( #796 ) (thanks @gabriel-trigo)
2026-01-13 02:33:38 +00:00
Gabriel Trigo
79a6506593
fix(browser): limit ai snapshot size
...
test(browser): cover ai snapshot limit
2026-01-13 02:33:38 +00:00
Peter Steinberger
8edf2146ae
fix: cleanup stale resume cli processes
2026-01-13 02:21:20 +00:00
Peter Steinberger
958a4fd414
Merge pull request #782 from AbhisekBasu1/fix/antigravity-opus-tools-not-working
...
Fix - Opus on Antigravity Errors
2026-01-13 01:59:52 +00:00
Peter Steinberger
a27efd57bd
fix: drop null-only union variants ( #782 ) (thanks @AbhisekBasu1)
...
Co-authored-by: Abhi <AbhisekBasu1@users.noreply.github.com>
2026-01-13 01:58:30 +00:00
Peter Steinberger
4f1c6e76fd
fix: gate inline /status stripping
2026-01-13 01:53:40 +00:00
Peter Steinberger
2111d0c653
test: force real config module for lan onboarding test ( #766 )
2026-01-13 01:53:40 +00:00
Peter Steinberger
642e6acf49
test: unmock config for lan onboarding auto-token ( #766 )
2026-01-13 01:53:40 +00:00
Peter Steinberger
88716d8d2a
fix: harden inline /status stripping ( #766 )
2026-01-13 01:53:40 +00:00
Peter Steinberger
c2e37c78ff
fix: trim sender ids before auth fallback
2026-01-13 01:53:40 +00:00
Abhi
ba1d80bd00
formatting fix
2026-01-13 01:48:56 +00:00
Abhi
4dfcd56893
Fix pi-tools test ordering and clean-for-gemini handling - which fixes the 400 error people are experiencing trying to use antigravity on opus
2026-01-13 01:48:34 +00:00
Peter Steinberger
c012019a8a
fix: enforce reasoning tags on fallback providers ( #810 ) (thanks @mcinteerj)
2026-01-13 01:46:21 +00:00
Keith the Silly Goose
7896b30489
fix(auto-reply): enforce reasoning tags on fallback providers
2026-01-13 01:40:55 +00:00
Peter Steinberger
ffc465394e
fix: enforce message context isolation
2026-01-13 01:19:14 +00:00
Peter Steinberger
0edbdb1948
fix: downgrade Gemini tool history
2026-01-13 01:19:13 +00:00
hsrvc
5dc187f00c
fix: accept Claude/Gemini tool param aliases
2026-01-13 01:19:13 +00:00
Peter Steinberger
231d2d5fdf
fix(config): require doctor for invalid configs ( #764 — thanks @mukhtharcm)
2026-01-13 01:18:18 +00:00
Muhammed Mukhthar CM
20ba8d4891
fix(config): preserve config data when validation fails
...
When readConfigFileSnapshot encounters validation errors, it now:
1. Returns the resolved config data instead of empty object
2. Uses passthrough() on main schema to preserve unknown fields
This prevents config loss when:
- User has custom/unknown fields
- Legacy config issues are detected but config is otherwise valid
- Zod schema does not recognize newer fields
Fixes config being overwritten with empty object on validation failure.
2026-01-13 01:16:13 +00:00
Peter Steinberger
dd8f7552ad
refactor: reuse dispatcher helper for native commands
2026-01-13 01:07:59 +00:00
Rony Kelner
07bdb8af7e
fix: pass --non-interactive to doctor during update
2026-01-13 00:57:18 +00:00
Peter Steinberger
6a48688c09
fix: stream native slash tool replies
2026-01-13 00:53:30 +00:00
Peter Steinberger
c03a745f61
test: expand Minimax XML strip coverage
2026-01-13 00:43:59 +00:00
Peter Steinberger
48fdf3775d
test: cover user turn merging
2026-01-13 00:42:15 +00:00
Peter Steinberger
e2ea20f862
fix: gate minimax XML stripping ( #809 ) (thanks @latitudeki5223)
2026-01-13 00:36:39 +00:00
L36 Server
1eb924739b
style: fix import order in pi-embedded-utils.test.ts
2026-01-13 00:34:01 +00:00
L36 Server
350f956f2c
fix(minimax): strip tool invocation XML from assistant text
2026-01-13 00:34:01 +00:00
Peter Steinberger
4f3bedfdb7
fix: align discord autoThread config types
2026-01-13 00:22:42 +00:00
Peter Steinberger
6f75feaeb8
refactor: reuse model selection assertions
2026-01-13 00:20:08 +00:00
Peter Steinberger
a4bd960880
refactor: streamline thread reply planning
2026-01-13 00:15:29 +00:00
Peter Steinberger
3636a2bf51
refactor: unify message tool + CLI
2026-01-13 00:12:57 +00:00
Peter Steinberger
ce23c70855
fix: validate Anthropic turn order ( #804 ) (thanks @ThomsenDrake)
2026-01-12 23:43:25 +00:00
Drake Thomsen
c5fa757ef6
fix(agents): prevent Anthropic 400 'Incorrect role information' error
...
Add validateAnthropicTurns() to merge consecutive user messages that can
occur when steering messages are injected during streaming. This prevents
the API from rejecting requests due to improper role alternation.
Changes:
- Add validateAnthropicTurns() function in pi-embedded-helpers.ts
- Integrate validation into sanitization pipeline in pi-embedded-runner.ts
- Add user-friendly error message for role ordering errors
- Add comprehensive tests for the new validation function
2026-01-12 23:42:13 +00:00
Peter Steinberger
bb9a9633a8
fix: align reply threading refs
2026-01-12 23:41:40 +00:00
Peter Steinberger
ca98f87b2f
chore: reinforce memory recall prompts
2026-01-12 23:29:56 +00:00
Peter Steinberger
df64771ecf
test: cover fuzzy model selection
2026-01-12 23:16:54 +00:00
Peter Steinberger
cbe11e3de0
fix: address lint warnings
2026-01-12 23:13:40 +00:00
Peter Steinberger
daa753112c
fix: unblock auto-reply lint/typecheck
2026-01-12 23:13:39 +00:00
David Guttman
2e654e8d63
Fix Discord autoThread thread-only replies ( #807 )
...
Co-authored-by: Shadow <shadow@clawd.bot>
2026-01-12 17:11:48 -06:00
Peter Steinberger
cf92099d40
test(auto-reply): fix heartbeat typing block reply assertions
2026-01-12 23:01:53 +00:00
Peter Steinberger
a8680f9a09
fix(auto-reply): fix streaming block reply media handling
2026-01-12 22:59:36 +00:00
Peter Steinberger
2e08a868a7
style: format native commands bits
2026-01-12 22:59:36 +00:00
Peter Steinberger
2785009c6f
fix(config): resolve native commands schemas
2026-01-12 22:59:36 +00:00
Peter Steinberger
73d9469bf8
fix(telegram): tolerate missing native command APIs
2026-01-12 22:59:36 +00:00
Peter Steinberger
72100ba3ab
refactor(sandbox): drop legacy memory shorthand
2026-01-12 22:59:36 +00:00
Peter Steinberger
ec5099db89
fix: pick best fuzzy model match
2026-01-12 22:59:35 +00:00
Peter Steinberger
209380edf8
Merge pull request #801 from mcinteerj/fix/restore-reasoning-tag-check
...
fix(agent): restore reasoning tag enforcement for non-ollama providers
2026-01-12 22:59:13 +00:00
Peter Steinberger
cf8251bb81
test: cover typing signals from block and tool streams
2026-01-12 22:55:17 +00:00
Peter Steinberger
fd768334a9
refactor: fast-lane directives helpers
2026-01-12 22:34:13 +00:00
Peter Steinberger
27d940f5b6
refactor: reuse streaming text normalizer across callbacks
2026-01-12 22:27:56 +00:00
Peter Steinberger
7ba72aeb6c
fix: make pw download tests platform-safe
2026-01-12 22:27:19 +00:00
Peter Steinberger
9d5bf38416
style(telegram): format bot.ts
2026-01-12 22:19:02 +00:00
Peter Steinberger
e0c1f2fdc0
test(agents): avoid Copilot token fetch in image-tool tests
2026-01-12 22:19:02 +00:00
Peter Steinberger
08fdac0561
fix(telegram): guard setMyCommands in native commands
2026-01-12 22:19:02 +00:00
Peter Steinberger
d3eeddfc2f
chore: fix lint after rebase
2026-01-12 22:19:02 +00:00
Peter Steinberger
9da97d1a41
test(browser): expand scrollintoview coverage
2026-01-12 22:19:02 +00:00
Peter Steinberger
29b7b2068a
refactor: centralize streaming text normalization
2026-01-12 22:17:14 +00:00
Peter Steinberger
f4ab057807
fix: start typing on partial deltas
2026-01-12 22:16:29 +00:00
Peter Steinberger
f13db1c836
test: guard telegram native commands when mock lacks .command
2026-01-12 22:12:16 +00:00
Peter Steinberger
59063a7c15
test: skip setMyCommands when API mock lacks it
2026-01-12 22:08:53 +00:00
Peter Steinberger
5bc4971432
chore: fix lint warnings
2026-01-12 22:07:39 +00:00
Peter Steinberger
59c8d2d17f
docs: clarify sandbox bind mounts ( #790 )
2026-01-12 22:06:35 +00:00
Peter Steinberger
21405b0dfc
fix(discord): rebalance reasoning italics
2026-01-12 22:01:48 +00:00
Peter Steinberger
256304037e
fix: keep Claude file_path aliases validated
2026-01-12 22:00:08 +00:00
Peter Steinberger
bbc34215a2
fix: land sandbox binds ( #790 ) (thanks @akonyer)
2026-01-12 21:58:16 +00:00
Aaron Konyer
583fc4fb11
test(sandbox): add coverage for binds -v flag emission
2026-01-12 21:57:51 +00:00
Aaron Konyer
0b2b8c7c52
Add docker bind mounds for sandboxing
2026-01-12 21:57:51 +00:00
Peter Steinberger
5d83be76c9
test: cover mixed directive fast-lane
2026-01-12 21:57:10 +00:00
Peter Steinberger
fcaeee7073
test(browser): cover scrollintoview
2026-01-12 21:56:27 +00:00
Peter Steinberger
6857f16609
feat(browser): add scrollintoview action
2026-01-12 21:56:27 +00:00
Peter Steinberger
2faf7cea93
feat(sandbox): add tool-policy groups
2026-01-12 21:51:49 +00:00
Peter Steinberger
26d5cca97c
feat: auto native commands defaults
2026-01-12 21:49:44 +00:00
Peter Steinberger
99fea64823
fix: fast-lane directives bypass queue dedupe
2026-01-12 21:44:19 +00:00
Peter Steinberger
42c17adb5e
feat: restore voice-call plugin parity
2026-01-12 21:44:19 +00:00
Zach Knickerbocker
3467b0ba07
Discord: add allowBots config option ( #802 )
...
Co-authored-by: Shadow <shadow@clawd.bot>
2026-01-12 15:30:05 -06:00
Peter Steinberger
490cb834e5
style: italicize reasoning output
2026-01-12 21:24:36 +00:00
Peter Steinberger
cd12ad8aab
fix(image): accept @-prefixed file paths
2026-01-12 20:53:16 +00:00
Jake
eceb41f6f7
fix(agent): restore reasoning tag enforcement for non-ollama providers
...
This restores the fix from PR #754 which was accidentally reverted in bf11a42c3 .
2026-01-13 09:47:04 +13:00
Peter Steinberger
e961e02f71
fix(gateway): quiet loopback ws closes
2026-01-12 20:38:34 +00:00
Peter Steinberger
36a02b3e67
fix(image): route MiniMax vision to VLM
2026-01-12 20:38:34 +00:00
David Guttman
b73042500e
Discord: per-channel autoThread ( #800 )
...
Co-authored-by: Shadow <shadow@clawd.bot>
2026-01-12 14:33:07 -06:00
Peter Steinberger
f839d949b2
test(browser): cover downloads + responsebody
2026-01-12 19:41:12 +00:00
Peter Steinberger
d4f7dc067e
feat(browser): add downloads + response bodies
2026-01-12 19:41:12 +00:00
Peter Steinberger
ddd4b55cf6
fix: prevent onboarding TUI auto-delivery ( #791 ) (thanks @roshanasingh4)
2026-01-12 19:38:52 +00:00
Roshan Singh
298c6eea1f
Fix: prevent onboarding TUI auto-delivery
2026-01-12 19:31:04 +00:00
Peter Steinberger
55aeb8a0d3
fix(image): drop temperature for OpenAI
2026-01-12 19:09:15 +00:00
Peter Steinberger
86ea00dc21
fix(tools): accept legacy bash tool calls
2026-01-12 19:09:15 +00:00
Peter Steinberger
a0a7e74a62
fix(models): preserve implicit vision models
2026-01-12 19:09:15 +00:00
Peter Steinberger
bb7397c636
feat: add dashboard command
2026-01-12 19:08:29 +00:00
Peter Steinberger
7dc44b04c1
fix: close memory index and refresh protocol outputs
2026-01-12 18:49:24 +00:00
Peter Steinberger
45232137a2
fix(logging): honor silent console level
2026-01-12 18:46:40 +00:00
Peter Steinberger
b1c3e38df0
refactor(models): share implicit providers
2026-01-12 18:46:40 +00:00
Peter Steinberger
0be62c3542
fix(image): fail over on empty output
2026-01-12 18:46:16 +00:00
Peter Steinberger
523f91758d
test(browser): extend automation coverage
2026-01-12 18:42:46 +00:00
Peter Steinberger
ffbcd83d1e
chore: log elevated and reasoning toggles
2026-01-12 18:37:44 +00:00
Peter Steinberger
1baf9f6a83
fix(image): normalize mime type handling
2026-01-12 18:24:11 +00:00
Peter Steinberger
77b20377cc
fix: stabilize session tools and tests
2026-01-12 18:21:20 +00:00
Peter Steinberger
3ffb9a3b5e
fix: keep session sanitizer stable
2026-01-12 18:19:30 +00:00
Peter Steinberger
29807119d5
chore: format tool guard files
2026-01-12 18:19:30 +00:00
Peter Steinberger
b88ea39b83
fix: add subagent default model typing
2026-01-12 18:18:15 +00:00
Peter Steinberger
0a2dcd844b
fix(image): support data URLs
2026-01-12 18:17:43 +00:00
Peter Steinberger
2ed95634fe
fix: relax image tool agentDir guard
2026-01-12 18:12:51 +00:00
Peter Steinberger
7b93356fb7
feat: subagent model defaults
2026-01-12 18:08:30 +00:00
Peter Steinberger
17ff25bd20
fix(sandbox): always allow image tool
2026-01-12 18:07:34 +00:00
Peter Steinberger
d24de1ec3b
feat(sandbox): allow image tool
2026-01-12 17:56:51 +00:00
Peter Steinberger
44e1f271c8
fix: keep image sanitizer scoped
2026-01-12 17:55:45 +00:00
Peter Steinberger
8ff09f8337
feat(image): auto-pair image model
2026-01-12 17:50:47 +00:00
Peter Steinberger
e91aa0657e
fix: add copilot tests and lint fixes
2026-01-12 17:48:08 +00:00
Ayaan Zaidi
14801b46fc
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
35bbc2ba87
feat(cli): expand browser commands
2026-01-12 17:32:44 +00:00
Peter Steinberger
cf78d28d74
test(browser): add regression coverage
2026-01-12 17:32:44 +00:00
Peter Steinberger
eeca541dde
feat(browser): expand browser control surface
2026-01-12 17:32:44 +00:00
Ayaan Zaidi
4bba49770d
fix: clear gateway auth on off selection
2026-01-12 22:59:37 +05:30
Peter Steinberger
f5d5661adf
fix: guard session tool results
2026-01-12 17:28:46 +00:00
Peter Steinberger
f83fb70360
fix: keep main agent in list output
2026-01-12 17:24:03 +00:00
Peter Steinberger
355c13564c
fix: restore heartbeat defaults and model listing
2026-01-12 17:17:54 +00:00
Peter Steinberger
f1dd59bf82
test: update heartbeat and agent list thresholds
2026-01-12 17:14:04 +00:00
Peter Steinberger
fd1e959c2d
fix: clean up models-config provider normalization
2026-01-12 17:14:04 +00:00
Peter Steinberger
05ac67c520
refactor: split models-config provider helpers
2026-01-12 17:05:53 +00:00
Peter Steinberger
f5ee2b3a4f
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
8afdf75e2b
fix: honor copilot config and profiles ( #705 ) (thanks @TAGOOZ)
2026-01-12 16:55:47 +00:00
Peter Steinberger
5a3eb5ad62
test: cover models.json apiKey fill
2026-01-12 16:52:43 +00:00
Peter Steinberger
79beb20ba2
fix: make models.json generation fill apiKey
2026-01-12 16:52:43 +00:00
Mustafa Tag Eldeen
3da1afed68
feat: add GitHub Copilot provider
...
Copilot device login + onboarding option; model list auth detection.
2026-01-12 16:52:15 +00:00
Ayaan Zaidi
adaa30c73a
test(telegram): cover General topic typing fallback
2026-01-12 22:03:42 +05:30
Azade
ff292e67ce
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
bf11a42c37
feat: add memory vector search
2026-01-12 11:23:44 +00:00
Peter Steinberger
8049f33435
chore: sanitize onboarding api keys
2026-01-12 11:18:31 +00:00
Peter Steinberger
115591c5b6
feat: add cron agent binding
2026-01-12 11:07:38 +00:00
Peter Steinberger
a3938d62f6
chore: raise heartbeat ack window
2026-01-12 11:06:46 +00:00
Peter Steinberger
3c7a8579ad
test: cover minimax env provider injection
2026-01-12 11:05:08 +00:00
Peter Steinberger
f5a9421b10
fix: auto-add minimax provider from auth
2026-01-12 11:05:08 +00:00
Peter Steinberger
562d0e3b5f
fix: avoid duplicate status replies
2026-01-12 11:04:03 +00:00
Peter Steinberger
bf7e813573
chore: release 2026.1.11-4
2026-01-12 10:52:34 +00:00
Peter Steinberger
5a29ec78ca
chore: release 2026.1.11-3
2026-01-12 10:35:50 +00:00
Peter Steinberger
8fb655198f
test: skip lan auto-token on windows
2026-01-12 09:20:37 +00:00
Peter Steinberger
a4308a2428
chore: tidy changelog and format
2026-01-12 09:14:44 +00:00
Peter Steinberger
f102d1bb9d
fix: add ws handshake user agent
2026-01-12 09:08:07 +00:00
Peter Steinberger
d8feadb57a
fix: strip gemini cli tool ids ( #756 )
2026-01-12 09:01:19 +00:00
Peter Steinberger
1050126132
fix: default groupPolicy to open for discord/telegram
2026-01-12 08:55:02 +00:00
Peter Steinberger
9554292083
fix: default groupPolicy to open
2026-01-12 08:55:02 +00:00
Peter Steinberger
a8f67f0be6
fix: only strip inline /status for allowlisted senders
2026-01-12 08:55:02 +00:00
Peter Steinberger
fadad6e061
feat: role snapshot refs for browser
2026-01-12 08:55:02 +00:00
Peter Steinberger
6711eaf8a5
fix: finalize tool param aliasing ( #768 ) (thanks @hsrvc)
2026-01-12 08:49:11 +00:00
hsrvc
71fdc829e6
Agents: add Claude Code parameter aliasing for read/write/edit tools
2026-01-12 08:49:11 +00:00
Peter Steinberger
19c96e8c0b
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
98e75fce17
test: align group policy defaults
2026-01-12 08:45:57 +00:00
Peter Steinberger
252841ab13
fix: enforce final tag gating ( #754 ) (thanks @mcinteerj)
2026-01-12 08:45:23 +00:00
Keith the Silly Goose
a7cb270999
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
efdf874407
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
7db1cbe178
fix: improve daemon node selection
2026-01-12 08:33:32 +00:00
Peter Steinberger
006e1352d8
fix: harden msteams group access
2026-01-12 08:32:08 +00:00
Peter Steinberger
4d075a703e
fix: add ws handshake context
2026-01-12 08:30:08 +00:00
Peter Steinberger
842e91d019
fix: default groupPolicy to allowlist
2026-01-12 08:22:01 +00:00
Peter Steinberger
d0ba56c5ac
fix: set default model after auth choice
2026-01-12 08:04:32 +00:00
Peter Steinberger
b8f8e7f4dd
fix: correct MiniMax Lightning hint
2026-01-12 08:04:32 +00:00
Peter Steinberger
3fba8ceb97
test(model): cover provider-less id fuzzy match
2026-01-12 08:02:55 +00:00
Peter Steinberger
60823fd9bd
feat(model): fuzzy /model matching
2026-01-12 07:57:53 +00:00
Peter Steinberger
e79cf5a8b1
feat: improve onboarding auth prompts
2026-01-12 07:47:15 +00:00
Peter Steinberger
018f7aa4df
fix: streamline configure section flow
2026-01-12 07:47:15 +00:00
Peter Steinberger
e1150f1b93
test: expand memory flush coverage
2026-01-12 07:42:03 +00:00
Peter Steinberger
d17fc7e448
fix(auto-reply): preserve inline /status text for unauthorized senders
2026-01-12 07:42:03 +00:00
Peter Steinberger
484a33f348
fix: cap ai snapshots for tool calls ( #763 ) (thanks @thesash)
2026-01-12 07:40:34 +00:00
Sash Catanzarite
d5d8c01dc7
Browser: cap AI snapshots to avoid context overflow
2026-01-12 07:40:34 +00:00
Peter Steinberger
097e66391f
fix(auto-reply): show config models in /model
2026-01-12 07:31:20 +00:00
Peter Steinberger
7466575120
fix: ignore inline status directives
2026-01-12 07:13:08 +00:00
Peter Steinberger
e19a5dc2b1
feat(control-ui): add model presets
2026-01-12 07:09:58 +00:00
Peter Steinberger
f00667ea25
fix: clean up lint + guardCancel typing
2026-01-12 07:07:27 +00:00
Peter Steinberger
1850013cae
fix: modernize live tests and gemini ids
2026-01-12 07:05:33 +00:00
Peter Steinberger
496bad8b98
feat: add Moonshot auth choice
2026-01-12 06:48:06 +00:00
Peter Steinberger
1a89a5dd14
test(model): expand /model picker coverage
2026-01-12 06:34:33 +00:00
Peter Steinberger
5b44825cb3
fix: skip memory flush on read-only workspace
2026-01-12 06:33:27 +00:00
Peter Steinberger
1ffb0fe787
fix: handle inline status for allowlisted senders
2026-01-12 06:33:27 +00:00
Peter Steinberger
46a6d79784
fix: sender fallback for command auth ( #755 ) (thanks @juanpablodlc)
2026-01-12 06:28:53 +00:00
juanpablodlc
20d606c4c4
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
e388334127
test: cover pi session jsonl ordering
2026-01-12 06:19:58 +00:00
Peter Steinberger
c9f2358769
test: clean unused var
2026-01-12 06:14:45 +00:00
Peter Steinberger
4044957819
test: fix lint warning
2026-01-12 06:14:45 +00:00
Peter Steinberger
b185d130ba
test: cover inline slash command fast-path
2026-01-12 06:14:45 +00:00
Peter Steinberger
2bed0d78af
test: stabilize lan auto-token onboarding
2026-01-12 06:13:31 +00:00
Peter Steinberger
0baf08fda1
fix: dedupe minimax non-interactive auth
2026-01-12 06:13:31 +00:00
Peter Steinberger
d0861670bd
feat: simplify minimax auth choice
2026-01-12 06:13:00 +00:00
Peter Steinberger
744fadbded
feat: loop configure section picker
2026-01-12 06:13:00 +00:00
Peter Steinberger
0f257f792a
fix: fast-path slash commands
2026-01-12 06:10:17 +00:00
Peter Steinberger
2da2057a37
feat(model): add /model picker
2026-01-12 06:02:39 +00:00
Peter Steinberger
7dbb21be8e
feat: add pre-compaction memory flush
2026-01-12 05:29:18 +00:00
Peter Steinberger
cc8a2457c0
fix: persist first Pi user message in JSONL
2026-01-12 05:18:05 +00:00
Peter Steinberger
f5c851e11e
fix(models): default MiniMax to /anthropic
2026-01-12 05:12:07 +00:00
Peter Steinberger
873cee6947
feat: streamline wizard selection prompts
2026-01-12 05:08:07 +00:00
Peter Steinberger
51d5f16770
refactor: remove mac attach-only setting
2026-01-12 04:58:38 +00:00
Peter Steinberger
8e1cdf3a1f
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
87f270df23
test: respect openai max tokens floor
2026-01-12 04:04:04 +00:00
Peter Steinberger
8b4bdaa8a4
feat: add apply_patch tool (exec-gated)
2026-01-12 03:42:56 +00:00
Peter Steinberger
6a012fd625
refactor: reuse resolved think default
2026-01-12 03:00:30 +00:00
Peter Steinberger
1fa7a587d6
fix: flush block reply buffers on tool boundaries ( #750 ) (thanks @sebslight)
2026-01-12 02:54:57 +00:00
The Admiral
c64bcd047b
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
d4d15c8a71
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
17e6354383
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
99877e8e63
fix: align /think default with model reasoning
2026-01-12 02:50:13 +00:00
Peter Steinberger
98337a14b3
fix: rename bash tool to exec ( #748 ) (thanks @myfunc)
2026-01-12 02:49:55 +00:00
Peter Steinberger
76c8fc8697
fix(sandbox): canonicalize agent main alias
2026-01-12 02:23:02 +00:00
myfunc
b33bd6aaeb
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
4ced7b886e
docs: fix browser CLI docs link
2026-01-12 02:09:10 +00:00
Peter Steinberger
2941a7002d
fix(subagents): align wait timeout with run timeout
2026-01-12 02:06:43 +00:00
Peter Steinberger
b518fb29c6
test(gateway): cover main alias resolve
2026-01-12 02:06:43 +00:00
Peter Steinberger
f504bfdde8
refactor(gateway): use canonical session store keys
2026-01-12 02:06:43 +00:00
Peter Steinberger
c1236e86fa
test: fix windows nix config path assertion
2026-01-12 02:05:38 +00:00
Peter Steinberger
e3960cde3f
test: add normalizeConfigPaths unit test
2026-01-12 01:55:55 +00:00
Peter Steinberger
ecc6243edc
test: cover tilde path expansion
2026-01-12 01:53:42 +00:00
Peter Steinberger
328d47f1df
fix: normalize ~ in path config
2026-01-12 01:53:42 +00:00
Peter Steinberger
28f97e6152
refactor(sandbox): normalize main session aliases
2026-01-12 01:37:56 +00:00
Peter Steinberger
23a0bf2abe
fix(plugins): extract archives without system tar
2026-01-12 01:36:18 +00:00
Peter Steinberger
07b93e1d26
test: run npm pack via npm-cli.js
2026-01-12 01:31:26 +00:00
Peter Steinberger
5bdb9c0e99
style: format plugin install test
2026-01-12 01:27:01 +00:00
Peter Steinberger
6947ab18dc
fix: load plugin packages from config dirs
2026-01-12 01:25:56 +00:00
Peter Steinberger
177ad3f06d
test: pack plugin archives via npm
2026-01-12 01:25:40 +00:00
Peter Steinberger
58a12a757e
fix(sandbox): avoid sandboxing main DM sessions
2026-01-12 01:24:44 +00:00
Peter Steinberger
f13ae50ff8
test: plugin install + docker e2e
2026-01-12 01:16:42 +00:00
Peter Steinberger
2f4a248314
feat: plugin system + voice-call
2026-01-12 01:16:39 +00:00
Peter Steinberger
9877733748
fix(gateway): canonicalize main session aliases
2026-01-12 01:05:43 +00:00
user
d4e9f23ee9
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
7d6f17d77f
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
0ed7ea698a
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
74526645eb
test: cover unset docker env vars
2026-01-12 00:46:55 +00:00
Peter Steinberger
cb095c8606
test: fix includes tests on windows
2026-01-12 00:39:14 +00:00
Peter Steinberger
9c8967ef5d
style: biome fixes
2026-01-12 00:32:47 +00:00
Peter Steinberger
720b9dd116
fix: make codex keychain platform-aware
2026-01-12 00:32:47 +00:00
Peter Steinberger
9f9f6b75e7
test: expand include coverage
2026-01-12 00:30:26 +00:00
Peter Steinberger
26cbbafc86
fix: skip pnpm patch fallback
2026-01-12 00:28:34 +00:00
Peter Steinberger
67743325ee
fix: reset session after compaction overflow
2026-01-12 00:28:16 +00:00
Peter Steinberger
32df2ef7bd
fix: stabilize invalid-connect handshake response
2026-01-12 00:19:47 +00:00
Peter Steinberger
e3e3498a4b
fix: guard config includes ( #731 ) (thanks @pasogott)
2026-01-12 00:12:03 +00:00
sheeek
53d3134fe8
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
e6400b0b0f
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
15d286b617
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
4b51c96e4e
fix: apply model extra params without overwriting stream ( #732 ) (thanks @peschee)
2026-01-12 00:03:48 +00:00
Peter Siska
d9960d83c1
style: fix formatting (biome)
2026-01-12 00:03:25 +00:00
Peter Siska
32affaee02
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
60430fcd2e
chore: harden installer and add smoke ci
2026-01-12 00:00:54 +00:00
Peter Steinberger
55e55c8825
fix: preserve handshake close code and test truncation
2026-01-11 23:57:37 +00:00
Peter Steinberger
146f7ab433
fix: surface handshake reasons
2026-01-11 23:46:20 +00:00
Peter Steinberger
1f95d7fc8b
fix: read codex keychain credentials
2026-01-11 23:39:10 +00:00
Peter Steinberger
3a8bfc0a5d
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
26cc2bd384
fix: land PR #733 (thanks @AbhisekBasu1)
2026-01-11 23:37:44 +00:00
Peter Steinberger
248c731e78
test: expand voice-call coverage
2026-01-11 23:35:47 +00:00
Peter Steinberger
4181e72977
fix: strip markup heartbeat acks
2026-01-11 23:26:51 +00:00
Peter Steinberger
367baaca20
feat: implement voice-call plugin
2026-01-11 23:23:14 +00:00
Ayaan Zaidi
f082f1e06e
fix: add discord channel actions
2026-01-11 22:32:17 +05:30
Ayaan Zaidi
0d9a1009ff
fix: format discord parentId
2026-01-11 22:28:05 +05:30
Ayaan Zaidi
33aaccd1c3
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
a4385dc920
fix: skip dm history limit for non-dm sessions
2026-01-11 22:18:15 +05:30
Nicholas Spisak
d63eae528c
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
68f6f3f0bd
fix: normalize telegram command mentions
2026-01-11 21:06:04 +05:30
Marc Terns
23717c5036
test: add comprehensive per-DM override tests for all providers
2026-01-11 08:55:32 -06:00
Marc Terns
54abf4b0d7
feat: add per-DM history limit overrides
2026-01-11 08:53:50 -06:00
Marc Terns
ab9ea827a4
refactor: move dmHistoryLimit to provider-level config
2026-01-11 08:38:19 -06:00
Marc Terns
a005a97fef
feat: add configurable DM history limit
2026-01-11 08:21:14 -06:00
Peter Steinberger
933c157092
test: add plugin docker e2e
2026-01-11 12:21:45 +00:00
Peter Steinberger
cf0c72a557
feat: add plugin architecture
2026-01-11 12:11:12 +00:00
Peter Steinberger
7acd26a2fc
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
23eec7d841
fix: update heartbeat prompt
2026-01-11 11:35:52 +00:00
Peter Steinberger
a3747b1ee3
fix: add compaction headroom for memory writes
2026-01-11 11:25:15 +00:00
Peter Steinberger
96e4fdb443
test: skip codex refresh token reuse
2026-01-11 11:24:25 +00:00
Peter Steinberger
6b46217d19
fix: route subagent transcripts and keep tool action enums ( #708 ) (thanks @xMikeMickelson)
2026-01-11 11:19:38 +00:00
user
dc3c733612
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
580791088c
test: cover messaging tool error fallback ( #717 )
2026-01-11 11:10:03 +00:00
Chris Taylor
fb1fc5feee
fix(message-tool): strip reply/media tags from content in send/thread-reply actions
2026-01-11 11:04:07 +00:00
Chris Taylor
3da3e201de
Agents: harden message tool sends
2026-01-11 11:04:07 +00:00
Peter Steinberger
2ebad5af1c
test: cover cron cli model overrides
2026-01-11 10:56:46 +00:00
Peter Steinberger
0590365683
style: format cleanup commands
2026-01-11 10:54:33 +00:00
Peter Steinberger
8e3f7c45d2
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
a8a4993ffd
fix: trim cron model overrides and doc guidance ( #711 ) (thanks @mjrussell)
2026-01-11 10:52:40 +00:00
Matthew Russell
314e075df2
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
0ef07bc142
test: extend discord tool-result timeout
2026-01-11 10:48:49 +00:00
Peter Steinberger
4a166cf227
fix: add update env regression test ( #713 ) (thanks @danielz1z)
2026-01-11 10:48:46 +00:00
danielz1z
4570e1db7d
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
11a3b5aac9
style: biome fixes
2026-01-11 10:35:16 +00:00
Peter Steinberger
11c8db14a1
feat: add reset/uninstall commands
2026-01-11 10:23:52 +00:00
Peter Steinberger
323200b551
test(live): harden gateway probes
2026-01-11 04:46:30 +00:00
Peter Steinberger
dbe156e881
fix(agents): sanitize transcripts for strict tool APIs
2026-01-11 04:46:18 +00:00
Peter Steinberger
f00038b383
fix(testing): stabilize live model runs
2026-01-11 04:22:35 +00:00
Peter Steinberger
343b6ac31b
feat: add onboard reset option
2026-01-11 05:04:36 +01:00
Peter Steinberger
9046296ed3
fix: clarify sub-agent sandbox limits
2026-01-11 05:04:14 +01:00
Peter Steinberger
b4e9a0c975
style: add blank line after note imports
2026-01-11 05:01:50 +01:00
Peter Steinberger
71791d5a6a
fix: restore ZAI provider preference
2026-01-11 04:58:37 +01:00
Peter Steinberger
7acdaad04e
style: fix note import spacing
2026-01-11 04:54:19 +01:00
Peter Steinberger
b7ac9095e6
fix: skip tool-only reasoning replay
2026-01-11 04:52:16 +01:00
Peter Steinberger
30348e41c6
test: stabilize doctor + sandbox tests
2026-01-11 04:45:04 +01:00
Peter Steinberger
7343597075
chore: keep gate green
2026-01-11 04:42:44 +01:00
Peter Steinberger
50e62122bb
chore: format sandbox skills test
2026-01-11 04:39:42 +01:00