ralph-starter 0.0.1 → 0.1.1-beta.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 (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 +374 -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 +67 -8
@@ -0,0 +1,472 @@
1
+ import { existsSync, mkdirSync, writeFileSync } from 'node:fs';
2
+ import { join, resolve } from 'node:path';
3
+ import chalk from 'chalk';
4
+ import inquirer from 'inquirer';
5
+ import ora from 'ora';
6
+ import { detectProject, detectRalphPlaybook, initCommand } from '../commands/init.js';
7
+ import { planCommand } from '../commands/plan.js';
8
+ import { runCommand } from '../commands/run.js';
9
+ import { getConfiguredLLM, promptForLLMSetup } from '../config/manager.js';
10
+ import { detectBestAgent } from '../loop/agents.js';
11
+ import { isClaudeCodeAvailable } from '../setup/agent-detector.js';
12
+ import { runSetupWizard } from '../setup/wizard.js';
13
+ import { runIdeaMode } from './ideas.js';
14
+ import { isLlmAvailable, refineIdea } from './llm.js';
15
+ import { askContinueAction, askExecutionOptions, askExistingProjectAction, askForComplexity, askForFeatures, askForIdea, askForProjectType, askForTechStack, askHasIdea, askImproveAction, askImprovementPrompt, askRalphPlaybookAction, askWhatToModify, askWorkingDirectory, confirmPlan, } from './prompts.js';
16
+ import { generateAgentsMd, generateSpec, sanitizeFilename } from './spec-generator.js';
17
+ import { DEFAULT_WIZARD_ANSWERS } from './types.js';
18
+ import { formatComplexity, formatProjectType, showDetectedProject, showDetectedRalphPlaybook, showError, showExecutionPlan, showRefinedSummary, showSuccess, showWelcome, } from './ui.js';
19
+ // Global spinner reference for cleanup on exit
20
+ let activeSpinner = null;
21
+ /**
22
+ * Handle graceful exit on Ctrl+C
23
+ */
24
+ function setupGracefulExit() {
25
+ const cleanup = () => {
26
+ if (activeSpinner) {
27
+ activeSpinner.stop();
28
+ }
29
+ console.log(chalk.dim('\n\nExiting...'));
30
+ process.exit(0);
31
+ };
32
+ // Handle SIGINT (Ctrl+C)
33
+ process.on('SIGINT', cleanup);
34
+ // Handle SIGTERM
35
+ process.on('SIGTERM', cleanup);
36
+ }
37
+ /**
38
+ * Check if error is an exit/interrupt error from inquirer
39
+ */
40
+ function isExitError(error) {
41
+ if (error instanceof Error) {
42
+ return (error.name === 'ExitPromptError' ||
43
+ error.message.includes('User force closed') ||
44
+ error.message.includes('SIGINT'));
45
+ }
46
+ return false;
47
+ }
48
+ /**
49
+ * Run the interactive wizard
50
+ */
51
+ export async function runWizard() {
52
+ // Setup graceful exit handling
53
+ setupGracefulExit();
54
+ const spinner = ora();
55
+ activeSpinner = spinner;
56
+ try {
57
+ await runWizardFlow(spinner);
58
+ }
59
+ catch (error) {
60
+ // Handle graceful exit (Ctrl+C)
61
+ if (isExitError(error)) {
62
+ spinner.stop();
63
+ console.log(chalk.dim('\n\nExiting...'));
64
+ process.exit(0);
65
+ }
66
+ // Re-throw other errors
67
+ throw error;
68
+ }
69
+ finally {
70
+ activeSpinner = null;
71
+ }
72
+ }
73
+ /**
74
+ * Check if LLM is available (either Claude Code CLI or API key)
75
+ */
76
+ async function checkLLMAvailability() {
77
+ // Priority 1: Check for Claude Code CLI
78
+ const claudeCheck = await isClaudeCodeAvailable();
79
+ if (claudeCheck.available) {
80
+ return { available: true, usesClaudeCode: true, needsSetup: false };
81
+ }
82
+ // Priority 2: Check for API key
83
+ const llmConfig = getConfiguredLLM();
84
+ if (llmConfig) {
85
+ return { available: true, usesClaudeCode: false, needsSetup: false };
86
+ }
87
+ // Nothing configured
88
+ return { available: false, usesClaudeCode: false, needsSetup: true };
89
+ }
90
+ /**
91
+ * Main wizard flow (extracted for cleaner error handling)
92
+ */
93
+ async function runWizardFlow(spinner) {
94
+ // First-run detection: Check if LLM is configured
95
+ spinner.start('Checking configuration...');
96
+ const llmStatus = await checkLLMAvailability();
97
+ spinner.stop();
98
+ if (llmStatus.needsSetup) {
99
+ console.log();
100
+ console.log(chalk.yellow(' No LLM configured yet.'));
101
+ console.log(chalk.dim(' The wizard uses AI to help refine your project idea.'));
102
+ console.log();
103
+ const { action } = await inquirer.prompt([
104
+ {
105
+ type: 'list',
106
+ name: 'action',
107
+ message: 'What would you like to do?',
108
+ choices: [
109
+ { name: 'Run setup wizard (recommended)', value: 'setup' },
110
+ { name: 'Enter API key now', value: 'quick' },
111
+ { name: 'Continue anyway (will use template fallbacks)', value: 'continue' },
112
+ ],
113
+ },
114
+ ]);
115
+ if (action === 'setup') {
116
+ const result = await runSetupWizard();
117
+ if (!result.success) {
118
+ console.log(chalk.dim(' Setup cancelled. You can run it later with: ralph-starter setup'));
119
+ console.log();
120
+ return;
121
+ }
122
+ }
123
+ else if (action === 'quick') {
124
+ const result = await promptForLLMSetup();
125
+ if (!result) {
126
+ console.log(chalk.dim(' No API key provided. Continuing with template fallbacks...'));
127
+ }
128
+ }
129
+ // 'continue' - proceed with fallbacks
130
+ console.log();
131
+ }
132
+ // Check for agent
133
+ spinner.start('Checking for coding agents...');
134
+ const agent = await detectBestAgent();
135
+ spinner.stop();
136
+ if (!agent) {
137
+ showError('No coding agent found!', 'ralph-starter needs a coding agent to build your project.', 'Install Claude Code: npm install -g @anthropic-ai/claude-code');
138
+ return;
139
+ }
140
+ // Detect if we're in an existing project before showing welcome
141
+ const cwd = process.cwd();
142
+ const cwdPlaybook = detectRalphPlaybook(cwd);
143
+ const cwdProject = detectProject(cwd);
144
+ const cwdIsRalphProject = cwdPlaybook.hasPlaybook;
145
+ const cwdIsExistingProject = cwdIsRalphProject || cwdProject.type !== 'unknown';
146
+ // Show welcome
147
+ showWelcome();
148
+ // If existing project detected, show info
149
+ if (cwdIsRalphProject) {
150
+ showDetectedRalphPlaybook(cwdPlaybook, cwd);
151
+ }
152
+ else if (cwdIsExistingProject) {
153
+ showDetectedProject(cwdProject, cwd);
154
+ }
155
+ // Initialize answers
156
+ const answers = {
157
+ ...DEFAULT_WIZARD_ANSWERS,
158
+ rawIdea: '',
159
+ projectName: '',
160
+ projectDescription: '',
161
+ suggestedFeatures: [],
162
+ selectedFeatures: [],
163
+ techStack: {},
164
+ complexity: 'mvp',
165
+ autoRun: true,
166
+ autoCommit: false,
167
+ workingDirectory: process.cwd(),
168
+ };
169
+ // Step 1: Get the idea (with optional brainstorming or improve existing)
170
+ let continueWizard = true;
171
+ while (continueWizard) {
172
+ // Ask if user has an idea, needs help, or wants to improve existing
173
+ const hasIdea = await askHasIdea({
174
+ isExistingProject: cwdIsExistingProject,
175
+ isRalphProject: cwdIsRalphProject,
176
+ });
177
+ // Handle "improve existing project" flow
178
+ if (hasIdea === 'improve_existing') {
179
+ const improveAction = await askImproveAction();
180
+ if (improveAction === 'prompt') {
181
+ // User gives specific instructions
182
+ const improvementPrompt = await askImprovementPrompt();
183
+ console.log();
184
+ console.log(chalk.cyan.bold(' Starting improvement loop...'));
185
+ console.log();
186
+ // Run with the improvement as the task
187
+ await runCommand(improvementPrompt, {
188
+ auto: true,
189
+ commit: false,
190
+ validate: true,
191
+ });
192
+ showSuccess('Improvement complete!');
193
+ return;
194
+ }
195
+ else {
196
+ // Analyze and suggest improvements
197
+ console.log();
198
+ console.log(chalk.cyan.bold(' Analyzing project...'));
199
+ console.log();
200
+ const analysisPrompt = `Analyze this codebase and suggest improvements. Look at:
201
+ 1. Code quality and best practices
202
+ 2. Missing features or incomplete implementations
203
+ 3. Performance opportunities
204
+ 4. Security concerns
205
+ 5. Developer experience improvements
206
+
207
+ Provide a prioritized list of suggestions with explanations.`;
208
+ await runCommand(analysisPrompt, {
209
+ auto: true,
210
+ commit: false,
211
+ validate: false,
212
+ maxIterations: 5,
213
+ });
214
+ showSuccess('Analysis complete!');
215
+ return;
216
+ }
217
+ }
218
+ let idea;
219
+ if (hasIdea === 'need_help') {
220
+ // Launch idea mode
221
+ const selectedIdea = await runIdeaMode();
222
+ if (selectedIdea === null) {
223
+ // User wants to describe their own after browsing ideas
224
+ idea = await askForIdea();
225
+ }
226
+ else {
227
+ idea = selectedIdea;
228
+ }
229
+ }
230
+ else {
231
+ idea = await askForIdea();
232
+ }
233
+ answers.rawIdea = idea;
234
+ // Refine with LLM
235
+ spinner.start('Thinking about your idea...');
236
+ let refinedIdea;
237
+ try {
238
+ refinedIdea = await refineIdea(idea);
239
+ spinner.succeed('Got it!');
240
+ }
241
+ catch (_error) {
242
+ spinner.fail('Could not analyze idea');
243
+ // Use fallback
244
+ refinedIdea = {
245
+ projectName: 'my-project',
246
+ projectDescription: idea,
247
+ projectType: 'web',
248
+ suggestedStack: { frontend: 'react', backend: 'nodejs' },
249
+ coreFeatures: ['Core functionality'],
250
+ suggestedFeatures: [],
251
+ estimatedComplexity: 'mvp',
252
+ };
253
+ }
254
+ // Apply refinement to answers
255
+ answers.projectName = refinedIdea.projectName;
256
+ answers.projectDescription = refinedIdea.projectDescription;
257
+ answers.projectType = refinedIdea.projectType;
258
+ answers.techStack = refinedIdea.suggestedStack;
259
+ answers.suggestedFeatures = refinedIdea.suggestedFeatures;
260
+ answers.complexity = refinedIdea.estimatedComplexity;
261
+ // Let user refine
262
+ let refining = true;
263
+ while (refining) {
264
+ // Show summary
265
+ showRefinedSummary(answers.projectName, formatProjectType(answers.projectType || 'web'), answers.techStack, [
266
+ ...refinedIdea.coreFeatures,
267
+ ...answers.selectedFeatures.filter((f) => !refinedIdea.coreFeatures.includes(f)),
268
+ ], formatComplexity(answers.complexity));
269
+ // Confirm
270
+ const action = await confirmPlan();
271
+ if (action === 'proceed') {
272
+ refining = false;
273
+ continueWizard = false;
274
+ }
275
+ else if (action === 'restart') {
276
+ refining = false;
277
+ // Will loop back to get new idea
278
+ }
279
+ else if (action === 'modify') {
280
+ const modifyWhat = await askWhatToModify();
281
+ switch (modifyWhat) {
282
+ case 'type':
283
+ answers.projectType = await askForProjectType(answers.projectType);
284
+ break;
285
+ case 'stack':
286
+ answers.techStack = await askForTechStack(answers.projectType || 'web', answers.techStack);
287
+ break;
288
+ case 'features':
289
+ answers.selectedFeatures = await askForFeatures(refinedIdea.coreFeatures, refinedIdea.suggestedFeatures);
290
+ break;
291
+ case 'complexity':
292
+ answers.complexity = await askForComplexity(answers.complexity);
293
+ break;
294
+ }
295
+ }
296
+ }
297
+ }
298
+ // Get execution options
299
+ const execOptions = await askExecutionOptions();
300
+ answers.autoRun = execOptions.autoRun;
301
+ answers.autoCommit = execOptions.autoCommit;
302
+ // Get working directory with existing project detection
303
+ let workDir = '';
304
+ let isExistingProject = false;
305
+ const _isRalphPlaybook = false;
306
+ // Loop until we have a valid directory decision
307
+ let selectingDirectory = true;
308
+ while (selectingDirectory) {
309
+ answers.workingDirectory = await askWorkingDirectory(answers.projectName);
310
+ workDir = resolve(process.cwd(), answers.workingDirectory);
311
+ // Check for existing project
312
+ if (existsSync(workDir)) {
313
+ // First check for Ralph Playbook (takes priority)
314
+ const playbook = detectRalphPlaybook(workDir);
315
+ if (playbook.hasPlaybook) {
316
+ // Show Ralph Playbook info
317
+ showDetectedRalphPlaybook(playbook, workDir);
318
+ const action = await askRalphPlaybookAction();
319
+ if (action === 'continue') {
320
+ // User wants to continue working on this project
321
+ process.chdir(workDir);
322
+ // Show menu for what to do
323
+ const continueAction = await askContinueAction();
324
+ if (continueAction === 'run') {
325
+ console.log();
326
+ console.log(chalk.cyan.bold(' Starting build loop...'));
327
+ console.log();
328
+ await runCommand(undefined, {
329
+ auto: true,
330
+ commit: answers.autoCommit,
331
+ validate: true,
332
+ });
333
+ }
334
+ else if (continueAction === 'plan') {
335
+ console.log();
336
+ console.log(chalk.cyan.bold(' Regenerating implementation plan...'));
337
+ console.log();
338
+ await planCommand({ auto: true });
339
+ }
340
+ else if (continueAction === 'add_spec') {
341
+ // TODO: Implement add spec flow
342
+ console.log();
343
+ console.log(chalk.yellow(' Add spec flow coming soon!'));
344
+ console.log(chalk.dim(' For now, manually add a .md file to the specs/ folder.'));
345
+ console.log();
346
+ }
347
+ showSuccess('Done!');
348
+ return; // Exit wizard early
349
+ }
350
+ else if (action === 'fresh') {
351
+ // Will overwrite - continue normal flow
352
+ selectingDirectory = false;
353
+ }
354
+ else {
355
+ // 'different' - loop back to ask for directory again
356
+ console.log(chalk.dim(' Choose a different directory...'));
357
+ }
358
+ }
359
+ else {
360
+ // No Ralph Playbook, check for language project
361
+ const detectedProject = detectProject(workDir);
362
+ if (detectedProject.type !== 'unknown') {
363
+ // Show detected project info
364
+ showDetectedProject(detectedProject, workDir);
365
+ const action = await askExistingProjectAction(detectedProject);
366
+ if (action === 'enhance') {
367
+ // Use existing project - skip creating new directory
368
+ isExistingProject = true;
369
+ selectingDirectory = false;
370
+ }
371
+ else if (action === 'subfolder') {
372
+ // Create subfolder inside existing project
373
+ const subfolderName = sanitizeFilename(answers.projectName);
374
+ answers.workingDirectory = join(answers.workingDirectory, subfolderName);
375
+ workDir = resolve(process.cwd(), answers.workingDirectory);
376
+ selectingDirectory = false;
377
+ }
378
+ else {
379
+ // 'different' - loop back to ask for directory again
380
+ console.log(chalk.dim(' Choose a different directory...'));
381
+ }
382
+ }
383
+ else {
384
+ // Directory exists but no recognized project - proceed normally
385
+ selectingDirectory = false;
386
+ }
387
+ }
388
+ }
389
+ else {
390
+ // Directory doesn't exist - proceed normally
391
+ selectingDirectory = false;
392
+ }
393
+ }
394
+ // Show execution plan
395
+ showExecutionPlan(answers.autoCommit);
396
+ // Create directory if needed (skip for existing projects)
397
+ if (!existsSync(workDir)) {
398
+ mkdirSync(workDir, { recursive: true });
399
+ console.log(chalk.dim(` Created: ${workDir}`));
400
+ }
401
+ else if (isExistingProject) {
402
+ console.log(chalk.dim(` Using existing project: ${workDir}`));
403
+ }
404
+ // Change to working directory
405
+ process.chdir(workDir);
406
+ // Step 1: Initialize Ralph Playbook
407
+ spinner.start('Setting up project...');
408
+ try {
409
+ await initCommand({ name: answers.projectName });
410
+ spinner.succeed('Project initialized');
411
+ }
412
+ catch (error) {
413
+ spinner.fail('Failed to initialize project');
414
+ console.error(error);
415
+ return;
416
+ }
417
+ // Step 2: Write the spec file
418
+ spinner.start('Writing specification...');
419
+ const specsDir = join(workDir, 'specs');
420
+ if (!existsSync(specsDir)) {
421
+ mkdirSync(specsDir, { recursive: true });
422
+ }
423
+ const specContent = generateSpec(answers);
424
+ const specFilename = `${sanitizeFilename(answers.projectName)}.md`;
425
+ writeFileSync(join(specsDir, specFilename), specContent);
426
+ spinner.succeed('Specification written');
427
+ // Step 3: Generate custom AGENTS.md
428
+ const agentsContent = generateAgentsMd(answers);
429
+ writeFileSync(join(workDir, 'AGENTS.md'), agentsContent);
430
+ // Step 4: Run planning
431
+ spinner.start('Creating implementation plan...');
432
+ try {
433
+ await planCommand({ auto: true });
434
+ spinner.succeed('Implementation plan created');
435
+ }
436
+ catch (error) {
437
+ spinner.fail('Failed to create plan');
438
+ console.error(error);
439
+ return;
440
+ }
441
+ // Step 5: Optionally run execution
442
+ if (answers.autoRun) {
443
+ console.log();
444
+ console.log(chalk.cyan.bold(' Starting build...'));
445
+ console.log();
446
+ try {
447
+ await runCommand(undefined, {
448
+ auto: true,
449
+ commit: answers.autoCommit,
450
+ validate: true,
451
+ });
452
+ }
453
+ catch (error) {
454
+ console.error(chalk.red('Build failed:'), error);
455
+ return;
456
+ }
457
+ }
458
+ // Done!
459
+ showSuccess('All done!');
460
+ if (!answers.autoRun) {
461
+ console.log(chalk.dim(' To start building, run:'));
462
+ console.log(chalk.gray(` cd ${answers.workingDirectory}`));
463
+ console.log(chalk.gray(' ralph-starter run'));
464
+ }
465
+ console.log();
466
+ }
467
+ // Export for use in CLI
468
+ export { isLlmAvailable };
469
+ export { runIdeaMode };
470
+ export * from './ascii-art.js';
471
+ export { showError, showSuccess, showWorking } from './ui.js';
472
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/wizard/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { Ora } from 'ora';
2
+ import type { RefinedIdea } from './types.js';
3
+ /**
4
+ * Refine user's idea using LLM (hybrid approach)
5
+ * Priority: Claude Code CLI (no API key needed) > Direct API > Template fallback
6
+ * @param spinner - Optional spinner to stop before streaming output
7
+ */
8
+ export declare function refineIdea(idea: string, spinner?: Ora): Promise<RefinedIdea>;
9
+ /**
10
+ * Check if LLM refinement is available
11
+ * Priority: Claude Code agent (no API key needed) > API key configured
12
+ */
13
+ export declare function isLlmAvailable(): Promise<boolean>;
14
+ //# sourceMappingURL=llm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["../../src/wizard/llm.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAK/B,OAAO,KAAK,EAAe,WAAW,EAAa,MAAM,YAAY,CAAC;AAyGtE;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,CAwClF;AAmTD;;;GAGG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC,CAQvD"}