bobo-ai-cli 2.1.0 → 3.0.1

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 (260) hide show
  1. package/README.md +52 -9
  2. package/bundled-skills/CORE_SKILLS.txt +18 -0
  3. package/dist/agent.js +91 -51
  4. package/dist/agent.js.map +1 -1
  5. package/dist/agents/catalog.d.ts +40 -0
  6. package/dist/agents/catalog.js +172 -0
  7. package/dist/agents/catalog.js.map +1 -0
  8. package/dist/agents/index.d.ts +6 -0
  9. package/dist/agents/index.js +4 -0
  10. package/dist/agents/index.js.map +1 -0
  11. package/dist/agents/router.d.ts +43 -0
  12. package/dist/agents/router.js +87 -0
  13. package/dist/agents/router.js.map +1 -0
  14. package/dist/agents/spawn.d.ts +46 -0
  15. package/dist/agents/spawn.js +91 -0
  16. package/dist/agents/spawn.js.map +1 -0
  17. package/dist/autonomous.js +41 -1
  18. package/dist/autonomous.js.map +1 -1
  19. package/dist/cli.d.ts +8 -0
  20. package/dist/cli.js +669 -0
  21. package/dist/cli.js.map +1 -0
  22. package/dist/compactor.d.ts +49 -4
  23. package/dist/compactor.js +164 -17
  24. package/dist/compactor.js.map +1 -1
  25. package/dist/completer.js +2 -0
  26. package/dist/completer.js.map +1 -1
  27. package/dist/config.js +3 -2
  28. package/dist/config.js.map +1 -1
  29. package/dist/cost-tracker.js +36 -2
  30. package/dist/cost-tracker.js.map +1 -1
  31. package/dist/dream.d.ts +42 -0
  32. package/dist/dream.js +324 -0
  33. package/dist/dream.js.map +1 -0
  34. package/dist/hooks.d.ts +1 -1
  35. package/dist/hooks.js +7 -2
  36. package/dist/hooks.js.map +1 -1
  37. package/dist/index.js +10 -1136
  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 +16 -4
  43. package/dist/knowledge.js.map +1 -1
  44. package/dist/mcp-client.js +59 -41
  45. package/dist/mcp-client.js.map +1 -1
  46. package/dist/memory.d.ts +4 -0
  47. package/dist/memory.js +30 -18
  48. package/dist/memory.js.map +1 -1
  49. package/dist/project.js +2 -1
  50. package/dist/project.js.map +1 -1
  51. package/dist/providers.js +1 -1
  52. package/dist/providers.js.map +1 -1
  53. package/dist/repl.d.ts +16 -0
  54. package/dist/repl.js +704 -0
  55. package/dist/repl.js.map +1 -0
  56. package/dist/sessions.js +59 -3
  57. package/dist/sessions.js.map +1 -1
  58. package/dist/skill-router.js +2 -2
  59. package/dist/skill-router.js.map +1 -1
  60. package/dist/skills/composer.d.ts +18 -0
  61. package/dist/skills/composer.js +59 -0
  62. package/dist/skills/composer.js.map +1 -0
  63. package/dist/skills/index.d.ts +3 -0
  64. package/dist/skills/index.js +3 -0
  65. package/dist/skills/index.js.map +1 -0
  66. package/dist/skills/loader.d.ts +12 -0
  67. package/dist/skills/loader.js +150 -0
  68. package/dist/skills/loader.js.map +1 -0
  69. package/dist/skills/types.d.ts +28 -0
  70. package/dist/skills/types.js +9 -0
  71. package/dist/skills/types.js.map +1 -0
  72. package/dist/skills.d.ts +1 -0
  73. package/dist/skills.js +10 -8
  74. package/dist/skills.js.map +1 -1
  75. package/dist/state/artifacts.d.ts +71 -0
  76. package/dist/state/artifacts.js +133 -0
  77. package/dist/state/artifacts.js.map +1 -0
  78. package/dist/state/index.d.ts +9 -0
  79. package/dist/state/index.js +7 -0
  80. package/dist/state/index.js.map +1 -0
  81. package/dist/state/manager.d.ts +89 -0
  82. package/dist/state/manager.js +132 -0
  83. package/dist/state/manager.js.map +1 -0
  84. package/dist/state/project-memory.d.ts +24 -0
  85. package/dist/state/project-memory.js +83 -0
  86. package/dist/state/project-memory.js.map +1 -0
  87. package/dist/state/recovery.d.ts +24 -0
  88. package/dist/state/recovery.js +95 -0
  89. package/dist/state/recovery.js.map +1 -0
  90. package/dist/statusbar.d.ts +1 -0
  91. package/dist/statusbar.js +12 -1
  92. package/dist/statusbar.js.map +1 -1
  93. package/dist/structured/loader.js +4 -2
  94. package/dist/structured/loader.js.map +1 -1
  95. package/dist/sub-agent-runner.d.ts +1 -0
  96. package/dist/sub-agent-runner.js +32 -5
  97. package/dist/sub-agent-runner.js.map +1 -1
  98. package/dist/sub-agents.d.ts +19 -1
  99. package/dist/sub-agents.js +142 -5
  100. package/dist/sub-agents.js.map +1 -1
  101. package/dist/tool-governance.d.ts +77 -0
  102. package/dist/tool-governance.js +366 -0
  103. package/dist/tool-governance.js.map +1 -0
  104. package/dist/tools/advanced.js +3 -2
  105. package/dist/tools/advanced.js.map +1 -1
  106. package/dist/tools/browser.js +2 -2
  107. package/dist/tools/browser.js.map +1 -1
  108. package/dist/tools/claude-code.js +2 -2
  109. package/dist/tools/claude-code.js.map +1 -1
  110. package/dist/tools/index.js +36 -12
  111. package/dist/tools/index.js.map +1 -1
  112. package/dist/tools/process-manager.js +2 -2
  113. package/dist/tools/process-manager.js.map +1 -1
  114. package/dist/ui/hud.d.ts +25 -0
  115. package/dist/ui/hud.js +67 -0
  116. package/dist/ui/hud.js.map +1 -0
  117. package/dist/verification-agent.d.ts +46 -0
  118. package/dist/verification-agent.js +533 -0
  119. package/dist/verification-agent.js.map +1 -0
  120. package/dist/watcher.js +2 -2
  121. package/dist/watcher.js.map +1 -1
  122. package/dist/web.js +1 -1
  123. package/dist/web.js.map +1 -1
  124. package/dist/workflows/ask.d.ts +13 -0
  125. package/dist/workflows/ask.js +66 -0
  126. package/dist/workflows/ask.js.map +1 -0
  127. package/dist/workflows/index.d.ts +5 -0
  128. package/dist/workflows/index.js +6 -0
  129. package/dist/workflows/index.js.map +1 -0
  130. package/dist/workflows/interview.d.ts +11 -0
  131. package/dist/workflows/interview.js +36 -0
  132. package/dist/workflows/interview.js.map +1 -0
  133. package/dist/workflows/plan.d.ts +13 -0
  134. package/dist/workflows/plan.js +34 -0
  135. package/dist/workflows/plan.js.map +1 -0
  136. package/dist/workflows/team.d.ts +17 -0
  137. package/dist/workflows/team.js +86 -0
  138. package/dist/workflows/team.js.map +1 -0
  139. package/dist/workflows/verify.d.ts +11 -0
  140. package/dist/workflows/verify.js +21 -0
  141. package/dist/workflows/verify.js.map +1 -0
  142. package/package.json +18 -5
  143. package/bundled-skills/Skill_Seekers/SKILL.md +0 -1722
  144. package/bundled-skills/ab-test-setup/SKILL.md +0 -557
  145. package/bundled-skills/adversarial-verification/SKILL.md +0 -95
  146. package/bundled-skills/agent-sdk-dev/SKILL.md +0 -238
  147. package/bundled-skills/agent-tools/SKILL.md +0 -136
  148. package/bundled-skills/analytics-tracking/SKILL.md +0 -597
  149. package/bundled-skills/artifacts-builder/SKILL.md +0 -89
  150. package/bundled-skills/asana/SKILL.md +0 -13
  151. package/bundled-skills/brand-voice/SKILL.md +0 -481
  152. package/bundled-skills/browser-use/SKILL.md +0 -419
  153. package/bundled-skills/cache-optimization-skill/SKILL.md +0 -179
  154. package/bundled-skills/canvas-design/SKILL.md +0 -147
  155. package/bundled-skills/citation-validator/SKILL.md +0 -203
  156. package/bundled-skills/clangd-lsp/SKILL.md +0 -52
  157. package/bundled-skills/code-simplifier/SKILL.md +0 -13
  158. package/bundled-skills/commit-commands/SKILL.md +0 -258
  159. package/bundled-skills/competitor-alternatives/SKILL.md +0 -795
  160. package/bundled-skills/content-atomizer/SKILL.md +0 -910
  161. package/bundled-skills/content-research-writer/SKILL.md +0 -605
  162. package/bundled-skills/context7/SKILL.md +0 -13
  163. package/bundled-skills/copy-editing/SKILL.md +0 -494
  164. package/bundled-skills/copywriting/SKILL.md +0 -510
  165. package/bundled-skills/csharp-lsp/SKILL.md +0 -40
  166. package/bundled-skills/decision-making-framework/SKILL.md +0 -154
  167. package/bundled-skills/deep-research/SKILL.md +0 -236
  168. package/bundled-skills/developer-growth-analysis/SKILL.md +0 -335
  169. package/bundled-skills/direct-response-copy/SKILL.md +0 -2336
  170. package/bundled-skills/docker-expert/SKILL.md +0 -229
  171. package/bundled-skills/document-skills/SKILL.md +0 -13
  172. package/bundled-skills/documentation-expert/SKILL.md +0 -126
  173. package/bundled-skills/email-sequence/SKILL.md +0 -1061
  174. package/bundled-skills/email-sequences/SKILL.md +0 -910
  175. package/bundled-skills/example-plugin/SKILL.md +0 -72
  176. package/bundled-skills/explanatory-output-style/SKILL.md +0 -82
  177. package/bundled-skills/feature-dev/SKILL.md +0 -458
  178. package/bundled-skills/file-organizer/SKILL.md +0 -466
  179. package/bundled-skills/firebase.disabled/SKILL.md +0 -13
  180. package/bundled-skills/form-cro/SKILL.md +0 -488
  181. package/bundled-skills/free-tool-strategy/SKILL.md +0 -636
  182. package/bundled-skills/frontend-design/SKILL.md +0 -41
  183. package/bundled-skills/frontend-design-offical/SKILL.md +0 -55
  184. package/bundled-skills/gitlab/SKILL.md +0 -13
  185. package/bundled-skills/gopls-lsp/SKILL.md +0 -32
  186. package/bundled-skills/got-controller/SKILL.md +0 -218
  187. package/bundled-skills/greptile/SKILL.md +0 -72
  188. package/bundled-skills/hookify/SKILL.md +0 -376
  189. package/bundled-skills/image-editor/SKILL.md +0 -189
  190. package/bundled-skills/image-enhancer/SKILL.md +0 -109
  191. package/bundled-skills/jdtls-lsp/SKILL.md +0 -49
  192. package/bundled-skills/json-canvas/SKILL.md +0 -654
  193. package/bundled-skills/keyword-research/SKILL.md +0 -559
  194. package/bundled-skills/kotlin-lsp/SKILL.md +0 -28
  195. package/bundled-skills/laravel-boost/SKILL.md +0 -13
  196. package/bundled-skills/launch-strategy/SKILL.md +0 -394
  197. package/bundled-skills/lead-magnet/SKILL.md +0 -393
  198. package/bundled-skills/learning-output-style/SKILL.md +0 -106
  199. package/bundled-skills/linear/SKILL.md +0 -13
  200. package/bundled-skills/lua-lsp/SKILL.md +0 -47
  201. package/bundled-skills/marketing-ideas/SKILL.md +0 -720
  202. package/bundled-skills/marketing-psychology/SKILL.md +0 -534
  203. package/bundled-skills/mcp-builder/SKILL.md +0 -369
  204. package/bundled-skills/meeting-insights-analyzer/SKILL.md +0 -347
  205. package/bundled-skills/memory-evolution-system/SKILL.md +0 -172
  206. package/bundled-skills/multi-lens-thinking/SKILL.md +0 -407
  207. package/bundled-skills/nano-banana-pro/SKILL.md +0 -116
  208. package/bundled-skills/newsletter/SKILL.md +0 -736
  209. package/bundled-skills/notebooklm/SKILL.md +0 -296
  210. package/bundled-skills/obsidian-bases/SKILL.md +0 -634
  211. package/bundled-skills/obsidian-markdown/SKILL.md +0 -651
  212. package/bundled-skills/onboarding-cro/SKILL.md +0 -494
  213. package/bundled-skills/page-cro/SKILL.md +0 -379
  214. package/bundled-skills/paid-ads/SKILL.md +0 -624
  215. package/bundled-skills/paywall-upgrade-cro/SKILL.md +0 -651
  216. package/bundled-skills/php-lsp/SKILL.md +0 -36
  217. package/bundled-skills/playwright/SKILL.md +0 -13
  218. package/bundled-skills/plugin-dev/SKILL.md +0 -434
  219. package/bundled-skills/popup-cro/SKILL.md +0 -520
  220. package/bundled-skills/positioning-angles/SKILL.md +0 -330
  221. package/bundled-skills/pr-review-toolkit/SKILL.md +0 -359
  222. package/bundled-skills/pricing-strategy/SKILL.md +0 -777
  223. package/bundled-skills/proactive-self-improving/SKILL.md +0 -435
  224. package/bundled-skills/programmatic-seo/SKILL.md +0 -714
  225. package/bundled-skills/pyright-lsp/SKILL.md +0 -43
  226. package/bundled-skills/quality-assurance-framework/SKILL.md +0 -168
  227. package/bundled-skills/question-refiner/SKILL.md +0 -160
  228. package/bundled-skills/ralph-loop/SKILL.md +0 -205
  229. package/bundled-skills/refactoring-expert/SKILL.md +0 -103
  230. package/bundled-skills/referral-program/SKILL.md +0 -668
  231. package/bundled-skills/research-executor/SKILL.md +0 -164
  232. package/bundled-skills/review-with-security/SKILL.md +0 -12
  233. package/bundled-skills/rust-analyzer-lsp/SKILL.md +0 -50
  234. package/bundled-skills/schema-markup/SKILL.md +0 -647
  235. package/bundled-skills/security-audit-expert/SKILL.md +0 -124
  236. package/bundled-skills/security-expert/SKILL.md +0 -140
  237. package/bundled-skills/security-guidance/SKILL.md +0 -13
  238. package/bundled-skills/seedance-prompt/SKILL.md +0 -139
  239. package/bundled-skills/self-evolution/SKILL.md +0 -1160
  240. package/bundled-skills/seo-audit/SKILL.md +0 -432
  241. package/bundled-skills/seo-content/SKILL.md +0 -787
  242. package/bundled-skills/serena/SKILL.md +0 -13
  243. package/bundled-skills/signup-flow-cro/SKILL.md +0 -409
  244. package/bundled-skills/skill-manager/SKILL.md +0 -226
  245. package/bundled-skills/skill-share/SKILL.md +0 -98
  246. package/bundled-skills/slack/SKILL.md +0 -13
  247. package/bundled-skills/social-content/SKILL.md +0 -878
  248. package/bundled-skills/spec-flow-skill/SKILL.md +0 -124
  249. package/bundled-skills/stripe/SKILL.md +0 -13
  250. package/bundled-skills/supabase/SKILL.md +0 -13
  251. package/bundled-skills/swift-lsp/SKILL.md +0 -40
  252. package/bundled-skills/synthesizer/SKILL.md +0 -236
  253. package/bundled-skills/template-skill/SKILL.md +0 -16
  254. package/bundled-skills/theme-factory/SKILL.md +0 -72
  255. package/bundled-skills/tiktok-research/SKILL.md +0 -208
  256. package/bundled-skills/typescript-lsp/SKILL.md +0 -36
  257. package/bundled-skills/ui-ux-pro-max/SKILL.md +0 -247
  258. package/bundled-skills/visual-prompt-engineer/SKILL.md +0 -102
  259. package/bundled-skills/webapp-testing/SKILL.md +0 -111
  260. package/bundled-skills/wide-research/SKILL.md +0 -191
@@ -0,0 +1,66 @@
1
+ import { writeAsk } from '../state/artifacts.js';
2
+ import { getPreset } from '../providers.js';
3
+ import OpenAI from 'openai';
4
+ import { loadConfig } from '../config.js';
5
+ /**
6
+ * Real ask workflow using provider infrastructure
7
+ *
8
+ * Makes an actual API call to the specified provider/model
9
+ */
10
+ export async function runAskWorkflow(model, prompt) {
11
+ const config = loadConfig();
12
+ let response;
13
+ let error;
14
+ try {
15
+ // Check if model is a provider preset name (e.g., "anthropic", "openai")
16
+ const preset = getPreset(model);
17
+ let client;
18
+ let actualModel;
19
+ if (preset) {
20
+ // Using a provider preset
21
+ const apiKey = preset.envKey ? process.env[preset.envKey] : config.apiKey;
22
+ if (!apiKey) {
23
+ throw new Error(`API key not found. Set ${preset.envKey || 'API key'} via environment or config.`);
24
+ }
25
+ client = new OpenAI({
26
+ apiKey,
27
+ baseURL: preset.baseUrl,
28
+ });
29
+ actualModel = preset.defaultModel;
30
+ }
31
+ else {
32
+ // Assume model is a specific model name, use current configured provider
33
+ if (!config.apiKey) {
34
+ throw new Error('API key not configured. Run: bobo config set apiKey <your-key>');
35
+ }
36
+ client = new OpenAI({
37
+ apiKey: config.apiKey,
38
+ baseURL: config.baseUrl,
39
+ });
40
+ actualModel = model;
41
+ }
42
+ // Make the API call
43
+ const completion = await client.chat.completions.create({
44
+ model: actualModel,
45
+ messages: [
46
+ { role: 'user', content: prompt },
47
+ ],
48
+ max_tokens: 16384,
49
+ });
50
+ response = completion.choices[0]?.message?.content || '(no response)';
51
+ }
52
+ catch (e) {
53
+ error = e.message;
54
+ }
55
+ // Build content
56
+ let content;
57
+ if (error) {
58
+ content = `# Ask\n\n## Model\n${model}\n\n## Prompt\n${prompt}\n\n## Error\n${error}\n\n## Limitation\nAPI call failed. Check your API key and model availability.\n`;
59
+ }
60
+ else {
61
+ content = `# Ask\n\n## Model\n${model}\n\n## Prompt\n${prompt}\n\n## Response\n\n${response}\n`;
62
+ }
63
+ const path = writeAsk(model, content);
64
+ return { model, path, content, response, error };
65
+ }
66
+ //# sourceMappingURL=ask.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ask.js","sourceRoot":"","sources":["../../src/workflows/ask.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAU1C;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAAa,EAAE,MAAc;IAChE,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,IAAI,QAA4B,CAAC;IACjC,IAAI,KAAyB,CAAC;IAE9B,IAAI,CAAC;QACH,yEAAyE;QACzE,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;QAEhC,IAAI,MAAc,CAAC;QACnB,IAAI,WAAmB,CAAC;QAExB,IAAI,MAAM,EAAE,CAAC;YACX,0BAA0B;YAC1B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;YAC1E,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,0BAA0B,MAAM,CAAC,MAAM,IAAI,SAAS,6BAA6B,CAAC,CAAC;YACrG,CAAC;YAED,MAAM,GAAG,IAAI,MAAM,CAAC;gBAClB,MAAM;gBACN,OAAO,EAAE,MAAM,CAAC,OAAO;aACxB,CAAC,CAAC;YACH,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC;QACpC,CAAC;aAAM,CAAC;YACN,yEAAyE;YACzE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACnB,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;YACpF,CAAC;YAED,MAAM,GAAG,IAAI,MAAM,CAAC;gBAClB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,OAAO,EAAE,MAAM,CAAC,OAAO;aACxB,CAAC,CAAC;YACH,WAAW,GAAG,KAAK,CAAC;QACtB,CAAC;QAED,oBAAoB;QACpB,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;YACtD,KAAK,EAAE,WAAW;YAClB,QAAQ,EAAE;gBACR,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE;aAClC;YACD,UAAU,EAAE,KAAK;SAClB,CAAC,CAAC;QAEH,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,IAAI,eAAe,CAAC;IACxE,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,KAAK,GAAI,CAAW,CAAC,OAAO,CAAC;IAC/B,CAAC;IAED,gBAAgB;IAChB,IAAI,OAAe,CAAC;IAEpB,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,GAAG,sBAAsB,KAAK,kBAAkB,MAAM,iBAAiB,KAAK,kFAAkF,CAAC;IACxK,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,sBAAsB,KAAK,kBAAkB,MAAM,sBAAsB,QAAQ,IAAI,CAAC;IAClG,CAAC;IAED,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACtC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AACnD,CAAC"}
@@ -0,0 +1,5 @@
1
+ export * from './team.js';
2
+ export * from './plan.js';
3
+ export * from './verify.js';
4
+ export * from './interview.js';
5
+ export * from './ask.js';
@@ -0,0 +1,6 @@
1
+ export * from './team.js';
2
+ export * from './plan.js';
3
+ export * from './verify.js';
4
+ export * from './interview.js';
5
+ export * from './ask.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/workflows/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC"}
@@ -0,0 +1,11 @@
1
+ export interface InterviewResult {
2
+ path: string;
3
+ questions: string[];
4
+ agentId?: string;
5
+ }
6
+ /**
7
+ * Interview workflow with Socratic questioning approach
8
+ *
9
+ * Generates context-aware questions and optionally spawns an agent for deep exploration
10
+ */
11
+ export declare function runInterviewWorkflow(topic: string): Promise<InterviewResult>;
@@ -0,0 +1,36 @@
1
+ import { writeResearch } from '../state/artifacts.js';
2
+ import { spawnAgent } from '../agents/spawn.js';
3
+ /**
4
+ * Interview workflow with Socratic questioning approach
5
+ *
6
+ * Generates context-aware questions and optionally spawns an agent for deep exploration
7
+ */
8
+ export async function runInterviewWorkflow(topic) {
9
+ // Base Socratic questions (always included)
10
+ const baseQuestions = [
11
+ `What problem does "${topic}" solve?`,
12
+ 'Who is the user?',
13
+ 'What are the hard constraints?',
14
+ 'What would make this fail?',
15
+ 'What is the smallest useful version?',
16
+ ];
17
+ // Try to spawn a planner agent to generate deeper questions
18
+ const questionGenResult = await spawnAgent({
19
+ task: `You are conducting a Socratic interview about: ${topic}\n\nGenerate 10 deep, probing questions that will help understand:\n- The core problem and why it matters\n- User needs and constraints\n- Potential risks and failure modes\n- Alternative approaches\n- Success criteria\n\nMake questions specific to this topic, not generic.`,
20
+ role: 'planner',
21
+ cwd: process.cwd(),
22
+ });
23
+ let content;
24
+ let agentId;
25
+ if (questionGenResult.error) {
26
+ // Fallback to static questions
27
+ content = `# Deep Interview\n\n## Topic\n${topic}\n\n## Socratic Questions\n${baseQuestions.map((q, i) => `${i + 1}. ${q}`).join('\n')}\n\n## Note\nDeeper question generation failed: ${questionGenResult.error}\n`;
28
+ }
29
+ else {
30
+ agentId = questionGenResult.id;
31
+ content = `# Deep Interview\n\n## Topic\n${topic}\n\n## Base Socratic Questions\n${baseQuestions.map((q, i) => `${i + 1}. ${q}`).join('\n')}\n\n## Deep Question Generation\nAgent ID: ${agentId}\nStatus: Running in background\n\nAn agent is generating deeper, context-specific questions. Check with:\n bobo agent ${agentId}\n`;
32
+ }
33
+ const path = writeResearch('interview', content);
34
+ return { path, questions: baseQuestions, agentId };
35
+ }
36
+ //# sourceMappingURL=interview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interview.js","sourceRoot":"","sources":["../../src/workflows/interview.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAQhD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,KAAa;IACtD,4CAA4C;IAC5C,MAAM,aAAa,GAAG;QACpB,sBAAsB,KAAK,UAAU;QACrC,kBAAkB;QAClB,gCAAgC;QAChC,4BAA4B;QAC5B,sCAAsC;KACvC,CAAC;IAEF,4DAA4D;IAC5D,MAAM,iBAAiB,GAAG,MAAM,UAAU,CAAC;QACzC,IAAI,EAAE,kDAAkD,KAAK,mRAAmR;QAChV,IAAI,EAAE,SAAS;QACf,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;KACnB,CAAC,CAAC;IAEH,IAAI,OAAe,CAAC;IACpB,IAAI,OAA2B,CAAC;IAEhC,IAAI,iBAAiB,CAAC,KAAK,EAAE,CAAC;QAC5B,+BAA+B;QAC/B,OAAO,GAAG,iCAAiC,KAAK,8BAA8B,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,mDAAmD,iBAAiB,CAAC,KAAK,IAAI,CAAC;IACvN,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,iBAAiB,CAAC,EAAE,CAAC;QAC/B,OAAO,GAAG,iCAAiC,KAAK,mCAAmC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,8CAA8C,OAAO,2HAA2H,OAAO,IAAI,CAAC;IACzU,CAAC;IAED,MAAM,IAAI,GAAG,aAAa,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACjD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC;AACrD,CAAC"}
@@ -0,0 +1,13 @@
1
+ export interface PlanResult {
2
+ role: string;
3
+ model: string;
4
+ path: string;
5
+ content: string;
6
+ agentId?: string;
7
+ }
8
+ /**
9
+ * Real plan workflow using planner agent
10
+ *
11
+ * Spawns a planner agent to create a structured execution plan
12
+ */
13
+ export declare function runPlanWorkflow(task: string): Promise<PlanResult>;
@@ -0,0 +1,34 @@
1
+ import { writePlan } from '../state/artifacts.js';
2
+ import { routeTaskWithReason } from '../agents/router.js';
3
+ import { spawnAgent } from '../agents/spawn.js';
4
+ /**
5
+ * Real plan workflow using planner agent
6
+ *
7
+ * Spawns a planner agent to create a structured execution plan
8
+ */
9
+ export async function runPlanWorkflow(task) {
10
+ const route = routeTaskWithReason(task);
11
+ // Spawn a planner agent to create the plan
12
+ const plannerResult = await spawnAgent({
13
+ task: `Create a detailed, structured execution plan for the following task:\n\n${task}\n\nBreak down into concrete steps, identify file changes needed, list dependencies, assess risks, and estimate complexity.`,
14
+ role: 'planner',
15
+ cwd: process.cwd(),
16
+ });
17
+ let content;
18
+ if (plannerResult.error) {
19
+ // Fallback to static plan if agent spawn failed
20
+ content = `# Plan\n\n## Task\n${task}\n\n## Recommended role\n${route.role}\n\n## Model\n${route.model}\n\n## Reason\n${route.reason}\n\n## Suggested steps\n1. Explore relevant files\n2. Create minimal change set\n3. Implement\n4. Verify\n\n## Error\nPlanner agent spawn failed: ${plannerResult.error}\n`;
21
+ }
22
+ else {
23
+ content = `# Plan\n\n## Task\n${task}\n\n## Recommended role\n${route.role}\n\n## Model\n${route.model}\n\n## Reason\n${route.reason}\n\n## Planner Agent\nAgent ID: ${plannerResult.id}\nStatus: Running in background\n\nThe planner agent is creating a detailed plan. Check status with:\n bobo agent ${plannerResult.id}\n\n## Fallback Steps\n1. Explore relevant files\n2. Create minimal change set\n3. Implement\n4. Verify\n`;
24
+ }
25
+ const path = writePlan(content);
26
+ return {
27
+ role: route.role,
28
+ model: route.model,
29
+ path,
30
+ content,
31
+ agentId: plannerResult.error ? undefined : plannerResult.id,
32
+ };
33
+ }
34
+ //# sourceMappingURL=plan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/workflows/plan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAUhD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAY;IAChD,MAAM,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAExC,2CAA2C;IAC3C,MAAM,aAAa,GAAG,MAAM,UAAU,CAAC;QACrC,IAAI,EAAE,2EAA2E,IAAI,6HAA6H;QAClN,IAAI,EAAE,SAAS;QACf,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;KACnB,CAAC,CAAC;IAEH,IAAI,OAAe,CAAC;IAEpB,IAAI,aAAa,CAAC,KAAK,EAAE,CAAC;QACxB,gDAAgD;QAChD,OAAO,GAAG,sBAAsB,IAAI,4BAA4B,KAAK,CAAC,IAAI,iBAAiB,KAAK,CAAC,KAAK,kBAAkB,KAAK,CAAC,MAAM,qJAAqJ,aAAa,CAAC,KAAK,IAAI,CAAC;IACnT,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,sBAAsB,IAAI,4BAA4B,KAAK,CAAC,IAAI,iBAAiB,KAAK,CAAC,KAAK,kBAAkB,KAAK,CAAC,MAAM,mCAAmC,aAAa,CAAC,EAAE,sHAAsH,aAAa,CAAC,EAAE,2GAA2G,CAAC;IAC3a,CAAC;IAED,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAChC,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,IAAI;QACJ,OAAO;QACP,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE;KAC5D,CAAC;AACJ,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { type AgentRole } from '../agents/router.js';
2
+ export interface TeamRunResult {
3
+ workflowId: string;
4
+ role: AgentRole;
5
+ teamSize: number;
6
+ planPath: string;
7
+ prdPath: string;
8
+ teamPath: string;
9
+ summary: string;
10
+ agentIds: string[];
11
+ }
12
+ /**
13
+ * Real team workflow execution using agent spawning
14
+ *
15
+ * Pipeline: plan → prd → parallel execution → verify
16
+ */
17
+ export declare function runTeamWorkflow(task: string, teamSize: number, requestedRole?: AgentRole, sessionId?: string): Promise<TeamRunResult>;
@@ -0,0 +1,86 @@
1
+ import { writePlan, writePRD, writeTeam } from '../state/artifacts.js';
2
+ import { addWorkflow, updateWorkflow, removeWorkflow } from '../state/manager.js';
3
+ import { routeTaskWithReason } from '../agents/router.js';
4
+ import { spawnAgent, spawnAgentTeam } from '../agents/spawn.js';
5
+ function nowId(prefix) {
6
+ return `${prefix}-${Date.now().toString(36)}`;
7
+ }
8
+ /**
9
+ * Real team workflow execution using agent spawning
10
+ *
11
+ * Pipeline: plan → prd → parallel execution → verify
12
+ */
13
+ export async function runTeamWorkflow(task, teamSize, requestedRole, sessionId = 'cli') {
14
+ const workflowId = nowId('team');
15
+ const route = routeTaskWithReason(task);
16
+ const role = requestedRole ?? route.role;
17
+ const workflow = {
18
+ workflowId,
19
+ type: 'team',
20
+ status: 'running',
21
+ startedAt: new Date().toISOString(),
22
+ sessionId,
23
+ metadata: { task, teamSize, role, routeReason: route.reason },
24
+ };
25
+ addWorkflow(workflow);
26
+ const agentIds = [];
27
+ try {
28
+ // Stage 1: Planning
29
+ const plannerResult = await spawnAgent({
30
+ task: `Create a detailed execution plan for: ${task}`,
31
+ role: 'planner',
32
+ cwd: process.cwd(),
33
+ });
34
+ if (plannerResult.error) {
35
+ throw new Error(`Planner failed: ${plannerResult.error}`);
36
+ }
37
+ agentIds.push(plannerResult.id);
38
+ const planContent = `# Team Plan\n\n- Task: ${task}\n- Team size: ${teamSize}\n- Role: ${role}\n- Route reason: ${route.reason}\n\n## Planning Agent\nAgent ID: ${plannerResult.id}\nStatus: Spawned in background\n\n## Stages\n1. ✓ Plan created\n2. PRD generation\n3. Parallel execution\n4. Verification\n5. Fix (if needed)\n`;
39
+ // Stage 2: PRD (Product Requirements Document)
40
+ const prdResult = await spawnAgent({
41
+ task: `Based on the plan, write a clear PRD for: ${task}`,
42
+ role: 'planner',
43
+ cwd: process.cwd(),
44
+ });
45
+ if (prdResult.error) {
46
+ throw new Error(`PRD generation failed: ${prdResult.error}`);
47
+ }
48
+ agentIds.push(prdResult.id);
49
+ const prdContent = `# Team PRD\n\n## Goal\n${task}\n\n## Execution Lane\n- Primary role: ${role}\n- Workers: ${teamSize}\n- Model hint: ${route.model}\n\n## PRD Agent\nAgent ID: ${prdResult.id}\nStatus: Spawned in background\n`;
50
+ // Stage 3: Parallel execution with multiple workers
51
+ const workerRequests = Array.from({ length: teamSize }, (_, i) => ({
52
+ task: `Execute subtask ${i + 1}/${teamSize} of: ${task}\n\nYou are worker ${i + 1} in a team of ${teamSize}. Focus on your portion of the work.`,
53
+ role,
54
+ cwd: process.cwd(),
55
+ }));
56
+ const workerResults = await spawnAgentTeam(workerRequests);
57
+ const successfulWorkers = workerResults.filter(r => !r.error);
58
+ const failedWorkers = workerResults.filter(r => r.error);
59
+ agentIds.push(...successfulWorkers.map(w => w.id));
60
+ // Stage 4: Verification
61
+ const verifyResult = await spawnAgent({
62
+ task: `Verify that the following task was completed correctly: ${task}\n\nWorkers spawned: ${successfulWorkers.length}/${teamSize}`,
63
+ role: 'verifier',
64
+ cwd: process.cwd(),
65
+ });
66
+ if (verifyResult.error) {
67
+ throw new Error(`Verification failed: ${verifyResult.error}`);
68
+ }
69
+ agentIds.push(verifyResult.id);
70
+ const summary = `Team workflow: ${successfulWorkers.length}/${teamSize} workers spawned for ${role} role`;
71
+ const teamContent = `# Team Run\n\n${summary}\n\n## Agents Spawned\n\n### Planning\n- Planner: ${plannerResult.id}\n- PRD Writer: ${prdResult.id}\n\n### Execution (${successfulWorkers.length}/${teamSize} successful)\n${successfulWorkers.map((w, i) => `- Worker ${i + 1}: ${w.id}`).join('\n')}${failedWorkers.length > 0 ? `\n\n### Failed Workers\n${failedWorkers.map(w => `- Error: ${w.error}`).join('\n')}` : ''}\n\n### Verification\n- Verifier: ${verifyResult.id}\n\n## Next Steps\n\nCheck agent status with: bobo agents\nView agent output: bobo agent <id>\n`;
72
+ const planPath = writePlan(planContent);
73
+ const prdPath = writePRD(prdContent);
74
+ const teamPath = writeTeam(teamContent);
75
+ updateWorkflow(workflowId, { status: 'completed', completedAt: new Date().toISOString() });
76
+ return { workflowId, role, teamSize, planPath, prdPath, teamPath, summary, agentIds };
77
+ }
78
+ catch (error) {
79
+ updateWorkflow(workflowId, { status: 'failed', completedAt: new Date().toISOString(), metadata: { error: error.message } });
80
+ throw error;
81
+ }
82
+ finally {
83
+ removeWorkflow(workflowId);
84
+ }
85
+ }
86
+ //# sourceMappingURL=team.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"team.js","sourceRoot":"","sources":["../../src/workflows/team.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { type VerificationVerdict } from '../verification-agent.js';
2
+ export interface VerifyResult {
3
+ verdict: VerificationVerdict;
4
+ path: string;
5
+ content: string;
6
+ }
7
+ /**
8
+ * Run real verification workflow using verification-agent.ts
9
+ * Executes build/test/lint checks and adversarial probing
10
+ */
11
+ export declare function runVerifyWorkflow(target?: string): Promise<VerifyResult>;
@@ -0,0 +1,21 @@
1
+ import { writeVerify } from '../state/artifacts.js';
2
+ import { runVerification, formatVerificationResult } from '../verification-agent.js';
3
+ /**
4
+ * Run real verification workflow using verification-agent.ts
5
+ * Executes build/test/lint checks and adversarial probing
6
+ */
7
+ export async function runVerifyWorkflow(target = 'current workspace') {
8
+ // Run actual verification
9
+ const verificationResult = await runVerification(target, '', {
10
+ cwd: process.cwd(),
11
+ });
12
+ // Format as markdown for artifact
13
+ const content = formatVerificationResult(verificationResult);
14
+ const path = writeVerify(content);
15
+ return {
16
+ verdict: verificationResult.verdict,
17
+ path,
18
+ content,
19
+ };
20
+ }
21
+ //# sourceMappingURL=verify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/workflows/verify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAA4B,MAAM,0BAA0B,CAAC;AAQ/G;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAAM,GAAG,mBAAmB;IAClE,0BAA0B;IAC1B,MAAM,kBAAkB,GAAG,MAAM,eAAe,CAAC,MAAM,EAAE,EAAE,EAAE;QAC3D,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;KACnB,CAAC,CAAC;IAEH,kCAAkC;IAClC,MAAM,OAAO,GAAG,wBAAwB,CAAC,kBAAkB,CAAC,CAAC;IAC7D,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAElC,OAAO;QACL,OAAO,EAAE,kBAAkB,CAAC,OAAO;QACnC,IAAI;QACJ,OAAO;KACR,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bobo-ai-cli",
3
- "version": "2.1.0",
3
+ "version": "3.0.1",
4
4
  "description": "Portable AI engineering assistant CLI with embedded knowledge, skills, and memory",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -10,7 +10,22 @@
10
10
  "files": [
11
11
  "dist/",
12
12
  "knowledge/",
13
- "bundled-skills/",
13
+ "bundled-skills/CORE_SKILLS.txt",
14
+ "bundled-skills/high-agency/",
15
+ "bundled-skills/memory-manager/",
16
+ "bundled-skills/context-budget-analyzer/",
17
+ "bundled-skills/context-compressor/",
18
+ "bundled-skills/context-optimization-suite/",
19
+ "bundled-skills/code-review/",
20
+ "bundled-skills/code-review-expert/",
21
+ "bundled-skills/planning-with-files/",
22
+ "bundled-skills/verify/",
23
+ "bundled-skills/skill-creator/",
24
+ "bundled-skills/github/",
25
+ "bundled-skills/backend-expert/",
26
+ "bundled-skills/frontend-expert/",
27
+ "bundled-skills/testing-expert/",
28
+ "bundled-skills/orchestrator/",
14
29
  "README.md",
15
30
  "LICENSE"
16
31
  ],
@@ -47,8 +62,6 @@
47
62
  "commander": "^12.1.0",
48
63
  "glob": "^11.0.0",
49
64
  "gray-matter": "^4.0.3",
50
- "marked": "^14.0.0",
51
- "marked-terminal": "^7.2.0",
52
65
  "openai": "^4.73.0",
53
66
  "zod": "^3.25.76"
54
67
  },
@@ -58,4 +71,4 @@
58
71
  "typescript": "^5.6.0",
59
72
  "vitest": "^4.1.2"
60
73
  }
61
- }
74
+ }