docorbit 0.1.0 → 0.1.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 (402) hide show
  1. package/bin/docorbit.js +2 -2
  2. package/dist/apps/cli/src/commands/add.d.ts +7 -0
  3. package/dist/apps/cli/src/commands/add.js +35 -0
  4. package/dist/apps/cli/src/commands/api.d.ts +2 -0
  5. package/dist/apps/cli/src/commands/api.js +35 -0
  6. package/dist/apps/cli/src/commands/context.d.ts +10 -0
  7. package/dist/apps/cli/src/commands/context.js +36 -0
  8. package/dist/apps/cli/src/commands/dashboard.d.ts +8 -0
  9. package/dist/apps/cli/src/commands/dashboard.js +43 -0
  10. package/dist/apps/cli/src/commands/diff.d.ts +2 -0
  11. package/dist/apps/cli/src/commands/diff.js +29 -0
  12. package/dist/apps/cli/src/commands/evaluate.d.ts +11 -0
  13. package/dist/apps/cli/src/commands/evaluate.js +101 -0
  14. package/dist/apps/cli/src/commands/examples.d.ts +2 -0
  15. package/dist/apps/cli/src/commands/examples.js +36 -0
  16. package/dist/apps/cli/src/commands/export.d.ts +11 -0
  17. package/dist/apps/cli/src/commands/export.js +72 -0
  18. package/dist/apps/cli/src/commands/impact.d.ts +2 -0
  19. package/dist/apps/cli/src/commands/impact.js +30 -0
  20. package/dist/apps/cli/src/commands/init.d.ts +5 -0
  21. package/dist/apps/cli/src/commands/init.js +52 -0
  22. package/dist/apps/cli/src/commands/inspect.d.ts +5 -0
  23. package/dist/apps/cli/src/commands/inspect.js +24 -0
  24. package/dist/apps/cli/src/commands/mcp.d.ts +8 -0
  25. package/dist/apps/cli/src/commands/mcp.js +49 -0
  26. package/dist/apps/cli/src/commands/pitfalls.d.ts +2 -0
  27. package/dist/apps/cli/src/commands/pitfalls.js +35 -0
  28. package/dist/apps/cli/src/commands/recipes.d.ts +2 -0
  29. package/dist/apps/cli/src/commands/recipes.js +33 -0
  30. package/dist/apps/cli/src/commands/search.d.ts +11 -0
  31. package/dist/apps/cli/src/commands/search.js +36 -0
  32. package/dist/apps/cli/src/commands/update.d.ts +6 -0
  33. package/dist/apps/cli/src/commands/update.js +53 -0
  34. package/dist/apps/cli/src/commands/verify.d.ts +2 -0
  35. package/dist/apps/cli/src/commands/verify.js +44 -0
  36. package/dist/apps/cli/src/formatters/colors.d.ts +21 -0
  37. package/dist/apps/cli/src/formatters/colors.js +22 -0
  38. package/dist/apps/cli/src/formatters/inspection.d.ts +3 -0
  39. package/dist/apps/cli/src/formatters/inspection.js +88 -0
  40. package/dist/apps/cli/src/formatters/knowledge.d.ts +5 -0
  41. package/dist/apps/cli/src/formatters/knowledge.js +229 -0
  42. package/dist/apps/cli/src/formatters/retrieval.d.ts +3 -0
  43. package/dist/apps/cli/src/formatters/retrieval.js +61 -0
  44. package/{apps/cli/src/formatters/terminal.ts → dist/apps/cli/src/formatters/terminal.d.ts} +0 -1
  45. package/dist/apps/cli/src/formatters/terminal.js +5 -0
  46. package/dist/apps/cli/src/formatters/verification.d.ts +4 -0
  47. package/dist/apps/cli/src/formatters/verification.js +102 -0
  48. package/dist/apps/cli/src/index.d.ts +1 -0
  49. package/dist/apps/cli/src/index.js +376 -0
  50. package/dist/packages/core/src/dashboard/server.d.ts +33 -0
  51. package/dist/packages/core/src/dashboard/server.js +267 -0
  52. package/dist/packages/core/src/dashboard/ui.d.ts +5 -0
  53. package/{packages/core/src/dashboard/ui.ts → dist/packages/core/src/dashboard/ui.js} +2 -2
  54. package/dist/packages/core/src/implementation-service.d.ts +73 -0
  55. package/dist/packages/core/src/implementation-service.js +325 -0
  56. package/{packages/core/src/index.ts → dist/packages/core/src/index.d.ts} +0 -1
  57. package/dist/packages/core/src/index.js +6 -0
  58. package/dist/packages/core/src/inspector.d.ts +22 -0
  59. package/dist/packages/core/src/inspector.js +38 -0
  60. package/dist/packages/core/src/pipeline.d.ts +45 -0
  61. package/dist/packages/core/src/pipeline.js +246 -0
  62. package/dist/packages/crawler/src/config.d.ts +2 -0
  63. package/dist/packages/crawler/src/config.js +10 -0
  64. package/dist/packages/crawler/src/fetcher.d.ts +31 -0
  65. package/dist/packages/crawler/src/fetcher.js +139 -0
  66. package/dist/packages/crawler/src/index.js +2 -0
  67. package/dist/packages/discovery/src/index.d.ts +11 -0
  68. package/dist/packages/discovery/src/index.js +29 -0
  69. package/dist/packages/discovery/src/provider.d.ts +12 -0
  70. package/dist/packages/discovery/src/provider.js +30 -0
  71. package/dist/packages/discovery/src/providers/generic.d.ts +7 -0
  72. package/dist/packages/discovery/src/providers/generic.js +94 -0
  73. package/dist/packages/discovery/src/providers/github.d.ts +7 -0
  74. package/dist/packages/discovery/src/providers/github.js +52 -0
  75. package/dist/packages/discovery/src/providers/llms-txt.d.ts +7 -0
  76. package/dist/packages/discovery/src/providers/llms-txt.js +60 -0
  77. package/dist/packages/discovery/src/providers/markdown.d.ts +7 -0
  78. package/dist/packages/discovery/src/providers/markdown.js +38 -0
  79. package/dist/packages/discovery/src/providers/openapi.d.ts +7 -0
  80. package/dist/packages/discovery/src/providers/openapi.js +77 -0
  81. package/dist/packages/discovery/src/providers/sitemap.d.ts +7 -0
  82. package/dist/packages/discovery/src/providers/sitemap.js +53 -0
  83. package/dist/packages/discovery/src/providers/skill.d.ts +7 -0
  84. package/dist/packages/discovery/src/providers/skill.js +46 -0
  85. package/dist/packages/discovery/src/ranker.d.ts +6 -0
  86. package/dist/packages/discovery/src/ranker.js +107 -0
  87. package/dist/packages/evaluation/src/dataset.d.ts +2 -0
  88. package/dist/packages/evaluation/src/dataset.js +944 -0
  89. package/dist/packages/evaluation/src/index.js +8 -0
  90. package/dist/packages/evaluation/src/runner.d.ts +7 -0
  91. package/dist/packages/evaluation/src/runner.js +196 -0
  92. package/dist/packages/evaluation/src/strategies/context7-runner.d.ts +24 -0
  93. package/dist/packages/evaluation/src/strategies/context7-runner.js +229 -0
  94. package/dist/packages/evaluation/src/strategies/docorbit-runner.d.ts +5 -0
  95. package/dist/packages/evaluation/src/strategies/docorbit-runner.js +210 -0
  96. package/dist/packages/evaluation/src/strategies/firecrawl-runner.d.ts +24 -0
  97. package/dist/packages/evaluation/src/strategies/firecrawl-runner.js +151 -0
  98. package/dist/packages/evaluation/src/strategies/web-search-runner.d.ts +32 -0
  99. package/dist/packages/evaluation/src/strategies/web-search-runner.js +161 -0
  100. package/dist/packages/evaluation/src/types.d.ts +15 -0
  101. package/dist/packages/evaluation/src/types.js +1 -0
  102. package/dist/packages/evaluation/src/version-matcher.d.ts +11 -0
  103. package/dist/packages/evaluation/src/version-matcher.js +61 -0
  104. package/dist/packages/export/src/agents-md.d.ts +19 -0
  105. package/dist/packages/export/src/agents-md.js +170 -0
  106. package/dist/packages/export/src/claude-md.d.ts +17 -0
  107. package/dist/packages/export/src/claude-md.js +118 -0
  108. package/dist/packages/export/src/docs-map.d.ts +14 -0
  109. package/dist/packages/export/src/docs-map.js +118 -0
  110. package/dist/packages/export/src/index.js +6 -0
  111. package/dist/packages/export/src/llms-txt.d.ts +15 -0
  112. package/dist/packages/export/src/llms-txt.js +73 -0
  113. package/dist/packages/export/src/service.d.ts +23 -0
  114. package/dist/packages/export/src/service.js +210 -0
  115. package/dist/packages/export/src/skill-md.d.ts +14 -0
  116. package/dist/packages/export/src/skill-md.js +107 -0
  117. package/{packages/mcp/src/index.ts → dist/packages/mcp/src/index.d.ts} +2 -35
  118. package/dist/packages/mcp/src/index.js +6 -0
  119. package/dist/packages/mcp/src/resources/index.d.ts +12 -0
  120. package/dist/packages/mcp/src/resources/index.js +165 -0
  121. package/dist/packages/mcp/src/server.d.ts +30 -0
  122. package/dist/packages/mcp/src/server.js +243 -0
  123. package/dist/packages/mcp/src/tools/analyze-impact.d.ts +6 -0
  124. package/dist/packages/mcp/src/tools/analyze-impact.js +64 -0
  125. package/dist/packages/mcp/src/tools/check-api.d.ts +6 -0
  126. package/dist/packages/mcp/src/tools/check-api.js +74 -0
  127. package/dist/packages/mcp/src/tools/diff-docs.d.ts +6 -0
  128. package/dist/packages/mcp/src/tools/diff-docs.js +58 -0
  129. package/dist/packages/mcp/src/tools/export-context.d.ts +6 -0
  130. package/dist/packages/mcp/src/tools/export-context.js +61 -0
  131. package/dist/packages/mcp/src/tools/find-api.d.ts +6 -0
  132. package/dist/packages/mcp/src/tools/find-api.js +91 -0
  133. package/dist/packages/mcp/src/tools/find-example.d.ts +6 -0
  134. package/dist/packages/mcp/src/tools/find-example.js +92 -0
  135. package/dist/packages/mcp/src/tools/find-pitfall.d.ts +6 -0
  136. package/dist/packages/mcp/src/tools/find-pitfall.js +85 -0
  137. package/dist/packages/mcp/src/tools/find-recipe.d.ts +6 -0
  138. package/dist/packages/mcp/src/tools/find-recipe.js +89 -0
  139. package/dist/packages/mcp/src/tools/get-doc.d.ts +6 -0
  140. package/dist/packages/mcp/src/tools/get-doc.js +118 -0
  141. package/dist/packages/mcp/src/tools/get-docs-map.d.ts +6 -0
  142. package/dist/packages/mcp/src/tools/get-docs-map.js +54 -0
  143. package/dist/packages/mcp/src/tools/get-version.d.ts +6 -0
  144. package/dist/packages/mcp/src/tools/get-version.js +104 -0
  145. package/dist/packages/mcp/src/tools/implementation-context.d.ts +6 -0
  146. package/dist/packages/mcp/src/tools/implementation-context.js +82 -0
  147. package/dist/packages/mcp/src/tools/index.d.ts +18 -0
  148. package/dist/packages/mcp/src/tools/index.js +39 -0
  149. package/dist/packages/mcp/src/tools/list-sources.d.ts +6 -0
  150. package/dist/packages/mcp/src/tools/list-sources.js +76 -0
  151. package/dist/packages/mcp/src/tools/search-docs.d.ts +6 -0
  152. package/dist/packages/mcp/src/tools/search-docs.js +113 -0
  153. package/dist/packages/mcp/src/tools/types.d.ts +22 -0
  154. package/dist/packages/mcp/src/tools/types.js +1 -0
  155. package/dist/packages/mcp/src/transports/http.d.ts +31 -0
  156. package/dist/packages/mcp/src/transports/http.js +215 -0
  157. package/dist/packages/mcp/src/transports/stdio.d.ts +22 -0
  158. package/dist/packages/mcp/src/transports/stdio.js +86 -0
  159. package/{packages/mcp/src/transports/types.ts → dist/packages/mcp/src/transports/types.d.ts} +2 -3
  160. package/dist/packages/mcp/src/transports/types.js +1 -0
  161. package/dist/packages/mcp/src/types.d.ts +89 -0
  162. package/dist/packages/mcp/src/types.js +7 -0
  163. package/dist/packages/normalizer/src/example-indexer.d.ts +5 -0
  164. package/dist/packages/normalizer/src/example-indexer.js +200 -0
  165. package/dist/packages/normalizer/src/html.d.ts +13 -0
  166. package/dist/packages/normalizer/src/html.js +221 -0
  167. package/{packages/normalizer/src/index.ts → dist/packages/normalizer/src/index.d.ts} +0 -1
  168. package/dist/packages/normalizer/src/index.js +7 -0
  169. package/dist/packages/normalizer/src/llms.d.ts +3 -0
  170. package/dist/packages/normalizer/src/llms.js +71 -0
  171. package/dist/packages/normalizer/src/openapi/endpoint-parser.d.ts +11 -0
  172. package/dist/packages/normalizer/src/openapi/endpoint-parser.js +357 -0
  173. package/dist/packages/normalizer/src/openapi/schema-resolver.d.ts +10 -0
  174. package/dist/packages/normalizer/src/openapi/schema-resolver.js +82 -0
  175. package/dist/packages/normalizer/src/openapi.js +2 -0
  176. package/dist/packages/normalizer/src/page.d.ts +13 -0
  177. package/dist/packages/normalizer/src/page.js +150 -0
  178. package/dist/packages/normalizer/src/pitfall-extractor.d.ts +6 -0
  179. package/dist/packages/normalizer/src/pitfall-extractor.js +153 -0
  180. package/dist/packages/normalizer/src/slicer.d.ts +30 -0
  181. package/dist/packages/normalizer/src/slicer.js +360 -0
  182. package/dist/packages/retrieval/src/engine.d.ts +17 -0
  183. package/dist/packages/retrieval/src/engine.js +93 -0
  184. package/{packages/retrieval/src/index.ts → dist/packages/retrieval/src/index.d.ts} +0 -1
  185. package/dist/packages/retrieval/src/index.js +6 -0
  186. package/dist/packages/retrieval/src/intent.d.ts +6 -0
  187. package/dist/packages/retrieval/src/intent.js +39 -0
  188. package/dist/packages/retrieval/src/packer.d.ts +2 -0
  189. package/dist/packages/retrieval/src/packer.js +108 -0
  190. package/dist/packages/retrieval/src/recipe-engine.d.ts +18 -0
  191. package/dist/packages/retrieval/src/recipe-engine.js +265 -0
  192. package/dist/packages/retrieval/src/scorer.d.ts +13 -0
  193. package/dist/packages/retrieval/src/scorer.js +110 -0
  194. package/dist/packages/retrieval/src/weights.d.ts +3 -0
  195. package/dist/packages/retrieval/src/weights.js +28 -0
  196. package/dist/packages/security/src/annotations.d.ts +10 -0
  197. package/dist/packages/security/src/annotations.js +100 -0
  198. package/dist/packages/security/src/index.js +2 -0
  199. package/dist/packages/security/src/ssrf.d.ts +17 -0
  200. package/dist/packages/security/src/ssrf.js +132 -0
  201. package/dist/packages/shared/src/errors.d.ts +22 -0
  202. package/dist/packages/shared/src/errors.js +44 -0
  203. package/dist/packages/shared/src/hashing.d.ts +3 -0
  204. package/dist/packages/shared/src/hashing.js +21 -0
  205. package/dist/packages/shared/src/index.js +3 -0
  206. package/dist/packages/shared/src/types.d.ts +715 -0
  207. package/dist/packages/shared/src/types.js +1 -0
  208. package/dist/packages/storage/src/db.d.ts +10 -0
  209. package/dist/packages/storage/src/db.js +61 -0
  210. package/dist/packages/storage/src/index.js +10 -0
  211. package/dist/packages/storage/src/interfaces.d.ts +83 -0
  212. package/dist/packages/storage/src/interfaces.js +1 -0
  213. package/dist/packages/storage/src/repositories/api-repository.d.ts +16 -0
  214. package/dist/packages/storage/src/repositories/api-repository.js +169 -0
  215. package/dist/packages/storage/src/repositories/chunk-repository.d.ts +32 -0
  216. package/dist/packages/storage/src/repositories/chunk-repository.js +250 -0
  217. package/dist/packages/storage/src/repositories/example-repository.d.ts +16 -0
  218. package/dist/packages/storage/src/repositories/example-repository.js +158 -0
  219. package/dist/packages/storage/src/repositories/page-repository.d.ts +16 -0
  220. package/dist/packages/storage/src/repositories/page-repository.js +161 -0
  221. package/dist/packages/storage/src/repositories/pitfall-repository.d.ts +15 -0
  222. package/dist/packages/storage/src/repositories/pitfall-repository.js +144 -0
  223. package/dist/packages/storage/src/repositories/source-repository.d.ts +33 -0
  224. package/dist/packages/storage/src/repositories/source-repository.js +153 -0
  225. package/dist/packages/storage/src/repository.d.ts +92 -0
  226. package/dist/packages/storage/src/repository.js +157 -0
  227. package/dist/packages/storage/src/schema.d.ts +2 -0
  228. package/{packages/storage/src/schema.ts → dist/packages/storage/src/schema.js} +0 -3
  229. package/dist/packages/storage/src/search-tokens.d.ts +6 -0
  230. package/dist/packages/storage/src/search-tokens.js +26 -0
  231. package/dist/packages/verification/src/diff-engine.d.ts +18 -0
  232. package/dist/packages/verification/src/diff-engine.js +218 -0
  233. package/dist/packages/verification/src/extractor.d.ts +29 -0
  234. package/dist/packages/verification/src/extractor.js +302 -0
  235. package/dist/packages/verification/src/impact-scanner.d.ts +9 -0
  236. package/dist/packages/verification/src/impact-scanner.js +181 -0
  237. package/dist/packages/verification/src/index.js +5 -0
  238. package/dist/packages/verification/src/services.d.ts +55 -0
  239. package/dist/packages/verification/src/services.js +189 -0
  240. package/dist/packages/verification/src/verifier.d.ts +15 -0
  241. package/dist/packages/verification/src/verifier.js +315 -0
  242. package/dist/packages/workspace/src/detector.d.ts +7 -0
  243. package/dist/packages/workspace/src/detector.js +117 -0
  244. package/dist/packages/workspace/src/ecosystems/cargo.d.ts +10 -0
  245. package/dist/packages/workspace/src/ecosystems/cargo.js +69 -0
  246. package/dist/packages/workspace/src/ecosystems/composer.d.ts +7 -0
  247. package/dist/packages/workspace/src/ecosystems/composer.js +40 -0
  248. package/dist/packages/workspace/src/ecosystems/go.d.ts +7 -0
  249. package/dist/packages/workspace/src/ecosystems/go.js +49 -0
  250. package/{packages/workspace/src/ecosystems/index.ts → dist/packages/workspace/src/ecosystems/index.d.ts} +2 -24
  251. package/dist/packages/workspace/src/ecosystems/index.js +21 -0
  252. package/dist/packages/workspace/src/ecosystems/maven.d.ts +7 -0
  253. package/dist/packages/workspace/src/ecosystems/maven.js +28 -0
  254. package/dist/packages/workspace/src/ecosystems/npm.d.ts +10 -0
  255. package/dist/packages/workspace/src/ecosystems/npm.js +73 -0
  256. package/dist/packages/workspace/src/ecosystems/pub.d.ts +7 -0
  257. package/dist/packages/workspace/src/ecosystems/pub.js +34 -0
  258. package/dist/packages/workspace/src/ecosystems/pypi.d.ts +9 -0
  259. package/dist/packages/workspace/src/ecosystems/pypi.js +94 -0
  260. package/dist/packages/workspace/src/ecosystems/rubygems.d.ts +7 -0
  261. package/dist/packages/workspace/src/ecosystems/rubygems.js +25 -0
  262. package/dist/packages/workspace/src/ecosystems/types.d.ts +9 -0
  263. package/dist/packages/workspace/src/ecosystems/types.js +1 -0
  264. package/dist/packages/workspace/src/index.js +5 -0
  265. package/dist/packages/workspace/src/lockfile.d.ts +21 -0
  266. package/dist/packages/workspace/src/lockfile.js +153 -0
  267. package/dist/packages/workspace/src/resolver.d.ts +39 -0
  268. package/dist/packages/workspace/src/resolver.js +164 -0
  269. package/dist/packages/workspace/src/semver.d.ts +33 -0
  270. package/dist/packages/workspace/src/semver.js +235 -0
  271. package/package.json +8 -7
  272. package/apps/cli/bin/docorbit.js +0 -8
  273. package/apps/cli/src/commands/add.ts +0 -44
  274. package/apps/cli/src/commands/api.ts +0 -38
  275. package/apps/cli/src/commands/context.ts +0 -47
  276. package/apps/cli/src/commands/dashboard.ts +0 -55
  277. package/apps/cli/src/commands/diff.ts +0 -30
  278. package/apps/cli/src/commands/evaluate.ts +0 -133
  279. package/apps/cli/src/commands/examples.ts +0 -39
  280. package/apps/cli/src/commands/export.ts +0 -89
  281. package/apps/cli/src/commands/impact.ts +0 -31
  282. package/apps/cli/src/commands/init.ts +0 -69
  283. package/apps/cli/src/commands/inspect.ts +0 -30
  284. package/apps/cli/src/commands/mcp.ts +0 -72
  285. package/apps/cli/src/commands/pitfalls.ts +0 -38
  286. package/apps/cli/src/commands/recipes.ts +0 -35
  287. package/apps/cli/src/commands/search.ts +0 -48
  288. package/apps/cli/src/commands/update.ts +0 -73
  289. package/apps/cli/src/commands/verify.ts +0 -48
  290. package/apps/cli/src/formatters/colors.ts +0 -23
  291. package/apps/cli/src/formatters/inspection.ts +0 -102
  292. package/apps/cli/src/formatters/knowledge.ts +0 -272
  293. package/apps/cli/src/formatters/retrieval.ts +0 -74
  294. package/apps/cli/src/formatters/verification.ts +0 -126
  295. package/apps/cli/src/index.ts +0 -409
  296. package/packages/core/src/dashboard/server.ts +0 -314
  297. package/packages/core/src/implementation-service.ts +0 -451
  298. package/packages/core/src/inspector.ts +0 -71
  299. package/packages/core/src/pipeline.ts +0 -331
  300. package/packages/crawler/src/config.ts +0 -12
  301. package/packages/crawler/src/fetcher.ts +0 -185
  302. package/packages/discovery/src/index.ts +0 -31
  303. package/packages/discovery/src/provider.ts +0 -47
  304. package/packages/discovery/src/providers/generic.ts +0 -98
  305. package/packages/discovery/src/providers/github.ts +0 -61
  306. package/packages/discovery/src/providers/llms-txt.ts +0 -73
  307. package/packages/discovery/src/providers/markdown.ts +0 -48
  308. package/packages/discovery/src/providers/openapi.ts +0 -91
  309. package/packages/discovery/src/providers/sitemap.ts +0 -62
  310. package/packages/discovery/src/providers/skill.ts +0 -54
  311. package/packages/discovery/src/ranker.ts +0 -123
  312. package/packages/evaluation/src/dataset.ts +0 -963
  313. package/packages/evaluation/src/runner.ts +0 -241
  314. package/packages/evaluation/src/strategies/context7-runner.ts +0 -269
  315. package/packages/evaluation/src/strategies/docorbit-runner.ts +0 -228
  316. package/packages/evaluation/src/strategies/firecrawl-runner.ts +0 -172
  317. package/packages/evaluation/src/strategies/web-search-runner.ts +0 -194
  318. package/packages/evaluation/src/types.ts +0 -34
  319. package/packages/evaluation/src/version-matcher.ts +0 -73
  320. package/packages/export/src/agents-md.ts +0 -200
  321. package/packages/export/src/claude-md.ts +0 -141
  322. package/packages/export/src/docs-map.ts +0 -150
  323. package/packages/export/src/llms-txt.ts +0 -96
  324. package/packages/export/src/service.ts +0 -250
  325. package/packages/export/src/skill-md.ts +0 -128
  326. package/packages/mcp/src/resources/index.ts +0 -189
  327. package/packages/mcp/src/server.ts +0 -278
  328. package/packages/mcp/src/tools/analyze-impact.ts +0 -74
  329. package/packages/mcp/src/tools/check-api.ts +0 -86
  330. package/packages/mcp/src/tools/diff-docs.ts +0 -68
  331. package/packages/mcp/src/tools/export-context.ts +0 -73
  332. package/packages/mcp/src/tools/find-api.ts +0 -99
  333. package/packages/mcp/src/tools/find-example.ts +0 -100
  334. package/packages/mcp/src/tools/find-pitfall.ts +0 -94
  335. package/packages/mcp/src/tools/find-recipe.ts +0 -98
  336. package/packages/mcp/src/tools/get-doc.ts +0 -130
  337. package/packages/mcp/src/tools/get-docs-map.ts +0 -64
  338. package/packages/mcp/src/tools/get-version.ts +0 -118
  339. package/packages/mcp/src/tools/implementation-context.ts +0 -88
  340. package/packages/mcp/src/tools/index.ts +0 -59
  341. package/packages/mcp/src/tools/list-sources.ts +0 -85
  342. package/packages/mcp/src/tools/search-docs.ts +0 -123
  343. package/packages/mcp/src/tools/types.ts +0 -28
  344. package/packages/mcp/src/transports/http.ts +0 -256
  345. package/packages/mcp/src/transports/stdio.ts +0 -105
  346. package/packages/mcp/src/types.ts +0 -102
  347. package/packages/normalizer/src/example-indexer.ts +0 -240
  348. package/packages/normalizer/src/html.ts +0 -253
  349. package/packages/normalizer/src/llms.ts +0 -83
  350. package/packages/normalizer/src/openapi/endpoint-parser.ts +0 -406
  351. package/packages/normalizer/src/openapi/schema-resolver.ts +0 -111
  352. package/packages/normalizer/src/page.ts +0 -184
  353. package/packages/normalizer/src/pitfall-extractor.ts +0 -190
  354. package/packages/normalizer/src/slicer.ts +0 -455
  355. package/packages/retrieval/src/engine.ts +0 -120
  356. package/packages/retrieval/src/intent.ts +0 -43
  357. package/packages/retrieval/src/packer.ts +0 -145
  358. package/packages/retrieval/src/recipe-engine.ts +0 -313
  359. package/packages/retrieval/src/scorer.ts +0 -139
  360. package/packages/retrieval/src/weights.ts +0 -31
  361. package/packages/security/src/annotations.ts +0 -112
  362. package/packages/security/src/ssrf.ts +0 -153
  363. package/packages/shared/src/errors.ts +0 -53
  364. package/packages/shared/src/hashing.ts +0 -23
  365. package/packages/shared/src/types.ts +0 -881
  366. package/packages/storage/src/db.ts +0 -72
  367. package/packages/storage/src/interfaces.ts +0 -115
  368. package/packages/storage/src/repositories/api-repository.ts +0 -219
  369. package/packages/storage/src/repositories/chunk-repository.ts +0 -316
  370. package/packages/storage/src/repositories/example-repository.ts +0 -206
  371. package/packages/storage/src/repositories/page-repository.ts +0 -205
  372. package/packages/storage/src/repositories/pitfall-repository.ts +0 -188
  373. package/packages/storage/src/repositories/source-repository.ts +0 -205
  374. package/packages/storage/src/repository.ts +0 -256
  375. package/packages/storage/src/search-tokens.ts +0 -28
  376. package/packages/verification/src/diff-engine.ts +0 -258
  377. package/packages/verification/src/extractor.ts +0 -339
  378. package/packages/verification/src/impact-scanner.ts +0 -203
  379. package/packages/verification/src/services.ts +0 -238
  380. package/packages/verification/src/verifier.ts +0 -375
  381. package/packages/workspace/src/detector.ts +0 -143
  382. package/packages/workspace/src/ecosystems/cargo.ts +0 -84
  383. package/packages/workspace/src/ecosystems/composer.ts +0 -42
  384. package/packages/workspace/src/ecosystems/go.ts +0 -54
  385. package/packages/workspace/src/ecosystems/maven.ts +0 -34
  386. package/packages/workspace/src/ecosystems/npm.ts +0 -83
  387. package/packages/workspace/src/ecosystems/pub.ts +0 -40
  388. package/packages/workspace/src/ecosystems/pypi.ts +0 -100
  389. package/packages/workspace/src/ecosystems/rubygems.ts +0 -30
  390. package/packages/workspace/src/ecosystems/types.ts +0 -18
  391. package/packages/workspace/src/lockfile.ts +0 -194
  392. package/packages/workspace/src/resolver.ts +0 -234
  393. package/packages/workspace/src/semver.ts +0 -259
  394. /package/{packages/crawler/src/index.ts → dist/packages/crawler/src/index.d.ts} +0 -0
  395. /package/{packages/evaluation/src/index.ts → dist/packages/evaluation/src/index.d.ts} +0 -0
  396. /package/{packages/export/src/index.ts → dist/packages/export/src/index.d.ts} +0 -0
  397. /package/{packages/normalizer/src/openapi.ts → dist/packages/normalizer/src/openapi.d.ts} +0 -0
  398. /package/{packages/security/src/index.ts → dist/packages/security/src/index.d.ts} +0 -0
  399. /package/{packages/shared/src/index.ts → dist/packages/shared/src/index.d.ts} +0 -0
  400. /package/{packages/storage/src/index.ts → dist/packages/storage/src/index.d.ts} +0 -0
  401. /package/{packages/verification/src/index.ts → dist/packages/verification/src/index.d.ts} +0 -0
  402. /package/{packages/workspace/src/index.ts → dist/packages/workspace/src/index.d.ts} +0 -0
@@ -1,143 +0,0 @@
1
- import { readFileSync, readdirSync } from 'node:fs';
2
- import { join, relative } from 'node:path';
3
- import type {
4
- Ecosystem,
5
- ProjectDependency,
6
- WorkspaceScanResult,
7
- } from '../../shared/src/index.ts';
8
- import {
9
- type EcosystemStrategy,
10
- getDefaultStrategies,
11
- } from './ecosystems/index.ts';
12
-
13
- const IGNORED_DIRS = new Set([
14
- 'node_modules',
15
- '.git',
16
- '.docorbit',
17
- 'dist',
18
- 'build',
19
- 'target',
20
- 'vendor',
21
- '.venv',
22
- 'venv',
23
- '.next',
24
- '.turbo',
25
- ]);
26
-
27
- /**
28
- * Recursively locates files in a directory up to a max depth, skipping ignored folders.
29
- */
30
- function findManifestFiles(
31
- dir: string,
32
- targetFileNames: Set<string>,
33
- maxDepth: number = 4,
34
- currentDepth: number = 0
35
- ): string[] {
36
- if (currentDepth > maxDepth) return [];
37
- const results: string[] = [];
38
-
39
- try {
40
- const entries = readdirSync(dir, { withFileTypes: true });
41
- for (const entry of entries) {
42
- if (IGNORED_DIRS.has(entry.name)) continue;
43
-
44
- const fullPath = join(dir, entry.name);
45
- if (entry.isDirectory()) {
46
- results.push(...findManifestFiles(fullPath, targetFileNames, maxDepth, currentDepth + 1));
47
- } else if (entry.isFile()) {
48
- const name = entry.name.toLowerCase();
49
- if (targetFileNames.has(name)) {
50
- results.push(fullPath);
51
- }
52
- }
53
- }
54
- } catch {
55
- // Directory unreadable, ignore
56
- }
57
-
58
- return results;
59
- }
60
-
61
- /**
62
- * Scans a workspace directory, detects package manifests across supported ecosystems,
63
- * correlates lockfiles with resolved versions, and preserves monorepo boundaries.
64
- */
65
- export function detectWorkspaceDependencies(
66
- workspaceDir: string,
67
- strategies: EcosystemStrategy[] = getDefaultStrategies()
68
- ): WorkspaceScanResult {
69
- // Index strategies by manifest and lockfile names
70
- const manifestMap = new Map<string, EcosystemStrategy>();
71
- const lockfileMap = new Map<string, EcosystemStrategy>();
72
- const allTargetNames = new Set<string>();
73
-
74
- for (const strat of strategies) {
75
- for (const mName of strat.manifestNames) {
76
- const lower = mName.toLowerCase();
77
- manifestMap.set(lower, strat);
78
- allTargetNames.add(lower);
79
- }
80
- if (strat.lockfileNames) {
81
- for (const lName of strat.lockfileNames) {
82
- const lower = lName.toLowerCase();
83
- lockfileMap.set(lower, strat);
84
- allTargetNames.add(lower);
85
- }
86
- }
87
- }
88
-
89
- const manifests = findManifestFiles(workspaceDir, allTargetNames);
90
- const ecosystems = new Set<Ecosystem>();
91
- const dependencies: ProjectDependency[] = [];
92
- const manifestsFound: string[] = [];
93
-
94
- // 1. Gather all lockfiles first to correlate resolved versions
95
- const lockfileCache = new Map<string, Map<string, string>>();
96
-
97
- for (const file of manifests) {
98
- const rel = relative(workspaceDir, file);
99
- manifestsFound.push(rel);
100
- const baseName = file.split(/[/\\]/).pop()?.toLowerCase() || '';
101
-
102
- const lockStrategy = lockfileMap.get(baseName);
103
- if (lockStrategy && lockStrategy.parseLockfile) {
104
- try {
105
- const content = readFileSync(file, 'utf-8');
106
- lockfileCache.set(rel, lockStrategy.parseLockfile(baseName, content));
107
- } catch {
108
- // Ignore unreadable lockfile
109
- }
110
- }
111
- }
112
-
113
- // 2. Parse package manifests and resolve versions
114
- for (const file of manifests) {
115
- const rel = relative(workspaceDir, file);
116
- const baseName = file.split(/[/\\]/).pop()?.toLowerCase() || '';
117
- const pkgDir = rel.includes('/') ? rel.slice(0, rel.lastIndexOf('/')) : '.';
118
-
119
- const strat = manifestMap.get(baseName);
120
- if (strat) {
121
- try {
122
- const content = readFileSync(file, 'utf-8');
123
- ecosystems.add(strat.ecosystem);
124
- const parsed = strat.parseManifest(baseName, content, rel, pkgDir);
125
-
126
- if (strat.resolveVersions) {
127
- strat.resolveVersions(parsed, pkgDir, lockfileCache);
128
- }
129
-
130
- dependencies.push(...parsed);
131
- } catch {
132
- // Ignore parse failure
133
- }
134
- }
135
- }
136
-
137
- return {
138
- workspaceRoot: workspaceDir,
139
- ecosystems: Array.from(ecosystems),
140
- manifestsFound,
141
- dependencies,
142
- };
143
- }
@@ -1,84 +0,0 @@
1
- import { join } from 'node:path';
2
- import type { ProjectDependency } from '../../../shared/src/index.ts';
3
- import type { EcosystemStrategy } from './types.ts';
4
-
5
- export class CargoStrategy implements EcosystemStrategy {
6
- readonly ecosystem = 'cargo';
7
- readonly manifestNames = ['cargo.toml'];
8
- readonly lockfileNames = ['cargo.lock'];
9
-
10
- parseManifest(_fileName: string, content: string, relPath: string, packageDir: string): ProjectDependency[] {
11
- const deps: ProjectDependency[] = [];
12
- let currentSection = '';
13
- const lines = content.split('\n');
14
-
15
- for (const line of lines) {
16
- const trimmed = line.trim();
17
- if (trimmed.startsWith('[') && trimmed.endsWith(']')) {
18
- currentSection = trimmed.slice(1, -1).trim();
19
- continue;
20
- }
21
-
22
- const isDep =
23
- currentSection === 'dependencies' ||
24
- currentSection === 'dev-dependencies' ||
25
- currentSection === 'build-dependencies';
26
-
27
- if (isDep && trimmed && !trimmed.startsWith('#') && trimmed.includes('=')) {
28
- const eqIdx = trimmed.indexOf('=');
29
- const name = trimmed.slice(0, eqIdx).trim();
30
- const val = trimmed.slice(eqIdx + 1).trim();
31
-
32
- let version = '*';
33
- if (val.startsWith('"')) {
34
- version = val.replace(/^"|"$/g, '');
35
- } else if (val.startsWith('{')) {
36
- const vMatch = val.match(/version\s*=\s*"([^"]+)"/);
37
- if (vMatch) version = vMatch[1];
38
- }
39
-
40
- deps.push({
41
- name,
42
- ecosystem: 'cargo',
43
- requestedVersion: version,
44
- sourceFile: relPath,
45
- packagePath: packageDir,
46
- isDev: currentSection === 'dev-dependencies',
47
- });
48
- }
49
- }
50
- return deps;
51
- }
52
-
53
- parseLockfile(_fileName: string, content: string): Map<string, string> {
54
- const resolved = new Map<string, string>();
55
- const blocks = content.split('[[package]]');
56
- for (const block of blocks) {
57
- const nameMatch = block.match(/name\s*=\s*"([^"]+)"/);
58
- const verMatch = block.match(/version\s*=\s*"([^"]+)"/);
59
- if (nameMatch && verMatch) {
60
- resolved.set(nameMatch[1], verMatch[1]);
61
- }
62
- }
63
- return resolved;
64
- }
65
-
66
- resolveVersions(
67
- deps: ProjectDependency[],
68
- pkgDir: string,
69
- lockfileCache: Map<string, Map<string, string>>
70
- ): void {
71
- const lockMap =
72
- lockfileCache.get('Cargo.lock') ||
73
- lockfileCache.get('cargo.lock') ||
74
- lockfileCache.get(join(pkgDir, 'Cargo.lock')) ||
75
- lockfileCache.get(join(pkgDir, 'cargo.lock'));
76
-
77
- if (lockMap) {
78
- for (const dep of deps) {
79
- const resolved = lockMap.get(dep.name);
80
- if (resolved) dep.resolvedVersion = resolved;
81
- }
82
- }
83
- }
84
- }
@@ -1,42 +0,0 @@
1
- import type { ProjectDependency } from '../../../shared/src/index.ts';
2
- import type { EcosystemStrategy } from './types.ts';
3
-
4
- export class ComposerStrategy implements EcosystemStrategy {
5
- readonly ecosystem = 'composer';
6
- readonly manifestNames = ['composer.json'];
7
-
8
- parseManifest(_fileName: string, content: string, relPath: string, packageDir: string): ProjectDependency[] {
9
- const deps: ProjectDependency[] = [];
10
- try {
11
- const composer = JSON.parse(content);
12
- if (composer.require && typeof composer.require === 'object') {
13
- for (const [name, ver] of Object.entries(composer.require)) {
14
- if (name === 'php') continue;
15
- deps.push({
16
- name,
17
- ecosystem: 'composer',
18
- requestedVersion: String(ver),
19
- sourceFile: relPath,
20
- packagePath: packageDir,
21
- isDev: false,
22
- });
23
- }
24
- }
25
- if (composer['require-dev'] && typeof composer['require-dev'] === 'object') {
26
- for (const [name, ver] of Object.entries(composer['require-dev'])) {
27
- deps.push({
28
- name,
29
- ecosystem: 'composer',
30
- requestedVersion: String(ver),
31
- sourceFile: relPath,
32
- packagePath: packageDir,
33
- isDev: true,
34
- });
35
- }
36
- }
37
- } catch {
38
- // Ignore malformed JSON
39
- }
40
- return deps;
41
- }
42
- }
@@ -1,54 +0,0 @@
1
- import type { ProjectDependency } from '../../../shared/src/index.ts';
2
- import type { EcosystemStrategy } from './types.ts';
3
-
4
- export class GoStrategy implements EcosystemStrategy {
5
- readonly ecosystem = 'go';
6
- readonly manifestNames = ['go.mod'];
7
-
8
- parseManifest(_fileName: string, content: string, relPath: string, packageDir: string): ProjectDependency[] {
9
- const deps: ProjectDependency[] = [];
10
- const lines = content.split('\n');
11
- let inRequireBlock = false;
12
-
13
- for (const line of lines) {
14
- const trimmed = line.trim();
15
- if (trimmed.startsWith('require (')) {
16
- inRequireBlock = true;
17
- continue;
18
- }
19
- if (inRequireBlock && trimmed === ')') {
20
- inRequireBlock = false;
21
- continue;
22
- }
23
-
24
- if (inRequireBlock && trimmed && !trimmed.startsWith('//')) {
25
- const parts = trimmed.split(/\s+/);
26
- if (parts.length >= 2) {
27
- deps.push({
28
- name: parts[0],
29
- ecosystem: 'go',
30
- requestedVersion: parts[1],
31
- resolvedVersion: parts[1].replace(/^\+incompatible$/, ''),
32
- sourceFile: relPath,
33
- packagePath: packageDir,
34
- isDev: false,
35
- });
36
- }
37
- } else if (trimmed.startsWith('require ') && !trimmed.includes('(')) {
38
- const parts = trimmed.slice('require '.length).trim().split(/\s+/);
39
- if (parts.length >= 2) {
40
- deps.push({
41
- name: parts[0],
42
- ecosystem: 'go',
43
- requestedVersion: parts[1],
44
- resolvedVersion: parts[1].replace(/^\+incompatible$/, ''),
45
- sourceFile: relPath,
46
- packagePath: packageDir,
47
- isDev: false,
48
- });
49
- }
50
- }
51
- }
52
- return deps;
53
- }
54
- }
@@ -1,34 +0,0 @@
1
- import type { ProjectDependency } from '../../../shared/src/index.ts';
2
- import type { EcosystemStrategy } from './types.ts';
3
-
4
- export class MavenStrategy implements EcosystemStrategy {
5
- readonly ecosystem = 'maven';
6
- readonly manifestNames = ['pom.xml'];
7
-
8
- parseManifest(_fileName: string, content: string, relPath: string, packageDir: string): ProjectDependency[] {
9
- const deps: ProjectDependency[] = [];
10
- const depRegex = /<dependency>([\s\S]*?)<\/dependency>/g;
11
- let match: RegExpExecArray | null;
12
-
13
- while ((match = depRegex.exec(content)) !== null) {
14
- const block = match[1];
15
- const groupMatch = block.match(/<groupId>([^<]+)<\/groupId>/);
16
- const artifactMatch = block.match(/<artifactId>([^<]+)<\/artifactId>/);
17
- const verMatch = block.match(/<version>([^<]+)<\/version>/);
18
-
19
- if (artifactMatch) {
20
- const name = groupMatch ? `${groupMatch[1]}:${artifactMatch[1]}` : artifactMatch[1];
21
- deps.push({
22
- name,
23
- ecosystem: 'maven',
24
- requestedVersion: verMatch ? verMatch[1].trim() : '*',
25
- resolvedVersion: verMatch ? verMatch[1].trim() : undefined,
26
- sourceFile: relPath,
27
- packagePath: packageDir,
28
- isDev: block.includes('<scope>test</scope>'),
29
- });
30
- }
31
- }
32
- return deps;
33
- }
34
- }
@@ -1,83 +0,0 @@
1
- import { join } from 'node:path';
2
- import type { ProjectDependency } from '../../../shared/src/index.ts';
3
- import type { EcosystemStrategy } from './types.ts';
4
-
5
- export class NpmStrategy implements EcosystemStrategy {
6
- readonly ecosystem = 'npm';
7
- readonly manifestNames = ['package.json'];
8
- readonly lockfileNames = ['package-lock.json'];
9
-
10
- parseManifest(_fileName: string, content: string, relPath: string, packageDir: string): ProjectDependency[] {
11
- const deps: ProjectDependency[] = [];
12
- try {
13
- const pkg = JSON.parse(content);
14
-
15
- const addSection = (section: Record<string, string> | undefined, isDev: boolean) => {
16
- if (!section) return;
17
- for (const [name, version] of Object.entries(section)) {
18
- deps.push({
19
- name,
20
- ecosystem: 'npm',
21
- requestedVersion: String(version),
22
- sourceFile: relPath,
23
- packagePath: packageDir,
24
- isDev,
25
- });
26
- }
27
- };
28
-
29
- addSection(pkg.dependencies, false);
30
- addSection(pkg.devDependencies, true);
31
- addSection(pkg.peerDependencies, false);
32
- } catch {
33
- // Malformed JSON
34
- }
35
- return deps;
36
- }
37
-
38
- parseLockfile(_fileName: string, content: string): Map<string, string> {
39
- const resolved = new Map<string, string>();
40
- try {
41
- const lock = JSON.parse(content);
42
- // npm v2/v3 lockfile format
43
- if (lock.packages && typeof lock.packages === 'object') {
44
- for (const [key, val] of Object.entries(lock.packages)) {
45
- if (val && typeof val === 'object' && (val as any).version) {
46
- const pkgName = key.replace(/^node_modules\//, '');
47
- if (pkgName && !pkgName.includes('node_modules')) {
48
- resolved.set(pkgName, String((val as any).version));
49
- }
50
- }
51
- }
52
- }
53
- // npm v1 lockfile format fallback
54
- if (lock.dependencies && typeof lock.dependencies === 'object') {
55
- for (const [name, val] of Object.entries(lock.dependencies)) {
56
- if (val && typeof val === 'object' && (val as any).version) {
57
- resolved.set(name, String((val as any).version));
58
- }
59
- }
60
- }
61
- } catch {
62
- // Malformed lockfile
63
- }
64
- return resolved;
65
- }
66
-
67
- resolveVersions(
68
- deps: ProjectDependency[],
69
- pkgDir: string,
70
- lockfileCache: Map<string, Map<string, string>>
71
- ): void {
72
- const lockMap =
73
- lockfileCache.get('package-lock.json') ||
74
- lockfileCache.get(join(pkgDir, 'package-lock.json'));
75
-
76
- if (lockMap) {
77
- for (const dep of deps) {
78
- const resolved = lockMap.get(dep.name);
79
- if (resolved) dep.resolvedVersion = resolved;
80
- }
81
- }
82
- }
83
- }
@@ -1,40 +0,0 @@
1
- import type { ProjectDependency } from '../../../shared/src/index.ts';
2
- import type { EcosystemStrategy } from './types.ts';
3
-
4
- export class PubStrategy implements EcosystemStrategy {
5
- readonly ecosystem = 'pub';
6
- readonly manifestNames = ['pubspec.yaml'];
7
-
8
- parseManifest(_fileName: string, content: string, relPath: string, packageDir: string): ProjectDependency[] {
9
- const deps: ProjectDependency[] = [];
10
- const lines = content.split('\n');
11
- let inDependencies = false;
12
-
13
- for (const line of lines) {
14
- const trimmed = line.trim();
15
- if (trimmed === 'dependencies:' || trimmed === 'dev_dependencies:') {
16
- inDependencies = true;
17
- continue;
18
- }
19
- if (inDependencies && /^[a-zA-Z0-9_]+:/.test(line) && !line.startsWith(' ')) {
20
- inDependencies = false;
21
- continue;
22
- }
23
-
24
- if (inDependencies && trimmed && !trimmed.startsWith('#')) {
25
- const match = trimmed.match(/^([a-zA-Z0-9_]+)\s*:\s*(.+)$/);
26
- if (match && match[1] !== 'sdk' && match[1] !== 'flutter') {
27
- deps.push({
28
- name: match[1],
29
- ecosystem: 'pub',
30
- requestedVersion: match[2]?.trim() || '*',
31
- sourceFile: relPath,
32
- packagePath: packageDir,
33
- isDev: false,
34
- });
35
- }
36
- }
37
- }
38
- return deps;
39
- }
40
- }
@@ -1,100 +0,0 @@
1
- import type { ProjectDependency } from '../../../shared/src/index.ts';
2
- import type { EcosystemStrategy } from './types.ts';
3
-
4
- export class PyPiStrategy implements EcosystemStrategy {
5
- readonly ecosystem = 'pypi';
6
- readonly manifestNames = ['requirements.txt', 'pyproject.toml'];
7
-
8
- parseManifest(fileName: string, content: string, relPath: string, packageDir: string): ProjectDependency[] {
9
- const lower = fileName.toLowerCase();
10
- if (lower === 'requirements.txt') {
11
- return this.parseRequirementsTxt(content, relPath, packageDir);
12
- }
13
- if (lower === 'pyproject.toml') {
14
- return this.parsePyprojectToml(content, relPath, packageDir);
15
- }
16
- return [];
17
- }
18
-
19
- private parseRequirementsTxt(content: string, relPath: string, packageDir: string): ProjectDependency[] {
20
- const deps: ProjectDependency[] = [];
21
- const lines = content.split('\n');
22
-
23
- for (const line of lines) {
24
- const trimmed = line.trim();
25
- if (!trimmed || trimmed.startsWith('#') || trimmed.startsWith('-')) continue;
26
-
27
- // Match name and version specifier (e.g. requests==2.31.0, flask>=3.0.0, numpy)
28
- const match = trimmed.match(/^([a-zA-Z0-9_.-]+)\s*([=><~^!].*)?$/);
29
- if (match) {
30
- const name = match[1];
31
- const spec = match[2]?.trim() || '*';
32
- const exactMatch = spec.match(/^==\s*([a-zA-Z0-9_.-]+)$/);
33
- deps.push({
34
- name,
35
- ecosystem: 'pypi',
36
- requestedVersion: spec,
37
- resolvedVersion: exactMatch ? exactMatch[1] : undefined,
38
- sourceFile: relPath,
39
- packagePath: packageDir,
40
- isDev: false,
41
- });
42
- }
43
- }
44
- return deps;
45
- }
46
-
47
- private parsePyprojectToml(content: string, relPath: string, packageDir: string): ProjectDependency[] {
48
- const deps: ProjectDependency[] = [];
49
- const lines = content.split('\n');
50
- let inDependencies = false;
51
-
52
- for (const line of lines) {
53
- const trimmed = line.trim();
54
- if (trimmed.startsWith('[') && trimmed.endsWith(']')) {
55
- const sec = trimmed.slice(1, -1).trim();
56
- inDependencies =
57
- sec === 'project.dependencies' ||
58
- sec === 'tool.poetry.dependencies' ||
59
- sec === 'project.optional-dependencies';
60
- continue;
61
- }
62
-
63
- if (inDependencies && trimmed && !trimmed.startsWith('#')) {
64
- // Poetry format: name = "^1.2.3" or name = { version = "1.2.3" }
65
- const eqIdx = trimmed.indexOf('=');
66
- if (eqIdx !== -1) {
67
- const name = trimmed.slice(0, eqIdx).trim();
68
- if (name.toLowerCase() === 'python') continue;
69
- const val = trimmed.slice(eqIdx + 1).trim();
70
- let ver = '*';
71
- const vMatch = val.match(/"([^"]+)"/);
72
- if (vMatch) ver = vMatch[1];
73
- deps.push({
74
- name,
75
- ecosystem: 'pypi',
76
- requestedVersion: ver,
77
- sourceFile: relPath,
78
- packagePath: packageDir,
79
- isDev: false,
80
- });
81
- } else if (trimmed.startsWith('"') || trimmed.startsWith("'")) {
82
- // Standard PEP 621: "requests>=2.28.0",
83
- const clean = trimmed.replace(/^[",']|[",']$/g, '');
84
- const match = clean.match(/^([a-zA-Z0-9_.-]+)\s*([=><~^!].*)?$/);
85
- if (match) {
86
- deps.push({
87
- name: match[1],
88
- ecosystem: 'pypi',
89
- requestedVersion: match[2]?.trim() || '*',
90
- sourceFile: relPath,
91
- packagePath: packageDir,
92
- isDev: false,
93
- });
94
- }
95
- }
96
- }
97
- }
98
- return deps;
99
- }
100
- }
@@ -1,30 +0,0 @@
1
- import type { ProjectDependency } from '../../../shared/src/index.ts';
2
- import type { EcosystemStrategy } from './types.ts';
3
-
4
- export class RubyGemsStrategy implements EcosystemStrategy {
5
- readonly ecosystem = 'rubygems';
6
- readonly manifestNames = ['gemfile'];
7
-
8
- parseManifest(_fileName: string, content: string, relPath: string, packageDir: string): ProjectDependency[] {
9
- const deps: ProjectDependency[] = [];
10
- const lines = content.split('\n');
11
-
12
- for (const line of lines) {
13
- const trimmed = line.trim();
14
- if (trimmed.startsWith('gem ') || trimmed.startsWith("gem\t")) {
15
- const match = trimmed.match(/^gem\s+['"]([^'"]+)['"](?:\s*,\s*['"]([^'"]+)['"])?/);
16
- if (match) {
17
- deps.push({
18
- name: match[1],
19
- ecosystem: 'rubygems',
20
- requestedVersion: match[2] || '*',
21
- sourceFile: relPath,
22
- packagePath: packageDir,
23
- isDev: false,
24
- });
25
- }
26
- }
27
- }
28
- return deps;
29
- }
30
- }
@@ -1,18 +0,0 @@
1
- import type {
2
- Ecosystem,
3
- ProjectDependency,
4
- } from '../../../shared/src/index.ts';
5
-
6
- export interface EcosystemStrategy {
7
- readonly ecosystem: Ecosystem;
8
- readonly manifestNames: string[];
9
- readonly lockfileNames?: string[];
10
-
11
- parseManifest(fileName: string, content: string, relPath: string, packageDir: string): ProjectDependency[];
12
- parseLockfile?(fileName: string, content: string): Map<string, string>;
13
- resolveVersions?(
14
- deps: ProjectDependency[],
15
- pkgDir: string,
16
- lockfileCache: Map<string, Map<string, string>>
17
- ): void;
18
- }