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,429 @@
1
+ import { BuiltinSource } from '../base.js';
2
+ import { detectGitHubUrl, fileToMarkdown, issueListToMarkdown, issueToMarkdown, parseGitHubBlob, parseGitHubIssue, parseGitHubIssueList, } from './github-scraper.js';
3
+ /**
4
+ * URL source - fetches specs from remote URLs
5
+ *
6
+ * Supports:
7
+ * - Raw markdown files (GitHub raw, etc.)
8
+ * - HTML pages (basic conversion)
9
+ * - JSON responses
10
+ * - GitHub issues and files (specialized parsing)
11
+ * - Notion public pages (specialized parsing)
12
+ */
13
+ export class UrlSource extends BuiltinSource {
14
+ name = 'url';
15
+ description = 'Fetch specs from remote URLs';
16
+ async isAvailable() {
17
+ return true; // Always available
18
+ }
19
+ async fetch(identifier, options) {
20
+ // Validate URL
21
+ let url;
22
+ try {
23
+ url = new URL(identifier);
24
+ }
25
+ catch {
26
+ this.error(`Invalid URL: ${identifier}`);
27
+ }
28
+ // Check for GitHub URL - use specialized parsing
29
+ const githubInfo = detectGitHubUrl(url);
30
+ if (githubInfo.type && githubInfo.type !== 'raw') {
31
+ return this.fetchGitHub(url, githubInfo, options);
32
+ }
33
+ // Check for Notion public page
34
+ if (this.isNotionUrl(url)) {
35
+ return this.fetchNotion(url, options);
36
+ }
37
+ // Fetch content
38
+ const headers = {
39
+ 'User-Agent': 'ralph-starter/0.1.0',
40
+ Accept: 'text/plain, text/markdown, text/html, application/json',
41
+ ...options?.headers,
42
+ };
43
+ const response = await fetch(identifier, { headers });
44
+ if (!response.ok) {
45
+ this.error(`HTTP error ${response.status}: ${response.statusText}`);
46
+ }
47
+ const contentType = response.headers.get('content-type') || '';
48
+ const content = await response.text();
49
+ // Determine format and convert if needed
50
+ let markdown;
51
+ let format;
52
+ if (this.isMarkdown(identifier, contentType)) {
53
+ markdown = content;
54
+ format = 'markdown';
55
+ }
56
+ else if (contentType.includes('application/json')) {
57
+ markdown = this.jsonToMarkdown(content, url.pathname);
58
+ format = 'json';
59
+ }
60
+ else if (contentType.includes('text/html')) {
61
+ markdown = this.htmlToMarkdown(content);
62
+ format = 'html';
63
+ }
64
+ else {
65
+ // Assume plain text/markdown
66
+ markdown = content;
67
+ format = 'text';
68
+ }
69
+ return {
70
+ content: markdown,
71
+ source: identifier,
72
+ title: this.getTitleFromUrl(url),
73
+ metadata: {
74
+ type: 'url',
75
+ contentType,
76
+ format,
77
+ statusCode: response.status,
78
+ },
79
+ };
80
+ }
81
+ /**
82
+ * Fetch and parse GitHub URLs (issues, blobs, etc.)
83
+ */
84
+ async fetchGitHub(url, githubInfo, options) {
85
+ const headers = {
86
+ 'User-Agent': 'ralph-starter/0.1.0',
87
+ Accept: 'text/html',
88
+ ...options?.headers,
89
+ };
90
+ const response = await fetch(url.toString(), { headers });
91
+ if (!response.ok) {
92
+ this.error(`GitHub HTTP error ${response.status}: ${response.statusText}`);
93
+ }
94
+ const html = await response.text();
95
+ if (githubInfo.type === 'issue' && githubInfo.match) {
96
+ const [, owner, repo, issueNum] = githubInfo.match;
97
+ const issue = parseGitHubIssue(html, parseInt(issueNum, 10));
98
+ return {
99
+ content: issueToMarkdown(issue),
100
+ source: url.toString(),
101
+ title: `${issue.title} (#${issue.number})`,
102
+ metadata: {
103
+ type: 'github',
104
+ format: 'issue',
105
+ owner,
106
+ repo,
107
+ issueNumber: issue.number,
108
+ state: issue.state,
109
+ },
110
+ };
111
+ }
112
+ if (githubInfo.type === 'issues' && githubInfo.match) {
113
+ const [, owner, repo] = githubInfo.match;
114
+ const { issues } = parseGitHubIssueList(html, owner, repo);
115
+ return {
116
+ content: issueListToMarkdown(issues, owner, repo),
117
+ source: url.toString(),
118
+ title: `Issues: ${owner}/${repo}`,
119
+ metadata: {
120
+ type: 'github',
121
+ format: 'issue-list',
122
+ owner,
123
+ repo,
124
+ count: issues.length,
125
+ },
126
+ };
127
+ }
128
+ if (githubInfo.type === 'blob' && githubInfo.match) {
129
+ const [, owner, repo, branch, filepath] = githubInfo.match;
130
+ const file = parseGitHubBlob(html, filepath);
131
+ // For markdown files, just return the content directly
132
+ if (file.language === 'markdown') {
133
+ return {
134
+ content: file.content,
135
+ source: url.toString(),
136
+ title: filepath,
137
+ metadata: {
138
+ type: 'github',
139
+ format: 'file',
140
+ owner,
141
+ repo,
142
+ branch,
143
+ filepath,
144
+ },
145
+ };
146
+ }
147
+ return {
148
+ content: fileToMarkdown(file),
149
+ source: url.toString(),
150
+ title: filepath,
151
+ metadata: {
152
+ type: 'github',
153
+ format: 'file',
154
+ owner,
155
+ repo,
156
+ branch,
157
+ filepath,
158
+ language: file.language,
159
+ },
160
+ };
161
+ }
162
+ // Fallback to basic HTML parsing
163
+ return {
164
+ content: this.htmlToMarkdown(html),
165
+ source: url.toString(),
166
+ title: this.getTitleFromUrl(url),
167
+ metadata: {
168
+ type: 'github',
169
+ format: 'html',
170
+ },
171
+ };
172
+ }
173
+ /**
174
+ * Check if URL is a Notion public page
175
+ */
176
+ isNotionUrl(url) {
177
+ return (url.hostname === 'notion.so' ||
178
+ url.hostname === 'www.notion.so' ||
179
+ url.hostname.endsWith('.notion.site'));
180
+ }
181
+ /**
182
+ * Fetch and parse Notion public pages
183
+ */
184
+ async fetchNotion(url, options) {
185
+ const headers = {
186
+ 'User-Agent': 'ralph-starter/0.1.0',
187
+ Accept: 'text/html',
188
+ ...options?.headers,
189
+ };
190
+ const response = await fetch(url.toString(), { headers });
191
+ if (!response.ok) {
192
+ this.error(`Notion HTTP error ${response.status}: ${response.statusText}`);
193
+ }
194
+ const html = await response.text();
195
+ // Extract title from Notion page
196
+ const titleMatch = html.match(/<title[^>]*>(.*?)<\/title>/i);
197
+ let title = titleMatch ? titleMatch[1].trim() : 'Notion Page';
198
+ // Clean up Notion title (remove " | Notion" suffix)
199
+ title = title.replace(/\s*\|\s*Notion\s*$/i, '').trim();
200
+ // Notion renders content client-side, so we get limited content from HTML
201
+ // Look for the page content in the HTML
202
+ const content = this.parseNotionHtml(html);
203
+ return {
204
+ content,
205
+ source: url.toString(),
206
+ title,
207
+ metadata: {
208
+ type: 'notion',
209
+ format: 'public-page',
210
+ },
211
+ };
212
+ }
213
+ /**
214
+ * Parse Notion public page HTML
215
+ * Note: Notion uses client-side rendering, so public pages have limited HTML content
216
+ */
217
+ parseNotionHtml(html) {
218
+ // Extract title
219
+ const titleMatch = html.match(/<title[^>]*>(.*?)<\/title>/i);
220
+ let title = titleMatch ? titleMatch[1].trim() : 'Notion Page';
221
+ title = title.replace(/\s*\|\s*Notion\s*$/i, '').trim();
222
+ const lines = [`# ${title}`, ''];
223
+ // Try to extract content from notion-page-content or similar
224
+ // Notion SSR includes some content in data attributes
225
+ // Look for preloaded content in __NEXT_DATA__ or similar
226
+ const nextDataMatch = html.match(/<script id="__NEXT_DATA__"[^>]*>([\s\S]*?)<\/script>/);
227
+ if (nextDataMatch) {
228
+ try {
229
+ const data = JSON.parse(nextDataMatch[1]);
230
+ // Navigate to page content if available
231
+ const pageContent = this.extractNotionContent(data);
232
+ if (pageContent) {
233
+ lines.push(pageContent);
234
+ }
235
+ }
236
+ catch {
237
+ // Failed to parse JSON
238
+ }
239
+ }
240
+ // Fallback: extract any visible text content
241
+ if (lines.length <= 2) {
242
+ // Remove scripts and styles
243
+ let content = html;
244
+ content = content.replace(/<script[^>]*>[\s\S]*?<\/script>/gi, '');
245
+ content = content.replace(/<style[^>]*>[\s\S]*?<\/style>/gi, '');
246
+ // Try to find main content area
247
+ const mainMatch = content.match(/<main[^>]*>([\s\S]*?)<\/main>/i);
248
+ if (mainMatch) {
249
+ lines.push(this.toMarkdown(mainMatch[1], 'html'));
250
+ }
251
+ }
252
+ // Add note about limitations
253
+ if (lines.length <= 2) {
254
+ lines.push('*Note: Notion pages are rendered client-side. For full content, use the Notion API integration.*');
255
+ lines.push('');
256
+ lines.push('Run `ralph-starter config set notion.token <your-token>` to enable full Notion support.');
257
+ }
258
+ return lines.join('\n');
259
+ }
260
+ /**
261
+ * Extract content from Notion's preloaded data
262
+ */
263
+ extractNotionContent(data) {
264
+ // This is a simplified extraction - Notion's data structure is complex
265
+ // In practice, most useful content requires the API
266
+ try {
267
+ const props = data?.props;
268
+ const pageProps = props?.pageProps;
269
+ if (pageProps?.recordMap) {
270
+ // There's page content, but it's in Notion's block format
271
+ // Would need full Notion block parsing to extract
272
+ return '*This page has content that requires Notion API access to fully render.*';
273
+ }
274
+ }
275
+ catch {
276
+ // Failed to navigate data structure
277
+ }
278
+ return null;
279
+ }
280
+ isMarkdown(url, contentType) {
281
+ const mdExtensions = ['.md', '.markdown', '.mdown', '.mkd'];
282
+ const lowerUrl = url.toLowerCase();
283
+ // Check URL extension
284
+ if (mdExtensions.some((ext) => lowerUrl.endsWith(ext))) {
285
+ return true;
286
+ }
287
+ // Check content type
288
+ if (contentType.includes('text/markdown') || contentType.includes('text/x-markdown')) {
289
+ return true;
290
+ }
291
+ // Check for raw GitHub URLs
292
+ if (lowerUrl.includes('raw.githubusercontent.com')) {
293
+ return true;
294
+ }
295
+ return false;
296
+ }
297
+ jsonToMarkdown(content, pathname) {
298
+ try {
299
+ const obj = JSON.parse(content);
300
+ const name = pathname.split('/').pop() || 'data';
301
+ // Try to extract meaningful content
302
+ if (Array.isArray(obj)) {
303
+ return this.arrayToMarkdown(obj, name);
304
+ }
305
+ if (typeof obj === 'object') {
306
+ return this.objectToMarkdown(obj, name);
307
+ }
308
+ return `# ${name}\n\n\`\`\`json\n${JSON.stringify(obj, null, 2)}\n\`\`\``;
309
+ }
310
+ catch {
311
+ return `\`\`\`json\n${content}\n\`\`\``;
312
+ }
313
+ }
314
+ arrayToMarkdown(arr, name) {
315
+ const lines = [`# ${name}`, ''];
316
+ for (const item of arr.slice(0, 50)) {
317
+ if (typeof item === 'object' && item !== null) {
318
+ const obj = item;
319
+ const title = obj.title || obj.name || obj.summary || 'Item';
320
+ const desc = obj.description || obj.body || obj.content || '';
321
+ lines.push(`## ${title}`);
322
+ if (desc) {
323
+ lines.push('', String(desc));
324
+ }
325
+ lines.push('');
326
+ }
327
+ else {
328
+ lines.push(`- ${item}`);
329
+ }
330
+ }
331
+ return lines.join('\n');
332
+ }
333
+ objectToMarkdown(obj, name) {
334
+ const lines = [`# ${name}`, ''];
335
+ // Try to find main content fields
336
+ const contentFields = ['description', 'body', 'content', 'text', 'readme'];
337
+ const titleFields = ['title', 'name', 'summary'];
338
+ let title = name;
339
+ for (const field of titleFields) {
340
+ if (obj[field] && typeof obj[field] === 'string') {
341
+ title = String(obj[field]);
342
+ break;
343
+ }
344
+ }
345
+ lines[0] = `# ${title}`;
346
+ for (const field of contentFields) {
347
+ if (obj[field] && typeof obj[field] === 'string') {
348
+ lines.push(String(obj[field]), '');
349
+ }
350
+ }
351
+ // Add other fields as details
352
+ const otherFields = Object.entries(obj).filter(([k]) => !contentFields.includes(k) && !titleFields.includes(k));
353
+ if (otherFields.length > 0) {
354
+ lines.push('## Details', '');
355
+ for (const [key, value] of otherFields) {
356
+ if (typeof value === 'string' || typeof value === 'number') {
357
+ lines.push(`- **${key}**: ${value}`);
358
+ }
359
+ }
360
+ }
361
+ return lines.join('\n');
362
+ }
363
+ htmlToMarkdown(html) {
364
+ // Extract title
365
+ const titleMatch = html.match(/<title[^>]*>(.*?)<\/title>/i);
366
+ const title = titleMatch ? titleMatch[1].trim() : 'Document';
367
+ // Try to find main content
368
+ let content = html;
369
+ // Remove script and style tags
370
+ content = content.replace(/<script[^>]*>[\s\S]*?<\/script>/gi, '');
371
+ content = content.replace(/<style[^>]*>[\s\S]*?<\/style>/gi, '');
372
+ // Try to find article or main content
373
+ const articleMatch = content.match(/<article[^>]*>([\s\S]*?)<\/article>/i);
374
+ const mainMatch = content.match(/<main[^>]*>([\s\S]*?)<\/main>/i);
375
+ const bodyMatch = content.match(/<body[^>]*>([\s\S]*?)<\/body>/i);
376
+ content = articleMatch?.[1] || mainMatch?.[1] || bodyMatch?.[1] || content;
377
+ // Convert common HTML to markdown
378
+ const markdown = this.toMarkdown(content, 'html');
379
+ return `# ${title}\n\n${markdown}`;
380
+ }
381
+ getTitleFromUrl(url) {
382
+ // Try to get a meaningful title from the URL
383
+ const pathname = url.pathname;
384
+ const segments = pathname.split('/').filter(Boolean);
385
+ if (segments.length === 0) {
386
+ return url.hostname;
387
+ }
388
+ // Get the last segment and clean it up
389
+ const lastSegment = segments[segments.length - 1];
390
+ return lastSegment
391
+ .replace(/\.(md|markdown|html|json)$/i, '')
392
+ .replace(/[-_]/g, ' ')
393
+ .replace(/\b\w/g, (c) => c.toUpperCase());
394
+ }
395
+ getHelp() {
396
+ return `
397
+ url: Fetch specs from remote URLs
398
+
399
+ Usage:
400
+ ralph-starter run --from https://example.com/spec.md
401
+ ralph-starter run --from <url>
402
+
403
+ Examples:
404
+ # Raw markdown files
405
+ ralph-starter run --from https://raw.githubusercontent.com/user/repo/main/SPEC.md
406
+
407
+ # GitHub issues (no auth required for public repos!)
408
+ ralph-starter run --from https://github.com/owner/repo/issues/123
409
+ ralph-starter run --from https://github.com/owner/repo/issues
410
+
411
+ # GitHub files
412
+ ralph-starter run --from https://github.com/owner/repo/blob/main/README.md
413
+
414
+ # Notion public pages
415
+ ralph-starter run --from https://notion.so/My-Public-Page-abc123
416
+
417
+ # Any web page or API
418
+ ralph-starter run --from https://api.example.com/project/spec
419
+
420
+ Supported formats:
421
+ - Markdown files
422
+ - GitHub issues and files (specialized parsing)
423
+ - Notion public pages (limited - use API for full support)
424
+ - JSON responses (converted to markdown)
425
+ - HTML pages (content extraction)
426
+ `.trim();
427
+ }
428
+ }
429
+ //# sourceMappingURL=url.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url.js","sourceRoot":"","sources":["../../../src/sources/builtin/url.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ import type { SourceConfig, SourceCredentials, SourceOptions, SourcesConfig } from './types.js';
2
+ /**
3
+ * Get the environment variable name for a source credential
4
+ */
5
+ export declare function getEnvVarName(sourceName: string, key: string): string | null;
6
+ /**
7
+ * Get all environment variable names for credentials
8
+ */
9
+ export declare function getAllEnvVarMappings(): Record<string, Record<string, string>>;
10
+ /**
11
+ * Read sources configuration
12
+ */
13
+ export declare function readSourcesConfig(): SourcesConfig;
14
+ /**
15
+ * Write sources configuration
16
+ */
17
+ export declare function writeSourcesConfig(config: SourcesConfig): void;
18
+ /**
19
+ * Get configuration for a specific source
20
+ */
21
+ export declare function getSourceConfig(sourceName: string): SourceConfig | null;
22
+ /**
23
+ * Set configuration for a specific source
24
+ */
25
+ export declare function setSourceConfig(sourceName: string, sourceConfig: SourceConfig): void;
26
+ /**
27
+ * Get credentials for a specific source
28
+ * Priority: Environment variables > Config file
29
+ */
30
+ export declare function getSourceCredentials(sourceName: string): SourceCredentials | null;
31
+ /**
32
+ * Check if credentials came from environment variables
33
+ */
34
+ export declare function isCredentialFromEnv(sourceName: string, key: string): boolean;
35
+ /**
36
+ * Set a credential for a specific source
37
+ */
38
+ export declare function setSourceCredential(sourceName: string, key: string, value: string): void;
39
+ /**
40
+ * Delete a credential for a specific source
41
+ */
42
+ export declare function deleteSourceCredential(sourceName: string, key: string): boolean;
43
+ /**
44
+ * Get default options for a specific source
45
+ */
46
+ export declare function getSourceDefaults(sourceName: string): SourceOptions | null;
47
+ /**
48
+ * Set default options for a specific source
49
+ */
50
+ export declare function setSourceDefaults(sourceName: string, defaults: SourceOptions): void;
51
+ /**
52
+ * Check if a source is enabled
53
+ * Sources are enabled by default unless explicitly disabled
54
+ */
55
+ export declare function isSourceEnabled(sourceName: string): boolean;
56
+ /**
57
+ * Enable or disable a source
58
+ */
59
+ export declare function setSourceEnabled(sourceName: string, enabled: boolean): void;
60
+ /**
61
+ * List all configured sources
62
+ */
63
+ export declare function listConfiguredSources(): string[];
64
+ /**
65
+ * Delete all configuration for a source
66
+ */
67
+ export declare function deleteSourceConfig(sourceName: string): boolean;
68
+ /**
69
+ * Get the config file path (for display purposes)
70
+ */
71
+ export declare function getSourcesConfigPath(): string;
72
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/sources/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAqChG;;GAEG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAE5E;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAE7E;AAWD;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,aAAa,CAajD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAG9D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAGvE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,GAAG,IAAI,CAOpF;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAWjF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAG5E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAaxF;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAqB/E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAG1E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI,CAanF;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAG3D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAS3E;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,CAGhD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAU9D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C"}