bobo-ai-cli 2.0.0 → 3.0.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.
Files changed (126) hide show
  1. package/README.md +52 -9
  2. package/dist/agent.js +70 -45
  3. package/dist/agent.js.map +1 -1
  4. package/dist/agents/catalog.d.ts +40 -0
  5. package/dist/agents/catalog.js +172 -0
  6. package/dist/agents/catalog.js.map +1 -0
  7. package/dist/agents/index.d.ts +6 -0
  8. package/dist/agents/index.js +4 -0
  9. package/dist/agents/index.js.map +1 -0
  10. package/dist/agents/router.d.ts +43 -0
  11. package/dist/agents/router.js +87 -0
  12. package/dist/agents/router.js.map +1 -0
  13. package/dist/agents/spawn.d.ts +46 -0
  14. package/dist/agents/spawn.js +91 -0
  15. package/dist/agents/spawn.js.map +1 -0
  16. package/dist/autonomous.js +41 -1
  17. package/dist/autonomous.js.map +1 -1
  18. package/dist/claude-bridge.d.ts +18 -0
  19. package/dist/claude-bridge.js +91 -0
  20. package/dist/claude-bridge.js.map +1 -0
  21. package/dist/cli.d.ts +8 -0
  22. package/dist/cli.js +667 -0
  23. package/dist/cli.js.map +1 -0
  24. package/dist/compactor.d.ts +49 -4
  25. package/dist/compactor.js +164 -17
  26. package/dist/compactor.js.map +1 -1
  27. package/dist/completer.js +2 -0
  28. package/dist/completer.js.map +1 -1
  29. package/dist/cost-tracker.js +35 -2
  30. package/dist/cost-tracker.js.map +1 -1
  31. package/dist/dream.d.ts +42 -0
  32. package/dist/dream.js +321 -0
  33. package/dist/dream.js.map +1 -0
  34. package/dist/hooks.d.ts +1 -1
  35. package/dist/hooks.js +4 -0
  36. package/dist/hooks.js.map +1 -1
  37. package/dist/index.js +8 -1099
  38. package/dist/index.js.map +1 -1
  39. package/dist/insight.js +4 -11
  40. package/dist/insight.js.map +1 -1
  41. package/dist/knowledge.d.ts +13 -0
  42. package/dist/knowledge.js +13 -2
  43. package/dist/knowledge.js.map +1 -1
  44. package/dist/memory.d.ts +4 -0
  45. package/dist/memory.js +6 -0
  46. package/dist/memory.js.map +1 -1
  47. package/dist/repl.d.ts +16 -0
  48. package/dist/repl.js +702 -0
  49. package/dist/repl.js.map +1 -0
  50. package/dist/sessions.js +23 -0
  51. package/dist/sessions.js.map +1 -1
  52. package/dist/skills/composer.d.ts +18 -0
  53. package/dist/skills/composer.js +59 -0
  54. package/dist/skills/composer.js.map +1 -0
  55. package/dist/skills/index.d.ts +3 -0
  56. package/dist/skills/index.js +3 -0
  57. package/dist/skills/index.js.map +1 -0
  58. package/dist/skills/loader.d.ts +12 -0
  59. package/dist/skills/loader.js +150 -0
  60. package/dist/skills/loader.js.map +1 -0
  61. package/dist/skills/types.d.ts +28 -0
  62. package/dist/skills/types.js +9 -0
  63. package/dist/skills/types.js.map +1 -0
  64. package/dist/skills.d.ts +1 -0
  65. package/dist/skills.js +1 -0
  66. package/dist/skills.js.map +1 -1
  67. package/dist/state/artifacts.d.ts +71 -0
  68. package/dist/state/artifacts.js +131 -0
  69. package/dist/state/artifacts.js.map +1 -0
  70. package/dist/state/index.d.ts +9 -0
  71. package/dist/state/index.js +7 -0
  72. package/dist/state/index.js.map +1 -0
  73. package/dist/state/manager.d.ts +89 -0
  74. package/dist/state/manager.js +130 -0
  75. package/dist/state/manager.js.map +1 -0
  76. package/dist/state/project-memory.d.ts +24 -0
  77. package/dist/state/project-memory.js +81 -0
  78. package/dist/state/project-memory.js.map +1 -0
  79. package/dist/state/recovery.d.ts +24 -0
  80. package/dist/state/recovery.js +94 -0
  81. package/dist/state/recovery.js.map +1 -0
  82. package/dist/statusbar.d.ts +1 -0
  83. package/dist/statusbar.js +12 -1
  84. package/dist/statusbar.js.map +1 -1
  85. package/dist/sub-agent-runner.d.ts +1 -0
  86. package/dist/sub-agent-runner.js +29 -3
  87. package/dist/sub-agent-runner.js.map +1 -1
  88. package/dist/sub-agents.d.ts +19 -1
  89. package/dist/sub-agents.js +137 -2
  90. package/dist/sub-agents.js.map +1 -1
  91. package/dist/tool-governance.d.ts +77 -0
  92. package/dist/tool-governance.js +335 -0
  93. package/dist/tool-governance.js.map +1 -0
  94. package/dist/tools/claude-bridge-tool.d.ts +4 -0
  95. package/dist/tools/claude-bridge-tool.js +44 -0
  96. package/dist/tools/claude-bridge-tool.js.map +1 -0
  97. package/dist/tools/claude-code.d.ts +33 -0
  98. package/dist/tools/claude-code.js +279 -0
  99. package/dist/tools/claude-code.js.map +1 -0
  100. package/dist/tools/index.js +4 -0
  101. package/dist/tools/index.js.map +1 -1
  102. package/dist/ui/hud.d.ts +25 -0
  103. package/dist/ui/hud.js +67 -0
  104. package/dist/ui/hud.js.map +1 -0
  105. package/dist/verification-agent.d.ts +46 -0
  106. package/dist/verification-agent.js +528 -0
  107. package/dist/verification-agent.js.map +1 -0
  108. package/dist/workflows/ask.d.ts +13 -0
  109. package/dist/workflows/ask.js +66 -0
  110. package/dist/workflows/ask.js.map +1 -0
  111. package/dist/workflows/index.d.ts +5 -0
  112. package/dist/workflows/index.js +6 -0
  113. package/dist/workflows/index.js.map +1 -0
  114. package/dist/workflows/interview.d.ts +11 -0
  115. package/dist/workflows/interview.js +36 -0
  116. package/dist/workflows/interview.js.map +1 -0
  117. package/dist/workflows/plan.d.ts +13 -0
  118. package/dist/workflows/plan.js +34 -0
  119. package/dist/workflows/plan.js.map +1 -0
  120. package/dist/workflows/team.d.ts +17 -0
  121. package/dist/workflows/team.js +86 -0
  122. package/dist/workflows/team.js.map +1 -0
  123. package/dist/workflows/verify.d.ts +11 -0
  124. package/dist/workflows/verify.js +21 -0
  125. package/dist/workflows/verify.js.map +1 -0
  126. package/package.json +2 -4
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Agent Router — 任务类型 → agent/模型映射
3
+ *
4
+ * 根据任务描述自动选择最合适的 agent 角色
5
+ */
6
+ import { AGENT_CATALOG } from './catalog.js';
7
+ /**
8
+ * 任务路由规则
9
+ *
10
+ * 优先级:
11
+ * 1. 显式关键词匹配(test, review, plan, verify, search, doc)
12
+ * 2. 任务复杂度判断(简单 → explore, 复杂 → planner)
13
+ * 3. 默认 executor
14
+ */
15
+ export function routeTask(task) {
16
+ const lower = task.toLowerCase();
17
+ // 显式关键词匹配
18
+ if (lower.includes('test') || lower.includes('测试'))
19
+ return 'tester';
20
+ if (lower.includes('review') || lower.includes('审查') || lower.includes('检查'))
21
+ return 'reviewer';
22
+ if (lower.includes('plan') || lower.includes('规划') || lower.includes('计划'))
23
+ return 'planner';
24
+ if (lower.includes('verify') || lower.includes('验证') || lower.includes('确认'))
25
+ return 'verifier';
26
+ if (lower.includes('search') || lower.includes('find') || lower.includes('查找') || lower.includes('搜索'))
27
+ return 'explore';
28
+ if (lower.includes('doc') || lower.includes('文档') || lower.includes('readme'))
29
+ return 'writer';
30
+ if (lower.includes('challenge') || lower.includes('critique') || lower.includes('挑战') || lower.includes('质疑'))
31
+ return 'critic';
32
+ // 复杂度判断
33
+ const complexityIndicators = [
34
+ 'refactor', '重构',
35
+ 'architecture', '架构',
36
+ 'design', '设计',
37
+ 'multiple', '多个',
38
+ 'across', '跨',
39
+ ];
40
+ const isComplex = complexityIndicators.some(indicator => lower.includes(indicator));
41
+ if (isComplex)
42
+ return 'planner';
43
+ // 默认 executor
44
+ return 'executor';
45
+ }
46
+ /**
47
+ * 根据任务选择模型层级
48
+ *
49
+ * 规则:
50
+ * - 简单任务(lookup, search, doc)→ haiku
51
+ * - 标准任务(implement, debug, test)→ sonnet
52
+ * - 复杂任务(architecture, review, plan)→ opus
53
+ */
54
+ export function selectModel(task, role) {
55
+ const agent = AGENT_CATALOG[role];
56
+ const lower = task.toLowerCase();
57
+ // 显式复杂度标记
58
+ if (lower.includes('complex') || lower.includes('复杂'))
59
+ return 'opus';
60
+ if (lower.includes('simple') || lower.includes('简单'))
61
+ return 'haiku';
62
+ // 使用 agent 默认模型
63
+ return agent.model;
64
+ }
65
+ /**
66
+ * 完整路由决策(包含原因)
67
+ */
68
+ export function routeTaskWithReason(task) {
69
+ const role = routeTask(task);
70
+ const model = selectModel(task, role);
71
+ const agent = AGENT_CATALOG[role];
72
+ let reason = `Task matched role: ${role}`;
73
+ if (task.toLowerCase().includes(role)) {
74
+ reason = `Explicit keyword match: "${role}"`;
75
+ }
76
+ else if (role === 'executor') {
77
+ reason = 'Default role for implementation tasks';
78
+ }
79
+ return { role, model, agent, reason };
80
+ }
81
+ /**
82
+ * 批量路由(用于 team 模式)
83
+ */
84
+ export function routeTeamTasks(tasks) {
85
+ return tasks.map(routeTaskWithReason);
86
+ }
87
+ //# sourceMappingURL=router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/agents/router.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Agent Spawn — 基于新 catalog 的 agent 生成
3
+ *
4
+ * 桥接 agents/catalog + agents/router → sub-agents
5
+ */
6
+ import { type AgentDefinition } from './catalog.js';
7
+ import { type RoutingDecision } from './router.js';
8
+ export interface SpawnRequest {
9
+ task: string;
10
+ role?: string;
11
+ model?: string;
12
+ cwd?: string;
13
+ }
14
+ export interface SpawnResult {
15
+ decision: RoutingDecision;
16
+ agent: AgentDefinition;
17
+ systemPrompt: string;
18
+ }
19
+ /**
20
+ * 根据任务准备 spawn 参数
21
+ */
22
+ export declare function prepareSpawn(request: SpawnRequest): SpawnResult;
23
+ /**
24
+ * 列出所有可 spawn 的角色
25
+ */
26
+ export declare function listSpawnableRoles(): Array<{
27
+ role: string;
28
+ description: string;
29
+ model: string;
30
+ }>;
31
+ /**
32
+ * 实际 spawn 一个 sub-agent 并返回 agent ID
33
+ *
34
+ * 桥接到 sub-agents.ts 的真实执行
35
+ */
36
+ export declare function spawnAgent(request: SpawnRequest): Promise<{
37
+ id: string;
38
+ error?: string;
39
+ }>;
40
+ /**
41
+ * Spawn multiple agents in parallel for team workflows
42
+ */
43
+ export declare function spawnAgentTeam(requests: SpawnRequest[]): Promise<Array<{
44
+ id: string;
45
+ error?: string;
46
+ }>>;
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Agent Spawn — 基于新 catalog 的 agent 生成
3
+ *
4
+ * 桥接 agents/catalog + agents/router → sub-agents
5
+ */
6
+ import { AGENT_CATALOG } from './catalog.js';
7
+ import { routeTaskWithReason } from './router.js';
8
+ /**
9
+ * 根据任务准备 spawn 参数
10
+ */
11
+ export function prepareSpawn(request) {
12
+ const decision = request.role
13
+ ? {
14
+ role: request.role,
15
+ model: AGENT_CATALOG[request.role]?.model ?? 'sonnet',
16
+ agent: AGENT_CATALOG[request.role],
17
+ reason: `Explicit role: ${request.role}`,
18
+ }
19
+ : routeTaskWithReason(request.task);
20
+ const agent = decision.agent;
21
+ const systemPrompt = buildAgentSystemPrompt(agent, request.task);
22
+ return { decision, agent, systemPrompt };
23
+ }
24
+ /**
25
+ * 构建 agent system prompt
26
+ */
27
+ function buildAgentSystemPrompt(agent, task) {
28
+ const boundaries = agent.boundaries.map(b => `- ${b}`).join('\n');
29
+ const useCases = agent.useCases.map(u => `- ${u}`).join('\n');
30
+ return `# Role: ${agent.role} (${agent.description})
31
+
32
+ ## What you do
33
+ ${useCases}
34
+
35
+ ## What you DON'T do
36
+ ${boundaries}
37
+
38
+ ## Task
39
+ ${task}
40
+
41
+ ## Rules
42
+ - Stay within your role boundaries
43
+ - Report completion status clearly
44
+ - If you encounter something outside your role, say so
45
+ - Be concise and direct
46
+ `;
47
+ }
48
+ /**
49
+ * 列出所有可 spawn 的角色
50
+ */
51
+ export function listSpawnableRoles() {
52
+ return Object.entries(AGENT_CATALOG).map(([role, def]) => ({
53
+ role,
54
+ description: def.description,
55
+ model: def.model,
56
+ }));
57
+ }
58
+ /**
59
+ * 实际 spawn 一个 sub-agent 并返回 agent ID
60
+ *
61
+ * 桥接到 sub-agents.ts 的真实执行
62
+ */
63
+ export async function spawnAgent(request) {
64
+ const { spawnSubAgent } = await import('../sub-agents.js');
65
+ const { decision, agent, systemPrompt } = prepareSpawn(request);
66
+ const fullTask = `${systemPrompt}\n\n---\n\n${request.task}`;
67
+ // Map agent role to sub-agent role type
68
+ // Most agents map to 'worker', but some have special handling
69
+ let subAgentRole;
70
+ switch (decision.role) {
71
+ case 'explore':
72
+ subAgentRole = 'explore';
73
+ break;
74
+ case 'planner':
75
+ subAgentRole = 'plan';
76
+ break;
77
+ case 'verifier':
78
+ subAgentRole = 'verify';
79
+ break;
80
+ default:
81
+ subAgentRole = 'worker';
82
+ }
83
+ return spawnSubAgent(fullTask, subAgentRole);
84
+ }
85
+ /**
86
+ * Spawn multiple agents in parallel for team workflows
87
+ */
88
+ export async function spawnAgentTeam(requests) {
89
+ return Promise.all(requests.map(req => spawnAgent(req)));
90
+ }
91
+ //# sourceMappingURL=spawn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spawn.js","sourceRoot":"","sources":["../../src/agents/spawn.ts"],"names":[],"mappings":"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"}
@@ -13,8 +13,10 @@ import { writeFileSync, existsSync, mkdirSync } from 'node:fs';
13
13
  import { join } from 'node:path';
14
14
  import { runAgent } from './agent.js';
15
15
  import { getConfigDir } from './config.js';
16
- import { printLine, printError, printWarning } from './ui.js';
16
+ import { printLine, printSuccess, printError, printWarning } from './ui.js';
17
17
  import { Spinner } from './spinner.js';
18
+ import { runVerification, formatVerificationResult } from './verification-agent.js';
19
+ import { runDream, shouldAutoDream } from './dream.js';
18
20
  export async function runAutonomous(options) {
19
21
  const { task, model, effort, permissionMode = 'auto', // Auto-approve by default in run mode
20
22
  maxIterations = 5, logFile, } = options;
@@ -79,6 +81,27 @@ TASK: ${task}`;
79
81
  if (result.response.includes('TASK COMPLETE')) {
80
82
  printLine(chalk.green('\n✅ Task completed!'));
81
83
  log.push('\n## Result: COMPLETE');
84
+ // Run verification after task completion
85
+ printLine(chalk.dim('\n🔍 Running verification...'));
86
+ try {
87
+ const verifyResult = await runVerification(task, result.response, { cwd: process.cwd() });
88
+ log.push('\n## Verification Results');
89
+ log.push(formatVerificationResult(verifyResult));
90
+ if (verifyResult.verdict === 'PASS') {
91
+ printSuccess('Verification: PASS');
92
+ }
93
+ else if (verifyResult.verdict === 'FAIL') {
94
+ printWarning(`Verification: FAIL (${verifyResult.summary})`);
95
+ }
96
+ else {
97
+ printLine(chalk.yellow(`Verification: PARTIAL (${verifyResult.summary})`));
98
+ }
99
+ }
100
+ catch (e) {
101
+ const errMsg = e.message;
102
+ log.push(`\nVerification error: ${errMsg}`);
103
+ printWarning(`Verification failed: ${errMsg}`);
104
+ }
82
105
  break;
83
106
  }
84
107
  retries = 0; // Reset retry counter on success
@@ -109,6 +132,23 @@ TASK: ${task}`;
109
132
  writeFileSync(logPath, log.join('\n'));
110
133
  // Cleanup
111
134
  process.removeListener('SIGINT', abortHandler);
135
+ // Run dream mode if needed
136
+ if (!aborted && shouldAutoDream()) {
137
+ printLine(chalk.dim('\n🌙 Consolidating memories...'));
138
+ try {
139
+ const dreamResult = await runDream({ verbose: false });
140
+ if (dreamResult.insights.length > 0) {
141
+ log.push('\n## Dream Mode Consolidation');
142
+ log.push(dreamResult.summary);
143
+ printSuccess(`Extracted ${dreamResult.insights.length} insights`);
144
+ }
145
+ }
146
+ catch (e) {
147
+ const errMsg = e.message;
148
+ log.push(`\nDream mode error: ${errMsg}`);
149
+ // Non-fatal, continue
150
+ }
151
+ }
112
152
  printLine();
113
153
  printLine(chalk.dim('─'.repeat(60)));
114
154
  printLine();
@@ -1 +1 @@
1
- {"version":3,"file":"autonomous.js","sourceRoot":"","sources":["../src/autonomous.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"autonomous.js","sourceRoot":"","sources":["../src/autonomous.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ export interface ClaudeBridgeOptions {
2
+ task: string;
3
+ cwd?: string;
4
+ model?: string;
5
+ maxTimeout?: number;
6
+ systemPromptAppend?: string;
7
+ outputFormat?: 'text' | 'json';
8
+ }
9
+ export interface ClaudeBridgeResult {
10
+ success: boolean;
11
+ output: string;
12
+ exitCode: number | null;
13
+ durationMs: number;
14
+ error?: string;
15
+ }
16
+ export declare function isClaudeAvailable(): boolean;
17
+ export declare function delegateToClaude(options: ClaudeBridgeOptions): ClaudeBridgeResult;
18
+ export declare function delegateToClaudeFile(options: ClaudeBridgeOptions): ClaudeBridgeResult;
@@ -0,0 +1,91 @@
1
+ import { execSync } from 'node:child_process';
2
+ import { existsSync, mkdtempSync, writeFileSync, readFileSync, rmSync } from 'node:fs';
3
+ import { join } from 'node:path';
4
+ import { tmpdir } from 'node:os';
5
+ function findClaudeCli() {
6
+ try {
7
+ const result = execSync('where claude 2>nul || which claude 2>/dev/null', {
8
+ encoding: 'utf-8',
9
+ timeout: 5000,
10
+ stdio: ['pipe', 'pipe', 'pipe'],
11
+ });
12
+ const path = result.trim().split('\n')[0].trim();
13
+ return path && existsSync(path) ? path : null;
14
+ }
15
+ catch {
16
+ return null;
17
+ }
18
+ }
19
+ export function isClaudeAvailable() {
20
+ return findClaudeCli() !== null;
21
+ }
22
+ export function delegateToClaude(options) {
23
+ const claudePath = findClaudeCli();
24
+ if (!claudePath) {
25
+ return {
26
+ success: false,
27
+ output: '',
28
+ exitCode: null,
29
+ durationMs: 0,
30
+ error: 'Claude Code CLI not found. Install: npm install -g @anthropic-ai/claude-code',
31
+ };
32
+ }
33
+ const startTime = Date.now();
34
+ const cwd = options.cwd || process.cwd();
35
+ const timeout = (options.maxTimeout || 120) * 1000;
36
+ const args = ['-p', options.task];
37
+ if (options.model)
38
+ args.push('--model', options.model);
39
+ if (options.outputFormat === 'json')
40
+ args.push('--output-format', 'json');
41
+ if (options.systemPromptAppend)
42
+ args.push('--append-system-prompt', options.systemPromptAppend);
43
+ try {
44
+ const result = execSync(`claude ${args.map(a => `"${a.replace(/"/g, '\\"')}"`).join(' ')}`, {
45
+ cwd,
46
+ encoding: 'utf-8',
47
+ timeout,
48
+ maxBuffer: 10 * 1024 * 1024,
49
+ stdio: ['pipe', 'pipe', 'pipe'],
50
+ });
51
+ return {
52
+ success: true,
53
+ output: result.trim(),
54
+ exitCode: 0,
55
+ durationMs: Date.now() - startTime,
56
+ };
57
+ }
58
+ catch (e) {
59
+ const err = e;
60
+ const output = (err.stdout || '').trim();
61
+ const stderr = (err.stderr || '').trim();
62
+ return {
63
+ success: false,
64
+ output: output || stderr,
65
+ exitCode: err.status ?? 1,
66
+ durationMs: Date.now() - startTime,
67
+ error: stderr || `Claude Code exited with code ${err.status}`,
68
+ };
69
+ }
70
+ }
71
+ export function delegateToClaudeFile(options) {
72
+ const task = options.task;
73
+ if (task.length < 4000) {
74
+ return delegateToClaude(options);
75
+ }
76
+ const tmpDir = mkdtempSync(join(tmpdir(), 'bobo-claude-'));
77
+ const taskFile = join(tmpDir, 'task.txt');
78
+ writeFileSync(taskFile, task, 'utf-8');
79
+ try {
80
+ const fileContent = readFileSync(taskFile, 'utf-8');
81
+ const opts = { ...options, task: fileContent };
82
+ return delegateToClaude(opts);
83
+ }
84
+ finally {
85
+ try {
86
+ rmSync(tmpDir, { recursive: true });
87
+ }
88
+ catch { /* ignore */ }
89
+ }
90
+ }
91
+ //# sourceMappingURL=claude-bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-bridge.js","sourceRoot":"","sources":["../src/claude-bridge.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,8 @@
1
+ /**
2
+ * CLI command registration — all commander subcommands.
3
+ */
4
+ import { Command } from 'commander';
5
+ /**
6
+ * Register all CLI subcommands on the program.
7
+ */
8
+ export declare function registerCommands(program: Command): void;