@stevederico/dotbot 0.27.0 → 0.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,25 @@
1
+ 0.29
2
+
3
+ Extract shared streamEvents
4
+ Remove dead databaseManager logging
5
+ Remove dead CDP methods
6
+ Remove dead compat aliases
7
+ Remove dead observer module
8
+ Consolidate cron row mapping
9
+ Update README sandbox docs
10
+
11
+ 0.28
12
+
13
+ Add --sandbox mode
14
+ Add --allow domain presets
15
+ Add domain-gated web_fetch
16
+ Add domain-gated browser_navigate
17
+ Add preset-unlocked tools
18
+ Add API key validation
19
+ Add models CLI command
20
+ Add /models REPL command
21
+ Add /load model command
22
+
1
23
  0.27
2
24
 
3
25
  Add interactive API key prompt
package/README.md CHANGED
@@ -13,7 +13,7 @@
13
13
  <img src="https://img.shields.io/github/stars/stevederico/dotbot?style=social" alt="GitHub stars">
14
14
  </a>
15
15
  <a href="https://github.com/stevederico/dotbot">
16
- <img src="https://img.shields.io/badge/version-0.25-green" alt="version">
16
+ <img src="https://img.shields.io/badge/version-0.28-green" alt="version">
17
17
  </a>
18
18
  <img src="https://img.shields.io/badge/LOC-11k-orange" alt="Lines of Code">
19
19
  </p>
@@ -27,9 +27,10 @@
27
27
 
28
28
  | | dotbot | nanobot | OpenClaw |
29
29
  |---|:---:|:---:|:---:|
30
- | **Lines of Code** | **11k** | 22k | 1M+ |
30
+ | **Lines of Code** | **~11k** | 22k | 1M+ |
31
31
  | **Tools** | **53** | ~10 | ~50 |
32
- | **Dependencies** | Minimal | Heavy | Heavy |
32
+ | **Dependencies** | **0** | Heavy | Heavy |
33
+ | **Sandbox Mode** | **Built-in** | No | Requires NemoClaw |
33
34
 
34
35
  Everything you need for AI agents. Nothing you don't. No bloated abstractions. No dependency hell. Just a clean, focused agent that works.
35
36
 
@@ -43,7 +44,9 @@ A **streaming AI agent** with tool execution, autonomous tasks, and scheduled jo
43
44
  ```bash
44
45
  dotbot "What's the weather in San Francisco?"
45
46
  dotbot # Interactive mode
47
+ dotbot --sandbox # Sandbox mode (restricted tools)
46
48
  dotbot serve --port 3000
49
+ dotbot models # List available models
47
50
  dotbot tools # List all 53 tools
48
51
  ```
49
52
 
@@ -80,6 +83,49 @@ dotbot stats
80
83
  dotbot memory
81
84
  ```
82
85
 
86
+ ### Sandbox Mode
87
+
88
+ Run dotbot with restricted tool access — deny-by-default.
89
+
90
+ ```bash
91
+ # Full lockdown — safe tools only (memory, search, weather, tasks)
92
+ dotbot --sandbox "What is 2+2?"
93
+
94
+ # Allow specific domains for web_fetch and browser_navigate
95
+ dotbot --sandbox --allow github
96
+ dotbot --sandbox --allow github --allow slack
97
+
98
+ # Allow specific tool groups
99
+ dotbot --sandbox --allow messages
100
+ dotbot --sandbox --allow images
101
+
102
+ # Mix domains and tool groups
103
+ dotbot --sandbox --allow github --allow messages --allow npm
104
+
105
+ # Custom domain
106
+ dotbot --sandbox --allow api.mycompany.com
107
+
108
+ # Persistent config in ~/.dotbotrc
109
+ # { "sandbox": true, "sandboxAllow": ["github", "slack", "messages"] }
110
+ ```
111
+
112
+ **What's blocked by default:**
113
+
114
+ | Category | Tools | How to unlock |
115
+ |----------|-------|---------------|
116
+ | Filesystem writes | `file_write`, `file_delete`, `file_move`, `folder_create` | Cannot unlock |
117
+ | Arbitrary HTTP | `web_fetch` | `--allow <domain>` |
118
+ | Browser | `browser_navigate` | `--allow <domain>` |
119
+ | Code execution | `run_code` | Always allowed (Node.js permission model) |
120
+ | Messaging | `message_*` | `--allow messages` |
121
+ | Images | `image_*` | `--allow images` |
122
+ | Notifications | `notify_user` | `--allow notifications` |
123
+ | App generation | `app_generate`, `app_validate` | Cannot unlock |
124
+
125
+ **What's always allowed:** `memory_*`, `web_search`, `grokipedia_search`, `file_read`, `file_list`, `weather_get`, `event_*`, `task_*`, `trigger_*`, `schedule_job`, `list_jobs`, `toggle_job`, `cancel_job`
126
+
127
+ **Domain presets:** `github`, `slack`, `discord`, `npm`, `pypi`, `jira`, `huggingface`, `docker`, `telegram`
128
+
83
129
  ### Library Usage
84
130
 
85
131
  ```bash
@@ -139,9 +185,13 @@ for await (const event of agent.chat({
139
185
  - **Cerebras** — ultra-fast inference
140
186
  - **Ollama** — local models, no API cost
141
187
 
188
+ ### 🔒 **Sandbox Mode**
189
+ - **Deny-by-default** tool access — no files, code, browser, or messaging
190
+ - **Domain allowlists** — `--allow github`, `--allow slack`
191
+ - **Preset-based** tool unlocking — `--allow messages`, `--allow images`
192
+
142
193
  ### 💾 **Pluggable Storage**
143
194
  - **SQLite** — zero dependencies with Node.js 22.5+
144
- - **MongoDB** — scalable with full-text search
145
195
  - **Memory** — in-memory for testing
146
196
 
147
197
  ### 📊 **Full Audit Trail**
@@ -154,7 +204,7 @@ for await (const event of agent.chat({
154
204
  ## CLI Reference
155
205
 
156
206
  ```
157
- dotbot v0.25 — AI agent CLI
207
+ dotbot v0.28 — AI agent CLI
158
208
 
159
209
  Usage:
160
210
  dotbot "message" One-shot query
@@ -164,6 +214,7 @@ Usage:
164
214
  echo "msg" | dotbot Pipe input from stdin
165
215
 
166
216
  Commands:
217
+ models List available models from provider
167
218
  doctor Check environment and configuration
168
219
  tools List all available tools
169
220
  stats Show database statistics
@@ -182,6 +233,8 @@ Options:
182
233
  --model, -m Model name (default: grok-4-1-fast-reasoning)
183
234
  --system, -s Custom system prompt (prepended to default)
184
235
  --session Resume a specific session by ID
236
+ --sandbox Restrict tools to safe subset (deny-by-default)
237
+ --allow Allow domain/preset in sandbox (github, slack, messages, etc.)
185
238
  --db SQLite database path (default: ./dotbot.db)
186
239
  --port Server port for 'serve' command
187
240
  --openai Enable OpenAI-compatible API endpoints
@@ -197,7 +250,7 @@ Environment Variables:
197
250
  OLLAMA_BASE_URL Base URL for Ollama (default: http://localhost:11434)
198
251
 
199
252
  Config File:
200
- ~/.dotbotrc JSON config for defaults (provider, model, db)
253
+ ~/.dotbotrc JSON config for defaults (provider, model, db, sandbox)
201
254
  ```
202
255
 
203
256
  <br />
@@ -323,9 +376,8 @@ await agent.chat({
323
376
  | Technology | Purpose |
324
377
  |------------|---------|
325
378
  | **Node.js 22.5+** | Runtime with built-in SQLite |
326
- | **Playwright** | Browser automation |
379
+ | **Chrome DevTools Protocol** | Browser automation (zero deps) |
327
380
  | **SQLite** | Default storage (zero deps) |
328
- | **MongoDB** | Scalable storage option |
329
381
 
330
382
  <br />
331
383
 
@@ -334,12 +386,13 @@ await agent.chat({
334
386
  ```
335
387
  dotbot/
336
388
  ├── bin/
337
- │ └── dotbot.js # CLI entry point
389
+ │ └── dotbot.js # CLI entry point (REPL, server, sandbox mode)
338
390
  ├── core/
339
391
  │ ├── agent.js # Streaming agent loop
340
392
  │ ├── events.js # SSE event schemas
341
393
  │ ├── compaction.js # Context window management
342
394
  │ ├── normalize.js # Message format conversion
395
+ │ ├── failover.js # Cross-provider failover
343
396
  │ ├── cron_handler.js # Scheduled job execution
344
397
  │ └── trigger_handler.js # Event-driven triggers
345
398
  ├── storage/
@@ -347,9 +400,8 @@ dotbot/
347
400
  │ ├── TaskStore.js # Task interface
348
401
  │ ├── CronStore.js # Job scheduling interface
349
402
  │ ├── TriggerStore.js # Trigger interface
350
- ├── SQLite*.js # SQLite adapters
351
- │ └── Mongo*.js # MongoDB adapters
352
- ├── tools/ # 47 built-in tools
403
+ └── SQLite*.js # SQLite adapters
404
+ ├── tools/ # 53 built-in tools
353
405
  │ ├── memory.js
354
406
  │ ├── web.js
355
407
  │ ├── browser.js