ralph-starter 0.0.1 → 0.1.1-beta.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 (382) hide show
  1. package/README.md +707 -17
  2. package/dist/auth/browser.d.ts +10 -0
  3. package/dist/auth/browser.d.ts.map +1 -0
  4. package/dist/auth/browser.js +56 -0
  5. package/dist/auth/browser.js.map +1 -0
  6. package/dist/auth/index.d.ts +5 -0
  7. package/dist/auth/index.d.ts.map +1 -0
  8. package/dist/auth/index.js +5 -0
  9. package/dist/auth/index.js.map +1 -0
  10. package/dist/auth/oauth-server.d.ts +20 -0
  11. package/dist/auth/oauth-server.d.ts.map +1 -0
  12. package/dist/auth/oauth-server.js +168 -0
  13. package/dist/auth/oauth-server.js.map +1 -0
  14. package/dist/auth/pkce.d.ts +46 -0
  15. package/dist/auth/pkce.d.ts.map +1 -0
  16. package/dist/auth/pkce.js +57 -0
  17. package/dist/auth/pkce.js.map +1 -0
  18. package/dist/auth/providers/base.d.ts +52 -0
  19. package/dist/auth/providers/base.d.ts.map +1 -0
  20. package/dist/auth/providers/base.js +70 -0
  21. package/dist/auth/providers/base.js.map +1 -0
  22. package/dist/auth/providers/index.d.ts +23 -0
  23. package/dist/auth/providers/index.d.ts.map +1 -0
  24. package/dist/auth/providers/index.js +39 -0
  25. package/dist/auth/providers/index.js.map +1 -0
  26. package/dist/auth/providers/linear.d.ts +37 -0
  27. package/dist/auth/providers/linear.d.ts.map +1 -0
  28. package/dist/auth/providers/linear.js +46 -0
  29. package/dist/auth/providers/linear.js.map +1 -0
  30. package/dist/auth/providers/notion.d.ts +36 -0
  31. package/dist/auth/providers/notion.d.ts.map +1 -0
  32. package/dist/auth/providers/notion.js +75 -0
  33. package/dist/auth/providers/notion.js.map +1 -0
  34. package/dist/auth/providers/todoist.d.ts +29 -0
  35. package/dist/auth/providers/todoist.d.ts.map +1 -0
  36. package/dist/auth/providers/todoist.js +40 -0
  37. package/dist/auth/providers/todoist.js.map +1 -0
  38. package/dist/automation/git.d.ts +15 -0
  39. package/dist/automation/git.d.ts.map +1 -0
  40. package/dist/automation/git.js +73 -0
  41. package/dist/automation/git.js.map +1 -0
  42. package/dist/cli.d.ts +3 -0
  43. package/dist/cli.d.ts.map +1 -0
  44. package/dist/cli.js +192 -19
  45. package/dist/cli.js.map +1 -0
  46. package/dist/commands/auth.d.ts +14 -0
  47. package/dist/commands/auth.d.ts.map +1 -0
  48. package/dist/commands/auth.js +243 -0
  49. package/dist/commands/auth.js.map +1 -0
  50. package/dist/commands/check.d.ts +12 -0
  51. package/dist/commands/check.d.ts.map +1 -0
  52. package/dist/commands/check.js +124 -0
  53. package/dist/commands/check.js.map +1 -0
  54. package/dist/commands/config.d.ts +13 -0
  55. package/dist/commands/config.d.ts.map +1 -0
  56. package/dist/commands/config.js +376 -0
  57. package/dist/commands/config.js.map +1 -0
  58. package/dist/commands/init.d.ts +31 -0
  59. package/dist/commands/init.d.ts.map +1 -0
  60. package/dist/commands/init.js +353 -0
  61. package/dist/commands/init.js.map +1 -0
  62. package/dist/commands/integrations.d.ts +17 -0
  63. package/dist/commands/integrations.d.ts.map +1 -0
  64. package/dist/commands/integrations.js +193 -0
  65. package/dist/commands/integrations.js.map +1 -0
  66. package/dist/commands/plan.d.ts +5 -0
  67. package/dist/commands/plan.d.ts.map +1 -0
  68. package/dist/commands/plan.js +80 -0
  69. package/dist/commands/plan.js.map +1 -0
  70. package/dist/commands/run.d.ts +26 -0
  71. package/dist/commands/run.d.ts.map +1 -0
  72. package/dist/commands/run.js +351 -0
  73. package/dist/commands/run.js.map +1 -0
  74. package/dist/commands/scaffold.d.ts +9 -0
  75. package/dist/commands/scaffold.d.ts.map +1 -0
  76. package/dist/commands/scaffold.js +128 -0
  77. package/dist/commands/scaffold.js.map +1 -0
  78. package/dist/commands/setup.d.ts +12 -0
  79. package/dist/commands/setup.d.ts.map +1 -0
  80. package/dist/commands/setup.js +27 -0
  81. package/dist/commands/setup.js.map +1 -0
  82. package/dist/commands/skill.d.ts +6 -0
  83. package/dist/commands/skill.d.ts.map +1 -0
  84. package/dist/commands/skill.js +151 -0
  85. package/dist/commands/skill.js.map +1 -0
  86. package/dist/commands/source.d.ts +17 -0
  87. package/dist/commands/source.d.ts.map +1 -0
  88. package/dist/commands/source.js +173 -0
  89. package/dist/commands/source.js.map +1 -0
  90. package/dist/config/manager.d.ts +70 -0
  91. package/dist/config/manager.d.ts.map +1 -0
  92. package/dist/config/manager.js +227 -0
  93. package/dist/config/manager.js.map +1 -0
  94. package/dist/index.d.ts +26 -0
  95. package/dist/index.d.ts.map +1 -0
  96. package/dist/index.js +27 -2
  97. package/dist/index.js.map +1 -0
  98. package/dist/integrations/_template/auth.d.ts +29 -0
  99. package/dist/integrations/_template/auth.d.ts.map +1 -0
  100. package/dist/integrations/_template/auth.js +42 -0
  101. package/dist/integrations/_template/auth.js.map +1 -0
  102. package/dist/integrations/_template/index.d.ts +8 -0
  103. package/dist/integrations/_template/index.d.ts.map +1 -0
  104. package/dist/integrations/_template/index.js +8 -0
  105. package/dist/integrations/_template/index.js.map +1 -0
  106. package/dist/integrations/_template/source.d.ts +34 -0
  107. package/dist/integrations/_template/source.d.ts.map +1 -0
  108. package/dist/integrations/_template/source.js +124 -0
  109. package/dist/integrations/_template/source.js.map +1 -0
  110. package/dist/integrations/base.d.ts +158 -0
  111. package/dist/integrations/base.d.ts.map +1 -0
  112. package/dist/integrations/base.js +109 -0
  113. package/dist/integrations/base.js.map +1 -0
  114. package/dist/integrations/github/index.d.ts +8 -0
  115. package/dist/integrations/github/index.d.ts.map +1 -0
  116. package/dist/integrations/github/index.js +8 -0
  117. package/dist/integrations/github/index.js.map +1 -0
  118. package/dist/integrations/github/source.d.ts +26 -0
  119. package/dist/integrations/github/source.d.ts.map +1 -0
  120. package/dist/integrations/github/source.js +190 -0
  121. package/dist/integrations/github/source.js.map +1 -0
  122. package/dist/integrations/index.d.ts +37 -0
  123. package/dist/integrations/index.d.ts.map +1 -0
  124. package/dist/integrations/index.js +71 -0
  125. package/dist/integrations/index.js.map +1 -0
  126. package/dist/integrations/linear/auth.d.ts +37 -0
  127. package/dist/integrations/linear/auth.d.ts.map +1 -0
  128. package/dist/integrations/linear/auth.js +45 -0
  129. package/dist/integrations/linear/auth.js.map +1 -0
  130. package/dist/integrations/linear/index.d.ts +9 -0
  131. package/dist/integrations/linear/index.d.ts.map +1 -0
  132. package/dist/integrations/linear/index.js +9 -0
  133. package/dist/integrations/linear/index.js.map +1 -0
  134. package/dist/integrations/linear/source.d.ts +26 -0
  135. package/dist/integrations/linear/source.d.ts.map +1 -0
  136. package/dist/integrations/linear/source.js +248 -0
  137. package/dist/integrations/linear/source.js.map +1 -0
  138. package/dist/integrations/notion/index.d.ts +8 -0
  139. package/dist/integrations/notion/index.d.ts.map +1 -0
  140. package/dist/integrations/notion/index.js +8 -0
  141. package/dist/integrations/notion/index.js.map +1 -0
  142. package/dist/integrations/notion/source.d.ts +53 -0
  143. package/dist/integrations/notion/source.d.ts.map +1 -0
  144. package/dist/integrations/notion/source.js +463 -0
  145. package/dist/integrations/notion/source.js.map +1 -0
  146. package/dist/llm/api.d.ts +29 -0
  147. package/dist/llm/api.d.ts.map +1 -0
  148. package/dist/llm/api.js +152 -0
  149. package/dist/llm/api.js.map +1 -0
  150. package/dist/llm/index.d.ts +7 -0
  151. package/dist/llm/index.d.ts.map +1 -0
  152. package/dist/llm/index.js +7 -0
  153. package/dist/llm/index.js.map +1 -0
  154. package/dist/llm/providers.d.ts +24 -0
  155. package/dist/llm/providers.d.ts.map +1 -0
  156. package/dist/llm/providers.js +51 -0
  157. package/dist/llm/providers.js.map +1 -0
  158. package/dist/loop/__tests__/agents.test.d.ts +2 -0
  159. package/dist/loop/__tests__/agents.test.d.ts.map +1 -0
  160. package/dist/loop/__tests__/agents.test.js +183 -0
  161. package/dist/loop/__tests__/agents.test.js.map +1 -0
  162. package/dist/loop/__tests__/circuit-breaker.test.d.ts +2 -0
  163. package/dist/loop/__tests__/circuit-breaker.test.d.ts.map +1 -0
  164. package/dist/loop/__tests__/circuit-breaker.test.js +161 -0
  165. package/dist/loop/__tests__/circuit-breaker.test.js.map +1 -0
  166. package/dist/loop/__tests__/cost-tracker.test.d.ts +2 -0
  167. package/dist/loop/__tests__/cost-tracker.test.d.ts.map +1 -0
  168. package/dist/loop/__tests__/cost-tracker.test.js +200 -0
  169. package/dist/loop/__tests__/cost-tracker.test.js.map +1 -0
  170. package/dist/loop/__tests__/rate-limiter.test.d.ts +2 -0
  171. package/dist/loop/__tests__/rate-limiter.test.d.ts.map +1 -0
  172. package/dist/loop/__tests__/rate-limiter.test.js +198 -0
  173. package/dist/loop/__tests__/rate-limiter.test.js.map +1 -0
  174. package/dist/loop/__tests__/validation.test.d.ts +2 -0
  175. package/dist/loop/__tests__/validation.test.d.ts.map +1 -0
  176. package/dist/loop/__tests__/validation.test.js +234 -0
  177. package/dist/loop/__tests__/validation.test.js.map +1 -0
  178. package/dist/loop/agents.d.ts +26 -0
  179. package/dist/loop/agents.d.ts.map +1 -0
  180. package/dist/loop/agents.js +188 -0
  181. package/dist/loop/agents.js.map +1 -0
  182. package/dist/loop/circuit-breaker.d.ts +61 -0
  183. package/dist/loop/circuit-breaker.d.ts.map +1 -0
  184. package/dist/loop/circuit-breaker.js +143 -0
  185. package/dist/loop/circuit-breaker.js.map +1 -0
  186. package/dist/loop/cost-tracker.d.ts +90 -0
  187. package/dist/loop/cost-tracker.d.ts.map +1 -0
  188. package/dist/loop/cost-tracker.js +229 -0
  189. package/dist/loop/cost-tracker.js.map +1 -0
  190. package/dist/loop/estimator.d.ts +20 -0
  191. package/dist/loop/estimator.d.ts.map +1 -0
  192. package/dist/loop/estimator.js +123 -0
  193. package/dist/loop/estimator.js.map +1 -0
  194. package/dist/loop/executor.d.ts +44 -0
  195. package/dist/loop/executor.d.ts.map +1 -0
  196. package/dist/loop/executor.js +646 -0
  197. package/dist/loop/executor.js.map +1 -0
  198. package/dist/loop/progress.d.ts +34 -0
  199. package/dist/loop/progress.d.ts.map +1 -0
  200. package/dist/loop/progress.js +186 -0
  201. package/dist/loop/progress.js.map +1 -0
  202. package/dist/loop/rate-limiter.d.ts +71 -0
  203. package/dist/loop/rate-limiter.d.ts.map +1 -0
  204. package/dist/loop/rate-limiter.js +151 -0
  205. package/dist/loop/rate-limiter.js.map +1 -0
  206. package/dist/loop/semantic-analyzer.d.ts +33 -0
  207. package/dist/loop/semantic-analyzer.d.ts.map +1 -0
  208. package/dist/loop/semantic-analyzer.js +153 -0
  209. package/dist/loop/semantic-analyzer.js.map +1 -0
  210. package/dist/loop/skills.d.ts +29 -0
  211. package/dist/loop/skills.d.ts.map +1 -0
  212. package/dist/loop/skills.js +174 -0
  213. package/dist/loop/skills.js.map +1 -0
  214. package/dist/loop/step-detector.d.ts +17 -0
  215. package/dist/loop/step-detector.d.ts.map +1 -0
  216. package/dist/loop/step-detector.js +280 -0
  217. package/dist/loop/step-detector.js.map +1 -0
  218. package/dist/loop/task-counter.d.ts +41 -0
  219. package/dist/loop/task-counter.d.ts.map +1 -0
  220. package/dist/loop/task-counter.js +99 -0
  221. package/dist/loop/task-counter.js.map +1 -0
  222. package/dist/loop/validation.d.ts +28 -0
  223. package/dist/loop/validation.d.ts.map +1 -0
  224. package/dist/loop/validation.js +138 -0
  225. package/dist/loop/validation.js.map +1 -0
  226. package/dist/mcp/core/init.d.ts +15 -0
  227. package/dist/mcp/core/init.d.ts.map +1 -0
  228. package/dist/mcp/core/init.js +272 -0
  229. package/dist/mcp/core/init.js.map +1 -0
  230. package/dist/mcp/core/plan.d.ts +15 -0
  231. package/dist/mcp/core/plan.d.ts.map +1 -0
  232. package/dist/mcp/core/plan.js +90 -0
  233. package/dist/mcp/core/plan.js.map +1 -0
  234. package/dist/mcp/core/run.d.ts +26 -0
  235. package/dist/mcp/core/run.d.ts.map +1 -0
  236. package/dist/mcp/core/run.js +114 -0
  237. package/dist/mcp/core/run.js.map +1 -0
  238. package/dist/mcp/prompts.d.ts +10 -0
  239. package/dist/mcp/prompts.d.ts.map +1 -0
  240. package/dist/mcp/prompts.js +163 -0
  241. package/dist/mcp/prompts.js.map +1 -0
  242. package/dist/mcp/resources.d.ts +16 -0
  243. package/dist/mcp/resources.d.ts.map +1 -0
  244. package/dist/mcp/resources.js +114 -0
  245. package/dist/mcp/resources.js.map +1 -0
  246. package/dist/mcp/server.d.ts +10 -0
  247. package/dist/mcp/server.d.ts.map +1 -0
  248. package/dist/mcp/server.js +73 -0
  249. package/dist/mcp/server.js.map +1 -0
  250. package/dist/mcp/tools.d.ts +15 -0
  251. package/dist/mcp/tools.d.ts.map +1 -0
  252. package/dist/mcp/tools.js +316 -0
  253. package/dist/mcp/tools.js.map +1 -0
  254. package/dist/presets/index.d.ts +36 -0
  255. package/dist/presets/index.d.ts.map +1 -0
  256. package/dist/presets/index.js +236 -0
  257. package/dist/presets/index.js.map +1 -0
  258. package/dist/setup/agent-detector.d.ts +57 -0
  259. package/dist/setup/agent-detector.d.ts.map +1 -0
  260. package/dist/setup/agent-detector.js +170 -0
  261. package/dist/setup/agent-detector.js.map +1 -0
  262. package/dist/setup/index.d.ts +7 -0
  263. package/dist/setup/index.d.ts.map +1 -0
  264. package/dist/setup/index.js +7 -0
  265. package/dist/setup/index.js.map +1 -0
  266. package/dist/setup/llm-tester.d.ts +33 -0
  267. package/dist/setup/llm-tester.d.ts.map +1 -0
  268. package/dist/setup/llm-tester.js +105 -0
  269. package/dist/setup/llm-tester.js.map +1 -0
  270. package/dist/setup/wizard.d.ts +19 -0
  271. package/dist/setup/wizard.d.ts.map +1 -0
  272. package/dist/setup/wizard.js +313 -0
  273. package/dist/setup/wizard.js.map +1 -0
  274. package/dist/sources/__tests__/file.test.d.ts +2 -0
  275. package/dist/sources/__tests__/file.test.d.ts.map +1 -0
  276. package/dist/sources/__tests__/file.test.js +126 -0
  277. package/dist/sources/__tests__/file.test.js.map +1 -0
  278. package/dist/sources/__tests__/github.test.d.ts +2 -0
  279. package/dist/sources/__tests__/github.test.d.ts.map +1 -0
  280. package/dist/sources/__tests__/github.test.js +157 -0
  281. package/dist/sources/__tests__/github.test.js.map +1 -0
  282. package/dist/sources/base.d.ts +72 -0
  283. package/dist/sources/base.d.ts.map +1 -0
  284. package/dist/sources/base.js +127 -0
  285. package/dist/sources/base.js.map +1 -0
  286. package/dist/sources/builtin/file.d.ts +21 -0
  287. package/dist/sources/builtin/file.d.ts.map +1 -0
  288. package/dist/sources/builtin/file.js +129 -0
  289. package/dist/sources/builtin/file.js.map +1 -0
  290. package/dist/sources/builtin/github-scraper.d.ts +65 -0
  291. package/dist/sources/builtin/github-scraper.d.ts.map +1 -0
  292. package/dist/sources/builtin/github-scraper.js +324 -0
  293. package/dist/sources/builtin/github-scraper.js.map +1 -0
  294. package/dist/sources/builtin/pdf.d.ts +24 -0
  295. package/dist/sources/builtin/pdf.d.ts.map +1 -0
  296. package/dist/sources/builtin/pdf.js +174 -0
  297. package/dist/sources/builtin/pdf.js.map +1 -0
  298. package/dist/sources/builtin/url.d.ts +47 -0
  299. package/dist/sources/builtin/url.d.ts.map +1 -0
  300. package/dist/sources/builtin/url.js +429 -0
  301. package/dist/sources/builtin/url.js.map +1 -0
  302. package/dist/sources/config.d.ts +72 -0
  303. package/dist/sources/config.d.ts.map +1 -0
  304. package/dist/sources/config.js +215 -0
  305. package/dist/sources/config.js.map +1 -0
  306. package/dist/sources/index.d.ts +47 -0
  307. package/dist/sources/index.d.ts.map +1 -0
  308. package/dist/sources/index.js +210 -0
  309. package/dist/sources/index.js.map +1 -0
  310. package/dist/sources/integrations/github.d.ts +24 -0
  311. package/dist/sources/integrations/github.d.ts.map +1 -0
  312. package/dist/sources/integrations/github.js +193 -0
  313. package/dist/sources/integrations/github.js.map +1 -0
  314. package/dist/sources/integrations/linear.d.ts +18 -0
  315. package/dist/sources/integrations/linear.d.ts.map +1 -0
  316. package/dist/sources/integrations/linear.js +197 -0
  317. package/dist/sources/integrations/linear.js.map +1 -0
  318. package/dist/sources/integrations/notion.d.ts +39 -0
  319. package/dist/sources/integrations/notion.d.ts.map +1 -0
  320. package/dist/sources/integrations/notion.js +343 -0
  321. package/dist/sources/integrations/notion.js.map +1 -0
  322. package/dist/sources/integrations/todoist.d.ts +18 -0
  323. package/dist/sources/integrations/todoist.d.ts.map +1 -0
  324. package/dist/sources/integrations/todoist.js +154 -0
  325. package/dist/sources/integrations/todoist.js.map +1 -0
  326. package/dist/sources/types.d.ts +106 -0
  327. package/dist/sources/types.d.ts.map +1 -0
  328. package/dist/sources/types.js +9 -0
  329. package/dist/sources/types.js.map +1 -0
  330. package/dist/ui/index.d.ts +3 -0
  331. package/dist/ui/index.d.ts.map +1 -0
  332. package/dist/ui/index.js +3 -0
  333. package/dist/ui/index.js.map +1 -0
  334. package/dist/ui/progress-renderer.d.ts +54 -0
  335. package/dist/ui/progress-renderer.d.ts.map +1 -0
  336. package/dist/ui/progress-renderer.js +118 -0
  337. package/dist/ui/progress-renderer.js.map +1 -0
  338. package/dist/ui/shimmer.d.ts +16 -0
  339. package/dist/ui/shimmer.d.ts.map +1 -0
  340. package/dist/ui/shimmer.js +31 -0
  341. package/dist/ui/shimmer.js.map +1 -0
  342. package/dist/wizard/ascii-art.d.ts +93 -0
  343. package/dist/wizard/ascii-art.d.ts.map +1 -0
  344. package/dist/wizard/ascii-art.js +378 -0
  345. package/dist/wizard/ascii-art.js.map +1 -0
  346. package/dist/wizard/idea-prompts.d.ts +18 -0
  347. package/dist/wizard/idea-prompts.d.ts.map +1 -0
  348. package/dist/wizard/idea-prompts.js +154 -0
  349. package/dist/wizard/idea-prompts.js.map +1 -0
  350. package/dist/wizard/idea-ui.d.ts +34 -0
  351. package/dist/wizard/idea-ui.d.ts.map +1 -0
  352. package/dist/wizard/idea-ui.js +225 -0
  353. package/dist/wizard/idea-ui.js.map +1 -0
  354. package/dist/wizard/ideas.d.ts +27 -0
  355. package/dist/wizard/ideas.d.ts.map +1 -0
  356. package/dist/wizard/ideas.js +511 -0
  357. package/dist/wizard/ideas.js.map +1 -0
  358. package/dist/wizard/index.d.ts +11 -0
  359. package/dist/wizard/index.d.ts.map +1 -0
  360. package/dist/wizard/index.js +472 -0
  361. package/dist/wizard/index.js.map +1 -0
  362. package/dist/wizard/llm.d.ts +14 -0
  363. package/dist/wizard/llm.d.ts.map +1 -0
  364. package/dist/wizard/llm.js +420 -0
  365. package/dist/wizard/llm.js.map +1 -0
  366. package/dist/wizard/prompts.d.ts +75 -0
  367. package/dist/wizard/prompts.d.ts.map +1 -0
  368. package/dist/wizard/prompts.js +455 -0
  369. package/dist/wizard/prompts.js.map +1 -0
  370. package/dist/wizard/spec-generator.d.ts +14 -0
  371. package/dist/wizard/spec-generator.d.ts.map +1 -0
  372. package/dist/wizard/spec-generator.js +200 -0
  373. package/dist/wizard/spec-generator.js.map +1 -0
  374. package/dist/wizard/types.d.ts +53 -0
  375. package/dist/wizard/types.d.ts.map +1 -0
  376. package/dist/wizard/types.js +10 -0
  377. package/dist/wizard/types.js.map +1 -0
  378. package/dist/wizard/ui.d.ts +57 -0
  379. package/dist/wizard/ui.d.ts.map +1 -0
  380. package/dist/wizard/ui.js +211 -0
  381. package/dist/wizard/ui.js.map +1 -0
  382. package/package.json +59 -8
@@ -0,0 +1,511 @@
1
+ // Idea Mode - Brainstorming for users who don't know what to build
2
+ import chalk from 'chalk';
3
+ import ora from 'ora';
4
+ import { getConfiguredLLM, getLLMModel } from '../config/manager.js';
5
+ import { callLLM, PROVIDERS } from '../llm/index.js';
6
+ import { detectBestAgent, runAgent } from '../loop/agents.js';
7
+ import { getBrainstormPrompt, PROBLEM_PROMPT, SKILL_PROMPT, TREND_PROMPT } from './idea-prompts.js';
8
+ import { buildIdeaContext, selectIdea, showBrainstormResults, showIdeaLoading, showIdeaWelcome, } from './idea-ui.js';
9
+ // Timeout for agent calls (60 seconds - simplified prompt should be faster)
10
+ const AGENT_TIMEOUT_MS = 60000;
11
+ // Global spinner reference for cleanup on exit
12
+ let activeSpinner = null;
13
+ /**
14
+ * Check if error is an exit/interrupt error from inquirer
15
+ */
16
+ function isExitError(error) {
17
+ if (error instanceof Error) {
18
+ return (error.name === 'ExitPromptError' ||
19
+ error.message.includes('User force closed') ||
20
+ error.message.includes('SIGINT'));
21
+ }
22
+ return false;
23
+ }
24
+ /**
25
+ * Run idea mode - brainstorming session for users without a project idea
26
+ * Returns the selected idea's title/description for use in the wizard
27
+ */
28
+ export async function runIdeaMode() {
29
+ const spinner = ora();
30
+ activeSpinner = spinner;
31
+ // Setup graceful exit for this mode
32
+ const cleanup = () => {
33
+ if (activeSpinner) {
34
+ activeSpinner.stop();
35
+ }
36
+ console.log(chalk.dim('\n\nExiting...'));
37
+ process.exit(0);
38
+ };
39
+ process.on('SIGINT', cleanup);
40
+ try {
41
+ return await runIdeaModeFlow(spinner);
42
+ }
43
+ catch (error) {
44
+ if (isExitError(error)) {
45
+ spinner.stop();
46
+ console.log(chalk.dim('\n\nExiting...'));
47
+ process.exit(0);
48
+ }
49
+ throw error;
50
+ }
51
+ finally {
52
+ activeSpinner = null;
53
+ process.removeListener('SIGINT', cleanup);
54
+ }
55
+ }
56
+ /**
57
+ * Main idea mode flow (extracted for cleaner error handling)
58
+ */
59
+ async function runIdeaModeFlow(spinner) {
60
+ // Show welcome
61
+ showIdeaWelcome();
62
+ // Get user preferences
63
+ const context = await buildIdeaContext();
64
+ let selectedIdea = null;
65
+ while (!selectedIdea) {
66
+ // Generate ideas
67
+ spinner.start(showIdeaLoading(context.method));
68
+ let ideas;
69
+ try {
70
+ ideas = await generateIdeas(context, spinner);
71
+ // Only show success if spinner is still active (API method)
72
+ if (spinner.isSpinning) {
73
+ spinner.succeed('Got some ideas!');
74
+ }
75
+ else {
76
+ console.log(chalk.green(' ✓ Got some ideas!'));
77
+ }
78
+ }
79
+ catch (_error) {
80
+ if (spinner.isSpinning) {
81
+ spinner.fail('Could not generate ideas');
82
+ }
83
+ else {
84
+ console.log(chalk.red(' ✗ Could not generate ideas'));
85
+ }
86
+ ideas = getTemplateIdeas(context.method);
87
+ }
88
+ // Show results
89
+ showBrainstormResults(ideas);
90
+ // Let user select
91
+ selectedIdea = await selectIdea(ideas);
92
+ // Check for regenerate signal
93
+ if (selectedIdea && selectedIdea.title === '__REGENERATE__') {
94
+ selectedIdea = null;
95
+ continue;
96
+ }
97
+ // User wants to describe their own
98
+ if (selectedIdea === null) {
99
+ return null;
100
+ }
101
+ }
102
+ // Return the idea as a string for the wizard
103
+ return `${selectedIdea.title}: ${selectedIdea.description}`;
104
+ }
105
+ /**
106
+ * Generate ideas based on context using hybrid LLM approach
107
+ * Returns both the ideas and which method was used (for user feedback)
108
+ * @param spinner - Optional spinner to stop before streaming output
109
+ */
110
+ export async function generateIdeas(context, spinner) {
111
+ const result = await generateIdeasWithMethod(context, spinner);
112
+ return result.ideas;
113
+ }
114
+ /**
115
+ * Wrap a promise with a timeout
116
+ */
117
+ function withTimeout(promise, timeoutMs, message) {
118
+ return Promise.race([
119
+ promise,
120
+ new Promise((_, reject) => setTimeout(() => reject(new Error(message)), timeoutMs)),
121
+ ]);
122
+ }
123
+ /**
124
+ * Generate ideas and return which method was used
125
+ * Priority: Claude Code CLI (no API key needed) > Direct API > Template fallback
126
+ * @param spinner - Optional spinner to stop before streaming output
127
+ */
128
+ export async function generateIdeasWithMethod(context, spinner) {
129
+ // 1. Try Claude Code agent FIRST (most frictionless - no API key needed!)
130
+ try {
131
+ const agent = await withTimeout(detectBestAgent(), 5000, 'Agent detection timeout');
132
+ if (agent) {
133
+ console.log(chalk.dim(' Using Claude Code...'));
134
+ // Stop spinner before animation (they would conflict)
135
+ if (spinner) {
136
+ spinner.stop();
137
+ console.log();
138
+ }
139
+ // generateViaAgent shows loading animation internally
140
+ const ideas = await generateViaAgent(context, agent);
141
+ return { ideas, method: 'agent' };
142
+ }
143
+ }
144
+ catch (_error) {
145
+ // Silent fallback to API
146
+ }
147
+ // 2. Try direct API if key available - supports Anthropic, OpenAI, OpenRouter
148
+ const llmConfig = getConfiguredLLM();
149
+ if (llmConfig) {
150
+ try {
151
+ const providerName = PROVIDERS[llmConfig.provider].displayName;
152
+ console.log(chalk.dim(` Using ${providerName} API...`));
153
+ const ideas = await generateViaApi(context, llmConfig.provider, llmConfig.apiKey);
154
+ return { ideas, method: 'api' };
155
+ }
156
+ catch (error) {
157
+ const msg = error instanceof Error ? error.message : 'unknown error';
158
+ console.log(chalk.dim(` API error (${msg}), using templates...`));
159
+ }
160
+ }
161
+ // 3. Fallback: curated template suggestions (instant, always works)
162
+ console.log(chalk.dim(' Loading curated ideas...'));
163
+ return { ideas: getTemplateIdeas(context.method), method: 'templates' };
164
+ }
165
+ /**
166
+ * Get the appropriate prompt for the context
167
+ */
168
+ function getPromptForContext(context) {
169
+ switch (context.method) {
170
+ case 'brainstorm':
171
+ return getBrainstormPrompt(); // Dynamic prompt with randomness
172
+ case 'trending':
173
+ return TREND_PROMPT;
174
+ case 'skills':
175
+ return SKILL_PROMPT.replace('{SKILLS}', context.skills?.join(', ') || 'general programming');
176
+ case 'problem':
177
+ return PROBLEM_PROMPT.replace('{PROBLEM}', context.problem || 'general productivity');
178
+ default:
179
+ return getBrainstormPrompt();
180
+ }
181
+ }
182
+ /**
183
+ * Generate ideas via LLM API (supports multiple providers)
184
+ */
185
+ async function generateViaApi(context, provider, apiKey) {
186
+ const prompt = getPromptForContext(context);
187
+ const model = getLLMModel() || PROVIDERS[provider].defaultModel;
188
+ const response = await callLLM(provider, apiKey, {
189
+ prompt,
190
+ maxTokens: 2048,
191
+ model,
192
+ });
193
+ // Parse JSON from response
194
+ const jsonMatch = response.content.match(/\{[\s\S]*\}/);
195
+ if (!jsonMatch) {
196
+ throw new Error('No JSON in response');
197
+ }
198
+ const parsed = JSON.parse(jsonMatch[0]);
199
+ return parsed.ideas;
200
+ }
201
+ /**
202
+ * Generate ideas via Claude Code agent (uses existing CLI auth)
203
+ * Uses a simplified prompt to avoid timeouts
204
+ */
205
+ async function generateViaAgent(context, agent) {
206
+ // Use a MUCH simpler prompt for the agent to avoid timeouts
207
+ // The full prompts are too complex and cause Claude Code to do extra work
208
+ const simplePrompt = getSimpleAgentPrompt(context);
209
+ console.log(chalk.dim(' Running Claude Code...'));
210
+ console.log();
211
+ try {
212
+ const result = await withTimeout(runAgent(agent, {
213
+ task: simplePrompt,
214
+ cwd: process.cwd(),
215
+ auto: true,
216
+ maxTurns: 2, // Limit to 2 turns - just get the response
217
+ streamOutput: true,
218
+ }), AGENT_TIMEOUT_MS, `Agent timed out after ${AGENT_TIMEOUT_MS / 1000}s`);
219
+ console.log(); // Newline after streaming
220
+ if (result.exitCode !== 0) {
221
+ throw new Error(`Agent exited with code ${result.exitCode}`);
222
+ }
223
+ // Parse JSON from output
224
+ const jsonMatch = result.output.match(/\{[\s\S]*\}/);
225
+ if (!jsonMatch) {
226
+ console.log(chalk.yellow(' Could not find JSON in output, using templates...'));
227
+ throw new Error('No JSON in agent output');
228
+ }
229
+ const parsed = JSON.parse(jsonMatch[0]);
230
+ console.log(chalk.green(' ✓ Ideas generated!'));
231
+ return parsed.ideas;
232
+ }
233
+ catch (error) {
234
+ const msg = error instanceof Error ? error.message : 'Unknown error';
235
+ console.log(chalk.red(` ✗ Agent error: ${msg}`));
236
+ throw error;
237
+ }
238
+ }
239
+ /**
240
+ * Get a simplified prompt for Claude Code agent
241
+ * Shorter prompt = faster response, less chance of timeout
242
+ */
243
+ function getSimpleAgentPrompt(context) {
244
+ const base = `Generate 5 project ideas as JSON. Return ONLY this JSON format:
245
+ {"ideas":[{"title":"Name","description":"One sentence","projectType":"web|api|cli","difficulty":"easy|moderate|challenging","reasons":["reason1","reason2"]}]}`;
246
+ switch (context.method) {
247
+ case 'trending':
248
+ return `${base}\n\nFocus on 2025 trends: AI tools, local-first apps, developer productivity.`;
249
+ case 'skills':
250
+ return `${base}\n\nFor someone who knows: ${context.skills?.join(', ') || 'programming'}`;
251
+ case 'problem':
252
+ return `${base}\n\nTo solve: ${context.problem || 'general productivity'}`;
253
+ default:
254
+ return `${base}\n\nMix of web apps, CLI tools, and APIs. Be creative!`;
255
+ }
256
+ }
257
+ /**
258
+ * Shuffle array randomly (Fisher-Yates)
259
+ */
260
+ function shuffleArray(array) {
261
+ const shuffled = [...array];
262
+ for (let i = shuffled.length - 1; i > 0; i--) {
263
+ const j = Math.floor(Math.random() * (i + 1));
264
+ [shuffled[i], shuffled[j]] = [shuffled[j], shuffled[i]];
265
+ }
266
+ return shuffled;
267
+ }
268
+ /**
269
+ * Template-based fallback when no LLM available - now with more variety and randomness!
270
+ */
271
+ function getTemplateIdeas(method) {
272
+ // Large pool of ideas to pick from
273
+ const allIdeas = [
274
+ // Productivity & Tools
275
+ {
276
+ title: 'Personal Finance Tracker',
277
+ description: 'Track expenses, set budgets, and visualize spending patterns',
278
+ projectType: 'web',
279
+ difficulty: 'moderate',
280
+ reasons: ['Practical everyday use', 'Great for learning data visualization'],
281
+ },
282
+ {
283
+ title: 'Habit Tracker',
284
+ description: 'Build streaks, track daily habits, and see your progress over time',
285
+ projectType: 'web',
286
+ difficulty: 'easy',
287
+ reasons: ['Personal growth tool', 'Great for beginners'],
288
+ },
289
+ {
290
+ title: 'Pomodoro Timer',
291
+ description: 'Focus timer with stats, break reminders, and daily productivity reports',
292
+ projectType: 'web',
293
+ difficulty: 'easy',
294
+ reasons: ['Simple but useful', 'Good first project'],
295
+ },
296
+ {
297
+ title: 'Reading List Manager',
298
+ description: 'Track books to read, currently reading, and finished with notes',
299
+ projectType: 'web',
300
+ difficulty: 'easy',
301
+ reasons: ['Personal utility', 'Classic CRUD app'],
302
+ },
303
+ {
304
+ title: 'Meal Planner',
305
+ description: 'Plan weekly meals, generate shopping lists, and track nutrition',
306
+ projectType: 'web',
307
+ difficulty: 'moderate',
308
+ reasons: ['Practical tool', 'Good data modeling exercise'],
309
+ },
310
+ // Developer Tools
311
+ {
312
+ title: 'Markdown Note Organizer',
313
+ description: 'CLI tool to organize, search, and link markdown notes',
314
+ projectType: 'cli',
315
+ difficulty: 'easy',
316
+ reasons: ['Simple to start', 'Can grow in complexity'],
317
+ },
318
+ {
319
+ title: 'API Status Dashboard',
320
+ description: 'Monitor multiple API endpoints and get alerts when they go down',
321
+ projectType: 'web',
322
+ difficulty: 'moderate',
323
+ reasons: ['Useful for developers', 'Good full-stack project'],
324
+ },
325
+ {
326
+ title: 'Git Commit Analyzer',
327
+ description: 'Analyze git history to show contribution patterns and stats',
328
+ projectType: 'cli',
329
+ difficulty: 'easy',
330
+ reasons: ['Work with familiar tools', 'Interesting data to explore'],
331
+ },
332
+ {
333
+ title: 'Code Snippet Manager',
334
+ description: 'Save, organize, and search your code snippets with syntax highlighting',
335
+ projectType: 'web',
336
+ difficulty: 'moderate',
337
+ reasons: ['Developer utility', 'Good for learning'],
338
+ },
339
+ {
340
+ title: 'Regex Tester',
341
+ description: 'Interactive regex builder with real-time matching and explanations',
342
+ projectType: 'web',
343
+ difficulty: 'easy',
344
+ reasons: ['Everyone needs this', 'Great learning tool'],
345
+ },
346
+ {
347
+ title: 'JSON/YAML Converter',
348
+ description: 'Convert between JSON, YAML, and TOML with formatting options',
349
+ projectType: 'web',
350
+ difficulty: 'easy',
351
+ reasons: ['Practical utility', 'Quick to build'],
352
+ },
353
+ {
354
+ title: 'Environment Variable Manager',
355
+ description: 'Manage and sync .env files across projects securely',
356
+ projectType: 'cli',
357
+ difficulty: 'moderate',
358
+ reasons: ['Solves real problem', 'Security focused'],
359
+ },
360
+ // APIs
361
+ {
362
+ title: 'Recipe API',
363
+ description: 'RESTful API for storing and retrieving recipes with ingredients',
364
+ projectType: 'api',
365
+ difficulty: 'easy',
366
+ reasons: ['Classic CRUD project', 'Easy to extend'],
367
+ },
368
+ {
369
+ title: 'Quote of the Day API',
370
+ description: 'API serving random quotes with categories and authors',
371
+ projectType: 'api',
372
+ difficulty: 'easy',
373
+ reasons: ['Simple and fun', 'Good API basics'],
374
+ },
375
+ {
376
+ title: 'URL Shortener',
377
+ description: 'Create short links with click tracking and analytics',
378
+ projectType: 'api',
379
+ difficulty: 'easy',
380
+ reasons: ['Classic project', 'Real-world useful'],
381
+ },
382
+ {
383
+ title: 'Currency Converter API',
384
+ description: 'Convert between currencies with historical rates',
385
+ projectType: 'api',
386
+ difficulty: 'easy',
387
+ reasons: ['Practical utility', 'Good for caching'],
388
+ },
389
+ {
390
+ title: 'Weather Aggregator API',
391
+ description: 'Aggregate weather data from multiple sources',
392
+ projectType: 'api',
393
+ difficulty: 'moderate',
394
+ reasons: ['Learn API integration', 'Data normalization'],
395
+ },
396
+ // Creative & Fun
397
+ {
398
+ title: 'Random Color Palette Generator',
399
+ description: 'Generate harmonious color palettes for design projects',
400
+ projectType: 'web',
401
+ difficulty: 'easy',
402
+ reasons: ['Fun to build', 'Visual feedback'],
403
+ },
404
+ {
405
+ title: 'ASCII Art Generator',
406
+ description: 'Convert images to ASCII art with customizable characters',
407
+ projectType: 'cli',
408
+ difficulty: 'moderate',
409
+ reasons: ['Fun project', 'Image processing basics'],
410
+ },
411
+ {
412
+ title: 'Playlist Shuffler',
413
+ description: 'Create smart shuffled playlists based on mood or genre',
414
+ projectType: 'web',
415
+ difficulty: 'moderate',
416
+ reasons: ['Music is fun', 'Algorithm practice'],
417
+ },
418
+ {
419
+ title: 'Daily Journal',
420
+ description: 'Private daily journaling app with mood tracking and search',
421
+ projectType: 'web',
422
+ difficulty: 'easy',
423
+ reasons: ['Personal tool', 'Privacy focused'],
424
+ },
425
+ {
426
+ title: 'Meme Generator',
427
+ description: 'Create memes with templates and custom text',
428
+ projectType: 'web',
429
+ difficulty: 'easy',
430
+ reasons: ['Fun project', 'Image manipulation'],
431
+ },
432
+ // Automation
433
+ {
434
+ title: 'File Organizer',
435
+ description: 'Automatically organize files by type, date, or custom rules',
436
+ projectType: 'automation',
437
+ difficulty: 'moderate',
438
+ reasons: ['Practical utility', 'File system practice'],
439
+ },
440
+ {
441
+ title: 'Screenshot Organizer',
442
+ description: 'Watch folder and organize screenshots by date and content',
443
+ projectType: 'automation',
444
+ difficulty: 'easy',
445
+ reasons: ['Solves real problem', 'File watching'],
446
+ },
447
+ {
448
+ title: 'Email Digest Generator',
449
+ description: 'Summarize and categorize emails into daily digests',
450
+ projectType: 'automation',
451
+ difficulty: 'challenging',
452
+ reasons: ['Time saver', 'API integration'],
453
+ },
454
+ {
455
+ title: 'Social Media Scheduler',
456
+ description: 'Schedule and auto-post content across platforms',
457
+ projectType: 'automation',
458
+ difficulty: 'challenging',
459
+ reasons: ['Marketing utility', 'OAuth practice'],
460
+ },
461
+ // AI/Trending
462
+ {
463
+ title: 'AI Prompt Library',
464
+ description: 'Store, organize, and version prompts for LLM applications',
465
+ projectType: 'web',
466
+ difficulty: 'moderate',
467
+ reasons: ['AI tooling', 'Version control'],
468
+ },
469
+ {
470
+ title: 'Local-First Notes',
471
+ description: 'Offline-first note app with optional cloud sync',
472
+ projectType: 'web',
473
+ difficulty: 'moderate',
474
+ reasons: ['Privacy focused', 'Modern patterns'],
475
+ },
476
+ {
477
+ title: 'Voice Memo Transcriber',
478
+ description: 'Record voice memos and auto-transcribe with AI',
479
+ projectType: 'web',
480
+ difficulty: 'moderate',
481
+ reasons: ['AI integration', 'Audio processing'],
482
+ },
483
+ {
484
+ title: 'Smart Bookmark Tagger',
485
+ description: 'Auto-tag and categorize bookmarks using AI',
486
+ projectType: 'automation',
487
+ difficulty: 'moderate',
488
+ reasons: ['AI utility', 'Browser extension'],
489
+ },
490
+ ];
491
+ // Get method-specific ideas or use all
492
+ const methodSpecific = {
493
+ brainstorm: [], // Use all
494
+ trending: ['AI', 'Local-First', 'Smart', 'Voice'],
495
+ skills: ['CLI', 'API', 'Generator', 'Manager'],
496
+ problem: ['Organizer', 'Tracker', 'Manager', 'Scheduler'],
497
+ };
498
+ let pool = allIdeas;
499
+ const keywords = methodSpecific[method];
500
+ if (keywords && keywords.length > 0) {
501
+ // Filter to method-relevant ideas
502
+ const filtered = allIdeas.filter((idea) => keywords.some((kw) => idea.title.includes(kw) || idea.description.includes(kw)));
503
+ // If we have enough filtered, use them; otherwise use all
504
+ if (filtered.length >= 5) {
505
+ pool = filtered;
506
+ }
507
+ }
508
+ // Shuffle and return 5 random ideas
509
+ return shuffleArray(pool).slice(0, 5);
510
+ }
511
+ //# sourceMappingURL=ideas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ideas.js","sourceRoot":"","sources":["../../src/wizard/ideas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { runIdeaMode } from './ideas.js';
2
+ import { isLlmAvailable } from './llm.js';
3
+ /**
4
+ * Run the interactive wizard
5
+ */
6
+ export declare function runWizard(): Promise<void>;
7
+ export { isLlmAvailable };
8
+ export { runIdeaMode };
9
+ export * from './ascii-art.js';
10
+ export { showError, showSuccess, showWorking } from './ui.js';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/wizard/index.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,cAAc,EAAc,MAAM,UAAU,CAAC;AAqEtD;;GAEG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAqB/C;AAocD,OAAO,EAAE,cAAc,EAAE,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,CAAC;AACvB,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC"}