bobo-ai-cli 1.5.0 → 1.7.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/dist/agent.js +9 -1
- package/dist/agent.js.map +1 -1
- package/dist/autonomous.d.ts +20 -0
- package/dist/autonomous.js +121 -0
- package/dist/autonomous.js.map +1 -0
- package/dist/compactor.d.ts +35 -0
- package/dist/compactor.js +135 -0
- package/dist/compactor.js.map +1 -0
- package/dist/completer.js +1 -0
- package/dist/completer.js.map +1 -1
- package/dist/index.js +43 -0
- package/dist/index.js.map +1 -1
- package/dist/structured/types.d.ts +10 -10
- package/dist/tools/advanced.d.ts +12 -0
- package/dist/tools/advanced.js +280 -0
- package/dist/tools/advanced.js.map +1 -0
- package/dist/tools/browser.d.ts +13 -0
- package/dist/tools/browser.js +193 -0
- package/dist/tools/browser.js.map +1 -0
- package/dist/tools/git-advanced.d.ts +8 -0
- package/dist/tools/git-advanced.js +186 -0
- package/dist/tools/git-advanced.js.map +1 -0
- package/dist/tools/index.js +13 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/process-manager.d.ts +15 -0
- package/dist/tools/process-manager.js +212 -0
- package/dist/tools/process-manager.js.map +1 -0
- package/package.json +1 -1
package/dist/agent.js
CHANGED
|
@@ -8,6 +8,8 @@ import { loadMemory } from './memory.js';
|
|
|
8
8
|
import { loadSkillPrompts } from './skills.js';
|
|
9
9
|
import { loadProjectKnowledge } from './project.js';
|
|
10
10
|
import { toolDefinitions, executeTool } from './tools/index.js';
|
|
11
|
+
import { isAdvancedTool, executeAdvancedTool } from './tools/advanced.js';
|
|
12
|
+
import { isBrowserTool, executeBrowserTool } from './tools/browser.js';
|
|
11
13
|
import { getMcpToolDefinitions, executeMcpTool, isMcpTool } from './mcp-client.js';
|
|
12
14
|
import { printStreaming, printToolCall, printToolResult, printError, printLine } from './ui.js';
|
|
13
15
|
import { Spinner } from './spinner.js';
|
|
@@ -247,11 +249,17 @@ export async function runAgent(userMessage, history, options = {}) {
|
|
|
247
249
|
spinner.start(`Running ${tc.name}...`);
|
|
248
250
|
printToolCall(tc.name, tc.arguments);
|
|
249
251
|
}
|
|
250
|
-
// Route to MCP or built-in tool
|
|
252
|
+
// Route to MCP, advanced, browser, or built-in tool
|
|
251
253
|
let result;
|
|
252
254
|
if (isMcpTool(tc.name)) {
|
|
253
255
|
result = await executeMcpTool(tc.name, args);
|
|
254
256
|
}
|
|
257
|
+
else if (isAdvancedTool(tc.name)) {
|
|
258
|
+
result = await executeAdvancedTool(tc.name, args);
|
|
259
|
+
}
|
|
260
|
+
else if (isBrowserTool(tc.name)) {
|
|
261
|
+
result = await executeBrowserTool(tc.name, args);
|
|
262
|
+
}
|
|
255
263
|
else {
|
|
256
264
|
result = executeTool(tc.name, args);
|
|
257
265
|
}
|
package/dist/agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Autonomous run mode — give a task, let Bobo run until done.
|
|
3
|
+
* Like Claude Code's long-running agent loop.
|
|
4
|
+
*
|
|
5
|
+
* Features:
|
|
6
|
+
* - Higher iteration limit (50 vs REPL's 20)
|
|
7
|
+
* - Auto-recovery on errors (retry up to 3 times)
|
|
8
|
+
* - Progress logging to file
|
|
9
|
+
* - Graceful Ctrl+C handling (saves progress)
|
|
10
|
+
*/
|
|
11
|
+
import { type EffortLevel, type PermissionMode } from './config.js';
|
|
12
|
+
export interface RunOptions {
|
|
13
|
+
task: string;
|
|
14
|
+
model?: string;
|
|
15
|
+
effort?: EffortLevel;
|
|
16
|
+
permissionMode?: PermissionMode;
|
|
17
|
+
maxIterations?: number;
|
|
18
|
+
logFile?: string;
|
|
19
|
+
}
|
|
20
|
+
export declare function runAutonomous(options: RunOptions): Promise<void>;
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Autonomous run mode — give a task, let Bobo run until done.
|
|
3
|
+
* Like Claude Code's long-running agent loop.
|
|
4
|
+
*
|
|
5
|
+
* Features:
|
|
6
|
+
* - Higher iteration limit (50 vs REPL's 20)
|
|
7
|
+
* - Auto-recovery on errors (retry up to 3 times)
|
|
8
|
+
* - Progress logging to file
|
|
9
|
+
* - Graceful Ctrl+C handling (saves progress)
|
|
10
|
+
*/
|
|
11
|
+
import chalk from 'chalk';
|
|
12
|
+
import { writeFileSync, existsSync, mkdirSync } from 'node:fs';
|
|
13
|
+
import { join } from 'node:path';
|
|
14
|
+
import { runAgent } from './agent.js';
|
|
15
|
+
import { getConfigDir } from './config.js';
|
|
16
|
+
import { printLine, printError, printWarning } from './ui.js';
|
|
17
|
+
import { Spinner } from './spinner.js';
|
|
18
|
+
export async function runAutonomous(options) {
|
|
19
|
+
const { task, model, effort, permissionMode = 'auto', // Auto-approve by default in run mode
|
|
20
|
+
maxIterations = 5, logFile, } = options;
|
|
21
|
+
const startTime = Date.now();
|
|
22
|
+
const logDir = join(getConfigDir(), 'runs');
|
|
23
|
+
if (!existsSync(logDir))
|
|
24
|
+
mkdirSync(logDir, { recursive: true });
|
|
25
|
+
const runId = new Date().toISOString().replace(/[:.]/g, '-');
|
|
26
|
+
const logPath = logFile || join(logDir, `${runId}.md`);
|
|
27
|
+
printLine(chalk.cyan.bold('\n🚀 Bobo Run Mode — Autonomous Execution\n'));
|
|
28
|
+
printLine(chalk.dim(` Task: ${task.slice(0, 100)}${task.length > 100 ? '...' : ''}`));
|
|
29
|
+
printLine(chalk.dim(` Model: ${model || 'default'}`));
|
|
30
|
+
printLine(chalk.dim(` Effort: ${effort || 'medium'}`));
|
|
31
|
+
printLine(chalk.dim(` Max iterations: ${maxIterations}`));
|
|
32
|
+
printLine(chalk.dim(` Log: ${logPath}`));
|
|
33
|
+
printLine(chalk.dim(` Permission: ${permissionMode} (auto-approve)`));
|
|
34
|
+
printLine(chalk.dim(' Press Ctrl+C to abort (saves progress)\n'));
|
|
35
|
+
printLine(chalk.dim('─'.repeat(60)));
|
|
36
|
+
printLine();
|
|
37
|
+
const log = [];
|
|
38
|
+
log.push(`# Bobo Run: ${runId}`);
|
|
39
|
+
log.push(`Task: ${task}`);
|
|
40
|
+
log.push(`Started: ${new Date().toISOString()}`);
|
|
41
|
+
log.push(`Model: ${model || 'default'}`);
|
|
42
|
+
log.push('');
|
|
43
|
+
let history = [];
|
|
44
|
+
let aborted = false;
|
|
45
|
+
let iteration = 0;
|
|
46
|
+
let retries = 0;
|
|
47
|
+
const maxRetries = 3;
|
|
48
|
+
// Handle Ctrl+C gracefully
|
|
49
|
+
const abortHandler = () => {
|
|
50
|
+
if (aborted) {
|
|
51
|
+
printLine(chalk.red('\nForce quit.'));
|
|
52
|
+
process.exit(1);
|
|
53
|
+
}
|
|
54
|
+
aborted = true;
|
|
55
|
+
printLine(chalk.yellow('\n⚠ Aborting... saving progress.'));
|
|
56
|
+
};
|
|
57
|
+
process.on('SIGINT', abortHandler);
|
|
58
|
+
// Build the autonomous prompt
|
|
59
|
+
const autonomousTask = `You are in AUTONOMOUS mode. Complete the following task end-to-end without asking questions.
|
|
60
|
+
Make decisions yourself. If something fails, try a different approach.
|
|
61
|
+
Use tools to read files, write code, run tests, and verify your work.
|
|
62
|
+
When the task is fully complete, say "TASK COMPLETE" and summarize what you did.
|
|
63
|
+
|
|
64
|
+
TASK: ${task}`;
|
|
65
|
+
const spinner = new Spinner();
|
|
66
|
+
for (iteration = 0; iteration < maxIterations && !aborted; iteration++) {
|
|
67
|
+
const iterMsg = iteration === 0 ? autonomousTask : 'Continue working on the task. If done, say "TASK COMPLETE".';
|
|
68
|
+
printLine(chalk.cyan(`\n── Iteration ${iteration + 1}/${maxIterations} ──\n`));
|
|
69
|
+
log.push(`\n## Iteration ${iteration + 1}`);
|
|
70
|
+
try {
|
|
71
|
+
const result = await runAgent(iterMsg, history, {
|
|
72
|
+
model,
|
|
73
|
+
effort: effort || 'high', // Default to high effort in autonomous mode
|
|
74
|
+
permissionMode,
|
|
75
|
+
});
|
|
76
|
+
history = result.history;
|
|
77
|
+
log.push(result.response.slice(0, 2000));
|
|
78
|
+
// Check if task is complete
|
|
79
|
+
if (result.response.includes('TASK COMPLETE')) {
|
|
80
|
+
printLine(chalk.green('\n✅ Task completed!'));
|
|
81
|
+
log.push('\n## Result: COMPLETE');
|
|
82
|
+
break;
|
|
83
|
+
}
|
|
84
|
+
retries = 0; // Reset retry counter on success
|
|
85
|
+
}
|
|
86
|
+
catch (e) {
|
|
87
|
+
const errorMsg = e.message;
|
|
88
|
+
log.push(`ERROR: ${errorMsg}`);
|
|
89
|
+
if (errorMsg === 'Aborted') {
|
|
90
|
+
break;
|
|
91
|
+
}
|
|
92
|
+
retries++;
|
|
93
|
+
if (retries >= maxRetries) {
|
|
94
|
+
printError(`Failed after ${maxRetries} retries. Last error: ${errorMsg}`);
|
|
95
|
+
log.push(`\n## Result: FAILED (${maxRetries} retries exhausted)`);
|
|
96
|
+
break;
|
|
97
|
+
}
|
|
98
|
+
printWarning(`Error (retry ${retries}/${maxRetries}): ${errorMsg}`);
|
|
99
|
+
// Wait a bit before retrying
|
|
100
|
+
await new Promise(resolve => setTimeout(resolve, 2000));
|
|
101
|
+
iteration--; // Don't count failed iterations
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
// Save progress
|
|
105
|
+
const elapsed = ((Date.now() - startTime) / 1000).toFixed(0);
|
|
106
|
+
log.push(`\nCompleted: ${new Date().toISOString()}`);
|
|
107
|
+
log.push(`Duration: ${elapsed}s`);
|
|
108
|
+
log.push(`Iterations: ${iteration + 1}`);
|
|
109
|
+
writeFileSync(logPath, log.join('\n'));
|
|
110
|
+
// Cleanup
|
|
111
|
+
process.removeListener('SIGINT', abortHandler);
|
|
112
|
+
printLine();
|
|
113
|
+
printLine(chalk.dim('─'.repeat(60)));
|
|
114
|
+
printLine();
|
|
115
|
+
printLine(chalk.cyan('📊 Run Summary:'));
|
|
116
|
+
printLine(` Duration: ${elapsed}s`);
|
|
117
|
+
printLine(` Iterations: ${iteration + 1}/${maxIterations}`);
|
|
118
|
+
printLine(` Log: ${logPath}`);
|
|
119
|
+
printLine();
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=autonomous.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autonomous.js","sourceRoot":"","sources":["../src/autonomous.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Context compressor — self-managed compact without host dependency.
|
|
3
|
+
* Solves: "compact 依赖宿主"
|
|
4
|
+
*
|
|
5
|
+
* Automatically compresses conversation history when it gets too long.
|
|
6
|
+
* Uses the LLM itself to summarize, then replaces history with summary.
|
|
7
|
+
*/
|
|
8
|
+
import type { ChatCompletionMessageParam } from 'openai/resources/index.js';
|
|
9
|
+
/**
|
|
10
|
+
* Estimate token count for a message array.
|
|
11
|
+
*/
|
|
12
|
+
export declare function estimateTokens(messages: ChatCompletionMessageParam[]): number;
|
|
13
|
+
/**
|
|
14
|
+
* Check if we should auto-compact.
|
|
15
|
+
*/
|
|
16
|
+
export declare function shouldCompact(messages: ChatCompletionMessageParam[], threshold?: number): boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Build a compact summary request — returns the prompt to send to the LLM.
|
|
19
|
+
* The caller should send this to the API and use the response as new history.
|
|
20
|
+
*/
|
|
21
|
+
export declare function buildCompactPrompt(messages: ChatCompletionMessageParam[]): string;
|
|
22
|
+
/**
|
|
23
|
+
* Compress history by keeping system prompt + recent messages + injecting summary.
|
|
24
|
+
* This is the "offline" version that doesn't call the LLM.
|
|
25
|
+
*/
|
|
26
|
+
export declare function compressHistory(messages: ChatCompletionMessageParam[], keepRecent?: number): ChatCompletionMessageParam[];
|
|
27
|
+
/**
|
|
28
|
+
* Get compact status info.
|
|
29
|
+
*/
|
|
30
|
+
export declare function getCompactStatus(messages: ChatCompletionMessageParam[]): {
|
|
31
|
+
tokens: number;
|
|
32
|
+
messages: number;
|
|
33
|
+
shouldCompact: boolean;
|
|
34
|
+
urgency: 'low' | 'medium' | 'high' | 'critical';
|
|
35
|
+
};
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Context compressor — self-managed compact without host dependency.
|
|
3
|
+
* Solves: "compact 依赖宿主"
|
|
4
|
+
*
|
|
5
|
+
* Automatically compresses conversation history when it gets too long.
|
|
6
|
+
* Uses the LLM itself to summarize, then replaces history with summary.
|
|
7
|
+
*/
|
|
8
|
+
const TOKEN_PER_CHAR_EN = 0.25; // ~4 chars/token
|
|
9
|
+
const TOKEN_PER_CHAR_ZH = 0.5; // ~2 chars/token
|
|
10
|
+
/**
|
|
11
|
+
* Estimate token count for a message array.
|
|
12
|
+
*/
|
|
13
|
+
export function estimateTokens(messages) {
|
|
14
|
+
let total = 0;
|
|
15
|
+
for (const msg of messages) {
|
|
16
|
+
const text = typeof msg.content === 'string' ? msg.content : JSON.stringify(msg.content);
|
|
17
|
+
// Heuristic: count CJK vs Latin chars
|
|
18
|
+
let cjk = 0, latin = 0;
|
|
19
|
+
for (const char of text) {
|
|
20
|
+
if (char.charCodeAt(0) > 0x2E80)
|
|
21
|
+
cjk++;
|
|
22
|
+
else
|
|
23
|
+
latin++;
|
|
24
|
+
}
|
|
25
|
+
total += Math.ceil(cjk * TOKEN_PER_CHAR_ZH + latin * TOKEN_PER_CHAR_EN);
|
|
26
|
+
total += 4; // message overhead
|
|
27
|
+
}
|
|
28
|
+
return total;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Check if we should auto-compact.
|
|
32
|
+
*/
|
|
33
|
+
export function shouldCompact(messages, threshold = 80000) {
|
|
34
|
+
return estimateTokens(messages) > threshold;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Build a compact summary request — returns the prompt to send to the LLM.
|
|
38
|
+
* The caller should send this to the API and use the response as new history.
|
|
39
|
+
*/
|
|
40
|
+
export function buildCompactPrompt(messages) {
|
|
41
|
+
// Extract key info
|
|
42
|
+
const userMessages = [];
|
|
43
|
+
const assistantActions = [];
|
|
44
|
+
const toolResults = [];
|
|
45
|
+
for (const msg of messages) {
|
|
46
|
+
const content = typeof msg.content === 'string' ? msg.content : '';
|
|
47
|
+
if (msg.role === 'user' && content) {
|
|
48
|
+
userMessages.push(content.slice(0, 500));
|
|
49
|
+
}
|
|
50
|
+
else if (msg.role === 'assistant' && content) {
|
|
51
|
+
assistantActions.push(content.slice(0, 300));
|
|
52
|
+
}
|
|
53
|
+
else if (msg.role === 'tool' && content) {
|
|
54
|
+
toolResults.push(content.slice(0, 200));
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return `Summarize this conversation into a structured context block for continuing work.
|
|
58
|
+
Include:
|
|
59
|
+
1. Original user request/intent
|
|
60
|
+
2. Key technical concepts discovered
|
|
61
|
+
3. Files read/modified (with paths)
|
|
62
|
+
4. Errors encountered and how they were fixed
|
|
63
|
+
5. Current working state
|
|
64
|
+
6. All explicit user preferences/corrections
|
|
65
|
+
7. Pending tasks / next steps
|
|
66
|
+
|
|
67
|
+
User messages (${userMessages.length}):
|
|
68
|
+
${userMessages.slice(-10).join('\n---\n')}
|
|
69
|
+
|
|
70
|
+
Assistant actions (${assistantActions.length}):
|
|
71
|
+
${assistantActions.slice(-8).join('\n---\n')}
|
|
72
|
+
|
|
73
|
+
Tool results (${toolResults.length}):
|
|
74
|
+
${toolResults.slice(-5).join('\n---\n')}
|
|
75
|
+
|
|
76
|
+
Output a concise summary (under 2000 tokens) that preserves all critical context.`;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Compress history by keeping system prompt + recent messages + injecting summary.
|
|
80
|
+
* This is the "offline" version that doesn't call the LLM.
|
|
81
|
+
*/
|
|
82
|
+
export function compressHistory(messages, keepRecent = 6) {
|
|
83
|
+
if (messages.length <= keepRecent + 1)
|
|
84
|
+
return messages;
|
|
85
|
+
// Keep system message
|
|
86
|
+
const system = messages.find(m => m.role === 'system');
|
|
87
|
+
const nonSystem = messages.filter(m => m.role !== 'system');
|
|
88
|
+
// Keep last N messages
|
|
89
|
+
const recent = nonSystem.slice(-keepRecent);
|
|
90
|
+
// Summarize the dropped messages
|
|
91
|
+
const dropped = nonSystem.slice(0, -keepRecent);
|
|
92
|
+
const userCount = dropped.filter(m => m.role === 'user').length;
|
|
93
|
+
const toolCount = dropped.filter(m => m.role === 'tool').length;
|
|
94
|
+
// Build summary of dropped messages
|
|
95
|
+
const summaryParts = [`[Context compressed: ${dropped.length} messages (${userCount} user, ${toolCount} tool calls) summarized]`];
|
|
96
|
+
// Extract file operations
|
|
97
|
+
for (const msg of dropped) {
|
|
98
|
+
if (msg.role === 'tool' && typeof msg.content === 'string') {
|
|
99
|
+
if (msg.content.includes('Written ') || msg.content.includes('Edited ')) {
|
|
100
|
+
summaryParts.push(` • ${msg.content.split('\n')[0]}`);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
const summaryMessage = {
|
|
105
|
+
role: 'user',
|
|
106
|
+
content: summaryParts.join('\n'),
|
|
107
|
+
};
|
|
108
|
+
const result = [];
|
|
109
|
+
if (system)
|
|
110
|
+
result.push(system);
|
|
111
|
+
result.push(summaryMessage);
|
|
112
|
+
result.push(...recent);
|
|
113
|
+
return result;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Get compact status info.
|
|
117
|
+
*/
|
|
118
|
+
export function getCompactStatus(messages) {
|
|
119
|
+
const tokens = estimateTokens(messages);
|
|
120
|
+
const msgCount = messages.length;
|
|
121
|
+
let urgency = 'low';
|
|
122
|
+
if (tokens > 120000)
|
|
123
|
+
urgency = 'critical';
|
|
124
|
+
else if (tokens > 100000)
|
|
125
|
+
urgency = 'high';
|
|
126
|
+
else if (tokens > 80000)
|
|
127
|
+
urgency = 'medium';
|
|
128
|
+
return {
|
|
129
|
+
tokens,
|
|
130
|
+
messages: msgCount,
|
|
131
|
+
shouldCompact: tokens > 80000,
|
|
132
|
+
urgency,
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=compactor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compactor.js","sourceRoot":"","sources":["../src/compactor.ts"],"names":[],"mappings":"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"}
|
package/dist/completer.js
CHANGED
|
@@ -20,6 +20,7 @@ const COMMANDS = [
|
|
|
20
20
|
{ name: '/skills', description: 'List skills' },
|
|
21
21
|
{ name: '/dream', description: 'Memory consolidation' },
|
|
22
22
|
{ name: '/mcp', description: 'MCP server status' },
|
|
23
|
+
{ name: '/bg', description: 'Background processes' },
|
|
23
24
|
{ name: '/rename', description: 'Rename current session' },
|
|
24
25
|
{ name: '/quit', description: 'Exit' },
|
|
25
26
|
{ name: '/exit', description: 'Exit' },
|
package/dist/completer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"completer.js","sourceRoot":"","sources":["../src/completer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"completer.js","sourceRoot":"","sources":["../src/completer.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -25,6 +25,9 @@ import { slashCompleter } from './completer.js';
|
|
|
25
25
|
import { runHooks, initHooksTemplate } from './hooks.js';
|
|
26
26
|
import { initMcpServers, shutdownMcpServers, getMcpStatus } from './mcp-client.js';
|
|
27
27
|
import { startWatch } from './watcher.js';
|
|
28
|
+
import { runAutonomous } from './autonomous.js';
|
|
29
|
+
import { killAllProcesses } from './tools/process-manager.js';
|
|
30
|
+
import { getCompactStatus, compressHistory } from './compactor.js';
|
|
28
31
|
import chalk from 'chalk';
|
|
29
32
|
const __dirname = fileURLToPath(new URL('.', import.meta.url));
|
|
30
33
|
let version = '0.1.0';
|
|
@@ -398,6 +401,24 @@ program
|
|
|
398
401
|
ignore,
|
|
399
402
|
});
|
|
400
403
|
});
|
|
404
|
+
// ─── Run command (autonomous agent loop) ─────────────────────
|
|
405
|
+
program
|
|
406
|
+
.command('run <task>')
|
|
407
|
+
.description('Autonomous mode: give a task, Bobo runs until done (like Claude Code agent loop)')
|
|
408
|
+
.option('--model <model>', 'Override model')
|
|
409
|
+
.option('--effort <level>', 'Effort level (low/medium/high)', 'high')
|
|
410
|
+
.option('--max-iterations <n>', 'Maximum iterations', '5')
|
|
411
|
+
.option('--log <path>', 'Log file path')
|
|
412
|
+
.action(async (task, opts) => {
|
|
413
|
+
await runAutonomous({
|
|
414
|
+
task,
|
|
415
|
+
model: opts.model,
|
|
416
|
+
effort: (opts.effort || 'high'),
|
|
417
|
+
permissionMode: 'auto',
|
|
418
|
+
maxIterations: parseInt(opts.maxIterations || '5', 10),
|
|
419
|
+
logFile: opts.log,
|
|
420
|
+
});
|
|
421
|
+
});
|
|
401
422
|
// ─── MCP command ─────────────────────────────────────────────
|
|
402
423
|
const mcpCmd = program.command('mcp').description('Manage MCP (Model Context Protocol) servers');
|
|
403
424
|
mcpCmd
|
|
@@ -662,6 +683,7 @@ async function runRepl(opts) {
|
|
|
662
683
|
autoSave();
|
|
663
684
|
runHooks('session-end');
|
|
664
685
|
shutdownMcpServers();
|
|
686
|
+
killAllProcesses();
|
|
665
687
|
disableStatusBar();
|
|
666
688
|
printLine(chalk.dim('\nGoodbye! 🐕'));
|
|
667
689
|
process.exit(0);
|
|
@@ -678,6 +700,7 @@ async function runRepl(opts) {
|
|
|
678
700
|
autoSave();
|
|
679
701
|
runHooks('session-end');
|
|
680
702
|
shutdownMcpServers();
|
|
703
|
+
killAllProcesses();
|
|
681
704
|
disableStatusBar();
|
|
682
705
|
printLine(chalk.dim('Goodbye! 🐕'));
|
|
683
706
|
process.exit(0);
|
|
@@ -967,12 +990,14 @@ async function runRepl(opts) {
|
|
|
967
990
|
if (input === '/status') {
|
|
968
991
|
const turns = history.filter(m => m.role === 'user').length;
|
|
969
992
|
const mcpServers = getMcpStatus();
|
|
993
|
+
const compactInfo = getCompactStatus(history);
|
|
970
994
|
printLine(chalk.cyan('📊 Session Status:'));
|
|
971
995
|
printLine(` Model: ${currentModel}`);
|
|
972
996
|
printLine(` Effort: ${currentEffort}`);
|
|
973
997
|
printLine(` Permission: ${currentPermissionMode}`);
|
|
974
998
|
printLine(` Turns: ${turns}`);
|
|
975
999
|
printLine(` Messages: ${history.length}`);
|
|
1000
|
+
printLine(` Tokens: ~${compactInfo.tokens.toLocaleString()} (${compactInfo.urgency})`);
|
|
976
1001
|
printLine(` CWD: ${process.cwd()}`);
|
|
977
1002
|
if (sessionName)
|
|
978
1003
|
printLine(` Name: ${sessionName}`);
|
|
@@ -1023,6 +1048,13 @@ async function runRepl(opts) {
|
|
|
1023
1048
|
showPrompt();
|
|
1024
1049
|
continue;
|
|
1025
1050
|
}
|
|
1051
|
+
// ─── /bg (background processes) ───
|
|
1052
|
+
if (input === '/bg') {
|
|
1053
|
+
const { executeProcessTool } = await import('./tools/process-manager.js');
|
|
1054
|
+
printLine(executeProcessTool('bg_list', {}));
|
|
1055
|
+
showPrompt();
|
|
1056
|
+
continue;
|
|
1057
|
+
}
|
|
1026
1058
|
// ─── /help ───
|
|
1027
1059
|
if (input === '/help') {
|
|
1028
1060
|
printLine(chalk.cyan.bold('Commands:'));
|
|
@@ -1055,6 +1087,7 @@ async function runRepl(opts) {
|
|
|
1055
1087
|
printLine(' /knowledge List knowledge files');
|
|
1056
1088
|
printLine(' /skills List skills');
|
|
1057
1089
|
printLine(' /mcp MCP server status');
|
|
1090
|
+
printLine(' /bg Background process list');
|
|
1058
1091
|
printLine(' /dream Memory consolidation');
|
|
1059
1092
|
printLine('');
|
|
1060
1093
|
printLine(chalk.dim(' CLI Commands'));
|
|
@@ -1088,6 +1121,16 @@ async function runRepl(opts) {
|
|
|
1088
1121
|
});
|
|
1089
1122
|
history = result.history;
|
|
1090
1123
|
lastResponse = result.response;
|
|
1124
|
+
// Auto-compact check
|
|
1125
|
+
const compactInfo = getCompactStatus(history);
|
|
1126
|
+
if (compactInfo.urgency === 'critical') {
|
|
1127
|
+
printWarning(`Context at ${compactInfo.tokens} tokens — auto-compressing...`);
|
|
1128
|
+
history = compressHistory(history, 8);
|
|
1129
|
+
printSuccess(`Compressed to ${getCompactStatus(history).tokens} tokens`);
|
|
1130
|
+
}
|
|
1131
|
+
else if (compactInfo.urgency === 'high') {
|
|
1132
|
+
printWarning(`⚠ Context at ${compactInfo.tokens} tokens. Run /compact to compress.`);
|
|
1133
|
+
}
|
|
1091
1134
|
}
|
|
1092
1135
|
catch (e) {
|
|
1093
1136
|
if (e.message !== 'Aborted') {
|