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,72 @@
1
+ import type { InputSource, SourceCredentials, SourceOptions, SourceResult } from './types.js';
2
+ /**
3
+ * Abstract base class for input sources
4
+ * Provides common functionality for all source implementations
5
+ */
6
+ export declare abstract class BaseSource implements InputSource {
7
+ abstract name: string;
8
+ abstract description: string;
9
+ abstract type: 'builtin' | 'integration';
10
+ /**
11
+ * Check if this source is available
12
+ * Override in subclasses for custom availability checks
13
+ */
14
+ isAvailable(): Promise<boolean>;
15
+ /**
16
+ * Whether this source requires authentication
17
+ * Override in subclasses that need auth
18
+ */
19
+ requiresAuth(): boolean;
20
+ /**
21
+ * Fetch content from this source
22
+ * Must be implemented by subclasses
23
+ */
24
+ abstract fetch(identifier: string, options?: SourceOptions): Promise<SourceResult>;
25
+ /**
26
+ * Get help text for using this source
27
+ * Override in subclasses for custom help
28
+ */
29
+ getHelp(): string;
30
+ /**
31
+ * Get credentials for this source from config
32
+ */
33
+ protected getCredentials(): Promise<SourceCredentials | null>;
34
+ /**
35
+ * Validate that credentials work
36
+ * Override in subclasses that need auth
37
+ */
38
+ validateCredentials(): Promise<boolean>;
39
+ /**
40
+ * Convert content to markdown if needed
41
+ * Helper for sources that fetch non-markdown content
42
+ */
43
+ protected toMarkdown(content: string, format?: 'text' | 'html' | 'json'): string;
44
+ /**
45
+ * Create a standardized error message
46
+ */
47
+ protected error(message: string): never;
48
+ }
49
+ /**
50
+ * Base class for builtin sources (file, url, pdf)
51
+ */
52
+ export declare abstract class BuiltinSource extends BaseSource {
53
+ type: 'builtin';
54
+ requiresAuth(): boolean;
55
+ }
56
+ /**
57
+ * Base class for integration sources (todoist, linear, notion, github)
58
+ */
59
+ export declare abstract class IntegrationSource extends BaseSource {
60
+ type: 'integration';
61
+ requiresAuth(): boolean;
62
+ /**
63
+ * Get the required credential key name
64
+ * Override in subclasses
65
+ */
66
+ protected getRequiredCredentialKey(): string;
67
+ /**
68
+ * Get the API key for this integration
69
+ */
70
+ protected getApiKey(): Promise<string>;
71
+ }
72
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/sources/base.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE9F;;;GAGG;AACH,8BAAsB,UAAW,YAAW,WAAW;IACrD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,aAAa,CAAC;IAEzC;;;OAGG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAQrC;;;OAGG;IACH,YAAY,IAAI,OAAO;IAIvB;;;OAGG;IACH,QAAQ,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAElF;;;OAGG;IACH,OAAO,IAAI,MAAM;IAIjB;;OAEG;cACa,cAAc,IAAI,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAInE;;;OAGG;IACG,mBAAmB,IAAI,OAAO,CAAC,OAAO,CAAC;IAQ7C;;;OAGG;IACH,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM;IAkChF;;OAEG;IACH,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK;CAGxC;AAED;;GAEG;AACH,8BAAsB,aAAc,SAAQ,UAAU;IACpD,IAAI,EAAE,SAAS,CAAa;IAE5B,YAAY,IAAI,OAAO;CAGxB;AAED;;GAEG;AACH,8BAAsB,iBAAkB,SAAQ,UAAU;IACxD,IAAI,EAAE,aAAa,CAAiB;IAEpC,YAAY,IAAI,OAAO;IAIvB;;;OAGG;IACH,SAAS,CAAC,wBAAwB,IAAI,MAAM;IAI5C;;OAEG;cACa,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;CAU7C"}
@@ -0,0 +1,127 @@
1
+ import { getSourceCredentials } from './config.js';
2
+ /**
3
+ * Abstract base class for input sources
4
+ * Provides common functionality for all source implementations
5
+ */
6
+ export class BaseSource {
7
+ /**
8
+ * Check if this source is available
9
+ * Override in subclasses for custom availability checks
10
+ */
11
+ async isAvailable() {
12
+ if (this.requiresAuth()) {
13
+ const creds = await this.getCredentials();
14
+ return creds !== null && Object.keys(creds).length > 0;
15
+ }
16
+ return true;
17
+ }
18
+ /**
19
+ * Whether this source requires authentication
20
+ * Override in subclasses that need auth
21
+ */
22
+ requiresAuth() {
23
+ return false;
24
+ }
25
+ /**
26
+ * Get help text for using this source
27
+ * Override in subclasses for custom help
28
+ */
29
+ getHelp() {
30
+ return `${this.name}: ${this.description}`;
31
+ }
32
+ /**
33
+ * Get credentials for this source from config
34
+ */
35
+ async getCredentials() {
36
+ return getSourceCredentials(this.name);
37
+ }
38
+ /**
39
+ * Validate that credentials work
40
+ * Override in subclasses that need auth
41
+ */
42
+ async validateCredentials() {
43
+ if (!this.requiresAuth()) {
44
+ return true;
45
+ }
46
+ const creds = await this.getCredentials();
47
+ return creds !== null && (creds.apiKey !== undefined || creds.token !== undefined);
48
+ }
49
+ /**
50
+ * Convert content to markdown if needed
51
+ * Helper for sources that fetch non-markdown content
52
+ */
53
+ toMarkdown(content, format) {
54
+ if (!format || format === 'text') {
55
+ return content;
56
+ }
57
+ if (format === 'html') {
58
+ // Basic HTML to markdown conversion
59
+ return content
60
+ .replace(/<h1[^>]*>(.*?)<\/h1>/gi, '# $1\n')
61
+ .replace(/<h2[^>]*>(.*?)<\/h2>/gi, '## $1\n')
62
+ .replace(/<h3[^>]*>(.*?)<\/h3>/gi, '### $1\n')
63
+ .replace(/<p[^>]*>(.*?)<\/p>/gi, '$1\n\n')
64
+ .replace(/<li[^>]*>(.*?)<\/li>/gi, '- $1\n')
65
+ .replace(/<br\s*\/?>/gi, '\n')
66
+ .replace(/<[^>]+>/g, '')
67
+ .replace(/&nbsp;/g, ' ')
68
+ .replace(/&amp;/g, '&')
69
+ .replace(/&lt;/g, '<')
70
+ .replace(/&gt;/g, '>')
71
+ .trim();
72
+ }
73
+ if (format === 'json') {
74
+ try {
75
+ const obj = JSON.parse(content);
76
+ return `\`\`\`json\n${JSON.stringify(obj, null, 2)}\n\`\`\``;
77
+ }
78
+ catch {
79
+ return content;
80
+ }
81
+ }
82
+ return content;
83
+ }
84
+ /**
85
+ * Create a standardized error message
86
+ */
87
+ error(message) {
88
+ throw new Error(`[${this.name}] ${message}`);
89
+ }
90
+ }
91
+ /**
92
+ * Base class for builtin sources (file, url, pdf)
93
+ */
94
+ export class BuiltinSource extends BaseSource {
95
+ type = 'builtin';
96
+ requiresAuth() {
97
+ return false;
98
+ }
99
+ }
100
+ /**
101
+ * Base class for integration sources (todoist, linear, notion, github)
102
+ */
103
+ export class IntegrationSource extends BaseSource {
104
+ type = 'integration';
105
+ requiresAuth() {
106
+ return true;
107
+ }
108
+ /**
109
+ * Get the required credential key name
110
+ * Override in subclasses
111
+ */
112
+ getRequiredCredentialKey() {
113
+ return 'apiKey';
114
+ }
115
+ /**
116
+ * Get the API key for this integration
117
+ */
118
+ async getApiKey() {
119
+ const creds = await this.getCredentials();
120
+ const key = this.getRequiredCredentialKey();
121
+ if (!creds || !creds[key]) {
122
+ this.error(`No ${key} configured. Run: ralph-starter config set ${this.name}.${key} <value>`);
123
+ }
124
+ return creds[key];
125
+ }
126
+ }
127
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/sources/base.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { BuiltinSource } from '../base.js';
2
+ import type { SourceOptions, SourceResult } from '../types.js';
3
+ /**
4
+ * File source - reads specs from local files and directories
5
+ *
6
+ * Supports:
7
+ * - Single markdown files
8
+ * - Directories (reads all .md files)
9
+ * - Glob patterns (basic support)
10
+ */
11
+ export declare class FileSource extends BuiltinSource {
12
+ name: string;
13
+ description: string;
14
+ isAvailable(): Promise<boolean>;
15
+ fetch(identifier: string, options?: SourceOptions): Promise<SourceResult>;
16
+ private fetchFile;
17
+ private fetchDirectory;
18
+ private getLangFromExt;
19
+ getHelp(): string;
20
+ }
21
+ //# sourceMappingURL=file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../../src/sources/builtin/file.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE/D;;;;;;;GAOG;AACH,qBAAa,UAAW,SAAQ,aAAa;IAC3C,IAAI,SAAU;IACd,WAAW,SAAgD;IAErD,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAI/B,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAoB/E,OAAO,CAAC,SAAS;IA0BjB,OAAO,CAAC,cAAc;IAqCtB,OAAO,CAAC,cAAc;IAyBtB,OAAO,IAAI,MAAM;CAmBlB"}
@@ -0,0 +1,129 @@
1
+ import { existsSync, readdirSync, readFileSync, statSync } from 'node:fs';
2
+ import { basename, extname, join, resolve } from 'node:path';
3
+ import { BuiltinSource } from '../base.js';
4
+ /**
5
+ * File source - reads specs from local files and directories
6
+ *
7
+ * Supports:
8
+ * - Single markdown files
9
+ * - Directories (reads all .md files)
10
+ * - Glob patterns (basic support)
11
+ */
12
+ export class FileSource extends BuiltinSource {
13
+ name = 'file';
14
+ description = 'Read specs from local files or directories';
15
+ async isAvailable() {
16
+ return true; // Always available
17
+ }
18
+ async fetch(identifier, options) {
19
+ const path = resolve(process.cwd(), identifier);
20
+ if (!existsSync(path)) {
21
+ this.error(`File or directory not found: ${identifier}`);
22
+ }
23
+ const stat = statSync(path);
24
+ if (stat.isFile()) {
25
+ return this.fetchFile(path);
26
+ }
27
+ if (stat.isDirectory()) {
28
+ return this.fetchDirectory(path, options);
29
+ }
30
+ this.error(`Unsupported file type: ${identifier}`);
31
+ }
32
+ fetchFile(filePath) {
33
+ const ext = extname(filePath).toLowerCase();
34
+ const name = basename(filePath, ext);
35
+ // Read file content
36
+ const content = readFileSync(filePath, 'utf-8');
37
+ // For non-markdown files, wrap in code block
38
+ let markdown = content;
39
+ if (ext !== '.md' && ext !== '.markdown') {
40
+ const lang = this.getLangFromExt(ext);
41
+ markdown = `# ${name}\n\n\`\`\`${lang}\n${content}\n\`\`\``;
42
+ }
43
+ return {
44
+ content: markdown,
45
+ source: filePath,
46
+ title: name,
47
+ metadata: {
48
+ type: 'file',
49
+ extension: ext,
50
+ size: content.length,
51
+ },
52
+ };
53
+ }
54
+ fetchDirectory(dirPath, options) {
55
+ const limit = options?.limit || 50;
56
+ const files = readdirSync(dirPath)
57
+ .filter((f) => {
58
+ const ext = extname(f).toLowerCase();
59
+ return ext === '.md' || ext === '.markdown' || ext === '.txt';
60
+ })
61
+ .slice(0, limit);
62
+ if (files.length === 0) {
63
+ this.error(`No markdown files found in directory: ${dirPath}`);
64
+ }
65
+ // Combine all files into one document
66
+ const sections = [];
67
+ const metadata = {
68
+ type: 'directory',
69
+ files: [],
70
+ };
71
+ for (const file of files) {
72
+ const filePath = join(dirPath, file);
73
+ const content = readFileSync(filePath, 'utf-8');
74
+ const name = basename(file, extname(file));
75
+ sections.push(`# ${name}\n\n${content}`);
76
+ metadata.files.push(file);
77
+ }
78
+ return {
79
+ content: sections.join('\n\n---\n\n'),
80
+ source: dirPath,
81
+ title: basename(dirPath),
82
+ metadata,
83
+ };
84
+ }
85
+ getLangFromExt(ext) {
86
+ const langMap = {
87
+ '.ts': 'typescript',
88
+ '.tsx': 'typescript',
89
+ '.js': 'javascript',
90
+ '.jsx': 'javascript',
91
+ '.py': 'python',
92
+ '.rb': 'ruby',
93
+ '.go': 'go',
94
+ '.rs': 'rust',
95
+ '.java': 'java',
96
+ '.json': 'json',
97
+ '.yaml': 'yaml',
98
+ '.yml': 'yaml',
99
+ '.xml': 'xml',
100
+ '.html': 'html',
101
+ '.css': 'css',
102
+ '.sql': 'sql',
103
+ '.sh': 'bash',
104
+ '.bash': 'bash',
105
+ '.txt': 'text',
106
+ };
107
+ return langMap[ext] || 'text';
108
+ }
109
+ getHelp() {
110
+ return `
111
+ file: Read specs from local files or directories
112
+
113
+ Usage:
114
+ ralph-starter run --from ./path/to/spec.md
115
+ ralph-starter run --from ./specs/
116
+
117
+ Examples:
118
+ ralph-starter run --from requirements.md
119
+ ralph-starter run --from ./docs/spec.md
120
+ ralph-starter run --from specs/ # Reads all .md files
121
+
122
+ Supported formats:
123
+ - Markdown files (.md, .markdown)
124
+ - Text files (.txt)
125
+ - Any text file (wrapped in code block)
126
+ `.trim();
127
+ }
128
+ }
129
+ //# sourceMappingURL=file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file.js","sourceRoot":"","sources":["../../../src/sources/builtin/file.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * GitHub HTML Scraper
3
+ *
4
+ * Parses GitHub pages to extract content without requiring authentication.
5
+ * Handles:
6
+ * - Single issues: /owner/repo/issues/123
7
+ * - Issue lists: /owner/repo/issues
8
+ * - File blobs: /owner/repo/blob/branch/path
9
+ * - README pages: /owner/repo (extracts readme)
10
+ */
11
+ export interface GitHubIssue {
12
+ number: number;
13
+ title: string;
14
+ body: string;
15
+ state: 'open' | 'closed';
16
+ labels: string[];
17
+ author: string;
18
+ createdAt: string;
19
+ comments: GitHubComment[];
20
+ }
21
+ export interface GitHubComment {
22
+ author: string;
23
+ body: string;
24
+ createdAt: string;
25
+ }
26
+ export interface GitHubFile {
27
+ path: string;
28
+ content: string;
29
+ language?: string;
30
+ }
31
+ /**
32
+ * Detect if a URL is a GitHub URL and what type
33
+ */
34
+ export declare function detectGitHubUrl(url: URL): {
35
+ type: 'issue' | 'issues' | 'blob' | 'repo' | 'raw' | null;
36
+ match: RegExpMatchArray | null;
37
+ };
38
+ /**
39
+ * Parse a single GitHub issue page
40
+ */
41
+ export declare function parseGitHubIssue(html: string, issueNumber: number): GitHubIssue;
42
+ /**
43
+ * Parse GitHub issue list page
44
+ */
45
+ export declare function parseGitHubIssueList(html: string, _owner: string, _repo: string): {
46
+ issues: Partial<GitHubIssue>[];
47
+ hasMore: boolean;
48
+ };
49
+ /**
50
+ * Parse GitHub file blob page
51
+ */
52
+ export declare function parseGitHubBlob(html: string, filepath: string): GitHubFile;
53
+ /**
54
+ * Convert a GitHub issue to markdown
55
+ */
56
+ export declare function issueToMarkdown(issue: GitHubIssue): string;
57
+ /**
58
+ * Convert a GitHub file to markdown
59
+ */
60
+ export declare function fileToMarkdown(file: GitHubFile): string;
61
+ /**
62
+ * Convert issue list to markdown
63
+ */
64
+ export declare function issueListToMarkdown(issues: Partial<GitHubIssue>[], owner: string, repo: string): string;
65
+ //# sourceMappingURL=github-scraper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-scraper.d.ts","sourceRoot":"","sources":["../../../src/sources/builtin/github-scraper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,QAAQ,CAAC;IACzB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG;IACzC,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC;IAC1D,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAAC;CAChC,CAqCA;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,WAAW,CA+C/E;AA+BD;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ;IAAE,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAkBtD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU,CAuD1E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CA8C1D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAiBvD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,EAC9B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,GACX,MAAM,CAYR"}