@stevederico/dotbot 0.16.1 → 0.17.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 +8 -0
- package/README.md +10 -10
- package/bin/dotbot.js +34 -13
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
package/README.md
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
<img src="https://img.shields.io/github/stars/stevederico/dotbot?style=social" alt="GitHub stars">
|
|
13
13
|
</a>
|
|
14
14
|
<a href="https://github.com/stevederico/dotbot">
|
|
15
|
-
<img src="https://img.shields.io/badge/version-0.
|
|
15
|
+
<img src="https://img.shields.io/badge/version-0.17-green" alt="version">
|
|
16
16
|
</a>
|
|
17
17
|
<img src="https://img.shields.io/badge/LOC-11k-orange" alt="Lines of Code">
|
|
18
18
|
</p>
|
|
@@ -40,7 +40,7 @@ A **streaming AI agent** with tool execution, autonomous tasks, and scheduled jo
|
|
|
40
40
|
|
|
41
41
|
**As a CLI:**
|
|
42
42
|
```bash
|
|
43
|
-
dotbot
|
|
43
|
+
dotbot "What's the weather in San Francisco?"
|
|
44
44
|
dotbot repl
|
|
45
45
|
dotbot serve --port 3000
|
|
46
46
|
```
|
|
@@ -64,7 +64,7 @@ npm install -g @stevederico/dotbot
|
|
|
64
64
|
export XAI_API_KEY=xai-...
|
|
65
65
|
|
|
66
66
|
# Chat
|
|
67
|
-
dotbot
|
|
67
|
+
dotbot "Summarize the top 3 AI news stories today"
|
|
68
68
|
|
|
69
69
|
# Interactive REPL
|
|
70
70
|
dotbot repl
|
|
@@ -99,7 +99,7 @@ for await (const event of agent.chat({
|
|
|
99
99
|
sessionId: session.id,
|
|
100
100
|
message: 'Search for the latest AI news',
|
|
101
101
|
provider: 'xai',
|
|
102
|
-
model: 'grok-
|
|
102
|
+
model: 'grok-4-1-fast-reasoning',
|
|
103
103
|
})) {
|
|
104
104
|
if (event.type === 'text_delta') process.stdout.write(event.text);
|
|
105
105
|
}
|
|
@@ -126,7 +126,7 @@ for await (const event of agent.chat({
|
|
|
126
126
|
- **Weather** — Open-Meteo API (no key required)
|
|
127
127
|
|
|
128
128
|
### 🔌 **Multi-Provider Support**
|
|
129
|
-
- **xAI Grok** — grok-
|
|
129
|
+
- **xAI Grok** — grok-4-1-fast-reasoning, with real-time web search and image generation
|
|
130
130
|
- **Anthropic Claude** — claude-sonnet-4-5, claude-opus-4, etc.
|
|
131
131
|
- **OpenAI** — gpt-4o, gpt-4-turbo, etc.
|
|
132
132
|
- **Cerebras** — ultra-fast inference
|
|
@@ -147,16 +147,16 @@ for await (const event of agent.chat({
|
|
|
147
147
|
## CLI Reference
|
|
148
148
|
|
|
149
149
|
```
|
|
150
|
-
dotbot v0.
|
|
150
|
+
dotbot v0.17 — AI agent CLI
|
|
151
151
|
|
|
152
152
|
Usage:
|
|
153
|
-
dotbot
|
|
153
|
+
dotbot "message" Send a message (default)
|
|
154
154
|
dotbot repl Interactive chat session
|
|
155
155
|
dotbot serve [--port N] Start HTTP server (default: 3000)
|
|
156
156
|
|
|
157
157
|
Options:
|
|
158
158
|
--provider, -p AI provider: xai, anthropic, openai, ollama (default: xai)
|
|
159
|
-
--model, -m Model name (default: grok-
|
|
159
|
+
--model, -m Model name (default: grok-4-1-fast-reasoning)
|
|
160
160
|
--db SQLite database path (default: ./dotbot.db)
|
|
161
161
|
--port Server port for 'serve' command
|
|
162
162
|
--help, -h Show help
|
|
@@ -202,7 +202,7 @@ for await (const event of agent.chat({
|
|
|
202
202
|
sessionId: 'sess_123',
|
|
203
203
|
message: 'Hello',
|
|
204
204
|
provider: 'xai',
|
|
205
|
-
model: 'grok-
|
|
205
|
+
model: 'grok-4-1-fast-reasoning',
|
|
206
206
|
signal: abortController.signal, // optional
|
|
207
207
|
context: { userID: 'user123' }, // passed to tools
|
|
208
208
|
})) {
|
|
@@ -260,7 +260,7 @@ await agent.chat({
|
|
|
260
260
|
message: `Create a task to audit our API endpoints.
|
|
261
261
|
Break it into 5 steps, use auto mode.`,
|
|
262
262
|
provider: 'xai',
|
|
263
|
-
model: 'grok-
|
|
263
|
+
model: 'grok-4-1-fast-reasoning',
|
|
264
264
|
context: { userID: 'user-123' },
|
|
265
265
|
});
|
|
266
266
|
// Step 1 runs → schedules Step 2 → ... → task complete
|
package/bin/dotbot.js
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
+
// Suppress SQLite experimental warning (stable but still flagged in Node 24)
|
|
4
|
+
const originalEmit = process.emit;
|
|
5
|
+
process.emit = function (event, error) {
|
|
6
|
+
if (event === 'warning' && error?.name === 'ExperimentalWarning' && error?.message?.includes('SQLite')) {
|
|
7
|
+
return false;
|
|
8
|
+
}
|
|
9
|
+
return originalEmit.apply(process, arguments);
|
|
10
|
+
};
|
|
11
|
+
|
|
3
12
|
/**
|
|
4
13
|
* dotbot CLI
|
|
5
14
|
*
|
|
@@ -41,7 +50,7 @@ async function loadModules() {
|
|
|
41
50
|
agentLoop = mod.agentLoop;
|
|
42
51
|
}
|
|
43
52
|
|
|
44
|
-
const VERSION = '0.
|
|
53
|
+
const VERSION = '0.17';
|
|
45
54
|
const DEFAULT_PORT = 3000;
|
|
46
55
|
const DEFAULT_DB = './dotbot.db';
|
|
47
56
|
|
|
@@ -53,13 +62,13 @@ function printHelp() {
|
|
|
53
62
|
dotbot v${VERSION} — AI agent CLI
|
|
54
63
|
|
|
55
64
|
Usage:
|
|
56
|
-
dotbot
|
|
65
|
+
dotbot "message" Send a message (default command)
|
|
57
66
|
dotbot repl Interactive chat session
|
|
58
67
|
dotbot serve [--port N] Start HTTP server (default: ${DEFAULT_PORT})
|
|
59
68
|
|
|
60
69
|
Options:
|
|
61
70
|
--provider, -p AI provider: xai, anthropic, openai, ollama (default: xai)
|
|
62
|
-
--model, -m Model name (default: grok-
|
|
71
|
+
--model, -m Model name (default: grok-4-1-fast-reasoning)
|
|
63
72
|
--db SQLite database path (default: ${DEFAULT_DB})
|
|
64
73
|
--port Server port for 'serve' command (default: ${DEFAULT_PORT})
|
|
65
74
|
--help, -h Show this help
|
|
@@ -72,8 +81,9 @@ Environment Variables:
|
|
|
72
81
|
OLLAMA_BASE_URL Base URL for Ollama (default: http://localhost:11434)
|
|
73
82
|
|
|
74
83
|
Examples:
|
|
75
|
-
dotbot
|
|
76
|
-
dotbot
|
|
84
|
+
dotbot "What's the weather in SF?"
|
|
85
|
+
dotbot "Summarize the news" -p anthropic -m claude-sonnet-4-5
|
|
86
|
+
dotbot repl
|
|
77
87
|
dotbot serve --port 8080
|
|
78
88
|
`);
|
|
79
89
|
}
|
|
@@ -89,7 +99,7 @@ function parseCliArgs() {
|
|
|
89
99
|
help: { type: 'boolean', short: 'h', default: false },
|
|
90
100
|
version: { type: 'boolean', short: 'v', default: false },
|
|
91
101
|
provider: { type: 'string', short: 'p', default: 'xai' },
|
|
92
|
-
model: { type: 'string', short: 'm', default: 'grok-
|
|
102
|
+
model: { type: 'string', short: 'm', default: 'grok-4-1-fast-reasoning' },
|
|
93
103
|
db: { type: 'string', default: DEFAULT_DB },
|
|
94
104
|
port: { type: 'string', default: String(DEFAULT_PORT) },
|
|
95
105
|
},
|
|
@@ -198,6 +208,11 @@ async function runChat(message, options) {
|
|
|
198
208
|
context,
|
|
199
209
|
})) {
|
|
200
210
|
switch (event.type) {
|
|
211
|
+
case 'thinking':
|
|
212
|
+
if (event.text) {
|
|
213
|
+
process.stdout.write(`\x1b[2m${event.text}\x1b[0m`);
|
|
214
|
+
}
|
|
215
|
+
break;
|
|
201
216
|
case 'text_delta':
|
|
202
217
|
process.stdout.write(event.text);
|
|
203
218
|
break;
|
|
@@ -280,6 +295,11 @@ async function runRepl(options) {
|
|
|
280
295
|
context,
|
|
281
296
|
})) {
|
|
282
297
|
switch (event.type) {
|
|
298
|
+
case 'thinking':
|
|
299
|
+
if (event.text) {
|
|
300
|
+
process.stdout.write(`\x1b[2m${event.text}\x1b[0m`);
|
|
301
|
+
}
|
|
302
|
+
break;
|
|
283
303
|
case 'text_delta':
|
|
284
304
|
process.stdout.write(event.text);
|
|
285
305
|
assistantContent += event.text;
|
|
@@ -432,12 +452,12 @@ async function main() {
|
|
|
432
452
|
|
|
433
453
|
switch (command) {
|
|
434
454
|
case 'chat':
|
|
435
|
-
const
|
|
436
|
-
if (!
|
|
437
|
-
console.error('Usage: dotbot
|
|
455
|
+
const chatMessage = args.positionals.slice(1).join(' ');
|
|
456
|
+
if (!chatMessage) {
|
|
457
|
+
console.error('Usage: dotbot "your message"');
|
|
438
458
|
process.exit(1);
|
|
439
459
|
}
|
|
440
|
-
await runChat(
|
|
460
|
+
await runChat(chatMessage, args);
|
|
441
461
|
break;
|
|
442
462
|
|
|
443
463
|
case 'repl':
|
|
@@ -449,9 +469,10 @@ async function main() {
|
|
|
449
469
|
break;
|
|
450
470
|
|
|
451
471
|
default:
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
472
|
+
// Default to chat if not a recognized command
|
|
473
|
+
const message = args.positionals.join(' ');
|
|
474
|
+
await runChat(message, args);
|
|
475
|
+
break;
|
|
455
476
|
}
|
|
456
477
|
}
|
|
457
478
|
|
package/package.json
CHANGED