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,378 @@
1
+ import chalk from 'chalk';
2
+ /**
3
+ * Ralph Wiggum ASCII art for terminal display
4
+ */
5
+ // ASCII text banner for ralph-starter
6
+ export const RALPH_STARTER_BANNER = `
7
+ ${chalk.cyan('██████ █████ ██ ██████ ██ ██')}
8
+ ${chalk.cyan('██ ██ ██ ██ ██ ██ ██ ██ ██')}
9
+ ${chalk.cyan('██████ ███████ ██ ██████ ███████')}
10
+ ${chalk.cyan('██ ██ ██ ██ ██ ██ ██ ██')}
11
+ ${chalk.cyan('██ ██ ██ ██ ███████ ██ ██ ██')}
12
+
13
+ ${chalk.yellow('███████ ████████ █████ ██████ ████████ ███████ ██████')}
14
+ ${chalk.yellow('██ ██ ██ ██ ██ ██ ██ ██ ██ ██')}
15
+ ${chalk.yellow('███████ ██ ███████ ██████ ██ █████ ██████')}
16
+ ${chalk.yellow(' ██ ██ ██ ██ ██ ██ ██ ██ ██ ██')}
17
+ ${chalk.yellow('███████ ██ ██ ██ ██ ██ ██ ███████ ██ ██')}
18
+ `;
19
+ // Full Ralph Wiggum ASCII art - detailed version for welcome screen
20
+ export const RALPH_FULL = chalk.yellow(`
21
+ ˆ 5
22
+
23
+ ÀÀ À ŸÀv Àv ÀÀv
24
+ À FÀÀ ÀÀÀ ÀÀÀv ÀÀ ÀÀÀ
25
+ w ÀÀ ÀÀv ÀÀÀ ÀÀêÀÀ vÀÀ vÀÀÀ À
26
+ Àv vÀÀÀ ÎÀÀ ÀÀÀÀ ÀÀêêÀÀ ÀÀÀ ÀÀÀ vÀ
27
+ X ÀÀ ÀÀÀÀÀ ÀÀÀ ÀÀÀÀ ÀÀêêêRÀ vÀÀÀ vÀÀÀ ÀÀ
28
+ ÆÆ ÀÀ ÀÀÀÀv ÀÀÀ ÀÀêÀÀ ÀÀÀÀÀÀÀÀ vÀÐÀÀ vÀÀÀ~ ÀÀ
29
+ ò ÆÆ ÀÀ ÀÀ: vÀÀÀÀŽÀÀÀÀÀêêÀÀÀÀÀŽvvüÀÀÀÀÀÀêêÀÀ ÀÀÀÀ— ÀÀ‚
30
+ ÆÆÆÆ ƒÀÀÀ– ÀÀÀêêêêêÀÀÀ ÀÀÀêŽÀÀ ÀŽÀÀ vÀÀv
31
+ vÀÀÀ ÆÆÆÆÆÆÆÆÆ ÀÀêêêêÀÀv ÆÆÆÆÆÆÆÆÆ vÀÀêÀÀ ÀÀêÀÀ 3ÀÀ\` ì
32
+ ÀÀÀ ÆÆÆÆÆÆÆÆÆÆÆ ÀÀêêÐÀÀ ÆÆÆÆÆÆÆÆÆÆÆ µÀÀêÀ" ÀêXÀÀ ÀÀÀ Æ
33
+ ÀÀÀ ÆÆÆÆÆ ÆÆÆÆÆ vÀêêÐÀ ÆÆÆÆÆ ÆÆÆÆÆ ÀÀêÀÀ vÀêÐHÀ ÀÀÀ Æ
34
+ ÀÀÀ ÆÆÆÆÆ ÆÆÆÆÆ vÀêêÐÀ ÆÆÆÆÆÆÆÆÆÆÆÆÆ vÀêKÀÀÀÀêêÐÀÀvßÀgÀv ÆÆ
35
+ ÀŽÀ ÆÆÆÆÆÆÆÆÆÆÆÆ ÀÀÀêêÀv ÆÆÆÆÆÆÆÆÆÆÆÆ ÀÀêêêêêêêêÐXÀÀÀÀêÀÀ Æ
36
+ ÀÀÀÀ ÆÆÆÆÆÆ¥ ÀÀêêÀÀf ÆÆÆÆÆÆÆÆ ÀÀgêêêêêêêêêêêêêêêÀÀ ÆÆ
37
+ ÀÀÐÀÀ% ÀÀÀÀ ÀêêêÀÀÀÀ ÀÀÀgêêêêêêêêêêêÀÀÀÀÀÀÀ ÆÆ
38
+ ÀÐêÀÀÀÀÀÀÀÀ ÀÀÀÀÀÀÀÀêêêêÐÀÀÀÀÀÀÀÀÀÀÀÀÀKêêêêêêêêêêêŽÀÀ3
39
+ vÀÐêêêêRÀÀÀÀ ÀÀÀvÀÀêêêêêêêêêÐÀÀÀÀÀKêêÐÀÀÀÀÐêêêêêêêRÀ •ÀÀÀÀÀ
40
+ ÀÀÀêêêêêêêêêÀÀÀ IÀêêêêêêêêêêêêêêêêêêXÀvvÀÀXêêêêêêRÀvÀÀÐ vÀÀ
41
+ ÀÀÀÐêÀÀÀÀÀÀÀRêêÀÀÀÀÀÀÀÀÀêêêêêêêêêêêêêÀÀÀÀÀÀv ÀÀêêêêêêÐÀÀÀ† ÀÀ
42
+ vÀÀÀÀÀv vÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀv ÀêêêêêêêgÀÀÀÀÀÀÀÀ
43
+ ÀÀÀÀÀÀ ÙÀÀÀ ÖÀêêêêêêêgÀ vÀÀ*
44
+ ÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ êÀÀÀÀêêêêêêêgÀ
45
+ ÀêêêÐXXÐÐXXÐêêêêêêêêêêêêêêêêêêêêêêêêêÀÀÀ
46
+ ÀêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêKÀÀÀv
47
+ ÀêêêêêêêêêêêêêêêÀÀÀÀÀÀœÐêêêêêêêêÀÀÀÀÀÀ
48
+ ÀêêêêêêêêêêêêêÀÀÀÀKÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀv ³³³
49
+ ³³³³© ÀêêêêêêêêêêМÀÀv ³³³³';³
50
+ ³³'³ h ÀÐêêêêêêêêêÀÀÀ ³³³³³³³³³³³³³³³³³³³¹‚˜˜‚³³³
51
+ ³³;˜ˆ³´ ÀÀêêêêêêÐÀÀÀ´ ³³³³³³'˜˜˜˜˜˜˜˜˜˜˜˜˜˜'–³³³
52
+ ³‚ˆˆˆ'³³ vÀÀKêêêÀÀÀv ¤³³˜ ³³³­˜˜˜˜˜˜˜˜˜'³³³³
53
+ [³³³³³³³³I7 ÀÀÀÀÀÀG Ì ³³³˜˜'²³³³³¹
54
+ ³ 1ÀÀ ³³³³³
55
+
56
+ `);
57
+ // Welcome Ralph (head only) - shown at startup
58
+ export const RALPH_WELCOME = `
59
+ ${chalk.yellow(' ╭──────────────╮')}
60
+ ${chalk.yellow(' ╱')}${chalk.yellow(' ┌─┐ ┌─┐')}${chalk.yellow(' ╲')}
61
+ ${chalk.yellow(' │')}${chalk.cyan(' ◉')}${chalk.yellow(' ')}${chalk.cyan('◉')}${chalk.yellow(' │')}
62
+ ${chalk.yellow(' │')}${chalk.yellow(' ◡')}${chalk.yellow(' │')}
63
+ ${chalk.yellow(' │')}${chalk.yellow(' ╰───╯')}${chalk.yellow(' │')}
64
+ ${chalk.yellow(' ╲')}${chalk.blue(' ▄▄▄▄▄')}${chalk.yellow(' ╱')}
65
+ ${chalk.blue(' ▀▀▀▀▀▀▀')}
66
+ `;
67
+ // Simpler welcome for smaller terminals
68
+ export const RALPH_WELCOME_SMALL = `
69
+ ${chalk.yellow(' ╭─────────╮')}
70
+ ${chalk.yellow(' │')} ${chalk.cyan('◉')} ${chalk.cyan('◉')} ${chalk.yellow('│')}
71
+ ${chalk.yellow(' │')} ${chalk.yellow('‿‿‿')} ${chalk.yellow('│')}
72
+ ${chalk.yellow(' ╰')}${chalk.blue('─▄▄▄▄─')}${chalk.yellow('╯')}
73
+ `;
74
+ // Working Ralph (waving) - shown during processing
75
+ export const RALPH_WORKING = `
76
+ ${chalk.yellow(' ╭──────────────╮')}
77
+ ${chalk.yellow(' ╱')}${chalk.yellow(' ┌─┐ ┌─┐')}${chalk.yellow(' ╲')} ${chalk.yellow('o')}
78
+ ${chalk.yellow(' │')}${chalk.cyan(' ◉')}${chalk.yellow(' ')}${chalk.cyan('◉')}${chalk.yellow(' │')} ${chalk.yellow('/')}
79
+ ${chalk.yellow(' │')}${chalk.yellow(' ◡')}${chalk.yellow(' │')}${chalk.yellow('╱')}
80
+ ${chalk.yellow(' │')}${chalk.yellow(' ╰───╯')}${chalk.yellow(' ├──')}${chalk.gray('┐')}
81
+ ${chalk.yellow(' ╲')}${chalk.blue(' ▄▄▄▄▄')}${chalk.yellow(' ╱')} ${chalk.gray('│')}
82
+ ${chalk.blue(' ▀▀▀▀▀▀▀')} ${chalk.gray('│')}
83
+ ${chalk.gray(' │ │')} ${chalk.gray('│')}
84
+ ${chalk.gray(' ═╧═╧═')}
85
+ `;
86
+ // Working Ralph small version
87
+ export const RALPH_WORKING_SMALL = `
88
+ ${chalk.yellow(' ╭─────────╮')} ${chalk.yellow('o')}
89
+ ${chalk.yellow(' │')} ${chalk.cyan('◉')} ${chalk.cyan('◉')} ${chalk.yellow('│')}${chalk.yellow('/')}
90
+ ${chalk.yellow(' │')} ${chalk.yellow('‿‿‿')} ${chalk.yellow('├─')}
91
+ ${chalk.yellow(' ╰')}${chalk.blue('─▄▄▄▄─')}${chalk.yellow('╯')}
92
+ `;
93
+ // Success Ralph (happy)
94
+ export const RALPH_SUCCESS = `
95
+ ${chalk.yellow(' ╭──────────────╮')}
96
+ ${chalk.yellow(' ╱')}${chalk.yellow(' ┌─┐ ┌─┐')}${chalk.yellow(' ╲')}
97
+ ${chalk.yellow(' │')}${chalk.green(' ★')}${chalk.yellow(' ')}${chalk.green('★')}${chalk.yellow(' │')}
98
+ ${chalk.yellow(' │')}${chalk.yellow(' ╰‿╯')}${chalk.yellow(' │')}
99
+ ${chalk.yellow(' │')}${chalk.yellow(' ╰───╯')}${chalk.yellow(' │')}
100
+ ${chalk.yellow(' ╲')}${chalk.blue(' ▄▄▄▄▄')}${chalk.yellow(' ╱')}
101
+ ${chalk.blue(' ▀▀▀▀▀▀▀')}
102
+ `;
103
+ // Error Ralph (sad)
104
+ export const RALPH_ERROR = `
105
+ ${chalk.yellow(' ╭──────────────╮')}
106
+ ${chalk.yellow(' ╱')}${chalk.yellow(' ┌─┐ ┌─┐')}${chalk.yellow(' ╲')}
107
+ ${chalk.yellow(' │')}${chalk.red(' ◉')}${chalk.yellow(' ')}${chalk.red('◉')}${chalk.yellow(' │')}
108
+ ${chalk.yellow(' │')}${chalk.yellow(' ╭─╮')}${chalk.yellow(' │')}
109
+ ${chalk.yellow(' │')}${chalk.yellow(' ╰───╯')}${chalk.yellow(' │')}
110
+ ${chalk.yellow(' ╲')}${chalk.blue(' ▄▄▄▄▄')}${chalk.yellow(' ╱')}
111
+ ${chalk.blue(' ▀▀▀▀▀▀▀')}
112
+ `;
113
+ // Thinking Ralph (dots animate)
114
+ export function getRalphThinking(frame) {
115
+ const dots = ['. ', '.. ', '...', ' '][frame % 4];
116
+ return `
117
+ ${chalk.yellow(' ╭─────────╮')} ${chalk.dim(dots)}
118
+ ${chalk.yellow(' │')} ${chalk.cyan('◉')} ${chalk.cyan('◉')} ${chalk.yellow('│')}
119
+ ${chalk.yellow(' │')} ${chalk.yellow('───')} ${chalk.yellow('│')}
120
+ ${chalk.yellow(' ╰')}${chalk.blue('─▄▄▄▄─')}${chalk.yellow('╯')}
121
+ `;
122
+ }
123
+ // Loading animation frames
124
+ export const RALPH_LOADING_FRAMES = [
125
+ // Frame 1 - hand down
126
+ `${chalk.yellow(' ╭─────────╮')}
127
+ ${chalk.yellow(' │')} ${chalk.cyan('◉')} ${chalk.cyan('◉')} ${chalk.yellow('│')}
128
+ ${chalk.yellow(' │')} ${chalk.yellow('‿‿‿')} ${chalk.yellow('│')}
129
+ ${chalk.yellow(' ╰')}${chalk.blue('─▄▄▄▄─')}${chalk.yellow('╯')}`,
130
+ // Frame 2 - hand up
131
+ `${chalk.yellow(' ╭─────────╮')} ${chalk.yellow('o')}
132
+ ${chalk.yellow(' │')} ${chalk.cyan('◉')} ${chalk.cyan('◉')} ${chalk.yellow('│/')}
133
+ ${chalk.yellow(' │')} ${chalk.yellow('‿‿‿')} ${chalk.yellow('│')}
134
+ ${chalk.yellow(' ╰')}${chalk.blue('─▄▄▄▄─')}${chalk.yellow('╯')}`,
135
+ // Frame 3 - hand wave
136
+ `${chalk.yellow(' ╭─────────╮')} ${chalk.yellow('o')}
137
+ ${chalk.yellow(' │')} ${chalk.cyan('◉')} ${chalk.cyan('◉')} ${chalk.yellow('│─')}
138
+ ${chalk.yellow(' │')} ${chalk.yellow('‿‿‿')} ${chalk.yellow('│')}
139
+ ${chalk.yellow(' ╰')}${chalk.blue('─▄▄▄▄─')}${chalk.yellow('╯')}`,
140
+ // Frame 4 - hand up again
141
+ `${chalk.yellow(' ╭─────────╮')} ${chalk.yellow('o')}
142
+ ${chalk.yellow(' │')} ${chalk.cyan('◉')} ${chalk.cyan('◉')} ${chalk.yellow('│/')}
143
+ ${chalk.yellow(' │')} ${chalk.yellow('‿‿‿')} ${chalk.yellow('│')}
144
+ ${chalk.yellow(' ╰')}${chalk.blue('─▄▄▄▄─')}${chalk.yellow('╯')}`,
145
+ ];
146
+ /**
147
+ * Get a loading frame for animation
148
+ */
149
+ export function getRalphLoadingFrame(frame) {
150
+ return RALPH_LOADING_FRAMES[frame % RALPH_LOADING_FRAMES.length];
151
+ }
152
+ /**
153
+ * Print Ralph with a message
154
+ */
155
+ export function printRalphWithMessage(art, message) {
156
+ const lines = art.split('\n').filter((l) => l);
157
+ const messageLines = message.split('\n');
158
+ console.log();
159
+ lines.forEach((line, i) => {
160
+ const msg = messageLines[i] || '';
161
+ console.log(` ${line} ${msg}`);
162
+ });
163
+ console.log();
164
+ }
165
+ /**
166
+ * Show the full welcome with banner and Ralph
167
+ */
168
+ export function showFullWelcome() {
169
+ console.log(RALPH_STARTER_BANNER);
170
+ console.log(RALPH_FULL);
171
+ }
172
+ /**
173
+ * Ralph quotes for fun
174
+ */
175
+ export const RALPH_QUOTES = [
176
+ "Hi, I'm helping!",
177
+ "Me fail English? That's unpossible!",
178
+ "I'm learnding!",
179
+ "My cat's breath smells like cat food.",
180
+ 'I bent my wookiee.',
181
+ "I'm a unitard!",
182
+ 'When I grow up, I want to be a principal or a caterpillar.',
183
+ 'I found a moon rock in my nose!',
184
+ ];
185
+ export function getRandomRalphQuote() {
186
+ return RALPH_QUOTES[Math.floor(Math.random() * RALPH_QUOTES.length)];
187
+ }
188
+ // ═══════════════════════════════════════════════════════════════
189
+ // GRADIENT LOADING ANIMATION - Cool gradient fill on Ralph
190
+ // ═══════════════════════════════════════════════════════════════
191
+ // Custom gradient presets
192
+ const _GRADIENT_PRESETS = [
193
+ ['#FF6B6B', '#4ECDC4'], // Coral to Teal
194
+ ['#A770EF', '#CF8BF3', '#FDB99B'], // Purple to peach
195
+ ['#00C9FF', '#92FE9D'], // Blue to green
196
+ ['#FC466B', '#3F5EFB'], // Pink to blue
197
+ ['#f953c6', '#b91d73'], // Pink gradient
198
+ ['#4776E6', '#8E54E9'], // Blue to purple
199
+ ['#00d2ff', '#3a7bd5'], // Light blue
200
+ ['#f79d00', '#64f38c'], // Orange to green
201
+ ];
202
+ // Spinner frames (dots style like Claude CLI)
203
+ const SPINNER_FRAMES = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
204
+ // Shimmer colors for the pulse effect
205
+ const SHIMMER_COLORS = [
206
+ '#6B7280', // gray-500
207
+ '#9CA3AF', // gray-400
208
+ '#D1D5DB', // gray-300
209
+ '#F3F4F6', // gray-100
210
+ '#FFFFFF', // white (peak)
211
+ '#F3F4F6', // gray-100
212
+ '#D1D5DB', // gray-300
213
+ '#9CA3AF', // gray-400
214
+ '#6B7280', // gray-500
215
+ ];
216
+ /**
217
+ * Modern loading display with shimmer text animation
218
+ * Similar to Claude CLI / Cursor style
219
+ * Uses single-line updates with carriage return for better terminal compatibility
220
+ */
221
+ export class RalphAnimator {
222
+ frame = 0;
223
+ interval = null;
224
+ startTime = Date.now();
225
+ currentMessage = '';
226
+ outputLines = [];
227
+ maxOutputLines = 3;
228
+ shimmerOffset = 0;
229
+ /**
230
+ * Start the loading animation
231
+ */
232
+ start(message = 'Thinking...') {
233
+ this.currentMessage = message;
234
+ this.startTime = Date.now();
235
+ this.frame = 0;
236
+ this.shimmerOffset = 0;
237
+ this.outputLines = [];
238
+ // Hide cursor
239
+ process.stdout.write('\x1B[?25l');
240
+ // Initial render
241
+ this.render();
242
+ // Main animation loop
243
+ this.interval = setInterval(() => {
244
+ this.frame++;
245
+ // Shimmer moves across text (cycle through message length + some buffer)
246
+ const textLen = this.currentMessage.length + 10;
247
+ this.shimmerOffset = (this.shimmerOffset + 1) % textLen;
248
+ this.render();
249
+ }, 80);
250
+ }
251
+ /**
252
+ * Stop the animation
253
+ */
254
+ stop(finalMessage) {
255
+ if (this.interval) {
256
+ clearInterval(this.interval);
257
+ this.interval = null;
258
+ }
259
+ // Clear the current line
260
+ process.stdout.write('\r\x1B[K');
261
+ // Show cursor
262
+ process.stdout.write('\x1B[?25h');
263
+ if (finalMessage) {
264
+ console.log(finalMessage);
265
+ }
266
+ }
267
+ /**
268
+ * Add output line (from streaming) - silently collected, not displayed
269
+ */
270
+ addOutput(line) {
271
+ const cleaned = line.trim();
272
+ if (cleaned && cleaned.length > 5) {
273
+ this.outputLines.push(cleaned);
274
+ if (this.outputLines.length > this.maxOutputLines) {
275
+ this.outputLines.shift();
276
+ }
277
+ }
278
+ }
279
+ /**
280
+ * Update the current message
281
+ */
282
+ updateMessage(message) {
283
+ this.currentMessage = message;
284
+ }
285
+ /**
286
+ * Render single-line status with carriage return (more compatible)
287
+ */
288
+ render() {
289
+ const spinner = SPINNER_FRAMES[this.frame % SPINNER_FRAMES.length];
290
+ const elapsed = Math.floor((Date.now() - this.startTime) / 1000);
291
+ const timeStr = elapsed > 0 ? ` ${elapsed}s` : '';
292
+ // Apply shimmer effect to message
293
+ const shimmerText = this.applyShimmer(this.currentMessage);
294
+ // Build single line output
295
+ const line = ` ${chalk.cyan(spinner)} ${shimmerText}${chalk.dim(timeStr)}`;
296
+ // Clear line and write new content using carriage return
297
+ // \r moves cursor to start of line, \x1B[K clears to end of line
298
+ process.stdout.write(`\r\x1B[K${line}`);
299
+ }
300
+ /**
301
+ * Apply shimmer/pulse effect - a bright spot moves across the text
302
+ */
303
+ applyShimmer(text) {
304
+ const chars = [...text];
305
+ const shimmerWidth = 5; // Width of the bright spot
306
+ const shimmerCenter = this.shimmerOffset;
307
+ let result = '';
308
+ for (let i = 0; i < chars.length; i++) {
309
+ const distance = Math.abs(i - shimmerCenter);
310
+ if (distance < shimmerWidth) {
311
+ // Near the shimmer - use brighter color
312
+ const intensity = 1 - distance / shimmerWidth;
313
+ const colorIndex = Math.floor(intensity * (SHIMMER_COLORS.length - 1));
314
+ result += chalk.hex(SHIMMER_COLORS[colorIndex])(chars[i]);
315
+ }
316
+ else {
317
+ // Base color - dim
318
+ result += chalk.gray(chars[i]);
319
+ }
320
+ }
321
+ return result;
322
+ }
323
+ }
324
+ /**
325
+ * Create a progress bar string
326
+ */
327
+ export function createProgressBar(progress, width = 20) {
328
+ const filled = Math.round(progress * width);
329
+ const empty = Math.max(0, width - filled);
330
+ return (chalk.cyan('[') +
331
+ chalk.cyan('━').repeat(filled) +
332
+ chalk.dim('─').repeat(empty) +
333
+ chalk.cyan(']') +
334
+ ` ${Math.round(progress * 100)}%`);
335
+ }
336
+ // Keep these for backwards compatibility but they're not really used now
337
+ export const RALPH_WALK_FRAMES = [''];
338
+ export const RALPH_WALK_WITH_HAND = [''];
339
+ export function showWalkingRalph(_message, _elapsed) { }
340
+ /**
341
+ * Compact banner - Simple header without large ASCII text
342
+ * Just shows Ralph head + text description
343
+ */
344
+ export function showCompactBanner() {
345
+ console.log();
346
+ console.log(RALPH_WELCOME_SMALL);
347
+ console.log(chalk.cyan.bold(' ralph-starter'));
348
+ console.log(chalk.dim(' AI-powered project generator'));
349
+ console.log();
350
+ }
351
+ /**
352
+ * Mini header - Just text, no art
353
+ */
354
+ export function showMiniHeader() {
355
+ console.log();
356
+ console.log(chalk.cyan.bold(' ralph-starter'));
357
+ console.log(chalk.dim(' AI-powered project generator'));
358
+ console.log();
359
+ }
360
+ /**
361
+ * Show success with Ralph
362
+ */
363
+ export function showRalphSuccess(message) {
364
+ console.log();
365
+ console.log(RALPH_WELCOME_SMALL);
366
+ console.log(chalk.green.bold(` ${message}`));
367
+ console.log();
368
+ }
369
+ /**
370
+ * Show error with Ralph
371
+ */
372
+ export function showRalphError(message) {
373
+ console.log();
374
+ console.log(RALPH_ERROR);
375
+ console.log(chalk.red.bold(` ${message}`));
376
+ console.log();
377
+ }
378
+ //# sourceMappingURL=ascii-art.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ascii-art.js","sourceRoot":"","sources":["../../src/wizard/ascii-art.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Get brainstorm prompt with randomness seed
3
+ */
4
+ export declare function getBrainstormPrompt(): string;
5
+ export declare const BRAINSTORM_PROMPT: string;
6
+ /**
7
+ * Prompt for trend-based ideas (2025-2026 tech trends)
8
+ */
9
+ export declare const TREND_PROMPT = "You are a tech trends analyst helping developers find relevant project ideas.\n\nGenerate 5 project ideas based on current 2025-2026 technology trends:\n- AI/LLM integrations and tooling (agents, RAG, fine-tuning pipelines)\n- Local-first and privacy-focused apps (CRDTs, offline-first, E2E encryption)\n- Developer productivity tools (code analysis, automation, workflows)\n- Sustainable/green tech applications (carbon tracking, optimization)\n- Accessibility and inclusive design (screen readers, voice interfaces)\n\nCRITICAL: Include a MIX of difficulties - at least 2 should be \"challenging\"\n\nReturn ONLY valid JSON (no markdown, no explanation) in this exact format:\n{\n \"ideas\": [\n {\n \"title\": \"Project Title\",\n \"description\": \"One compelling sentence about what it does and why it's relevant now\",\n \"projectType\": \"web|api|cli|mobile|library|automation\",\n \"difficulty\": \"easy|moderate|challenging\",\n \"reasons\": [\"Why this trend matters\", \"What makes it timely\"]\n }\n ]\n}\n\nGuidelines:\n- Connect ideas to specific current trends with DEPTH (not surface-level)\n- For \"challenging\" projects: think multi-agent systems, real-time sync, complex pipelines\n- Include ideas that would make impressive portfolio pieces or open-source contributions\n- Focus on practical applications that solve HARD problems\n- Explain why NOW is the right time to build this\n- AVOID trivial wrappers or simple CRUD apps - those aren't trendy, they're boring";
10
+ /**
11
+ * Prompt for skill-based personalized ideas
12
+ */
13
+ export declare const SKILL_PROMPT = "You are a career advisor helping a developer leverage their skills.\n\nThe developer has these skills/interests: {SKILLS}\n\nGenerate 5 project ideas that:\n- Build on their existing skills\n- Help them learn adjacent technologies\n- Could potentially become portfolio pieces or side projects\n\nReturn ONLY valid JSON (no markdown, no explanation) in this exact format:\n{\n \"ideas\": [\n {\n \"title\": \"Project Title\",\n \"description\": \"One sentence about what it does and how it uses their skills\",\n \"projectType\": \"web|api|cli|mobile|library|automation\",\n \"difficulty\": \"easy|moderate|challenging\",\n \"reasons\": [\"How it leverages their skills\", \"What new skills they'll learn\"]\n }\n ]\n}\n\nGuidelines:\n- Match at least some of their existing skills\n- Introduce one new concept per idea\n- Consider portfolio value\n- Balance challenge with achievability";
14
+ /**
15
+ * Prompt for problem-solving ideas
16
+ */
17
+ export declare const PROBLEM_PROMPT = "You are a problem-solving consultant helping a developer address a pain point.\n\nThe developer described this problem or frustration: \"{PROBLEM}\"\n\nGenerate 5 project ideas that could solve or alleviate this problem.\nThink creatively about different approaches - tools, automations, apps.\n\nReturn ONLY valid JSON (no markdown, no explanation) in this exact format:\n{\n \"ideas\": [\n {\n \"title\": \"Project Title\",\n \"description\": \"One sentence about how it solves the problem\",\n \"projectType\": \"web|api|cli|mobile|library|automation\",\n \"difficulty\": \"easy|moderate|challenging\",\n \"reasons\": [\"How it addresses the pain point\", \"Why this approach works\"]\n }\n ]\n}\n\nGuidelines:\n- Focus on the root cause, not just symptoms\n- Offer different levels of solutions (quick fix vs comprehensive)\n- Consider automation and tooling first\n- Make solutions practical and buildable";
18
+ //# sourceMappingURL=idea-prompts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idea-prompts.d.ts","sourceRoot":"","sources":["../../src/wizard/idea-prompts.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAuD5C;AAGD,eAAO,MAAM,iBAAiB,QAAwB,CAAC;AAEvD;;GAEG;AACH,eAAO,MAAM,YAAY,m/CA8B0D,CAAC;AAEpF;;GAEG;AACH,eAAO,MAAM,YAAY,45BA0Bc,CAAC;AAExC;;GAEG;AACH,eAAO,MAAM,cAAc,o7BAwBc,CAAC"}
@@ -0,0 +1,154 @@
1
+ // LLM prompts for idea brainstorming
2
+ /**
3
+ * Get brainstorm prompt with randomness seed
4
+ */
5
+ export function getBrainstormPrompt() {
6
+ const seed = Math.floor(Math.random() * 10000);
7
+ const themes = [
8
+ 'productivity and time management',
9
+ 'creative tools for artists and writers',
10
+ 'health and wellness tracking',
11
+ 'learning and education',
12
+ 'finance and budgeting',
13
+ 'home automation and IoT',
14
+ 'social good and community',
15
+ 'gaming and entertainment',
16
+ 'data visualization',
17
+ 'developer tools and workflows',
18
+ ];
19
+ const randomTheme = themes[Math.floor(Math.random() * themes.length)];
20
+ return `You are a creative product consultant helping someone discover what to build.
21
+
22
+ IMPORTANT: Be creative and generate UNIQUE ideas. Random seed: ${seed}
23
+ Focus especially on: ${randomTheme}
24
+
25
+ Generate 5 diverse project ideas that a developer could build with AI assistance.
26
+ Mix different project types (web apps, CLI tools, APIs, automations).
27
+
28
+ CRITICAL: Include a MIX of difficulties:
29
+ - 1-2 easy projects (simple scripts, basic CRUD)
30
+ - 2-3 moderate projects (full-stack apps, integrations)
31
+ - 1-2 challenging projects (real-time systems, complex algorithms, distributed systems)
32
+
33
+ Return ONLY valid JSON (no markdown, no explanation) in this exact format:
34
+ {
35
+ "ideas": [
36
+ {
37
+ "title": "Project Title",
38
+ "description": "One compelling sentence about what it does and why it's useful",
39
+ "projectType": "web|api|cli|mobile|library|automation",
40
+ "difficulty": "easy|moderate|challenging",
41
+ "reasons": ["Why this is a good project", "What makes it interesting"]
42
+ }
43
+ ]
44
+ }
45
+
46
+ Guidelines:
47
+ - Be CREATIVE - don't repeat common ideas like "todo app" or "weather app"
48
+ - AVOID trivial projects - no simple converters, basic calculators, or hello world variations
49
+ - Include at least ONE challenging project that would impress in a portfolio:
50
+ * Real-time collaboration features
51
+ * Complex state machines or workflows
52
+ * Data processing pipelines
53
+ * Browser extensions with advanced features
54
+ * Dev tools that solve real pain points
55
+ * Systems with multiple integrations
56
+ - For "challenging" difficulty: think projects that require architectural decisions, handle edge cases, have performance considerations
57
+ - Focus on real problems developers and users face daily
58
+ - Each idea should be completable as an MVP with focused effort`;
59
+ }
60
+ // Keep for backwards compatibility
61
+ export const BRAINSTORM_PROMPT = getBrainstormPrompt();
62
+ /**
63
+ * Prompt for trend-based ideas (2025-2026 tech trends)
64
+ */
65
+ export const TREND_PROMPT = `You are a tech trends analyst helping developers find relevant project ideas.
66
+
67
+ Generate 5 project ideas based on current 2025-2026 technology trends:
68
+ - AI/LLM integrations and tooling (agents, RAG, fine-tuning pipelines)
69
+ - Local-first and privacy-focused apps (CRDTs, offline-first, E2E encryption)
70
+ - Developer productivity tools (code analysis, automation, workflows)
71
+ - Sustainable/green tech applications (carbon tracking, optimization)
72
+ - Accessibility and inclusive design (screen readers, voice interfaces)
73
+
74
+ CRITICAL: Include a MIX of difficulties - at least 2 should be "challenging"
75
+
76
+ Return ONLY valid JSON (no markdown, no explanation) in this exact format:
77
+ {
78
+ "ideas": [
79
+ {
80
+ "title": "Project Title",
81
+ "description": "One compelling sentence about what it does and why it's relevant now",
82
+ "projectType": "web|api|cli|mobile|library|automation",
83
+ "difficulty": "easy|moderate|challenging",
84
+ "reasons": ["Why this trend matters", "What makes it timely"]
85
+ }
86
+ ]
87
+ }
88
+
89
+ Guidelines:
90
+ - Connect ideas to specific current trends with DEPTH (not surface-level)
91
+ - For "challenging" projects: think multi-agent systems, real-time sync, complex pipelines
92
+ - Include ideas that would make impressive portfolio pieces or open-source contributions
93
+ - Focus on practical applications that solve HARD problems
94
+ - Explain why NOW is the right time to build this
95
+ - AVOID trivial wrappers or simple CRUD apps - those aren't trendy, they're boring`;
96
+ /**
97
+ * Prompt for skill-based personalized ideas
98
+ */
99
+ export const SKILL_PROMPT = `You are a career advisor helping a developer leverage their skills.
100
+
101
+ The developer has these skills/interests: {SKILLS}
102
+
103
+ Generate 5 project ideas that:
104
+ - Build on their existing skills
105
+ - Help them learn adjacent technologies
106
+ - Could potentially become portfolio pieces or side projects
107
+
108
+ Return ONLY valid JSON (no markdown, no explanation) in this exact format:
109
+ {
110
+ "ideas": [
111
+ {
112
+ "title": "Project Title",
113
+ "description": "One sentence about what it does and how it uses their skills",
114
+ "projectType": "web|api|cli|mobile|library|automation",
115
+ "difficulty": "easy|moderate|challenging",
116
+ "reasons": ["How it leverages their skills", "What new skills they'll learn"]
117
+ }
118
+ ]
119
+ }
120
+
121
+ Guidelines:
122
+ - Match at least some of their existing skills
123
+ - Introduce one new concept per idea
124
+ - Consider portfolio value
125
+ - Balance challenge with achievability`;
126
+ /**
127
+ * Prompt for problem-solving ideas
128
+ */
129
+ export const PROBLEM_PROMPT = `You are a problem-solving consultant helping a developer address a pain point.
130
+
131
+ The developer described this problem or frustration: "{PROBLEM}"
132
+
133
+ Generate 5 project ideas that could solve or alleviate this problem.
134
+ Think creatively about different approaches - tools, automations, apps.
135
+
136
+ Return ONLY valid JSON (no markdown, no explanation) in this exact format:
137
+ {
138
+ "ideas": [
139
+ {
140
+ "title": "Project Title",
141
+ "description": "One sentence about how it solves the problem",
142
+ "projectType": "web|api|cli|mobile|library|automation",
143
+ "difficulty": "easy|moderate|challenging",
144
+ "reasons": ["How it addresses the pain point", "Why this approach works"]
145
+ }
146
+ ]
147
+ }
148
+
149
+ Guidelines:
150
+ - Focus on the root cause, not just symptoms
151
+ - Offer different levels of solutions (quick fix vs comprehensive)
152
+ - Consider automation and tooling first
153
+ - Make solutions practical and buildable`;
154
+ //# sourceMappingURL=idea-prompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idea-prompts.js","sourceRoot":"","sources":["../../src/wizard/idea-prompts.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAErC;;GAEG;AACH,MAAM,UAAU,mBAAmB;IACjC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG;QACb,kCAAkC;QAClC,wCAAwC;QACxC,8BAA8B;QAC9B,wBAAwB;QACxB,uBAAuB;QACvB,yBAAyB;QACzB,2BAA2B;QAC3B,0BAA0B;QAC1B,oBAAoB;QACpB,+BAA+B;KAChC,CAAC;IACF,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAEtE,OAAO;;iEAEwD,IAAI;uBAC9C,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gEAmC8B,CAAC;AACjE,CAAC;AAED,mCAAmC;AACnC,MAAM,CAAC,MAAM,iBAAiB,GAAG,mBAAmB,EAAE,CAAC;AAEvD;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mFA8BuD,CAAC;AAEpF;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;uCA0BW,CAAC;AAExC;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;yCAwBW,CAAC"}
@@ -0,0 +1,34 @@
1
+ import type { IdeaContext, IdeaDiscoveryMethod, IdeaSuggestion } from './types.js';
2
+ /**
3
+ * Display the idea mode welcome banner
4
+ */
5
+ export declare function showIdeaWelcome(): void;
6
+ /**
7
+ * Ask how the user wants to discover ideas
8
+ */
9
+ export declare function askDiscoveryMethod(): Promise<IdeaDiscoveryMethod>;
10
+ /**
11
+ * Ask for user's skills for skill-based suggestions
12
+ */
13
+ export declare function askUserSkills(): Promise<string[]>;
14
+ /**
15
+ * Ask for the problem the user wants to solve
16
+ */
17
+ export declare function askUserProblem(): Promise<string>;
18
+ /**
19
+ * Display brainstorm results
20
+ */
21
+ export declare function showBrainstormResults(ideas: IdeaSuggestion[]): void;
22
+ /**
23
+ * Ask user to select an idea
24
+ */
25
+ export declare function selectIdea(ideas: IdeaSuggestion[]): Promise<IdeaSuggestion | null>;
26
+ /**
27
+ * Build context from user preferences
28
+ */
29
+ export declare function buildIdeaContext(): Promise<IdeaContext>;
30
+ /**
31
+ * Show loading message for idea generation
32
+ */
33
+ export declare function showIdeaLoading(method: IdeaDiscoveryMethod): string;
34
+ //# sourceMappingURL=idea-ui.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idea-ui.d.ts","sourceRoot":"","sources":["../../src/wizard/idea-ui.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAoCnF;;GAEG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAetC;AAED;;GAEG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,mBAAmB,CAAC,CA4BvE;AAED;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAqCvD;AAED;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,CActD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,IAAI,CA2BnE;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAkCxF;AAED;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,WAAW,CAAC,CAW7D;AAiBD;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAQnE"}