@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 +22 -0
- package/README.md +64 -12
- package/bin/dotbot.js +389 -99
- package/core/agent.js +1 -1
- package/core/cdp.js +5 -58
- package/dotbot.db +0 -0
- package/index.js +0 -7
- package/package.json +1 -1
- package/storage/SQLiteCronAdapter.js +8 -92
- package/storage/index.js +0 -3
- package/tools/appgen.js +1 -10
- package/tools/browser.js +0 -15
- package/tools/code.js +0 -28
- package/tools/images.js +0 -10
- package/tools/index.js +2 -4
- package/tools/jobs.js +0 -2
- package/tools/tasks.js +0 -2
- package/tools/web.js +0 -36
- package/examples/sqlite-session-example.js +0 -69
- package/observer/index.js +0 -164
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.
|
|
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** |
|
|
30
|
+
| **Lines of Code** | **~11k** | 22k | 1M+ |
|
|
31
31
|
| **Tools** | **53** | ~10 | ~50 |
|
|
32
|
-
| **Dependencies** |
|
|
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.
|
|
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
|
-
| **
|
|
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
|
-
│
|
|
351
|
-
|
|
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
|