Peter Steinberger
d81cb886ce
fix: polish thread session routing
2026-01-07 20:09:57 +01:00
Peter Steinberger
43c7f5036a
fix(tools): keep tool errors concise
2026-01-07 19:08:13 +00:00
alejandro maza
579828b2d5
Handle 413 context overflow errors gracefully
...
When the conversation context exceeds the model's limit, instead of
throwing an opaque error or returning raw JSON, we now:
1. Detect context overflow errors (413, request_too_large, etc.)
2. Return a user-friendly message explaining the issue
3. Suggest using /new or /reset to start fresh
This prevents the assistant from becoming completely unresponsive
when context grows too large (e.g., from many screenshots or long
tool outputs).
Addresses issue #394
2026-01-07 19:08:13 +00:00
Shadow
d4bba937a0
Threads: add Slack/Discord thread sessions
2026-01-07 20:05:58 +01:00
Peter Steinberger
cb9f8146c4
refactor: centralize thread helpers
2026-01-07 20:01:19 +01:00
Peter Steinberger
42b637bbc8
test: cover thread session routing
2026-01-07 19:50:17 +01:00
Peter Steinberger
8584bcd2f6
Merge remote-tracking branch 'origin/main'
2026-01-07 19:44:26 +01:00
Peter Steinberger
0d021391a9
fix: scope thread sessions and discord starter fetch
2026-01-07 19:42:50 +01:00
Peter Steinberger
aba4695cd1
test(status): cover model override display
2026-01-07 18:38:55 +00:00
Azade
2b09cb3d9f
fix(status): show configured model instead of last-run model
2026-01-07 18:37:42 +00:00
Shadow
7e5cef29a0
Threads: add Slack/Discord thread sessions
2026-01-07 19:30:30 +01:00
Emanuel Stadler
7f4248e5e0
Cron: clamp timer to avoid TimeoutOverflowWarning
2026-01-07 19:25:18 +01:00
Max Sumrall
5ddf9b2c65
fix(agent): protect bootstrap prefix from pruning
2026-01-07 18:17:18 +00:00
Peter Steinberger
c3b3f571e9
fix(tools): finalize Vertex schema flattening ( #409 )
2026-01-07 17:54:19 +00:00
Kit
a2b3f2c18a
fix(tools): flatten nested anyOf schemas for Vertex AI compatibility
...
Claude API on Vertex AI (Cloud Code Assist) rejects nested anyOf schemas
as invalid JSON Schema draft 2020-12. This change:
- Add tryFlattenLiteralAnyOf() to convert Type.Union([Type.Literal(...)])
patterns from anyOf with const values to flat enum arrays
- Update stringEnum helper in bash-tools to use Type.Unsafe with flat enum
- Flatten BrowserActSchema from discriminated union to single object
- Simplify TelegramToolSchema to use Type.String() for IDs
Fixes 400 errors when sending messages through WhatsApp/Telegram providers.
2026-01-07 17:51:16 +00:00
Peter Steinberger
de55f4e111
fix: add provider retry policy
2026-01-07 17:48:19 +00:00
Max Sumrall
f9118bd21c
test(agent): cover context pruning
2026-01-07 18:00:14 +01:00
Max Sumrall
eeaa6ea46f
feat(agent): opt-in tool-result context pruning
2026-01-07 18:00:14 +01:00
Peter Steinberger
937e0265a3
fix: preserve sessionKey for agent runs
2026-01-07 17:53:59 +01:00
Peter Steinberger
573fe74a9c
fix: per-agent sandbox overrides
2026-01-07 17:31:40 +01:00
sheeek
22db83a04c
test(tools): add tests for agent-specific tool filtering
...
Add 5 tests for agent-specific tool restrictions:
- Apply global tool policy when no agent-specific policy exists
- Apply agent-specific tool policy
- Allow different tool policies for different agents
- Combine global and agent-specific deny lists
- Work with sandbox tools filtering
All tests pass.
2026-01-07 17:31:40 +01:00
sheeek
1178c65226
test(sandbox): add tests for agent-specific sandbox override
...
Add 6 tests for agent-specific sandbox configuration:
- Use global sandbox config when no agent-specific config exists
- Override with agent-specific sandbox mode 'off'
- Use agent-specific sandbox mode 'all'
- Use agent-specific scope
- Use agent-specific workspaceRoot
- Prefer agent config over global for multiple agents
All tests pass.
2026-01-07 17:31:40 +01:00
sheeek
5a51a9b0d6
test(agent-scope): add tests for sandbox and tools config resolution
...
Add 7 tests for resolveAgentConfig():
- Return undefined when no agents config exists
- Return undefined when agent id does not exist
- Return basic agent config (name, workspace, agentDir, model)
- Return agent-specific sandbox config
- Return agent-specific tools config
- Return both sandbox and tools config
- Normalize agent id
All tests pass.
2026-01-07 17:31:40 +01:00
sheeek
a8c153ec78
feat(tools): add agent-specific tool filtering
...
Add tool filtering layer for per-agent restrictions:
- Extract agentId from sessionKey
- Load routing.agents[agentId].tools via resolveAgentConfig()
- Apply agent-specific allow/deny before sandbox filtering
Filtering order:
1. Global (agent.tools)
2. Agent-specific (routing.agents[id].tools) ← NEW
3. Sandbox (agent.sandbox.tools)
4. Subagent policy
This enables different tool permissions per agent
(e.g., main: all tools, family: read only).
2026-01-07 17:31:40 +01:00
sheeek
a375a81919
feat(sandbox): support agent-specific sandbox config override
...
Changes to defaultSandboxConfig():
- Add optional agentId parameter
- Load routing.agents[agentId].sandbox if available
- Prefer agent-specific settings over global agent.sandbox
Update callers in resolveSandboxContext() and
ensureSandboxWorkspaceForSession() to extract agentId
from sessionKey and pass it to defaultSandboxConfig().
This enables per-agent sandbox modes (e.g., main: off, family: all).
2026-01-07 17:31:40 +01:00
sheeek
ebd96f2971
feat(agent-scope): extend resolveAgentConfig to return sandbox and tools
...
Return newly added fields from routing.agents config:
- sandbox: agent-specific sandbox configuration
- tools: agent-specific tool restrictions
This makes per-agent sandbox and tool settings accessible
to other parts of the codebase.
2026-01-07 17:31:40 +01:00
sheeek
90cdccee1e
feat(config): add Zod validation for routing.agents sandbox and tools
...
Validate per-agent sandbox config:
- mode: 'off' | 'non-main' | 'all'
- scope: 'session' | 'agent' | 'shared'
- perSession: boolean
- workspaceRoot: string
Validate per-agent tools config:
- allow: string[]
- deny: string[]
2026-01-07 17:31:40 +01:00
sheeek
c115918c97
feat(types): add sandbox and tools fields to routing.agents
...
Add optional per-agent configuration:
- sandbox: { mode, scope, perSession, workspaceRoot }
- tools: { allow, deny }
These will allow agents to override global agent.sandbox and
agent.tools settings.
2026-01-07 17:31:40 +01:00
Peter Steinberger
77024cf776
fix(agents): make sessions_spawn non-blocking
2026-01-07 16:14:25 +00:00
Peter Steinberger
53c037a197
style(telegram): format activation log
2026-01-07 11:21:12 +00:00
Peter Steinberger
4bd7ca305a
fix(telegram): honor session activation overrides
2026-01-07 11:19:09 +00:00
Peter Steinberger
3cbced01fa
test(telegram): cover routed activation
2026-01-07 11:17:12 +00:00
Julian Engel
45dc4ef3cf
fix(telegram): make /activation command work by checking session state
...
The /activation command now properly controls group activation mode:
- Loads session state before filtering messages
- Checks groupActivation field (from /activation command)
- Falls back to config telegram.groups requireMention setting
Previously, the bot only checked config and ignored session state,
making the /activation command appear to work but have no effect.
Changes:
- Add resolveGroupActivation() to check session before config
- Import loadSessionStore to read session state early
- Pass messageThreadId to support forum topics correctly
2026-01-07 11:16:35 +00:00
Peter Steinberger
1011640a13
refactor: drop autoReply, add topic requireMention
...
Co-authored-by: kitze <kristijan.mkd@gmail.com>
2026-01-07 12:07:15 +01:00
Peter Steinberger
eef90b47a3
chore: satisfy lint
2026-01-07 11:49:01 +01:00
Peter Steinberger
43c6bb7595
feat: add channel/topic overrides for skills + auto-reply
2026-01-07 11:44:37 +01:00
Peter Steinberger
61f720b945
feat: add skill filter + group system prompt plumbing
2026-01-07 11:44:37 +01:00
Peter Steinberger
9bf6684366
feat: add provider usage tracking
2026-01-07 11:42:46 +01:00
Josh Palmer
4e14123edd
Merge pull request #378 from timkrase/system-prompt-weekday
...
Agents: add weekday to user time (codex assisted)
2026-01-07 11:27:07 +01:00
Peter Steinberger
a700f9896d
feat: telegram draft streaming
2026-01-07 11:08:32 +01:00
Peter Steinberger
e8420bd047
fix: refine bootstrap injections
2026-01-07 10:04:23 +00:00
Tobias Bischoff
412990a139
Reduce prompt token overhead with leaner context injections
2026-01-07 10:04:23 +00:00
Tim Krase
e58e13708d
Agents: add weekday to user time
2026-01-07 11:02:39 +01:00
Peter Steinberger
7a917602c5
feat(auth): sync OAuth from Claude/Codex CLIs
...
Add source profiles anthropic:claude-cli and openai-codex:codex-cli; surface them in onboarding/configure.
Co-authored-by: pepicrft <pepicrft@users.noreply.github.com>
2026-01-07 10:47:57 +01:00
Peter Steinberger
0914517ee3
feat(sandbox): add workspace access mode
2026-01-07 09:33:38 +00:00
Peter Steinberger
94d3a9742b
fix: clean agents lint warnings
2026-01-07 10:13:03 +01:00
Peter Steinberger
7973fd4caf
feat: add agents command
2026-01-07 10:03:53 +01:00
Peter Steinberger
a50ffa69b0
fix(discord): handle multi-attachment inbound media
2026-01-07 09:01:57 +01:00
Peter Steinberger
e5dbe1db9d
fix: ensure output for non-streaming models ( #369 )
...
Co-authored-by: mneves75 <mneves75@users.noreply.github.com>
2026-01-07 07:47:18 +00:00
Peter Steinberger
34cac1beb0
fix: land PR #350
2026-01-07 07:19:48 +00:00
Peter Steinberger
1b81805d63
fix: align heartbeat session store with default agent
2026-01-07 07:14:24 +00:00
Peter Steinberger
7176b114da
fix(auth): harden legacy auth.json cleanup
2026-01-07 06:51:17 +00:00
Peter Steinberger
0707b1e487
Merge PR #368 : delete legacy auth.json after migration
2026-01-07 06:47:46 +00:00
Peter Steinberger
2937c4861f
fix(auth): doctor-migrate anthropic oauth profiles
2026-01-07 06:31:02 +00:00
Randy Torres
ff79db0a99
fix(auth): use anthropic oauth email profile
...
Use Anthropic OAuth profile email as the profile identifier when available. This fixes cases where Anthropic returns an email-based profile id rather than an explicit id field.
2026-01-07 06:31:02 +00:00
Peter Steinberger
8b1263ce11
fix: split status activation line
2026-01-07 07:26:52 +01:00
Peter Steinberger
dc941b7e57
fix: refresh status output
2026-01-07 07:22:06 +01:00
Matthew Dicembrino
4f10279ac3
fix: delete legacy auth.json after migration to prevent stale token overwrites ( #363 )
2026-01-07 01:15:38 -05:00
Peter Steinberger
50dec39d13
fix: honor sandboxed built-in tools
2026-01-07 06:12:56 +00:00
Peter Steinberger
03928106c7
fix: order reasoning before reply text
2026-01-07 07:05:07 +01:00
Peter Steinberger
75c66acfd8
feat: update subagent announce + archive
2026-01-07 06:53:01 +01:00
Peter Steinberger
1673a221f8
feat: add /reasoning reasoning visibility
2026-01-07 06:17:31 +01:00
Peter Steinberger
cb2a72f8a9
test(routing): add route-reply coverage
2026-01-07 05:07:53 +00:00
Peter Steinberger
3668388912
fix(routing): harden originating reply routing
2026-01-07 05:02:34 +00:00
Josh Lehman
5414da9fd4
fix(routing): handle cross-provider messages in collect mode
...
When queued messages come from different providers (Slack + Telegram),
process them individually instead of collecting into a single prompt.
This ensures each reply routes back to its originating provider.
- Add hasCrossProviderItems() to detect multi-provider queues
- Skip collect mode when cross-provider detected
- Preserve originatingChannel/originatingTo when collecting same-provider
2026-01-07 04:51:33 +00:00
Josh Lehman
2d67ec5bfa
fix(routing): only route to originating channel when cross-provider
...
When OriginatingChannel matches Surface (same provider), use normal
dispatcher. Only route via routeReply() when they differ, ensuring
cross-provider messages (e.g., Telegram queued while Slack active)
get routed back to their origin.
2026-01-07 04:51:33 +00:00
Josh Lehman
9d50ebad7d
feat(routing): route replies to originating channel
...
Implement reply routing based on OriginatingChannel/OriginatingTo fields.
This ensures replies go back to the provider where the message originated
instead of using the session's lastChannel.
Changes:
- Add OriginatingChannel/OriginatingTo fields to MsgContext (templating.ts)
- Add originatingChannel/originatingTo fields to FollowupRun (queue.ts)
- Create route-reply.ts with provider-agnostic router
- Update all providers (Telegram, Slack, Discord, Signal, iMessage)
to pass originating channel info
- Update reply.ts to pass originating channel to followupRun
- Update followup-runner.ts to use route-reply for originating channels
This addresses the issue where messages from one provider (e.g., Slack)
would receive replies on a different provider (e.g., Telegram) because
the queue used the last active dispatcher instead of the originating one.
2026-01-07 04:51:33 +00:00
Peter Steinberger
514fcfe77e
fix: harden sub-agent model overrides
2026-01-07 04:48:37 +00:00
Peter Steinberger
12d57da53a
fix: normalize provider aliases in auth order
2026-01-07 05:43:32 +01:00
mneves75
8187baab18
test: format models list alias coverage
2026-01-07 05:31:01 +01:00
mneves75
3550dc294d
fix: normalize z.ai provider ids in auth profiles
2026-01-07 05:31:01 +01:00
mneves75
8954f7719c
Test: cover z.ai normalization
2026-01-07 05:30:06 +01:00
mneves75
0ddfbf5534
Feat: normalize z.ai provider ids
2026-01-07 05:30:06 +01:00
Peter Steinberger
42ae2341aa
fix: harden pairing flow
2026-01-07 05:06:04 +01:00
Peter Steinberger
6ffece68b0
fix(doctor): add headless flags + auto-migrate sessions
2026-01-07 04:43:24 +01:00
Peter Steinberger
9c9ae5aa54
fix(imessage): harden abort shutdown
2026-01-07 03:41:23 +00:00
Anton Sotkov
08fc0b3809
fix: imsg unhandled promises
2026-01-07 03:41:23 +00:00
Peter Steinberger
8ef0609f8e
refactor: share reaction schemas and notes
2026-01-07 04:24:11 +01:00
Peter Steinberger
073b16a3a0
fix: clean up reaction tooling
2026-01-07 04:16:39 +01:00
Peter Steinberger
3afef2d504
feat: unify provider reaction tools
2026-01-07 04:16:39 +01:00
Sash Zats
551a8d5683
Add WhatsApp reactions support
...
Summary:
Test Plan:
2026-01-07 04:16:39 +01:00
Peter Steinberger
aa87d6cee8
refactor(relay): add --smoke entrypoint
2026-01-07 03:12:30 +00:00
Peter Steinberger
59cc15f3cc
fix(relay): guard QR smoke mode
2026-01-07 02:42:55 +00:00
Peter Steinberger
ff102e2afa
Merge PR #358
2026-01-07 02:42:53 +00:00
Peter Steinberger
aa635af6d0
refactor: unify outbound result envelopes
2026-01-07 02:36:05 +00:00
DB Hurley
9d820a628f
fix(relay): implement CLAWDBOT_SMOKE_QR handler for packaging
2026-01-06 21:32:04 -05:00
Peter Steinberger
4bf5f37a44
refactor: streamline outbound payload handling
2026-01-07 02:30:42 +00:00
Peter Steinberger
3fedd0d1d5
fix(outbound): guard optional delivery fields
2026-01-07 02:19:42 +00:00
Peter Steinberger
59502552ae
fix(telegram): import native reply helper
2026-01-07 02:19:42 +00:00
Peter Steinberger
d7bc5b58fc
refactor(telegram): polish topic threading
2026-01-07 02:19:42 +00:00
Peter Steinberger
80112433a5
fix(telegram): support forum topics
...
Co-authored-by: Daniel Griesser <HazAT@users.noreply.github.com>
Co-authored-by: Nacho Iacovino <nachoiacovino@users.noreply.github.com>
Co-authored-by: Randy Ventures <RandyVentures@users.noreply.github.com>
2026-01-07 02:19:42 +00:00
Peter Steinberger
023a124312
test: cover gmail tailscale error formatting
2026-01-07 03:16:52 +01:00
Peter Steinberger
2986447935
fix: improve gmail tailscale errors
2026-01-07 03:10:35 +01:00
Peter Steinberger
467d4e17fe
feat: add sandbox scope default
2026-01-07 02:52:41 +01:00
Peter Steinberger
15b7560a9b
refactor: reuse gateway output helpers
2026-01-07 01:43:02 +00:00
Peter Steinberger
b88c4e9d20
chore: clean up lint and scratchpad
2026-01-07 01:28:46 +00:00
Peter Steinberger
bc9a3ce32a
refactor: unify outbound delivery formatting
2026-01-07 01:26:09 +00:00
Peter Steinberger
3fbe2963b3
test: align outbound normalization
2026-01-07 01:22:55 +00:00
Peter Steinberger
8ba6473462
style: fix send json indent
2026-01-07 01:21:29 +00:00
Peter Steinberger
dd78c26e6d
style: format direct send json
2026-01-07 01:21:03 +00:00
Peter Steinberger
2ce5df3efc
style: align outbound delivery formatting
2026-01-07 01:20:40 +00:00
Peter Steinberger
aefaed159b
refactor: normalize outbound payload delivery
2026-01-07 01:19:47 +00:00
Peter Steinberger
f171d509bb
refactor: centralize outbound target validation
2026-01-07 01:16:39 +00:00
Sash Zats
f1643a5b8d
Heartbeat: resolve main session key for session store
2026-01-06 20:14:30 -05:00
Peter Steinberger
f5938f8114
refactor: unify outbound delivery
2026-01-07 01:13:04 +00:00
Peter Steinberger
1ae5e9a26b
feat: add docs search command
2026-01-07 02:03:06 +01:00
Sash Zats
eb8d7a19af
Cron: enqueue system events in main session
2026-01-06 19:55:03 -05:00
Erik
cd4e2023ab
fix(agent): capture compaction retry AbortError for model fallback
...
Wrap waitForCompactionRetry() in try/catch to capture AbortError
that was escaping and bypassing the model fallback mechanism.
When a timeout fires, session.abort() causes both session.prompt()
and waitForCompactionRetry() to throw AbortError. Previously only
the prompt error was captured, allowing the compaction error to
escape to model-fallback.ts where it was immediately re-thrown
(line 199: isAbortError check), bypassing fallback model attempts.
Fixes #313
2026-01-07 01:44:37 +01:00
Peter Steinberger
0116184b1c
docs: recommend WSL2 for Windows installs
2026-01-07 01:21:36 +01:00
Peter Steinberger
62112d9978
feat: add onboarding doc links
2026-01-07 01:19:31 +01:00
Peter Steinberger
19c95d0ff7
fix(auth): serialize profile stats updates
2026-01-07 01:06:51 +01:00
Peter Steinberger
96d72ff91e
fix(auth): lock auth profile updates
2026-01-07 01:00:47 +01:00
Muhammed Mukhthar CM
eb5f758f6b
fix(auth): improve multi-account round-robin rotation and 429 handling
...
This commit fixes several issues with multi-account OAuth rotation that
were causing slow responses and inefficient account cycling.
## Changes
### 1. Fix usageStats race condition (auth-profiles.ts)
The `markAuthProfileUsed`, `markAuthProfileCooldown`, `markAuthProfileGood`,
and `clearAuthProfileCooldown` functions were using a stale in-memory store
passed as a parameter. Long-running sessions would overwrite usageStats
updates from concurrent sessions when saving.
**Fix:** Re-read the store from disk before each update to get fresh
usageStats from other sessions, then merge the update.
### 2. Capture AbortError from waitForCompactionRetry (pi-embedded-runner.ts)
When a request timed out, `session.abort()` was called which throws an
`AbortError`. The code structure was:
```javascript
try {
await session.prompt(params.prompt);
} catch (err) {
promptError = err; // Catches AbortError here
}
await waitForCompactionRetry(); // But THIS also throws AbortError!
```
The second `AbortError` from `waitForCompactionRetry()` escaped and
bypassed the rotation/fallback logic entirely.
**Fix:** Wrap `waitForCompactionRetry()` in its own try/catch to capture
the error as `promptError`, enabling proper timeout handling.
Root cause analysis and fix proposed by @erikpr1994 in #313 .
Fixes #313
### 3. Fail fast on 429 rate limits (pi-ai patch)
The pi-ai library was retrying 429 errors up to 3 times with exponential
backoff before throwing. This meant a rate-limited account would waste
30+ seconds retrying before our rotation code could try the next account.
**Fix:** Patch google-gemini-cli.js to:
- Throw immediately on first 429 (no retries)
- Not catch and retry 429 errors in the network error handler
This allows the caller to rotate to the next account instantly on rate limit.
Note: We submitted this fix upstream (https://github.com/badlogic/pi-mono/pull/504 )
but it was closed without merging. Keeping as a local patch for now.
## Testing
With 6 Antigravity accounts configured:
- Accounts rotate properly based on lastUsed (round-robin)
- 429s trigger immediate rotation to next account
- usageStats persist correctly across concurrent sessions
- Cooldown tracking works as expected
## Before/After
**Before:** Multiple 429 retries on same account, 30-90s delays
**After:** Instant rotation on 429, responses in seconds
2026-01-07 00:56:32 +01:00
VAC
ff200e3993
fix(discord): handle voice messages with empty content
...
Discord voice messages have empty `content` with the audio in attachments.
The nullish coalescing operator (`??`) doesn't fall through on empty strings,
so voice messages were being dropped as 'empty content'.
Changed to logical OR (`||`) so empty string falls through to media placeholder.
2026-01-06 23:35:30 +00:00
Peter Steinberger
7214cf39ec
fix: prefer home linuxbrew paths
2026-01-07 00:18:07 +01:00
Peter Steinberger
b57d36f49c
fix(sessions_spawn): hard-fail invalid model overrides
2026-01-06 23:17:35 +00:00
Azade
0429a4b63b
test(sessions_spawn): add test for model parameter
2026-01-06 23:17:35 +00:00
Azade
274f408e6f
feat(sessions_spawn): add model parameter for sub-agent model override
2026-01-06 23:17:35 +00:00
Peter Steinberger
02c9cf0ff4
chore: remove duplicate daemon runtime imports
2026-01-07 00:14:08 +01:00
Peter Steinberger
dd0d23cd96
test(commands): add /stop native regression
2026-01-06 23:11:57 +00:00
Peter Steinberger
e0efcda77f
fix(commands): wire /stop across chat commands
2026-01-06 23:11:57 +00:00
Nacho Iacovino
0df7c3addf
feat(telegram): add /stop command to abort running agent
...
Adds a /stop command that:
- Can interrupt a running agent session mid-execution
- Works in both DMs and group chats (including forum topics)
- Uses grammy's bot.command() to run before the main message handler
- Returns status: stopped, stop requested, or nothing running
Also fixes session key lookup in pi-embedded-runner to use sessionKey
instead of sessionId, ensuring /stop finds the correct active run.
2026-01-06 23:11:57 +00:00
Peter Steinberger
5bc3f13b46
feat: colorize models auth key labels
2026-01-07 00:10:01 +01:00
Peter Steinberger
b357746e1c
feat: add richer color to models output
2026-01-07 00:07:50 +01:00
Peter Steinberger
79f813e18e
style: format lint offenders
2026-01-07 00:04:44 +01:00
Peter Steinberger
0ad74ee941
test: mock select prompt in doctor tests
2026-01-07 00:01:50 +01:00
Peter Steinberger
55278c1c71
feat: add daemon runtime prompts
2026-01-06 23:51:00 +01:00
Peter Steinberger
c920ee1166
Merge branch 'pr-335-merge'
2026-01-06 23:45:35 +01:00
Peter Steinberger
5939363eed
fix: include telegram group sender in envelope headers
2026-01-06 22:34:02 +00:00
Peter Steinberger
8d50d08936
style: format daemon runtime changes
2026-01-06 23:29:38 +01:00
Peter Steinberger
8911a79d7f
docs: rewrite cron jobs guide and heartbeat notes
2026-01-06 22:28:42 +00:00
Peter Steinberger
707f7918bc
feat: add gateway daemon runtime selector
2026-01-06 23:27:58 +01:00
Peter Steinberger
18c43fe462
fix: bootstrap linuxbrew for skills
2026-01-06 23:27:38 +01:00
Peter Steinberger
39d2ba78b7
fix(cli): harden pairing provider parse
2026-01-06 22:17:18 +00:00
Peter Steinberger
0931a65ab2
fix: auto-recover from Gemini session corruption
...
Auto-merge after checks.
2026-01-06 22:12:05 +00:00
Peter Steinberger
fec7f37271
merge upstream/main
2026-01-06 23:09:01 +01:00
Peter Steinberger
86b56b2308
fix: harden gemini session reset
2026-01-06 23:06:01 +01:00
Peter Steinberger
2771001720
fix(state): auto-migrate legacy agent dir
2026-01-06 22:04:23 +00:00
Peter Steinberger
7aa7fa79d0
feat: update heartbeat defaults
2026-01-06 21:54:42 +00:00
Peter Steinberger
dba09058f5
fix(agents): default agent dir to multi-agent path
2026-01-06 21:54:42 +00:00
Peter Steinberger
96164b5955
fix: improve socket error handling
2026-01-06 22:43:29 +01:00
Emanuel Stadler
fb17a32283
feat: enhance error handling for socket connection errors
...
- Added `isError` property to `EmbeddedPiRunResult` and reply items to indicate error states.
- Updated error handling in `runReplyAgent` to provide more informative messages for specific socket connection errors.
2026-01-06 22:19:37 +01:00
James Groat
9b6e2478f5
fix(browser): add profile param to tabs routes and browser-tool
...
- tabs.ts now uses getProfileContext like other routes
- browser-tool threads profile param through all actions
- add tests for profile query param on /tabs endpoints
- update docs with browser tool profile parameter
2026-01-06 21:54:46 +01:00
James Groat
40758b16a9
fix(browser-cli): rename --profile to --browser-profile to avoid conflict with global --profile flag
2026-01-06 21:54:46 +01:00
minghinmatthewlam
2dd6b3aeb2
fix: write auth profiles to multi-agent path during onboarding
...
- Onboarding now writes auth profiles under ~/.clawdbot/agents/main/agent so the gateway sees credentials on first start.
- Hardened onboarding test to ignore legacy env vars.
Thanks @minghinmatthewlam!
2026-01-06 20:53:18 +00:00
Peter Steinberger
84c8209158
fix(slack): clear assistant thread status after replies
2026-01-06 21:41:30 +01:00
Shadow
8ebc789d25
Slack: send assistant thread status while typing
2026-01-06 21:34:52 +01:00
Shadow
9b22e1f6e9
feat(commands): unify chat commands ( #275 )
...
* Chat commands: registry, access groups, Carbon
* Chat commands: clear native commands on disable
* fix(commands): align command surface typing
* docs(changelog): note commands registry (PR #275 )
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-01-06 20:17:56 +00:00
Peter Steinberger
1bf44bf30c
feat(models): show auth overview
2026-01-06 20:07:04 +00:00
Peter Steinberger
118c1e1042
fix: keep oauth profile stable
2026-01-06 19:43:28 +00:00
Peter Steinberger
67bda21811
fix: preserve markdown fences when chunking
2026-01-06 20:23:41 +01:00
Peter Steinberger
31dbc62bdd
fix(telegram): prevent stuck typing after tool runs
2026-01-06 18:56:43 +00:00
Peter Steinberger
369af5fc58
style(agents): format usage helper
2026-01-06 19:54:50 +01:00
Peter Steinberger
d07e78855c
fix(workspace): align clawd + bootstrap
2026-01-06 19:54:50 +01:00
Abhi
bdf597eb95
fix(telegram): stop typing after tool results ( #322 )
...
Thanks @AbhisekBasu1.
2026-01-06 18:54:08 +00:00
Peter Steinberger
2f24ea492b
fix: restore Anthropic token accounting
2026-01-06 18:52:01 +00:00
Peter Steinberger
9fb37cbf93
style: format whatsapp inbound allowlist
2026-01-06 18:33:37 +00:00
Peter Steinberger
dbfa316d19
feat: multi-agent routing + multi-account providers
2026-01-06 18:33:37 +00:00
Peter Steinberger
c47aff5244
fix(onboard): clarify DM policy keys
2026-01-06 18:09:21 +01:00
Peter Steinberger
4933905366
fix(onboard): configure DM policies
2026-01-06 18:09:21 +01:00
Onur
6cf3570c5b
feat(agent): add skipBootstrap config to skip bootstrap file creation ( #292 )
2026-01-06 11:02:51 -06:00
Peter Steinberger
b081f45b17
fix(onboard): explain DM pairing defaults
2026-01-06 17:58:06 +01:00
Muhammed Mukhthar CM
4bb53e19f9
fix(build): import tool-display.json instead of fs.readFileSync ( #312 )
2026-01-06 10:55:02 -06:00
Peter Steinberger
967cef80bc
fix(security): lock down inbound DMs by default
2026-01-06 17:51:56 +01:00
Peter Steinberger
11b6fddcbf
Merge pull request #283 from Oncomatic/jarvis/telegram-media-error-notify
...
fix(telegram): notify user when media exceeds size limit
2026-01-06 15:18:52 +00:00
Peter Steinberger
3ff17b70ea
chore: changelog for #293
2026-01-06 15:32:06 +01:00
Palash Oswal
b91012b697
fix(cli): don't force localhost gateway url in remote mode
...
Fixes remote gateway setup (remote mode) by not overriding url; adds regression tests. Thanks @oswalpalash.
2026-01-06 14:30:45 +00:00
Simon Kelly
5aa1ed2c96
fix(slack): use named import for @slack/bolt App class ( #299 )
...
* fix(slack): use named import for @slack/bolt App class
The default import `import bolt from '@slack/bolt'` followed by
`const { App } = bolt` doesn't work correctly in Bun due to ESM/CJS
interop issues. The default export comes through as a function rather
than the module object.
Switching to a named import `import { App } from '@slack/bolt'`
resolves the issue and allows the Slack provider to start successfully.
* fix(slack): align Bolt mock with named App export
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-01-06 14:22:14 +00:00
VAC
eadb923000
fix: auto-recover from Gemini session corruption
...
Detect the Gemini API error 'function call turn comes immediately after
a user turn or after a function response turn' which indicates corrupted
session history.
When detected:
- Delete the corrupted transcript file
- Remove the session entry from the store
- Return a user-friendly message asking them to retry
This prevents the error loop where every subsequent message fails with
the same error until manual intervention.
Fixes #296
2026-01-06 07:25:15 -05:00
Manuel Hettich
aae5926db9
fix(telegram): notify user when media exceeds size limit
...
When a file exceeds mediaMaxMb, send a friendly error message
instead of silently dropping the upload.
---
🤖 Authored by Jarvis (AI assistant)
2026-01-06 08:45:07 +00:00
Peter Steinberger
3693449d7e
feat: sandbox session tool visibility
2026-01-06 08:40:30 +00:00
Peter Steinberger
5926a98c52
fix(configure): don’t write auth.order by default
2026-01-06 09:25:36 +01:00
Peter Steinberger
f2d353459f
test(auth): stop prioritizing lastGood
2026-01-06 09:25:33 +01:00
Peter Steinberger
ed2075ce69
test(gateway): deflake cron finished event wait
2026-01-06 09:25:31 +01:00
Muhammed Mukhthar CM
9e49c762e0
fix(auth): prioritize round-robin over lastGood for multi-account rotation ( #281 )
...
* fix(auth): prioritize round-robin over lastGood for multi-account rotation
When multiple OAuth accounts are configured, the round-robin rotation was
not working because lastGood was always prioritized, defeating the sort by
lastUsed.
Changes:
- Remove lastGood prioritization in resolveAuthProfileOrder
- Always apply orderProfilesByMode (sorts by lastUsed, oldest first)
- Only respect configuredOrder when explicitly set in config
- preferredProfile still takes priority for explicit user choice
Tested with 2 Google Antigravity accounts - verified alternating usage.
Follow-up to PR #269 .
* style: fix formatting
2026-01-06 08:16:35 +00:00
Peter Steinberger
cf1a1d107e
fix: add OpenAI Codex OAuth to configure
2026-01-06 09:13:51 +01:00
Muhammed Mukhthar CM
42d1c2448e
fix(cron-tool): use generic object schema for job/patch to fix Claude via Antigravity ( #280 )
2026-01-06 02:13:09 -06:00
Peter Steinberger
c27dd75135
build(control-ui): prefer bun for UI build
2026-01-06 09:08:25 +01:00
Peter Steinberger
a279bcfeb1
feat: add sessions_spawn sub-agent tool
2026-01-06 08:41:45 +01:00
Peter Steinberger
952657d55c
feat(tui): add /elev alias
2026-01-06 08:41:04 +01:00
Ayaan Zaidi
7a48b908e4
refactor: replace tsx with bun for TypeScript execution ( #278 )
2026-01-06 07:14:08 +00:00
Peter Steinberger
dbb51006cd
feat: unify group policy allowlists
2026-01-06 06:40:42 +00:00
Peter Steinberger
51e8bbd2a8
style: normalize type definitions
2026-01-06 07:21:10 +01:00
Peter Steinberger
aa16b679ad
fix: improve auth profile failover
2026-01-06 07:18:06 +01:00
Peter Steinberger
a7b5753dc4
Merge pull request #269 from mukhtharcm/feat/multi-account-roundrobin
...
feat: Multi-account OAuth with round-robin rotation
2026-01-06 06:13:19 +00:00
Peter Steinberger
b5c604b7b7
fix: require slash for control commands
2026-01-06 07:05:17 +01:00
Peter Steinberger
7d896b5f67
fix: doctor memory hint
2026-01-06 06:01:24 +00:00
Shadow
91cb2c02a7
fix: allow optional reply body
2026-01-05 23:47:33 -06:00
Shadow
69f285c5ca
chore: fixed CI
2026-01-05 23:36:48 -06:00
Peter Steinberger
b759cb6f37
feat(providers): normalize location parsing
2026-01-06 06:31:09 +01:00
Nacho Iacovino
255e77f530
feat(telegram): parse location and venue messages
...
- Add TelegramLocation, TelegramVenue, and TelegramMessageWithLocation types
- Add formatLocationMessage() to convert location/venue shares to text
- Add extractLocationData() for structured location access in ctxPayload
- Handle both raw location pins and venue shares (places with names)
- Include location in reply-to context for quoted messages
Location messages now appear as:
- [Location: lat, lon ±accuracy] for raw pins
- [Venue: Name - Address (lat, lon)] for places
ctxPayload includes LocationLat, LocationLon, LocationAccuracy,
VenueName, and VenueAddress fields for programmatic access.
2026-01-06 06:31:09 +01:00
Muhammed Mukhthar CM
18c7795ee0
feat: treat timeout as rate limit for profile rotation
...
Antigravity rate limits cause requests to hang indefinitely rather than
returning 429 errors. This change detects timeouts and treats them as
potential rate limits:
- Added timedOut flag to track timeout-triggered aborts
- Timeout now triggers profile cooldown + rotation
- Logs: "Profile X timed out (possible rate limit). Trying next account..."
This ensures automatic failover when Antigravity hangs due to rate limiting.
2026-01-06 05:20:01 +00:00
Muhammed Mukhthar CM
ce6c7737c1
feat: add round-robin rotation and cooldown for auth profiles
...
Adds usage tracking to auth profiles for automatic rotation:
- ProfileUsageStats type with lastUsed, cooldownUntil, errorCount
- markAuthProfileUsed(): tracks successful usage, resets errors
- markAuthProfileCooldown(): applies exponential backoff (1/5/25/60min)
- isProfileInCooldown(): checks if profile should be skipped
- orderProfilesByMode(): now sorts by lastUsed (oldest first)
On auth/rate-limit failures, profiles are marked for cooldown before
rotation. On success, usage is recorded for round-robin ordering.
This enables automatic load distribution across multiple accounts
(e.g., Antigravity 5-hour rate limit windows).
2026-01-06 05:17:59 +00:00
Muhammed Mukhthar CM
06df6a955a
feat: use email-based profile IDs for OAuth providers
...
Changes writeOAuthCredentials and applyAuthProfileConfig calls to use
the email from OAuth response as part of the profile ID instead of
hardcoded ":default".
This enables multiple accounts per provider - each login creates a
separate profile (e.g., google-antigravity:user@gmail.com) instead
of overwriting the same :default profile.
Affected files:
- src/commands/onboard-auth.ts (generic writeOAuthCredentials)
- src/commands/configure.ts (Antigravity flow)
- src/wizard/onboarding.ts (Antigravity flow)
2026-01-06 05:17:59 +00:00
Shadow
88cb13dc82
Auto-reply: fix typing stop race ( #270 )
2026-01-05 22:57:04 -06:00
Peter Steinberger
35a2140e48
fix: clean up poll merge
2026-01-06 04:51:05 +00:00
Peter Steinberger
0b27964693
feat: unify poll support
...
Co-authored-by: DBH <5251425+dbhurley@users.noreply.github.com>
2026-01-06 04:51:05 +00:00
Asleep
8880128ebf
Format messages so they work with Gemini API ( #266 )
...
* fix: Gemini stops working after one message in a session
* fix: small issue in test file
* test: cover google role-merge behavior
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-01-06 04:45:40 +00:00
DBH
2737e17c67
feat: Add WhatsApp poll support ( #248 )
...
Implements issue #123 - WhatsApp Poll Support
## Gateway Protocol
- Add `poll` RPC method with params: to, question, options (2-12), selectableCount
## ActiveWebListener
- Add `sendPoll(to, poll)` method to interface
- Implementation uses Baileys poll message type
## CLI Command
- `clawdbot poll --to <jid> -q <question> -o <opt1> -o <opt2> [-s count]`
- Supports --dry-run, --json, --verbose flags
- Validates 2-12 options
## Changes
- src/gateway/protocol/schema.ts: Add PollParamsSchema
- src/gateway/protocol/index.ts: Export validator and types
- src/web/active-listener.ts: Add sendPoll to interface
- src/web/inbound.ts: Implement sendPoll using Baileys
- src/web/outbound.ts: Add sendPollWhatsApp function
- src/gateway/server-methods/send.ts: Add poll handler
- src/commands/poll.ts: New CLI command
- src/cli/program.ts: Register poll command
Closes #123
2026-01-06 04:44:15 +00:00
Peter Steinberger
ea6ee16461
chore: fix lint warnings
2026-01-06 05:41:24 +01:00
Peter Steinberger
77789cb9a8
fix: improve compaction queueing and oauth flows
2026-01-06 05:41:24 +01:00
Marcus Neves
9ab0b88ac6
feat(whatsapp,telegram): add groupPolicy config option ( #216 )
...
Co-authored-by: Marcus Neves <conhecendo.contato@gmail.com>
Co-authored-by: Shadow <hi@shadowing.dev>
2026-01-05 22:41:19 -06:00
Peter Steinberger
53c9feb597
test: cover slack thread reply routing
2026-01-06 05:11:06 +01:00
Steve Caldwell
7034d4f807
fix(slack): preserve thread context in auto-replies
...
When replying to a message in a Slack thread, the response now stays
in the thread instead of going to the channel root.
Only threads replies when the incoming message was already in a thread
(has thread_ts). Top-level messages get top-level replies.
Fixes #250
2026-01-06 05:09:04 +01:00
Ayaan Zaidi
bd735182b6
feat(telegram): support media groups (multi-image messages) ( #220 )
2026-01-05 22:04:33 -06:00
VACInc
fb2513e265
fix(discord): Use channel ID for DMs instead of user ID ( #261 )
...
Co-authored-by: VAC <vac@vacs-mac-mini.localdomain>
2026-01-05 22:02:33 -06:00
Peter Steinberger
13eb9c9ee9
refactor: centralize reply dispatch
2026-01-06 04:55:00 +01:00
Peter Steinberger
5946f4c341
test: extend typing idle coverage
2026-01-06 03:42:33 +00:00
Peter Steinberger
1a4f7d3388
feat: add ack reaction defaults
2026-01-06 03:28:47 +00:00
Peter Steinberger
58186aa56e
test: cover typing idle gate
2026-01-06 03:28:47 +00:00
Peter Steinberger
ca8f66f844
refactor: unify group allowlist policy
2026-01-06 04:27:51 +01:00
Ayaan Zaidi
b1bb3ff6a6
feat: add reaction to acknowledge message in createTelegramBot
2026-01-06 03:21:56 +00:00
Peter Steinberger
9d656f4269
style: satisfy lint
2026-01-06 03:11:42 +00:00
Peter Steinberger
d5f088978a
fix: stop typing after dispatcher idle
2026-01-06 03:09:49 +00:00
Josh Palmer
cbc39bd005
use process PATH for bash tool ( #202 )
...
what: default bash PATH to process.env.PATH
why: ensure Nix-provided tools on PATH inside sessions
tests: not run
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-01-06 03:05:21 +00:00
Peter Steinberger
20a361a3cf
refactor: centralize agent timeout defaults
2026-01-06 02:48:44 +00:00
Martin Schürrer
d83ca74c18
gateway: honor agent timeout for chat.send ( #229 )
...
Co-authored-by: clawd@msch <clawd@msch>
2026-01-06 02:45:02 +00:00
Peter Steinberger
9b5610aa45
style: format telegram bot test
2026-01-06 03:43:05 +01:00
Peter Steinberger
9623bd7763
fix: route agent CLI via gateway
2026-01-06 03:41:56 +01:00
Peter Steinberger
0398f684e7
fix: add gateway stop/restart commands
2026-01-06 03:25:32 +01:00
Peter Steinberger
cc0ef4d012
fix(telegram): improve gif handling
2026-01-06 02:22:19 +00:00
Marcus Neves
67e1452f4a
Cron: normalize cron.add inputs + align channels ( #256 )
...
* fix: harden cron add and align channels
* fix: keep cron tool id params
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-01-06 02:09:48 +00:00
Peter Steinberger
00061b2fd3
fix: harden config form
2026-01-06 03:05:56 +01:00
Peter Steinberger
20705d1b37
fix: set codex oauth model default
2026-01-06 02:49:45 +01:00
Peter Steinberger
b6ac2d860d
fix: resolve embedded api key lookup
2026-01-06 02:49:44 +01:00
Peter Steinberger
b30bae89ed
feat: track compaction count + verbose notice
2026-01-06 02:49:03 +01:00
Peter Steinberger
3c6dea3ef3
style: format gmail watcher test
2026-01-06 01:46:59 +00:00
Peter Steinberger
55b33b4e69
fix: stop gmail watcher restart on bind error
2026-01-06 01:40:15 +00:00
Peter Steinberger
87f4efda8d
fix: restore auth fallback ordering
2026-01-06 01:38:15 +00:00
Peter Steinberger
6f541d6304
fix: improve discord permission errors
2026-01-06 01:38:15 +00:00
Echo
162f8e9bb7
fix(discord): convert readMessages timestamps to local time ( #240 )
...
Co-authored-by: Cash Williams <cashwilliams@gmail.com>
2026-01-05 19:37:05 -06:00
Peter Steinberger
b6ae376076
fix: gate reset auth and infer whatsapp sender
2026-01-06 02:23:55 +01:00
Peter Steinberger
b56338171b
feat: gate slash commands and add compact
2026-01-06 02:23:55 +01:00
Peter Steinberger
085c70a87b
fix: prefer env keys unless profiles configured
2026-01-06 01:21:45 +00:00
Peter Steinberger
216a23ed08
fix: auto-migrate legacy config on CLI
2026-01-06 01:10:32 +00:00
Peter Steinberger
e73573eaea
fix: clean model config typing
2026-01-06 01:08:36 +00:00
Peter Steinberger
b04c838c15
feat!: redesign model config + auth profiles
2026-01-06 00:56:58 +00:00
Peter Steinberger
f7074ea45f
test: cover logging defaults
2026-01-06 01:39:42 +01:00
Peter Steinberger
d813e14950
chore: update mention gating docs and tests
2026-01-06 01:38:36 +01:00
Peter Steinberger
811ec8b78b
fix: unify mention gating across providers
2026-01-06 01:32:17 +01:00
Peter Steinberger
5356adba8f
fix: keep Slack thread replies in thread
2026-01-06 01:09:25 +01:00
Peter Steinberger
291c6f3b60
test: cover WhatsApp DM senderE164
2026-01-06 00:55:41 +01:00
Xin
a6a45f4b84
fix(whatsapp): populate senderE164 for direct chats to enable owner commands ( #247 )
2026-01-05 23:54:35 +00:00
Peter Steinberger
a4fdfc2414
chore: fix redaction lint
2026-01-06 00:42:23 +01:00
Peter Steinberger
8be168b180
fix: redact sensitive tokens in tool summaries
2026-01-06 00:41:12 +01:00
Peter Steinberger
20e00eb89b
fix: normalize unknown prompt errors
2026-01-05 23:05:57 +00:00
Peter Steinberger
ac3dedaa1b
feat: standardize timestamps to UTC
2026-01-05 23:03:59 +00:00
Peter Steinberger
f790f3f3ba
fix/heartbeat ok delivery filter ( #246 )
...
* cron: skip delivery for HEARTBEAT_OK responses
When an isolated cron job has deliver:true, skip message delivery if the
response is just HEARTBEAT_OK (or contains HEARTBEAT_OK at edges with
short remaining content <= 30 chars). This allows cron jobs to silently
ack when nothing to report but still deliver actual content when there
is something meaningful to say.
Media is still delivered even if text is HEARTBEAT_OK, since the
presence of media indicates there's something to share.
* fix(heartbeat): make ack padding configurable
* chore(deps): update to latest
---------
Co-authored-by: Josh Lehman <josh@martian.engineering>
2026-01-05 22:52:13 +00:00
Josh Lehman
dae7f560a5
cron: skip delivery for HEARTBEAT_OK responses ( #238 )
...
When an isolated cron job has deliver:true, skip message delivery if the
response is just HEARTBEAT_OK (or contains HEARTBEAT_OK at edges with
short remaining content <= 30 chars). This allows cron jobs to silently
ack when nothing to report but still deliver actual content when there
is something meaningful to say.
Media is still delivered even if text is HEARTBEAT_OK, since the
presence of media indicates there's something to share.
2026-01-05 22:16:28 +00:00
Peter Steinberger
53bf8b7b80
fix: avoid duplicate missing auth label
2026-01-05 23:00:37 +01:00
CI
d9cdf3b8ac
fix(model): treat quota errors as rate limits
2026-01-05 21:34:08 +00:00
CI
c627efce3e
fix(model): retry with supported thinking level
2026-01-05 21:34:08 +00:00
CI
5622dfe86b
fix: retry model fallback on rate limits
2026-01-05 21:34:08 +00:00
Peter Steinberger
1b6c8178ae
style: apply biome formatting
2026-01-05 21:21:53 +00:00
Tobias Bischoff
de153a40d0
Onboard: auto-enable systemd lingering on Linux
2026-01-05 21:20:05 +00:00
Peter Steinberger
c75b2a7067
refactor: unify reply dispatch across providers
2026-01-05 19:43:54 +01:00
Peter Steinberger
cc790f2c84
docs(agent): annotate stream invariants
2026-01-05 18:10:03 +00:00
Peter Steinberger
86ad703f53
refactor(agent): extract block chunker + tool adapter
2026-01-05 18:05:40 +00:00
Peter Steinberger
7c89ce93b5
fix(agent): align tools + preserve indentation
2026-01-05 17:55:20 +00:00
Peter Steinberger
ad6bec4612
fix: enable systemd lingering for gateway
2026-01-05 18:38:43 +01:00
Peter Steinberger
0fb30db819
test: expand fenced block chunking coverage
2026-01-05 18:38:43 +01:00
Peter Steinberger
22105c8496
fix(agent): finalize block chunking
2026-01-05 17:22:29 +00:00
Peter Steinberger
b7e708c764
fix(chat): stabilize web UI tool runs
2026-01-05 17:22:29 +00:00
Peter Steinberger
86c404c48b
chore: fix reply commands lint
2026-01-05 18:16:39 +01:00
Julian Engel
110e2255c4
fix: pass custom tools via customTools parameter to pi-coding-agent SDK
...
The SDK's tools parameter only accepts built-in tools (read, bash, edit, write).
Custom clawdbot tools (browser, canvas, nodes, cron, etc.) were being filtered
out, causing 'Tool not found' errors at runtime.
Split tools into built-in and custom, passing them via the correct parameters.
2026-01-05 17:00:06 +00:00
Peter Steinberger
55e4e76d43
fix: preserve fenced markdown in block streaming
2026-01-05 17:53:53 +01:00
Peter Steinberger
7f3f73af1c
fix: show model auth in status
2026-01-05 15:50:18 +01:00
Peter Steinberger
bf6aad1965
fix(ci): format directive-handling
2026-01-05 14:34:55 +00:00
Peter Steinberger
0c37f27a4a
fix: show /model auth source
2026-01-05 14:14:26 +00:00
Peter Steinberger
cffbe79077
fix: add /model list alias
2026-01-05 14:11:33 +00:00
Peter Steinberger
bb959684fe
fix(tui): support pi-tui 0.36 key exports
2026-01-05 13:59:50 +00:00
Peter Steinberger
8e8d07cbf4
fix(ci): satisfy formatter checks
2026-01-05 13:55:53 +00:00
Peter Steinberger
5f4936dce5
fix(wizard): type OAuth provider login
2026-01-05 13:55:46 +00:00
Peter Steinberger
a9bcf88bfa
refactor(tui): use key helper predicates
2026-01-05 13:55:43 +00:00
Peter Steinberger
f24fe4e9cd
fix(whatsapp): reconnect on crypto unhandled rejection
2026-01-05 13:55:37 +00:00
Peter Steinberger
7619534bc0
feat(groups): resolve requireMention for discord/slack
2026-01-05 13:55:32 +00:00
Peter Steinberger
ce68d82dfa
fix: widen /model key masking
2026-01-05 13:50:45 +00:00
Peter Steinberger
5163886694
fix: show auth in /model list
2026-01-05 13:49:25 +00:00
Peter Steinberger
724354b9f0
fix: make tool list dynamic in system prompt
2026-01-05 06:36:24 +00:00
Peter Steinberger
79561d07a0
fix: allow openai-codex in onboarding types
2026-01-05 07:33:33 +01:00
Peter Steinberger
5431a9c692
fix: clean status + help + mid alias
2026-01-05 07:24:51 +01:00
Peter Steinberger
5aebc07369
chore: remove stale a2ui bundle hash
2026-01-05 06:17:06 +00:00
Peter Steinberger
9be1a14a08
fix: resolve agent dir in onboarding
2026-01-05 07:12:13 +01:00
Peter Steinberger
17ef7b3b0e
fix: status runtime + help
2026-01-05 07:07:17 +01:00
Peter Steinberger
1545ac0003
chore: update a2ui bundle hash
2026-01-05 06:39:08 +01:00
Peter Steinberger
f3cb41511d
feat: add openai codex oauth
2026-01-05 06:31:45 +01:00
Peter Steinberger
995f5959af
fix: stage sandbox media for inbound attachments
2026-01-05 06:18:11 +01:00
Peter Steinberger
a7d33c06f9
refactor: align agent lifecycle
2026-01-05 05:55:02 +01:00
Peter Steinberger
bcdaba1d48
chore: format custom editor
2026-01-05 05:32:30 +01:00
Peter Steinberger
870473be85
chore: update deps
2026-01-05 05:27:58 +01:00
Peter Steinberger
2eb78b8da7
fix: resolve qrcode ESM import for Node 25
2026-01-05 03:47:57 +01:00
Peter Steinberger
93bb0257f0
fix: include sessions in npm pack and update qrcode import
2026-01-05 03:28:25 +01:00
Peter Steinberger
deba1b6739
style: format daemon program args test
2026-01-05 02:54:08 +01:00
Peter Steinberger
aab98a6d18
test: fix daemon program args fs mocks
2026-01-05 02:51:56 +01:00
Peter Steinberger
849a008f34
test: avoid max port in browser server tests
2026-01-05 02:50:48 +01:00
Peter Steinberger
8791e46cf3
fix: resolve npx gateway daemon install
2026-01-05 02:48:25 +01:00
Peter Steinberger
d92a9e351e
style: fix linting order and formatting
2026-01-05 02:33:59 +01:00
Peter Steinberger
a1acd7dae8
chore: add qrcode-terminal vendor module stubs
2026-01-05 02:33:55 +01:00
Peter Steinberger
67420e9a81
fix: allow group activation for allowFrom senders
2026-01-05 02:33:51 +01:00
Peter Steinberger
e4335ea094
fix: bundle qr renderer in relay
2026-01-05 02:19:49 +01:00
Peter Steinberger
0c632f4855
fix: prefer tailnet IP for local gateway calls
2026-01-05 02:19:26 +01:00
Peter Steinberger
a322075764
fix: use id for cron tool params
2026-01-05 02:15:11 +01:00
Peter Steinberger
359cb66e68
fix: allow wildcard control commands
2026-01-05 02:06:18 +01:00
Peter Steinberger
00370139a5
docs: clarify derived port mapping
2026-01-05 02:03:29 +01:00
Peter Steinberger
17422608b2
fix: gate /activation to owners in groups
2026-01-05 02:03:29 +01:00
Peter Steinberger
85549ac3b6
fix: gate group activation by owner
2026-01-05 00:48:16 +00:00
Peter Steinberger
1bad96aa2b
style: tidy auto-reply imports and formatting
2026-01-05 01:46:16 +01:00
Peter Steinberger
b0dcdc4982
fix: avoid mixing ?? and || in discord monitor
2026-01-05 01:46:16 +01:00
Shadow
13d39b8fb1
Fix discord/slack monitor compile errors
2026-01-04 18:44:19 -06:00
Peter Steinberger
50d26d827e
fix: avoid duplicate senderName in slack monitor
2026-01-05 00:43:31 +00:00
Peter Steinberger
d58828ebd7
test: relax timeouts for slow runs
2026-01-05 01:36:30 +01:00
Jake
3f40f4ab54
style: fix lint issues
2026-01-05 01:36:30 +01:00
Jake
65a55b97e0
WhatsApp: mark offline/history messages as read
2026-01-05 01:36:29 +01:00
Peter Steinberger
852f947b44
fix: unify control command handling
2026-01-05 01:31:36 +01:00
Peter Steinberger
c6de1b1f7d
feat: add --dev/--profile CLI profiles
2026-01-05 01:27:13 +01:00
Peter Steinberger
f601dac30d
style: tidy tool schema normalization
2026-01-05 01:27:13 +01:00
Peter Steinberger
39e482414a
chore: apply upstream autostash
2026-01-05 00:26:52 +00:00
Peter Steinberger
bcdfe461d4
fix(ci): resolve lint and docs build failures
2026-01-05 00:17:14 +00:00
Peter Steinberger
2899a986a8
feat(config): add default model shorthands
2026-01-05 01:11:29 +01:00
Peter Steinberger
7a63b4995b
feat: opt-in login shell env fallback
2026-01-05 01:11:29 +01:00
Peter Steinberger
7a36e6fcd9
fix(discord): avoid duplicate block replies
2026-01-05 01:11:29 +01:00
Peter Steinberger
77b19643e2
fix: load global .env fallback
2026-01-05 01:11:29 +01:00
Josh Palmer
aa45f512f4
fix sessions dir from state env
...
what: use CLAWDBOT_STATE_DIR/CLAWDIS_STATE_DIR for session transcripts
why: isolate multi-instance gateways
tests: not run
2026-01-05 00:51:11 +01:00
Peter Steinberger
4963432777
fix(discord): avoid duplicate replies on repeated message_end
2026-01-05 00:35:42 +01:00
Peter Steinberger
435edaf997
fix: OpenAI tool schema compatibility
2026-01-05 00:15:55 +01:00
Jake
946b32c842
fix(whatsapp): suppress typing during heartbeats
...
- Prevent typing indicator during heartbeat runs
- Add regression tests
Co-authored-by: Jake <mcinteerj@gmail.com>
2026-01-04 23:03:36 +00:00
Peter Steinberger
4dd515b65f
fix(tools): honor agent tool denylist without sandbox
2026-01-05 00:02:14 +01:00
Peter Steinberger
1657c5e3d2
fix: route system events per session
2026-01-04 22:11:04 +01:00
Peter Steinberger
2ceceb8c25
style(ts): normalize type-only imports
2026-01-04 21:56:16 +01:00
Peter Steinberger
0faa200924
fix(onboarding): auto-build Control UI assets
2026-01-04 21:53:23 +01:00
Peter Steinberger
78998dba9e
feat: add image model config + tool
2026-01-04 19:35:49 +01:00
Peter Steinberger
0716a624a8
chore(lint): apply biome fixes
2026-01-04 19:08:22 +01:00
Peter Steinberger
e005dcb8e7
fix(oauth): derive oauth.json from state dir
2026-01-04 19:08:13 +01:00
Peter Steinberger
d85f91d247
feat: guide control ui access without gui
2026-01-04 18:49:36 +01:00
Shadow
50cecd8210
Discord: remove duplicate message ids
2026-01-04 11:36:18 -06:00
Peter Steinberger
2110cac5d6
fix(cli): add config alias and reduce probe noise
2026-01-04 17:23:34 +00:00
Peter Steinberger
5d17b84e8a
test(gateway): allow webchat chat.send without node
2026-01-04 17:12:49 +00:00
Peter Steinberger
2694e59ba6
fix(gateway): allow Control UI chat without node
2026-01-04 17:12:49 +00:00
Peter Steinberger
ff46f8ce58
chore: format models CLI
2026-01-04 18:11:41 +01:00
Peter Steinberger
734bb6b4fd
feat: add models scan and fallbacks
2026-01-04 17:57:52 +01:00
Cash Williams
64e656af82
fix: default elevated level to 'off' when not allowed
...
When elevatedAllowed is false (e.g., for heartbeat surface which isn't
in any allowFrom list), the elevated level was incorrectly defaulting
to 'on', causing bash commands to fail with 'elevated is not available'.
Now defaults to 'off' when elevated isn't allowed, so bash works
normally without trying to use elevated mode.
Fixes: https://github.com/clawdbot/clawdbot/issues/181
2026-01-04 17:36:14 +01:00
Clawd
17665d1732
fix(cron): pass 'id' instead of 'jobId' to gateway
...
The cron tool was passing { jobId } to the gateway for update/remove/run/runs
actions, but the gateway protocol schema expects { id }. This caused validation
errors when trying to update or remove cron jobs via the tool.
Fixes the parameter name while keeping the external tool API unchanged (still
accepts 'jobId' from callers).
2026-01-04 17:18:29 +01:00
Peter Steinberger
718299b25a
feat(doctor): repair sandbox images
2026-01-04 16:02:24 +00:00
Peter Steinberger
5f09d801d0
feat(doctor): migrate legacy Clawdis config
2026-01-04 15:40:06 +00:00
Peter Steinberger
65ad956ab4
feat(daemon): add legacy Clawdis service cleanup
2026-01-04 15:40:06 +00:00
Peter Steinberger
026a25d164
chore: lint and format cleanup
2026-01-04 16:24:17 +01:00
Peter Steinberger
e8de7d083d
feat: update onboard ASCII art to seafood shack lobster theme
2026-01-04 16:24:17 +01:00
Peter Steinberger
8f53e9093d
test: align google-shared expectations
2026-01-04 15:02:42 +00:00
Peter Steinberger
30d5511058
test: add config for gateway sigterm
2026-01-04 14:59:49 +00:00
Peter Steinberger
c6b8235862
style: format tests and helpers
2026-01-04 14:57:57 +00:00
Peter Steinberger
557aa74ee8
test: update google-shared expectations
2026-01-04 14:57:57 +00:00
Peter Steinberger
246adaa119
chore: rename project to clawdbot
2026-01-04 14:38:51 +00:00
Peter Steinberger
d48dc71fa4
feat: add canvasHost liveReload option
2026-01-04 15:22:47 +01:00
Peter Steinberger
1e555e693a
fix: dedupe canvas host watcher
2026-01-04 15:15:46 +01:00
Peter Steinberger
ec09b06636
fix: wire slack deps and stabilize sigterm test
2026-01-04 15:13:23 +01:00
George Tsifrikas
378e4c9b6b
Fix duplicate sendMessageSlack imports
...
Remove duplicate import statements for sendMessageSlack that were
causing TypeScript compilation errors in deps.ts and heartbeat-runner.ts
Co-Authored-By: Warp <agent@warp.dev>
2026-01-04 14:47:17 +01:00
Peter Steinberger
5ce1eb791e
chore: align rebase with main
2026-01-04 14:41:52 +01:00
Peter Steinberger
529cf91ac3
fix: keep node presence fresh
2026-01-04 14:41:52 +01:00
Mariano Belinky
672700f2b3
docs: add PR template + node presence beacon
2026-01-04 14:41:52 +01:00
Peter Steinberger
476bbd2915
fix: update lockfile and lint
2026-01-04 14:12:00 +01:00
Peter Steinberger
ec6980cda0
fix: wire slack into delivery routing
2026-01-04 11:44:41 +00:00
Peter Steinberger
b234d82bf3
fix: add slack deps and send helpers
2026-01-04 11:44:41 +00:00
Muhammed Mukhthar CM
9958283ced
fix: Antigravity API compatibility and Gemini thinking tag leakage ( #167 )
...
* fix: ensure type:object in sanitized tool schemas for Antigravity API
The sanitizeSchemaForGoogle function strips unsupported JSON Schema
keywords like anyOf, but this can leave schemas with 'properties' and
'required' fields without a 'type' field. Both Google's Gemini API and
Anthropic via Antigravity require 'type: object' when these fields exist.
This fix adds a post-sanitization check that ensures type is set to
'object' when properties or required fields are present.
Fixes errors like:
- Gemini: 'parameters.properties: only allowed for OBJECT type'
- Anthropic: 'tools.6.custom.input_schema.type: Field required'
* fix: regenerate pi-ai patch with proper pnpm format
The patch now correctly applies via pnpm patch-commit, fixing:
- Thinking blocks: skip for Gemini, send with signature for Claude
- Schema sanitization: ensure type:object after removing anyOf
- Remove strict:null for LM Studio/Antigravity compatibility
Tested with all Antigravity models (Gemini and Claude).
* fix: strip thinking tags from block streaming output to prevent Gemini tag leakage
2026-01-04 12:44:19 +01:00
Peter Steinberger
d6f8b6ac51
fix: update pi-ai patch and tests
2026-01-04 12:24:01 +01:00
Shadow
8c38a7fee8
Slack: add some fixes and connect it all up
2026-01-04 01:53:26 -06:00
Peter Steinberger
607de4a403
fix: add slack chunk limits
2026-01-04 07:23:39 +01:00
Shadow
0085b2e0a9
Slack: refine scopes and onboarding
2026-01-04 07:22:02 +01:00
Shadow
bf3d120f8c
Slack: add new slack connection
2026-01-04 07:18:20 +01:00
Peter Steinberger
c9504a6f20
refactor: split config module
2026-01-04 07:05:17 +01:00
Peter Steinberger
5e36e2c3f3
fix: allow elevated via discord username
2026-01-04 05:47:28 +00:00
Peter Steinberger
d2da305190
feat: fallback elevated allowlist to discord dms
2026-01-04 05:31:00 +00:00
Peter Steinberger
ff88f3c075
style: fix lint ordering
2026-01-04 06:27:54 +01:00
Peter Steinberger
a03895dfa9
fix: default elevated mode to on
2026-01-04 05:19:28 +00:00
Peter Steinberger
6ea0eb438c
style: fix lint formatting
2026-01-04 06:17:07 +01:00
Peter Steinberger
fe0b3500cc
feat: add elevated bash mode
2026-01-04 05:15:59 +00:00
Peter Steinberger
72a9e58777
refactor(auto-reply): split reply flow
2026-01-04 05:47:37 +01:00
Peter Steinberger
fd91da2b7f
fix: log dynamic config reloads
2026-01-04 04:24:50 +00:00
Peter Steinberger
13c2f22240
refactor: split agent tools
2026-01-04 05:07:44 +01:00
Peter Steinberger
7d95f43a75
style: fix lint
2026-01-04 03:37:08 +00:00
Peter Steinberger
12ba32c724
feat(browser): add remote-capable profiles
...
Co-authored-by: James Groat <james@groat.com>
2026-01-04 03:33:07 +00:00
Peter Steinberger
0e75aa2716
test: add sessions_send loopback test
2026-01-04 04:30:57 +01:00
Shadow
3a28e3562c
Discord: tools for uploading emojis and stickers!
2026-01-03 21:20:01 -06:00
Peter Steinberger
24aa3e3311
test: stabilize gateway tests
2026-01-04 04:16:38 +01:00
Peter Steinberger
3c4c2aa98c
refactor: split gateway server methods
2026-01-04 04:05:18 +01:00
Peter Steinberger
55876f7be0
test(agents): cover ping-pong announce flow
2026-01-04 03:41:58 +01:00
Peter Steinberger
cd3c42d0c0
feat(sessions): add agent-to-agent ping-pong
2026-01-04 03:37:44 +01:00
Peter Steinberger
add1301a51
feat(sessions): add agent-to-agent post step
2026-01-04 03:04:55 +01:00
Peter Steinberger
1d06164e18
refactor: use per-send run ids for gateway agent
2026-01-04 02:08:52 +01:00
Peter Steinberger
fe67073b74
fix: avoid sessions_send timeouts
2026-01-04 01:52:01 +01:00
Peter Steinberger
cbf41859aa
test: relax cron default scheduler timeout
2026-01-04 01:45:50 +01:00
Peter Steinberger
fbaa109a3a
fix: stabilize lint and test timeouts
2026-01-04 01:42:08 +01:00
Peter Steinberger
70d68d29d0
fix: warm agent.wait cache
2026-01-04 01:35:02 +01:00
Peter Steinberger
a1780efb9f
fix: adjust typing TTL
2026-01-04 00:26:31 +00:00
Peter Steinberger
53d954695e
style: format agent.wait imports
2026-01-04 01:22:22 +01:00
Peter Steinberger
8724c2aea8
fix: satisfy gate checks
2026-01-04 01:16:53 +01:00
Peter Steinberger
e3c543ec06
fix: wait on agent.wait for sessions_send
2026-01-04 01:15:23 +01:00
Peter Steinberger
412e8b3aee
test: cover gif playback send params
2026-01-03 23:57:43 +00:00
Peter Steinberger
5862f95bd2
fix: lock main session deletion
2026-01-03 23:57:17 +00:00
Peter Steinberger
e17c038d18
fix: add gif playback for WhatsApp sends
2026-01-03 23:56:40 +00:00
Peter Steinberger
e1dd764504
feat: add node location support
2026-01-04 00:54:44 +01:00
Peter Steinberger
3bc24bf179
fix: wait for final agent response in sessions_send
2026-01-04 00:40:40 +01:00
Peter Steinberger
7c062e0ef2
fix: clarify provider requirements in onboarding
2026-01-03 23:29:38 +00:00
Peter Steinberger
0f6e566a20
fix: make sessions_send wait via agent events
2026-01-04 00:12:14 +01:00
Peter Steinberger
86038ec165
chore: apply lint fixes
2026-01-04 00:06:02 +01:00
Peter Steinberger
e7c9b9a749
feat: add sessions tools and send policy
2026-01-03 23:44:42 +01:00
Peter Steinberger
919d5d1dbb
fix: restore sandbox PATH default
2026-01-03 22:36:16 +00:00
Peter Steinberger
8b069e62fc
fix: appease lint after merge
2026-01-03 22:59:11 +01:00
Azade
18a89a31af
fix(browser): avoid esbuild __name helper in evaluateViaPlaywright
...
When tsx/esbuild compiles arrow functions, it adds a __name helper
for debugging. This helper doesn't exist in the browser context,
causing 'ReferenceError: __name is not defined' when using
page.evaluate() with inline functions.
The fix uses new Function() constructed at runtime, which esbuild
doesn't transform, avoiding the __name injection.
2026-01-03 22:37:21 +01:00
Peter Steinberger
934f891932
fix: include embedded agent error cause in reply
2026-01-03 21:30:43 +00:00
Peter Steinberger
5493772910
fix: tolerate missing sandbox config in embedded runner
2026-01-03 21:30:40 +00:00
Peter Steinberger
c533593d8e
fix: add ~/.local/bin to PATH bootstrap for uv-installed tools ( fixes #78 ) ( #150 )
2026-01-03 22:25:52 +01:00
Mariano Belinky
d88581eb7c
fix: add ~/.local/bin to PATH for uv tool binaries ( #78 )
2026-01-03 22:21:16 +01:00
Peter Steinberger
d8a417f7ff
feat: add sandbox browser support
2026-01-03 22:14:18 +01:00
Peter Steinberger
107dc1aa42
style(logging): organize embedded log imports
2026-01-03 21:09:44 +00:00
Peter Steinberger
9d2d0c64c2
test(gateway): cover config reload
2026-01-03 21:01:26 +00:00
Peter Steinberger
3872f32419
fix(logging): quiet embedded run console logs
2026-01-03 20:57:39 +00:00
Peter Steinberger
3b075dff8a
feat: add per-session agent sandbox
2026-01-03 21:41:58 +01:00
Peter Steinberger
7bad9f3fbd
fix: drop embedded sandbox wiring
2026-01-03 20:16:53 +00:00
Peter Steinberger
16e3535ac0
refactor: remove bash pty mode
2026-01-03 20:15:10 +00:00
Peter Steinberger
a15cffb7de
fix: stream tool summaries early and tool output
2026-01-03 21:04:40 +01:00
Shadow
6464d93bbb
Discord: add forwarded message handling
2026-01-03 13:56:09 -06:00
Peter Steinberger
e9d7ac8e84
feat(gateway): add config hot reload
2026-01-03 19:52:24 +00:00
Shadow
3e84b9632d
Discord: handle system message types
2026-01-03 13:15:19 -06:00
Peter Steinberger
55a07a0ef0
style: fix lint formatting
2026-01-03 18:51:25 +00:00
Peter Steinberger
52458a5628
Discord: default reaction notifications to own
2026-01-03 18:48:36 +00:00
Shadow
451174ca10
Discord: add reaction notification allowlist
2026-01-03 18:48:36 +00:00
Peter Steinberger
cdfbd6e7eb
test(gateway): align config constants in auth test
2026-01-03 19:37:09 +01:00
Peter Steinberger
350e007a5c
test(agents): extend text_end coverage
2026-01-03 19:37:09 +01:00
Peter Steinberger
5e156135a1
test(gateway): avoid hoisted export errors
2026-01-03 19:37:09 +01:00
Peter Steinberger
b7ec9ae475
fix(gateway): format status/code errors
2026-01-03 19:37:09 +01:00
Peter Steinberger
8a18af409d
test(gateway): cover helper registries
2026-01-03 19:37:09 +01:00
Peter Steinberger
6a125b554b
refactor(gateway): split server helpers
2026-01-03 19:37:09 +01:00
Shadow
ce92fac983
chore: formatting
2026-01-03 12:35:16 -06:00
Peter Steinberger
27a8f3d061
chore: add inline guidance for block streaming
2026-01-03 18:46:59 +01:00
Peter Steinberger
72b34f7d03
fix: harden block stream dedupe
2026-01-03 18:44:07 +01:00
Peter Steinberger
73fa2e10bc
refactor: split gateway server methods
2026-01-03 18:14:07 +01:00
Peter Steinberger
4a6b33d799
refactor: add gateway server helper modules
2026-01-03 18:00:45 +01:00
Peter Steinberger
217b84f2ac
fix: drop final payloads after block streaming
2026-01-03 17:55:31 +01:00
Peter Steinberger
1d6de24ab3
feat: configurable control ui base path
2026-01-03 17:55:31 +01:00
Peter Steinberger
f313af75e9
fix: avoid duplicate block-stream payloads
2026-01-03 16:53:56 +00:00
Peter Steinberger
591773715e
fix: honor whatsapp per-group mention overrides
2026-01-03 17:51:10 +01:00
Peter Steinberger
6ae51ae3de
refactor: split gateway server helpers and tests
2026-01-03 17:34:52 +01:00
Peter Steinberger
200dd634fb
fix: preserve block streaming order
2026-01-03 17:14:01 +01:00
Peter Steinberger
3bbdcaf87f
fix: avoid duplicate block streaming
2026-01-03 17:10:47 +01:00
Peter Steinberger
9f8eeceae7
feat: soften block streaming chunking
2026-01-03 16:48:26 +01:00
Peter Steinberger
53baba71fa
feat: unify onboarding + config schema
2026-01-03 16:48:08 +01:00
Peter Steinberger
72f8148080
fix: clean up embedded lint
2026-01-03 15:09:07 +00:00
Peter Steinberger
9a9b429f74
fix: elevate embedded run logs to info
2026-01-03 15:03:03 +00:00
Peter Steinberger
733e86516e
fix: address runtime warnings in build
2026-01-03 15:01:38 +00:00
Peter Steinberger
1a00175eb7
chore: fix lint formatting
2026-01-03 14:57:49 +00:00
Peter Steinberger
77c76ca52f
test: fix transcription and tool schema assertions
2026-01-03 14:55:05 +00:00
Peter Steinberger
5de3395204
fix: resolve gcloud python path
2026-01-03 14:36:48 +00:00
Peter Steinberger
48731f494b
fix: add embedded run logs and typing ttl
2026-01-03 14:09:19 +00:00
Jake
81f4a7cdb7
Agents: Fix Gemini schema compatibility and robust model discovery
2026-01-03 13:57:29 +01:00
Peter Steinberger
d31dfbc565
chore(canvas): refresh a2ui bundle hash
2026-01-03 13:38:12 +01:00
Peter Steinberger
db36f0105d
fix(gateway): validate event/response frames
2026-01-03 13:37:40 +01:00
Peter Steinberger
5377e2400a
fix: avoid red gmail-watcher prefix
2026-01-03 12:36:15 +00:00
Peter Steinberger
72c0aa63fb
style: tidy imports and formatting
2026-01-03 12:35:23 +00:00
Peter Steinberger
933bee220f
fix(cron): pass resolved channel to agent tools
2026-01-03 12:35:23 +00:00
Peter Steinberger
bd2dabfa8f
fix(agents): load tool display config from disk
2026-01-03 12:35:23 +00:00
Peter Steinberger
bb54e60179
fix(logging): decouple file logs from console verbose
2026-01-03 12:32:14 +00:00
Peter Steinberger
e52bdaa2a2
fix: repair tool meta regex
2026-01-03 12:30:46 +00:00
Peter Steinberger
b6301c719b
fix: default low thinking for reasoning models
2026-01-03 12:19:06 +00:00
Peter Steinberger
6e16c0699a
feat: centralize tool display metadata
2026-01-03 13:18:27 +01:00
Peter Steinberger
7a80e8fe77
refactor: centralize home path shortening
2026-01-03 12:42:27 +01:00
Peter Steinberger
1ec3512925
refactor!: drop clawdis_ tool prefix
2026-01-03 12:39:52 +01:00
Peter Steinberger
772ada4308
fix: refine tool summaries and scope discord tool
2026-01-03 12:33:42 +01:00
Peter Steinberger
7165c8a7e5
refactor: rename bundle identifiers to com.clawdis
2026-01-03 12:26:22 +01:00
Peter Steinberger
f47c7ac369
feat: support configurable gateway port
2026-01-03 12:00:17 +01:00
Muhammed Mukhthar CM
4d42811ecf
fix(telegram): add textLimit to block reply chunking
...
Block streaming replies were missing the textLimit parameter in
deliverReplies(), causing long messages to fail with 'message is too
long' error instead of being chunked properly.
The final reply path already included textLimit, but the onBlockReply
callback path did not.
2026-01-03 11:12:15 +01:00
Peter Steinberger
1bebcf8033
chore: update appcast and TUI streaming handling
2026-01-03 11:06:49 +01:00
Shadow
7400c0946e
Discord: update UIs to use the new config
2026-01-03 01:02:22 -06:00
Peter Steinberger
67a67df35a
fix: avoid unsafe string coercion in tui
2026-01-03 06:44:17 +01:00
Peter Steinberger
662208949f
fix: align sessions.patch and tui typing
2026-01-03 06:37:40 +01:00
Peter Steinberger
d3458a4fc3
feat: overhaul tui controller
2026-01-03 06:27:38 +01:00
Peter Steinberger
32c91bbb25
feat: add tui ui kit
2026-01-03 06:22:20 +01:00
Peter Steinberger
aee13507f9
feat: expand tui gateway client
2026-01-03 06:17:33 +01:00
Peter Steinberger
61b67f6301
feat: extend gateway session patch
2026-01-03 06:16:49 +01:00
Peter Steinberger
53fd7a4473
chore: fix lint ordering
2026-01-03 05:38:29 +01:00
Peter Steinberger
3633c829ae
fix: repair discord action typing
2026-01-03 05:33:57 +01:00
Peter Steinberger
6cda84432e
fix: stabilize pi-ai patch + tests
2026-01-03 05:22:09 +01:00
Peter Steinberger
b914eaa6fa
chore: apply biome lint fixes
2026-01-03 05:10:09 +01:00
Peter Steinberger
988b67aa30
test: refresh auto-reply expectations
2026-01-03 05:09:59 +01:00
Peter Steinberger
0ed5b82389
fix: prefer explicit hook mappings
2026-01-03 05:09:54 +01:00
mukhtharcm
82ad7e29a6
fix: reject antigravity auth in non-interactive onboarding mode
2026-01-03 05:01:42 +01:00
mukhtharcm
2290a3c8af
feat: add VPS-aware Antigravity OAuth with manual URL paste fallback
...
Detects SSH/VPS/headless environments and prompts user to paste
the OAuth callback URL instead of relying on localhost server.
- Add antigravity-oauth.ts with VPS detection and manual OAuth flow
- Update onboard-interactive.ts to use VPS-aware flow
- Update configure.ts to use VPS-aware flow
2026-01-03 05:01:42 +01:00
mukhtharcm
d216cebff5
fix: use claude-opus-4-5-thinking as default antigravity model
2026-01-03 05:01:42 +01:00
mukhtharcm
05bd345828
feat: add Google Antigravity authentication support
...
- Add 'antigravity' as new auth choice in onboard and configure wizards
- Implement Google Antigravity OAuth flow using loginAntigravity from pi-ai
- Update writeOAuthCredentials to accept any OAuthProvider (not just 'anthropic')
- Add schema sanitization for Google Cloud Code Assist API to fix tool call errors
- Default model set to google-antigravity/claude-opus-4-5 after successful auth
The schema sanitization removes unsupported JSON Schema keywords (patternProperties,
const, anyOf, etc.) that Google's Cloud Code Assist API doesn't understand.
2026-01-03 05:01:42 +01:00
Peter Steinberger
08ce608ae7
feat: add gateway TUI
2026-01-03 04:47:34 +01:00
Peter Steinberger
971b98c96d
test: cover new queue modes
2026-01-03 04:47:34 +01:00
Peter Steinberger
a72da30c9a
sag skill: add chat voice response guidance
...
When Peter asks for voice replies, generate audio with sag and send via MEDIA:
2026-01-03 03:34:31 +00:00
Peter Steinberger
ac36eba822
feat: expand queue modes and followup backlog
2026-01-03 04:26:49 +01:00
Peter Steinberger
6160521f2f
fix: guard bash pty cwd
2026-01-03 03:05:51 +00:00
Jared Verdi
ca9b0dbc88
Gmail watcher: start when gateway (re)starts
2026-01-03 03:49:53 +01:00
Peter Steinberger
11c7e05f43
fix: harden pty spawn path
2026-01-03 02:36:01 +00:00
Peter Steinberger
1781105438
group chat: hint that reactions are welcome while lurking
...
Even when staying silent, emoji reactions show engagement without cluttering chat.
2026-01-03 02:29:32 +00:00
Peter Steinberger
632ca01fbf
style: format linted files
2026-01-03 03:10:17 +01:00
Shadow
0c38f2df2a
Discord: drop enableReactions config
2026-01-03 03:07:13 +01:00
Shadow
6bab813bb3
Discord: add reactions, stickers, and polls skill
2026-01-03 03:07:13 +01:00
Peter Steinberger
d8201f8436
fix: handle null action in hooks-mapping mergeAction call
2026-01-03 02:05:01 +00:00
Peter Steinberger
a3865f1417
group chat: add lurking guidance to system prompt
...
Be a good group participant: lurk and follow the conversation,
but only chime in when genuinely helpful. Quality over quantity.
2026-01-03 02:02:55 +00:00
Peter Steinberger
fb10bf5f75
feat: add bash pty diagnostics
2026-01-03 01:56:54 +00:00
Peter Steinberger
a9eb31e8fe
fix: satisfy discord and gateway typing
2026-01-03 02:55:43 +01:00
Peter Steinberger
7e4e9ecdea
templates: add qmd semantic memory recall to AGENTS.md
2026-01-03 01:33:10 +00:00
Peter Steinberger
0c013a237f
fix: default block streaming break to message_end
2026-01-03 01:33:10 +00:00
Jared Verdi
12e27f9e5e
Gateway: ack skipped hook transforms with 204
2026-01-03 02:32:50 +01:00
Peter Steinberger
3368fcf31e
fix: avoid duplicate replies with block streaming
2026-01-03 02:16:01 +01:00
Peter Steinberger
72d1fa4da5
fix: dedupe repeated block replies
2026-01-03 01:49:27 +01:00
Peter Steinberger
2042013360
test: cover provider textChunkLimit config
2026-01-03 01:49:27 +01:00
Peter Steinberger
f5189cc897
refactor: move text chunk limits to providers
2026-01-03 01:49:27 +01:00
Peter Steinberger
5684e2d658
feat: configurable outbound text chunk limits
2026-01-03 01:49:27 +01:00
Peter Steinberger
2d28fa34f5
feat: make block streaming break configurable
2026-01-03 01:49:27 +01:00
Peter Steinberger
fe040b84d9
chore: sync lockfile and bundle hash
2026-01-03 00:40:39 +01:00
Sreekaran Srinath
0ac30afb29
feat: add coding-agent skill and anyBins gating
...
Co-authored-by: Sreekaran Srinath <ss@sreekaran.com>
2026-01-03 00:40:03 +01:00
Peter Steinberger
59601eb99c
fix: preserve newlines in reply tags
2026-01-02 23:36:43 +00:00
Peter Steinberger
9616f4b2b1
feat: stream reply blocks immediately
2026-01-03 00:28:33 +01:00
Peter Steinberger
88ed58b3d0
chore: update deps and extend read tool tests
2026-01-02 23:47:28 +01:00
Peter Steinberger
fc54e905c0
chore: upgrade pi-mono deps to 0.31.1
2026-01-02 23:37:08 +01:00
Peter Steinberger
d1b76cb1b2
test: cover replyToMode behavior
2026-01-02 23:20:52 +01:00
Peter Steinberger
2c92ccd66e
feat: add reply tags and replyToMode
2026-01-02 23:18:41 +01:00
Peter Steinberger
a9ff03acaf
feat: unify group mention defaults
2026-01-02 22:50:58 +01:00
Peter Steinberger
fd32fc8d8d
feat: add discord guild wildcard defaults
2026-01-02 22:33:26 +01:00
Peter Steinberger
47f4f59692
chore: remove stray ds_store files
2026-01-02 22:24:26 +01:00
Peter Steinberger
5cf1a9535e
feat: move group mention gating to provider groups
2026-01-02 22:24:26 +01:00
Shadow
da57c314ef
Discord: clarify docs and drop legacy guild schema
2026-01-02 15:21:13 -06:00
Shadow
2676636316
Discord: fix reply context formatting
2026-01-02 14:55:07 -06:00
Shadow
f3a973dc9e
Discord: include reply context
2026-01-02 14:49:16 -06:00
Peter Steinberger
118a6d7421
fix: align discord config ui
2026-01-02 21:15:59 +01:00
Peter Steinberger
3104b088e4
chore(canvas): update a2ui bundle hash
2026-01-02 19:58:46 +00:00
Peter Steinberger
3b0ad719c9
chore(discord): add verbose diagnostics
2026-01-02 19:58:42 +00:00
Peter Steinberger
e368e56246
chore(gateway): quiet provider startup logs
2026-01-02 19:58:40 +00:00
Peter Steinberger
7b4fa9e1a1
test: cover camera list invoke
2026-01-02 20:24:41 +01:00
Peter Steinberger
43f6b9ef32
fix: resolve camera tool handling
2026-01-02 17:44:25 +00:00
Peter Steinberger
cba37f99b6
test: cover camera device selection
2026-01-02 18:25:22 +01:00
Peter Steinberger
74db53d939
feat: add camera list and device selection
2026-01-02 18:23:26 +01:00
Peter Steinberger
5f82739e2b
test: cover camera snap mime mapping
2026-01-02 17:49:20 +01:00
Peter Steinberger
d79dc4d742
fix: correct camera snap mime mapping
2026-01-02 17:43:34 +01:00
Peter Steinberger
868b438e67
test(gateway): fix nix mode mock toggle
2026-01-02 17:15:26 +01:00
Peter Steinberger
8989bd9fd7
fix(auto-reply): default whatsapp self-only on empty config
2026-01-02 17:15:26 +01:00
Peter Steinberger
97e06a8eb4
chore(canvas): regenerate a2ui bundle hash
2026-01-02 17:15:26 +01:00
Peter Steinberger
314164fb8a
chore: fix lint and add gateway auth tests
2026-01-02 17:15:26 +01:00
Peter Steinberger
f489b6e7a5
chore: merge origin/main
2026-01-02 16:50:29 +01:00
Peter Steinberger
a8bc974a2e
fix: harden gateway password auth
2026-01-02 16:47:52 +01:00
Peter Steinberger
9b3aef3567
fix: show skill descriptions in onboarding list
2026-01-02 16:25:28 +01:00
Peter Steinberger
ad9d6f616d
fix: improve onboarding auth UX
2026-01-02 15:03:38 +01:00
Peter Steinberger
5ecb65cbbe
fix: persist gateway token for local CLI auth
2026-01-02 13:46:48 +01:00
Peter Steinberger
1e04481aaf
style: format discord slash handler
2026-01-02 13:38:36 +01:00
Peter Steinberger
5f103e32bd
fix: gate discord slash commands
2026-01-02 13:38:35 +01:00
Shadow
fff9efe8a8
Discord: auto-register slash command
2026-01-02 13:38:35 +01:00
Shadow
b135b3efb9
Discord: add slash command handling
2026-01-02 13:38:35 +01:00