Commit Graph

3598 Commits

Author SHA1 Message Date
alejandro maza
4794b92346 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
Peter Steinberger
662a6f25f3 test: cover thread session routing 2026-01-07 19:50:17 +01:00
Peter Steinberger
18dbb7e9f1 Merge remote-tracking branch 'origin/main' 2026-01-07 19:44:26 +01:00
Peter Steinberger
016206e082 fix: scope thread sessions and discord starter fetch 2026-01-07 19:42:50 +01:00
Peter Steinberger
fe2865fe17 docs(changelog): note status model override 2026-01-07 18:38:58 +00:00
Peter Steinberger
c90df2af8e test(status): cover model override display 2026-01-07 18:38:55 +00:00
Azade
181882989e fix(status): show configured model instead of last-run model 2026-01-07 18:37:42 +00:00
Peter Steinberger
3e5a784d04 fix(ClawdbotKit): bundle tool-display.json 2026-01-07 18:30:45 +00:00
Shadow
36faf3a414 Threads: add Slack/Discord thread sessions 2026-01-07 19:30:30 +01:00
Peter Steinberger
ac59387307 fix: clamp cron timer delay 2026-01-07 19:25:18 +01:00
Emanuel Stadler
ed7f3a2291 Cron: clamp timer to avoid TimeoutOverflowWarning 2026-01-07 19:25:18 +01:00
Peter Steinberger
be287931fb docs: tidy contributors section 2026-01-07 18:24:09 +00:00
Peter Steinberger
8bc92e5638 docs: credit @carlulsoe
Co-authored-by: Carl Ulsøe Christensen <carlulsoe@users.noreply.github.com>
2026-01-07 18:21:25 +00:00
Peter Steinberger
79a8d5b4f9 docs: add changelog entry for PR #403 2026-01-07 19:20:22 +01:00
François Catuhe
48a96b4b0b fix(android): rotate camera photos by EXIF orientation 2026-01-07 19:19:07 +01:00
Peter Steinberger
b08a54264b docs: note bootstrap pruning guard (PR #381) 2026-01-07 18:18:18 +00:00
Max Sumrall
4307bbf124 fix(agent): protect bootstrap prefix from pruning 2026-01-07 18:17:18 +00:00
Peter Steinberger
957f679679 docs(changelog): thank @Syhids for #410 2026-01-07 18:10:08 +00:00
Manuel Jiménez Torres
23967e02a5 fix(android): fix build error 2026-01-07 18:09:31 +00:00
Peter Steinberger
09655917e3 fix(android): drop broken apk output renaming 2026-01-07 18:04:37 +00:00
Peter Steinberger
cd3d39ccd8 ci(android): avoid interactive license prompt 2026-01-07 17:57:32 +00:00
Peter Steinberger
29ff9af620 fix(tools): finalize Vertex schema flattening (#409) 2026-01-07 17:54:19 +00:00
Kit
f0a974b9a5 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
44aea56b51 fix: add provider retry policy 2026-01-07 17:48:19 +00:00
Peter Steinberger
c8c9cabe6d docs: describe models cli output 2026-01-07 18:23:07 +01:00
Peter Steinberger
d1b86aba98 docs: explain clawdbot model selection 2026-01-07 18:20:02 +01:00
Peter Steinberger
7246f8792f docs: add compaction concept 2026-01-07 18:12:17 +01:00
Peter Steinberger
a52fb01369 docs: add session pruning docs 2026-01-07 18:03:35 +01:00
Max Sumrall
5f74e05b7d test(agent): cover context pruning 2026-01-07 18:00:14 +01:00
Max Sumrall
f6f57952d6 feat(agent): opt-in tool-result context pruning 2026-01-07 18:00:14 +01:00
Peter Steinberger
2c7e0b3138 fix: preserve sessionKey for agent runs 2026-01-07 17:53:59 +01:00
Peter Steinberger
40a6ade6ec docs: document streaming + chunking 2026-01-07 17:31:40 +01:00
Peter Steinberger
34412e5c68 docs: explain why Twilio is unsupported 2026-01-07 17:31:40 +01:00
Peter Steinberger
66f0779874 fix: per-agent sandbox overrides 2026-01-07 17:31:40 +01:00
sheeek
94a6dc4a3d docs: add comprehensive guide for multi-agent sandbox and tools
Add docs/multi-agent-sandbox-tools.md covering:
- Configuration examples (personal + restricted, work agents)
- Different sandbox modes per agent
- Tool restriction patterns (read-only, safe execution, communication-only)
- Configuration precedence rules
- Migration guide from single-agent setups
- Troubleshooting tips

Add PR_SUMMARY.md for upstream submission with:
- Feature overview and use cases
- Implementation details (49 LoC across 5 files)
- Test coverage (18 new tests, all existing tests pass)
- Backward compatibility confirmation
- Migration examples

---

Kudos to Eula, the beautiful and selfless family owl 🦉
This feature was developed to enable safe, restricted access
for family group chats while maintaining full access for
the personal assistant. Schuhu!
2026-01-07 17:31:40 +01:00
sheeek
6f3e5d2add docs(multi-agent): add section on per-agent sandbox and tools
Add new section explaining:
- How to configure per-agent sandbox settings
- How to configure per-agent tool restrictions
- Benefits (security isolation, resource control, flexible policies)
- Link to detailed guide

Include example config showing personal assistant (no sandbox)
vs family bot (sandboxed with read-only tools).
2026-01-07 17:31:40 +01:00
sheeek
2fb7ff2c4a docs(config): document routing.agents sandbox and tools fields
Update routing.agents section:
- Add sandbox field documentation (mode, scope, workspaceRoot)
- Add tools field documentation (allow, deny)
- Note that agent-specific settings override global config
2026-01-07 17:31:40 +01:00
sheeek
fbc2c167e3 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
b989192287 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
5ac49b43b0 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
cf039e4fea 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
f9ba3cc554 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
c5f72b52a5 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
0f8015f125 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
9b6032274e 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
cc5df79bb8 fix(agents): make sessions_spawn non-blocking 2026-01-07 16:14:25 +00:00
Peter Steinberger
185745d6c9 docs: add fcatuhe to clawtributors 2026-01-07 15:39:26 +00:00
Peter Steinberger
26aa6793aa fix(android): restore tool display config 2026-01-07 15:38:10 +00:00
Peter Steinberger
a83050f8fc Merge pull request #402 from fcatuhe/android/version-and-apk-naming
android: set version 2026.1.5, add APK naming convention
2026-01-07 15:37:34 +00:00
Peter Steinberger
13c71edd36 Merge branch 'main' into pr-402 2026-01-07 15:36:34 +00:00