docorbit 0.1.0 → 0.1.2

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 (405) hide show
  1. package/README.md +29 -15
  2. package/bin/docorbit.js +2 -2
  3. package/dist/apps/cli/src/commands/add.d.ts +7 -0
  4. package/dist/apps/cli/src/commands/add.js +35 -0
  5. package/dist/apps/cli/src/commands/api.d.ts +2 -0
  6. package/dist/apps/cli/src/commands/api.js +35 -0
  7. package/dist/apps/cli/src/commands/context.d.ts +10 -0
  8. package/dist/apps/cli/src/commands/context.js +36 -0
  9. package/dist/apps/cli/src/commands/dashboard.d.ts +8 -0
  10. package/dist/apps/cli/src/commands/dashboard.js +43 -0
  11. package/dist/apps/cli/src/commands/diff.d.ts +2 -0
  12. package/dist/apps/cli/src/commands/diff.js +29 -0
  13. package/dist/apps/cli/src/commands/evaluate.d.ts +11 -0
  14. package/dist/apps/cli/src/commands/evaluate.js +101 -0
  15. package/dist/apps/cli/src/commands/examples.d.ts +2 -0
  16. package/dist/apps/cli/src/commands/examples.js +36 -0
  17. package/dist/apps/cli/src/commands/export.d.ts +11 -0
  18. package/dist/apps/cli/src/commands/export.js +72 -0
  19. package/dist/apps/cli/src/commands/impact.d.ts +2 -0
  20. package/dist/apps/cli/src/commands/impact.js +30 -0
  21. package/dist/apps/cli/src/commands/init.d.ts +5 -0
  22. package/dist/apps/cli/src/commands/init.js +52 -0
  23. package/dist/apps/cli/src/commands/inspect.d.ts +5 -0
  24. package/dist/apps/cli/src/commands/inspect.js +24 -0
  25. package/dist/apps/cli/src/commands/mcp.d.ts +8 -0
  26. package/dist/apps/cli/src/commands/mcp.js +49 -0
  27. package/dist/apps/cli/src/commands/pitfalls.d.ts +2 -0
  28. package/dist/apps/cli/src/commands/pitfalls.js +35 -0
  29. package/dist/apps/cli/src/commands/recipes.d.ts +2 -0
  30. package/dist/apps/cli/src/commands/recipes.js +33 -0
  31. package/dist/apps/cli/src/commands/search.d.ts +11 -0
  32. package/dist/apps/cli/src/commands/search.js +36 -0
  33. package/dist/apps/cli/src/commands/update.d.ts +6 -0
  34. package/dist/apps/cli/src/commands/update.js +53 -0
  35. package/dist/apps/cli/src/commands/verify.d.ts +2 -0
  36. package/dist/apps/cli/src/commands/verify.js +44 -0
  37. package/dist/apps/cli/src/formatters/colors.d.ts +21 -0
  38. package/dist/apps/cli/src/formatters/colors.js +22 -0
  39. package/dist/apps/cli/src/formatters/inspection.d.ts +3 -0
  40. package/dist/apps/cli/src/formatters/inspection.js +88 -0
  41. package/dist/apps/cli/src/formatters/knowledge.d.ts +5 -0
  42. package/dist/apps/cli/src/formatters/knowledge.js +229 -0
  43. package/dist/apps/cli/src/formatters/retrieval.d.ts +3 -0
  44. package/dist/apps/cli/src/formatters/retrieval.js +61 -0
  45. package/{apps/cli/src/formatters/terminal.ts → dist/apps/cli/src/formatters/terminal.d.ts} +0 -1
  46. package/dist/apps/cli/src/formatters/terminal.js +5 -0
  47. package/dist/apps/cli/src/formatters/verification.d.ts +4 -0
  48. package/dist/apps/cli/src/formatters/verification.js +102 -0
  49. package/dist/apps/cli/src/index.d.ts +1 -0
  50. package/dist/apps/cli/src/index.js +376 -0
  51. package/dist/packages/core/src/dashboard/server.d.ts +33 -0
  52. package/dist/packages/core/src/dashboard/server.js +267 -0
  53. package/dist/packages/core/src/dashboard/ui.d.ts +5 -0
  54. package/{packages/core/src/dashboard/ui.ts → dist/packages/core/src/dashboard/ui.js} +2 -2
  55. package/dist/packages/core/src/implementation-service.d.ts +73 -0
  56. package/dist/packages/core/src/implementation-service.js +325 -0
  57. package/{packages/core/src/index.ts → dist/packages/core/src/index.d.ts} +0 -1
  58. package/dist/packages/core/src/index.js +6 -0
  59. package/dist/packages/core/src/inspector.d.ts +22 -0
  60. package/dist/packages/core/src/inspector.js +38 -0
  61. package/dist/packages/core/src/pipeline.d.ts +45 -0
  62. package/dist/packages/core/src/pipeline.js +246 -0
  63. package/dist/packages/crawler/src/config.d.ts +2 -0
  64. package/dist/packages/crawler/src/config.js +10 -0
  65. package/dist/packages/crawler/src/fetcher.d.ts +31 -0
  66. package/dist/packages/crawler/src/fetcher.js +139 -0
  67. package/dist/packages/crawler/src/index.js +2 -0
  68. package/dist/packages/discovery/src/index.d.ts +11 -0
  69. package/dist/packages/discovery/src/index.js +29 -0
  70. package/dist/packages/discovery/src/provider.d.ts +12 -0
  71. package/dist/packages/discovery/src/provider.js +30 -0
  72. package/dist/packages/discovery/src/providers/generic.d.ts +7 -0
  73. package/dist/packages/discovery/src/providers/generic.js +94 -0
  74. package/dist/packages/discovery/src/providers/github.d.ts +7 -0
  75. package/dist/packages/discovery/src/providers/github.js +52 -0
  76. package/dist/packages/discovery/src/providers/llms-txt.d.ts +7 -0
  77. package/dist/packages/discovery/src/providers/llms-txt.js +60 -0
  78. package/dist/packages/discovery/src/providers/markdown.d.ts +7 -0
  79. package/dist/packages/discovery/src/providers/markdown.js +38 -0
  80. package/dist/packages/discovery/src/providers/openapi.d.ts +7 -0
  81. package/dist/packages/discovery/src/providers/openapi.js +77 -0
  82. package/dist/packages/discovery/src/providers/sitemap.d.ts +7 -0
  83. package/dist/packages/discovery/src/providers/sitemap.js +53 -0
  84. package/dist/packages/discovery/src/providers/skill.d.ts +7 -0
  85. package/dist/packages/discovery/src/providers/skill.js +46 -0
  86. package/dist/packages/discovery/src/ranker.d.ts +6 -0
  87. package/dist/packages/discovery/src/ranker.js +107 -0
  88. package/dist/packages/evaluation/src/dataset.d.ts +2 -0
  89. package/dist/packages/evaluation/src/dataset.js +944 -0
  90. package/dist/packages/evaluation/src/index.js +8 -0
  91. package/dist/packages/evaluation/src/runner.d.ts +7 -0
  92. package/dist/packages/evaluation/src/runner.js +196 -0
  93. package/dist/packages/evaluation/src/strategies/context7-runner.d.ts +24 -0
  94. package/dist/packages/evaluation/src/strategies/context7-runner.js +229 -0
  95. package/dist/packages/evaluation/src/strategies/docorbit-runner.d.ts +5 -0
  96. package/dist/packages/evaluation/src/strategies/docorbit-runner.js +210 -0
  97. package/dist/packages/evaluation/src/strategies/firecrawl-runner.d.ts +24 -0
  98. package/dist/packages/evaluation/src/strategies/firecrawl-runner.js +151 -0
  99. package/dist/packages/evaluation/src/strategies/web-search-runner.d.ts +32 -0
  100. package/dist/packages/evaluation/src/strategies/web-search-runner.js +161 -0
  101. package/dist/packages/evaluation/src/types.d.ts +15 -0
  102. package/dist/packages/evaluation/src/types.js +1 -0
  103. package/dist/packages/evaluation/src/version-matcher.d.ts +11 -0
  104. package/dist/packages/evaluation/src/version-matcher.js +61 -0
  105. package/dist/packages/export/src/agents-md.d.ts +19 -0
  106. package/dist/packages/export/src/agents-md.js +170 -0
  107. package/dist/packages/export/src/claude-md.d.ts +17 -0
  108. package/dist/packages/export/src/claude-md.js +118 -0
  109. package/dist/packages/export/src/docs-map.d.ts +14 -0
  110. package/dist/packages/export/src/docs-map.js +118 -0
  111. package/dist/packages/export/src/index.js +6 -0
  112. package/dist/packages/export/src/llms-txt.d.ts +15 -0
  113. package/dist/packages/export/src/llms-txt.js +73 -0
  114. package/dist/packages/export/src/service.d.ts +23 -0
  115. package/dist/packages/export/src/service.js +210 -0
  116. package/dist/packages/export/src/skill-md.d.ts +14 -0
  117. package/dist/packages/export/src/skill-md.js +107 -0
  118. package/{packages/mcp/src/index.ts → dist/packages/mcp/src/index.d.ts} +2 -35
  119. package/dist/packages/mcp/src/index.js +6 -0
  120. package/dist/packages/mcp/src/resources/index.d.ts +12 -0
  121. package/dist/packages/mcp/src/resources/index.js +165 -0
  122. package/dist/packages/mcp/src/server.d.ts +30 -0
  123. package/dist/packages/mcp/src/server.js +243 -0
  124. package/dist/packages/mcp/src/tools/analyze-impact.d.ts +6 -0
  125. package/dist/packages/mcp/src/tools/analyze-impact.js +64 -0
  126. package/dist/packages/mcp/src/tools/check-api.d.ts +6 -0
  127. package/dist/packages/mcp/src/tools/check-api.js +74 -0
  128. package/dist/packages/mcp/src/tools/diff-docs.d.ts +6 -0
  129. package/dist/packages/mcp/src/tools/diff-docs.js +58 -0
  130. package/dist/packages/mcp/src/tools/export-context.d.ts +6 -0
  131. package/dist/packages/mcp/src/tools/export-context.js +61 -0
  132. package/dist/packages/mcp/src/tools/find-api.d.ts +6 -0
  133. package/dist/packages/mcp/src/tools/find-api.js +91 -0
  134. package/dist/packages/mcp/src/tools/find-example.d.ts +6 -0
  135. package/dist/packages/mcp/src/tools/find-example.js +92 -0
  136. package/dist/packages/mcp/src/tools/find-pitfall.d.ts +6 -0
  137. package/dist/packages/mcp/src/tools/find-pitfall.js +85 -0
  138. package/dist/packages/mcp/src/tools/find-recipe.d.ts +6 -0
  139. package/dist/packages/mcp/src/tools/find-recipe.js +89 -0
  140. package/dist/packages/mcp/src/tools/get-doc.d.ts +6 -0
  141. package/dist/packages/mcp/src/tools/get-doc.js +118 -0
  142. package/dist/packages/mcp/src/tools/get-docs-map.d.ts +6 -0
  143. package/dist/packages/mcp/src/tools/get-docs-map.js +54 -0
  144. package/dist/packages/mcp/src/tools/get-version.d.ts +6 -0
  145. package/dist/packages/mcp/src/tools/get-version.js +104 -0
  146. package/dist/packages/mcp/src/tools/implementation-context.d.ts +6 -0
  147. package/dist/packages/mcp/src/tools/implementation-context.js +102 -0
  148. package/dist/packages/mcp/src/tools/index.d.ts +19 -0
  149. package/dist/packages/mcp/src/tools/index.js +41 -0
  150. package/dist/packages/mcp/src/tools/ingest-doc.d.ts +6 -0
  151. package/dist/packages/mcp/src/tools/ingest-doc.js +264 -0
  152. package/dist/packages/mcp/src/tools/list-sources.d.ts +6 -0
  153. package/dist/packages/mcp/src/tools/list-sources.js +76 -0
  154. package/dist/packages/mcp/src/tools/search-docs.d.ts +6 -0
  155. package/dist/packages/mcp/src/tools/search-docs.js +113 -0
  156. package/dist/packages/mcp/src/tools/types.d.ts +22 -0
  157. package/dist/packages/mcp/src/tools/types.js +1 -0
  158. package/dist/packages/mcp/src/transports/http.d.ts +31 -0
  159. package/dist/packages/mcp/src/transports/http.js +215 -0
  160. package/dist/packages/mcp/src/transports/stdio.d.ts +22 -0
  161. package/dist/packages/mcp/src/transports/stdio.js +86 -0
  162. package/{packages/mcp/src/transports/types.ts → dist/packages/mcp/src/transports/types.d.ts} +2 -3
  163. package/dist/packages/mcp/src/transports/types.js +1 -0
  164. package/dist/packages/mcp/src/types.d.ts +89 -0
  165. package/dist/packages/mcp/src/types.js +7 -0
  166. package/dist/packages/normalizer/src/example-indexer.d.ts +5 -0
  167. package/dist/packages/normalizer/src/example-indexer.js +200 -0
  168. package/dist/packages/normalizer/src/html.d.ts +13 -0
  169. package/dist/packages/normalizer/src/html.js +221 -0
  170. package/{packages/normalizer/src/index.ts → dist/packages/normalizer/src/index.d.ts} +0 -1
  171. package/dist/packages/normalizer/src/index.js +7 -0
  172. package/dist/packages/normalizer/src/llms.d.ts +3 -0
  173. package/dist/packages/normalizer/src/llms.js +71 -0
  174. package/dist/packages/normalizer/src/openapi/endpoint-parser.d.ts +11 -0
  175. package/dist/packages/normalizer/src/openapi/endpoint-parser.js +357 -0
  176. package/dist/packages/normalizer/src/openapi/schema-resolver.d.ts +10 -0
  177. package/dist/packages/normalizer/src/openapi/schema-resolver.js +82 -0
  178. package/dist/packages/normalizer/src/openapi.js +2 -0
  179. package/dist/packages/normalizer/src/page.d.ts +13 -0
  180. package/dist/packages/normalizer/src/page.js +150 -0
  181. package/dist/packages/normalizer/src/pitfall-extractor.d.ts +6 -0
  182. package/dist/packages/normalizer/src/pitfall-extractor.js +153 -0
  183. package/dist/packages/normalizer/src/slicer.d.ts +30 -0
  184. package/dist/packages/normalizer/src/slicer.js +360 -0
  185. package/dist/packages/retrieval/src/engine.d.ts +17 -0
  186. package/dist/packages/retrieval/src/engine.js +93 -0
  187. package/{packages/retrieval/src/index.ts → dist/packages/retrieval/src/index.d.ts} +0 -1
  188. package/dist/packages/retrieval/src/index.js +6 -0
  189. package/dist/packages/retrieval/src/intent.d.ts +6 -0
  190. package/dist/packages/retrieval/src/intent.js +39 -0
  191. package/dist/packages/retrieval/src/packer.d.ts +2 -0
  192. package/dist/packages/retrieval/src/packer.js +108 -0
  193. package/dist/packages/retrieval/src/recipe-engine.d.ts +18 -0
  194. package/dist/packages/retrieval/src/recipe-engine.js +265 -0
  195. package/dist/packages/retrieval/src/scorer.d.ts +13 -0
  196. package/dist/packages/retrieval/src/scorer.js +110 -0
  197. package/dist/packages/retrieval/src/weights.d.ts +3 -0
  198. package/dist/packages/retrieval/src/weights.js +28 -0
  199. package/dist/packages/security/src/annotations.d.ts +10 -0
  200. package/dist/packages/security/src/annotations.js +100 -0
  201. package/dist/packages/security/src/index.js +2 -0
  202. package/dist/packages/security/src/ssrf.d.ts +17 -0
  203. package/dist/packages/security/src/ssrf.js +132 -0
  204. package/dist/packages/shared/src/errors.d.ts +22 -0
  205. package/dist/packages/shared/src/errors.js +44 -0
  206. package/dist/packages/shared/src/hashing.d.ts +3 -0
  207. package/dist/packages/shared/src/hashing.js +21 -0
  208. package/dist/packages/shared/src/index.js +3 -0
  209. package/dist/packages/shared/src/types.d.ts +715 -0
  210. package/dist/packages/shared/src/types.js +1 -0
  211. package/dist/packages/storage/src/db.d.ts +11 -0
  212. package/dist/packages/storage/src/db.js +128 -0
  213. package/dist/packages/storage/src/index.js +10 -0
  214. package/dist/packages/storage/src/interfaces.d.ts +83 -0
  215. package/dist/packages/storage/src/interfaces.js +1 -0
  216. package/dist/packages/storage/src/repositories/api-repository.d.ts +16 -0
  217. package/dist/packages/storage/src/repositories/api-repository.js +169 -0
  218. package/dist/packages/storage/src/repositories/chunk-repository.d.ts +32 -0
  219. package/dist/packages/storage/src/repositories/chunk-repository.js +250 -0
  220. package/dist/packages/storage/src/repositories/example-repository.d.ts +16 -0
  221. package/dist/packages/storage/src/repositories/example-repository.js +158 -0
  222. package/dist/packages/storage/src/repositories/page-repository.d.ts +16 -0
  223. package/dist/packages/storage/src/repositories/page-repository.js +161 -0
  224. package/dist/packages/storage/src/repositories/pitfall-repository.d.ts +15 -0
  225. package/dist/packages/storage/src/repositories/pitfall-repository.js +144 -0
  226. package/dist/packages/storage/src/repositories/source-repository.d.ts +33 -0
  227. package/dist/packages/storage/src/repositories/source-repository.js +153 -0
  228. package/dist/packages/storage/src/repository.d.ts +92 -0
  229. package/dist/packages/storage/src/repository.js +157 -0
  230. package/dist/packages/storage/src/schema.d.ts +2 -0
  231. package/{packages/storage/src/schema.ts → dist/packages/storage/src/schema.js} +0 -3
  232. package/dist/packages/storage/src/search-tokens.d.ts +6 -0
  233. package/dist/packages/storage/src/search-tokens.js +26 -0
  234. package/dist/packages/verification/src/diff-engine.d.ts +18 -0
  235. package/dist/packages/verification/src/diff-engine.js +218 -0
  236. package/dist/packages/verification/src/extractor.d.ts +29 -0
  237. package/dist/packages/verification/src/extractor.js +302 -0
  238. package/dist/packages/verification/src/impact-scanner.d.ts +9 -0
  239. package/dist/packages/verification/src/impact-scanner.js +181 -0
  240. package/dist/packages/verification/src/index.js +5 -0
  241. package/dist/packages/verification/src/services.d.ts +55 -0
  242. package/dist/packages/verification/src/services.js +189 -0
  243. package/dist/packages/verification/src/verifier.d.ts +15 -0
  244. package/dist/packages/verification/src/verifier.js +315 -0
  245. package/dist/packages/workspace/src/detector.d.ts +7 -0
  246. package/dist/packages/workspace/src/detector.js +117 -0
  247. package/dist/packages/workspace/src/ecosystems/cargo.d.ts +10 -0
  248. package/dist/packages/workspace/src/ecosystems/cargo.js +69 -0
  249. package/dist/packages/workspace/src/ecosystems/composer.d.ts +7 -0
  250. package/dist/packages/workspace/src/ecosystems/composer.js +40 -0
  251. package/dist/packages/workspace/src/ecosystems/go.d.ts +7 -0
  252. package/dist/packages/workspace/src/ecosystems/go.js +49 -0
  253. package/{packages/workspace/src/ecosystems/index.ts → dist/packages/workspace/src/ecosystems/index.d.ts} +2 -24
  254. package/dist/packages/workspace/src/ecosystems/index.js +21 -0
  255. package/dist/packages/workspace/src/ecosystems/maven.d.ts +7 -0
  256. package/dist/packages/workspace/src/ecosystems/maven.js +28 -0
  257. package/dist/packages/workspace/src/ecosystems/npm.d.ts +10 -0
  258. package/dist/packages/workspace/src/ecosystems/npm.js +73 -0
  259. package/dist/packages/workspace/src/ecosystems/pub.d.ts +7 -0
  260. package/dist/packages/workspace/src/ecosystems/pub.js +34 -0
  261. package/dist/packages/workspace/src/ecosystems/pypi.d.ts +9 -0
  262. package/dist/packages/workspace/src/ecosystems/pypi.js +94 -0
  263. package/dist/packages/workspace/src/ecosystems/rubygems.d.ts +7 -0
  264. package/dist/packages/workspace/src/ecosystems/rubygems.js +25 -0
  265. package/dist/packages/workspace/src/ecosystems/types.d.ts +9 -0
  266. package/dist/packages/workspace/src/ecosystems/types.js +1 -0
  267. package/dist/packages/workspace/src/index.js +5 -0
  268. package/dist/packages/workspace/src/lockfile.d.ts +21 -0
  269. package/dist/packages/workspace/src/lockfile.js +153 -0
  270. package/dist/packages/workspace/src/resolver.d.ts +39 -0
  271. package/dist/packages/workspace/src/resolver.js +164 -0
  272. package/dist/packages/workspace/src/semver.d.ts +33 -0
  273. package/dist/packages/workspace/src/semver.js +235 -0
  274. package/package.json +13 -9
  275. package/apps/cli/bin/docorbit.js +0 -8
  276. package/apps/cli/src/commands/add.ts +0 -44
  277. package/apps/cli/src/commands/api.ts +0 -38
  278. package/apps/cli/src/commands/context.ts +0 -47
  279. package/apps/cli/src/commands/dashboard.ts +0 -55
  280. package/apps/cli/src/commands/diff.ts +0 -30
  281. package/apps/cli/src/commands/evaluate.ts +0 -133
  282. package/apps/cli/src/commands/examples.ts +0 -39
  283. package/apps/cli/src/commands/export.ts +0 -89
  284. package/apps/cli/src/commands/impact.ts +0 -31
  285. package/apps/cli/src/commands/init.ts +0 -69
  286. package/apps/cli/src/commands/inspect.ts +0 -30
  287. package/apps/cli/src/commands/mcp.ts +0 -72
  288. package/apps/cli/src/commands/pitfalls.ts +0 -38
  289. package/apps/cli/src/commands/recipes.ts +0 -35
  290. package/apps/cli/src/commands/search.ts +0 -48
  291. package/apps/cli/src/commands/update.ts +0 -73
  292. package/apps/cli/src/commands/verify.ts +0 -48
  293. package/apps/cli/src/formatters/colors.ts +0 -23
  294. package/apps/cli/src/formatters/inspection.ts +0 -102
  295. package/apps/cli/src/formatters/knowledge.ts +0 -272
  296. package/apps/cli/src/formatters/retrieval.ts +0 -74
  297. package/apps/cli/src/formatters/verification.ts +0 -126
  298. package/apps/cli/src/index.ts +0 -409
  299. package/packages/core/src/dashboard/server.ts +0 -314
  300. package/packages/core/src/implementation-service.ts +0 -451
  301. package/packages/core/src/inspector.ts +0 -71
  302. package/packages/core/src/pipeline.ts +0 -331
  303. package/packages/crawler/src/config.ts +0 -12
  304. package/packages/crawler/src/fetcher.ts +0 -185
  305. package/packages/discovery/src/index.ts +0 -31
  306. package/packages/discovery/src/provider.ts +0 -47
  307. package/packages/discovery/src/providers/generic.ts +0 -98
  308. package/packages/discovery/src/providers/github.ts +0 -61
  309. package/packages/discovery/src/providers/llms-txt.ts +0 -73
  310. package/packages/discovery/src/providers/markdown.ts +0 -48
  311. package/packages/discovery/src/providers/openapi.ts +0 -91
  312. package/packages/discovery/src/providers/sitemap.ts +0 -62
  313. package/packages/discovery/src/providers/skill.ts +0 -54
  314. package/packages/discovery/src/ranker.ts +0 -123
  315. package/packages/evaluation/src/dataset.ts +0 -963
  316. package/packages/evaluation/src/runner.ts +0 -241
  317. package/packages/evaluation/src/strategies/context7-runner.ts +0 -269
  318. package/packages/evaluation/src/strategies/docorbit-runner.ts +0 -228
  319. package/packages/evaluation/src/strategies/firecrawl-runner.ts +0 -172
  320. package/packages/evaluation/src/strategies/web-search-runner.ts +0 -194
  321. package/packages/evaluation/src/types.ts +0 -34
  322. package/packages/evaluation/src/version-matcher.ts +0 -73
  323. package/packages/export/src/agents-md.ts +0 -200
  324. package/packages/export/src/claude-md.ts +0 -141
  325. package/packages/export/src/docs-map.ts +0 -150
  326. package/packages/export/src/llms-txt.ts +0 -96
  327. package/packages/export/src/service.ts +0 -250
  328. package/packages/export/src/skill-md.ts +0 -128
  329. package/packages/mcp/src/resources/index.ts +0 -189
  330. package/packages/mcp/src/server.ts +0 -278
  331. package/packages/mcp/src/tools/analyze-impact.ts +0 -74
  332. package/packages/mcp/src/tools/check-api.ts +0 -86
  333. package/packages/mcp/src/tools/diff-docs.ts +0 -68
  334. package/packages/mcp/src/tools/export-context.ts +0 -73
  335. package/packages/mcp/src/tools/find-api.ts +0 -99
  336. package/packages/mcp/src/tools/find-example.ts +0 -100
  337. package/packages/mcp/src/tools/find-pitfall.ts +0 -94
  338. package/packages/mcp/src/tools/find-recipe.ts +0 -98
  339. package/packages/mcp/src/tools/get-doc.ts +0 -130
  340. package/packages/mcp/src/tools/get-docs-map.ts +0 -64
  341. package/packages/mcp/src/tools/get-version.ts +0 -118
  342. package/packages/mcp/src/tools/implementation-context.ts +0 -88
  343. package/packages/mcp/src/tools/index.ts +0 -59
  344. package/packages/mcp/src/tools/list-sources.ts +0 -85
  345. package/packages/mcp/src/tools/search-docs.ts +0 -123
  346. package/packages/mcp/src/tools/types.ts +0 -28
  347. package/packages/mcp/src/transports/http.ts +0 -256
  348. package/packages/mcp/src/transports/stdio.ts +0 -105
  349. package/packages/mcp/src/types.ts +0 -102
  350. package/packages/normalizer/src/example-indexer.ts +0 -240
  351. package/packages/normalizer/src/html.ts +0 -253
  352. package/packages/normalizer/src/llms.ts +0 -83
  353. package/packages/normalizer/src/openapi/endpoint-parser.ts +0 -406
  354. package/packages/normalizer/src/openapi/schema-resolver.ts +0 -111
  355. package/packages/normalizer/src/page.ts +0 -184
  356. package/packages/normalizer/src/pitfall-extractor.ts +0 -190
  357. package/packages/normalizer/src/slicer.ts +0 -455
  358. package/packages/retrieval/src/engine.ts +0 -120
  359. package/packages/retrieval/src/intent.ts +0 -43
  360. package/packages/retrieval/src/packer.ts +0 -145
  361. package/packages/retrieval/src/recipe-engine.ts +0 -313
  362. package/packages/retrieval/src/scorer.ts +0 -139
  363. package/packages/retrieval/src/weights.ts +0 -31
  364. package/packages/security/src/annotations.ts +0 -112
  365. package/packages/security/src/ssrf.ts +0 -153
  366. package/packages/shared/src/errors.ts +0 -53
  367. package/packages/shared/src/hashing.ts +0 -23
  368. package/packages/shared/src/types.ts +0 -881
  369. package/packages/storage/src/db.ts +0 -72
  370. package/packages/storage/src/interfaces.ts +0 -115
  371. package/packages/storage/src/repositories/api-repository.ts +0 -219
  372. package/packages/storage/src/repositories/chunk-repository.ts +0 -316
  373. package/packages/storage/src/repositories/example-repository.ts +0 -206
  374. package/packages/storage/src/repositories/page-repository.ts +0 -205
  375. package/packages/storage/src/repositories/pitfall-repository.ts +0 -188
  376. package/packages/storage/src/repositories/source-repository.ts +0 -205
  377. package/packages/storage/src/repository.ts +0 -256
  378. package/packages/storage/src/search-tokens.ts +0 -28
  379. package/packages/verification/src/diff-engine.ts +0 -258
  380. package/packages/verification/src/extractor.ts +0 -339
  381. package/packages/verification/src/impact-scanner.ts +0 -203
  382. package/packages/verification/src/services.ts +0 -238
  383. package/packages/verification/src/verifier.ts +0 -375
  384. package/packages/workspace/src/detector.ts +0 -143
  385. package/packages/workspace/src/ecosystems/cargo.ts +0 -84
  386. package/packages/workspace/src/ecosystems/composer.ts +0 -42
  387. package/packages/workspace/src/ecosystems/go.ts +0 -54
  388. package/packages/workspace/src/ecosystems/maven.ts +0 -34
  389. package/packages/workspace/src/ecosystems/npm.ts +0 -83
  390. package/packages/workspace/src/ecosystems/pub.ts +0 -40
  391. package/packages/workspace/src/ecosystems/pypi.ts +0 -100
  392. package/packages/workspace/src/ecosystems/rubygems.ts +0 -30
  393. package/packages/workspace/src/ecosystems/types.ts +0 -18
  394. package/packages/workspace/src/lockfile.ts +0 -194
  395. package/packages/workspace/src/resolver.ts +0 -234
  396. package/packages/workspace/src/semver.ts +0 -259
  397. /package/{packages/crawler/src/index.ts → dist/packages/crawler/src/index.d.ts} +0 -0
  398. /package/{packages/evaluation/src/index.ts → dist/packages/evaluation/src/index.d.ts} +0 -0
  399. /package/{packages/export/src/index.ts → dist/packages/export/src/index.d.ts} +0 -0
  400. /package/{packages/normalizer/src/openapi.ts → dist/packages/normalizer/src/openapi.d.ts} +0 -0
  401. /package/{packages/security/src/index.ts → dist/packages/security/src/index.d.ts} +0 -0
  402. /package/{packages/shared/src/index.ts → dist/packages/shared/src/index.d.ts} +0 -0
  403. /package/{packages/storage/src/index.ts → dist/packages/storage/src/index.d.ts} +0 -0
  404. /package/{packages/verification/src/index.ts → dist/packages/verification/src/index.d.ts} +0 -0
  405. /package/{packages/workspace/src/index.ts → dist/packages/workspace/src/index.d.ts} +0 -0
@@ -0,0 +1,164 @@
1
+ import { readDocsLock } from "./lockfile.js";
2
+ import { detectWorkspaceDependencies } from "./detector.js";
3
+ import { resolveDocVersion } from "./semver.js";
4
+ /**
5
+ * Normalizes query string for token matching against dependency names.
6
+ */
7
+ function normalizeQueryTokens(query) {
8
+ const tokens = query
9
+ .toLowerCase()
10
+ .replace(/[^\w\s-]/g, ' ')
11
+ .split(/\s+/)
12
+ .filter(t => t.length > 1);
13
+ const set = new Set(tokens);
14
+ // Add common aliases
15
+ if (set.has('nextjs') || set.has('next.js')) {
16
+ set.add('next');
17
+ }
18
+ if (set.has('reactjs') || set.has('react.js')) {
19
+ set.add('react');
20
+ }
21
+ if (set.has('vuejs') || set.has('vue.js')) {
22
+ set.add('vue');
23
+ }
24
+ return set;
25
+ }
26
+ /**
27
+ * Resolves project context and detects if a query targets a specific dependency in the project.
28
+ * Uses docs.lock if present for zero-overhead deterministic pinned resolution,
29
+ * or falls back to live manifest scanning and resolution.
30
+ */
31
+ export function resolveProjectContext(projectDir, query, repo) {
32
+ const lock = readDocsLock(projectDir);
33
+ const queryTokens = normalizeQueryTokens(query);
34
+ if (lock) {
35
+ // 1. Check locked dependencies
36
+ for (const [key, lockedDoc] of Object.entries(lock.dependencies)) {
37
+ const cleanName = lockedDoc.name.toLowerCase().replace(/^@[^/]+\//, '');
38
+ const parts = cleanName.split(/[-_.]/);
39
+ const matches = queryTokens.has(lockedDoc.name.toLowerCase()) ||
40
+ queryTokens.has(cleanName) ||
41
+ parts.some(p => p.length > 2 && queryTokens.has(p));
42
+ if (matches) {
43
+ return {
44
+ projectDir,
45
+ hasLockfile: true,
46
+ matchedDependency: {
47
+ name: lockedDoc.name,
48
+ projectVersion: lockedDoc.resolvedDependencyVersion,
49
+ targetDocVersion: lockedDoc.docVersion,
50
+ targetSnapshotId: lockedDoc.snapshotId,
51
+ confidence: lockedDoc.confidence,
52
+ matchType: lockedDoc.matchType,
53
+ },
54
+ allDependencies: Object.values(lock.dependencies).map(d => ({
55
+ name: d.name,
56
+ ecosystem: d.ecosystem,
57
+ requestedVersion: d.requestedVersion,
58
+ resolvedVersion: d.resolvedDependencyVersion,
59
+ sourceFile: d.sourceFile,
60
+ })),
61
+ };
62
+ }
63
+ }
64
+ return {
65
+ projectDir,
66
+ hasLockfile: true,
67
+ allDependencies: Object.values(lock.dependencies).map(d => ({
68
+ name: d.name,
69
+ ecosystem: d.ecosystem,
70
+ requestedVersion: d.requestedVersion,
71
+ resolvedVersion: d.resolvedDependencyVersion,
72
+ sourceFile: d.sourceFile,
73
+ })),
74
+ };
75
+ }
76
+ // 2. Fallback: scan workspace manifests directly
77
+ const scan = detectWorkspaceDependencies(projectDir);
78
+ const allSnapshots = repo.listSnapshots();
79
+ const allSources = repo.listSources();
80
+ for (const dep of scan.dependencies) {
81
+ const cleanName = dep.name.toLowerCase().replace(/^@[^/]+\//, '');
82
+ const parts = cleanName.split(/[-_.]/);
83
+ const matches = queryTokens.has(dep.name.toLowerCase()) ||
84
+ queryTokens.has(cleanName) ||
85
+ parts.some(p => p.length > 2 && queryTokens.has(p));
86
+ if (matches) {
87
+ // Find matching source
88
+ const src = allSources.find(s => {
89
+ const u = s.url.toLowerCase();
90
+ return u.includes(cleanName) || u.includes(dep.name.toLowerCase());
91
+ });
92
+ if (src) {
93
+ const snapshots = allSnapshots.filter(s => s.sourceId === src.id);
94
+ const availableVersions = snapshots.map(s => s.docVersion || 'latest');
95
+ const projectVer = dep.resolvedVersion || dep.requestedVersion;
96
+ const resolution = resolveDocVersion(projectVer, availableVersions, dep.name);
97
+ const chosenSnapshot = snapshots.find(s => (s.docVersion || 'latest') === resolution.selectedDocVersion) || snapshots[0];
98
+ return {
99
+ projectDir,
100
+ hasLockfile: false,
101
+ matchedDependency: {
102
+ name: dep.name,
103
+ projectVersion: projectVer,
104
+ targetDocVersion: resolution.selectedDocVersion,
105
+ targetSnapshotId: chosenSnapshot?.id,
106
+ confidence: resolution.confidence,
107
+ matchType: resolution.matchType,
108
+ },
109
+ allDependencies: scan.dependencies,
110
+ };
111
+ }
112
+ }
113
+ }
114
+ return {
115
+ projectDir,
116
+ hasLockfile: false,
117
+ allDependencies: scan.dependencies,
118
+ };
119
+ }
120
+ export class WorkspaceResolver {
121
+ repo;
122
+ constructor(repo) {
123
+ this.repo = repo;
124
+ }
125
+ resolveProjectContext(projectDir, query) {
126
+ return resolveProjectContext(projectDir, query, this.repo);
127
+ }
128
+ scanWorkspace(projectDir) {
129
+ return detectWorkspaceDependencies(projectDir);
130
+ }
131
+ resolveWorkspace(scan, _existingLock) {
132
+ const allSnapshots = this.repo.listSnapshots();
133
+ const allSources = this.repo.listSources();
134
+ const matches = [];
135
+ for (const dep of scan.dependencies) {
136
+ const cleanName = dep.name.toLowerCase().replace(/^@[^/]+\//, '');
137
+ const src = allSources.find(s => {
138
+ const u = s.url.toLowerCase();
139
+ return u.includes(cleanName) || u.includes(dep.name.toLowerCase()) ||
140
+ (s.metadata && String(s.metadata.name || '').toLowerCase() === cleanName);
141
+ });
142
+ if (!src)
143
+ continue;
144
+ const snapshots = allSnapshots.filter(s => s.sourceId === src.id);
145
+ if (snapshots.length === 0)
146
+ continue;
147
+ const availableVersions = snapshots.map(s => s.docVersion || 'latest');
148
+ const projectVer = dep.resolvedVersion || dep.requestedVersion;
149
+ const resolution = resolveDocVersion(projectVer, availableVersions, dep.name);
150
+ const chosenSnapshot = snapshots.find(s => (s.docVersion || 'latest') === resolution.selectedDocVersion) || snapshots[0];
151
+ matches.push({
152
+ dependency: dep,
153
+ targetVersion: resolution.selectedDocVersion,
154
+ confidence: resolution.confidence,
155
+ snapshotId: chosenSnapshot?.id,
156
+ matchedBy: resolution.matchType,
157
+ });
158
+ }
159
+ return { matches };
160
+ }
161
+ resolveVersion(projectVersion, availableDocVersions, packageName) {
162
+ return resolveDocVersion(projectVersion, availableDocVersions, packageName);
163
+ }
164
+ }
@@ -0,0 +1,33 @@
1
+ import type { VersionResolutionResult } from '../../shared/src/index.ts';
2
+ export interface ParsedSemVer {
3
+ major: number;
4
+ minor: number;
5
+ patch: number;
6
+ prerelease?: string;
7
+ raw: string;
8
+ }
9
+ /**
10
+ * Parses a version string into semantic components.
11
+ * Handles standard SemVer, leading 'v', partial versions ('14', '14.2'),
12
+ * and prereleases ('15.0.0-rc.1', '14.2.0-canary').
13
+ */
14
+ export declare function parseSemVer(versionStr: string): ParsedSemVer | null;
15
+ /**
16
+ * Deterministic SemVer comparison.
17
+ * Returns negative if v1 < v2, positive if v1 > v2, 0 if v1 == v2.
18
+ * Prereleases have lower precedence than normal releases (e.g. 15.0.0-rc.1 < 15.0.0).
19
+ */
20
+ export declare function compareVersions(v1: string, v2: string): number;
21
+ /**
22
+ * Evaluates whether a concrete version satisfies a SemVer range specification.
23
+ * Supports '^', '~', '>=', '<=', '<', '>', '*', 'x', space-separated and '||'.
24
+ */
25
+ export declare function satisfiesRange(version: string, range: string): boolean;
26
+ /**
27
+ * Deterministically resolves a project's dependency version to the best available
28
+ * documentation version using the hierarchical confidence ladder:
29
+ * exact (1.0) -> major_minor (0.95) -> major (0.90) -> range (0.85) -> latest_fallback (0.50) -> unresolved (0.0)
30
+ *
31
+ * Never claims exact match when documentation is coarse (e.g. 'v14' or 'latest').
32
+ */
33
+ export declare function resolveDocVersion(projectVersion: string, availableDocVersions: string[], dependencyName?: string): VersionResolutionResult;
@@ -0,0 +1,235 @@
1
+ /**
2
+ * Parses a version string into semantic components.
3
+ * Handles standard SemVer, leading 'v', partial versions ('14', '14.2'),
4
+ * and prereleases ('15.0.0-rc.1', '14.2.0-canary').
5
+ */
6
+ export function parseSemVer(versionStr) {
7
+ if (!versionStr || typeof versionStr !== 'string')
8
+ return null;
9
+ const cleaned = versionStr.trim().replace(/^[v=]/, '');
10
+ // Match major, optional minor, optional patch, optional prerelease
11
+ const match = cleaned.match(/^(\d+)(?:\.(\d+))?(?:\.(\d+))?(?:-([0-9A-Za-z.-]+))?/);
12
+ if (!match)
13
+ return null;
14
+ const major = parseInt(match[1], 10);
15
+ const minor = match[2] !== undefined ? parseInt(match[2], 10) : 0;
16
+ const patch = match[3] !== undefined ? parseInt(match[3], 10) : 0;
17
+ const prerelease = match[4];
18
+ return { major, minor, patch, prerelease, raw: versionStr.trim() };
19
+ }
20
+ /**
21
+ * Deterministic SemVer comparison.
22
+ * Returns negative if v1 < v2, positive if v1 > v2, 0 if v1 == v2.
23
+ * Prereleases have lower precedence than normal releases (e.g. 15.0.0-rc.1 < 15.0.0).
24
+ */
25
+ export function compareVersions(v1, v2) {
26
+ const p1 = parseSemVer(v1);
27
+ const p2 = parseSemVer(v2);
28
+ if (!p1 && !p2)
29
+ return v1.localeCompare(v2);
30
+ if (!p1)
31
+ return -1;
32
+ if (!p2)
33
+ return 1;
34
+ if (p1.major !== p2.major)
35
+ return p1.major - p2.major;
36
+ if (p1.minor !== p2.minor)
37
+ return p1.minor - p2.minor;
38
+ if (p1.patch !== p2.patch)
39
+ return p1.patch - p2.patch;
40
+ // Prerelease comparison:
41
+ // 1.0.0-alpha < 1.0.0 (version with prerelease is lower than version without)
42
+ if (p1.prerelease && !p2.prerelease)
43
+ return -1;
44
+ if (!p1.prerelease && p2.prerelease)
45
+ return 1;
46
+ if (p1.prerelease && p2.prerelease) {
47
+ return p1.prerelease.localeCompare(p2.prerelease);
48
+ }
49
+ return 0;
50
+ }
51
+ /**
52
+ * Evaluates whether a concrete version satisfies a SemVer range specification.
53
+ * Supports '^', '~', '>=', '<=', '<', '>', '*', 'x', space-separated and '||'.
54
+ */
55
+ export function satisfiesRange(version, range) {
56
+ if (!range || range === '*' || range === 'latest' || range === 'x') {
57
+ return true;
58
+ }
59
+ const ver = parseSemVer(version);
60
+ if (!ver)
61
+ return false;
62
+ // Handle disjunction (||)
63
+ if (range.includes('||')) {
64
+ return range.split('||').some(r => satisfiesRange(version, r.trim()));
65
+ }
66
+ // Handle conjunction (space separated conditions e.g. ">=14.0.0 <15.0.0")
67
+ const clauses = range.trim().split(/\s+/).filter(Boolean);
68
+ if (clauses.length > 1) {
69
+ return clauses.every(c => satisfiesRange(version, c));
70
+ }
71
+ const single = clauses[0];
72
+ // Caret ranges: ^14.2.0 -> >=14.2.0 <15.0.0 (or for 0.x: ^0.2.3 -> >=0.2.3 <0.3.0)
73
+ if (single.startsWith('^')) {
74
+ const base = parseSemVer(single.slice(1));
75
+ if (!base)
76
+ return false;
77
+ if (ver.major !== base.major)
78
+ return false;
79
+ if (base.major === 0) {
80
+ if (ver.minor !== base.minor)
81
+ return false;
82
+ return ver.patch >= base.patch;
83
+ }
84
+ if (ver.minor < base.minor)
85
+ return false;
86
+ if (ver.minor === base.minor && ver.patch < base.patch)
87
+ return false;
88
+ return true;
89
+ }
90
+ // Tilde ranges: ~14.2.0 -> >=14.2.0 <14.3.0
91
+ if (single.startsWith('~')) {
92
+ const base = parseSemVer(single.slice(1));
93
+ if (!base)
94
+ return false;
95
+ if (ver.major !== base.major || ver.minor !== base.minor)
96
+ return false;
97
+ return ver.patch >= base.patch;
98
+ }
99
+ // Wildcard ranges: 14.x or 14.*
100
+ const wildcardMatch = single.match(/^(\d+)(?:\.(\d+|\*|x))?(?:\.(\d+|\*|x))?$/);
101
+ if (wildcardMatch) {
102
+ const wMajor = parseInt(wildcardMatch[1], 10);
103
+ const wMinor = wildcardMatch[2];
104
+ if (ver.major !== wMajor)
105
+ return false;
106
+ if (wMinor && wMinor !== '*' && wMinor !== 'x') {
107
+ if (ver.minor !== parseInt(wMinor, 10))
108
+ return false;
109
+ }
110
+ return true;
111
+ }
112
+ // Comparison operators: >=, <=, >, <, =
113
+ const compMatch = single.match(/^(>=|<=|>|<|=)(.+)$/);
114
+ if (compMatch) {
115
+ const op = compMatch[1];
116
+ const target = compMatch[2].trim();
117
+ const cmp = compareVersions(version, target);
118
+ if (op === '>=')
119
+ return cmp >= 0;
120
+ if (op === '<=')
121
+ return cmp <= 0;
122
+ if (op === '>')
123
+ return cmp > 0;
124
+ if (op === '<')
125
+ return cmp < 0;
126
+ if (op === '=')
127
+ return cmp === 0;
128
+ }
129
+ // Direct equality check
130
+ const targetVer = parseSemVer(single);
131
+ if (targetVer) {
132
+ return (ver.major === targetVer.major &&
133
+ ver.minor === targetVer.minor &&
134
+ ver.patch === targetVer.patch);
135
+ }
136
+ return false;
137
+ }
138
+ /**
139
+ * Deterministically resolves a project's dependency version to the best available
140
+ * documentation version using the hierarchical confidence ladder:
141
+ * exact (1.0) -> major_minor (0.95) -> major (0.90) -> range (0.85) -> latest_fallback (0.50) -> unresolved (0.0)
142
+ *
143
+ * Never claims exact match when documentation is coarse (e.g. 'v14' or 'latest').
144
+ */
145
+ export function resolveDocVersion(projectVersion, availableDocVersions, dependencyName = 'package') {
146
+ if (!availableDocVersions || availableDocVersions.length === 0) {
147
+ return {
148
+ dependencyName,
149
+ projectVersion,
150
+ selectedDocVersion: 'unresolved',
151
+ matchType: 'unresolved',
152
+ confidence: 0.0,
153
+ availableVersions: [],
154
+ };
155
+ }
156
+ const cleaned = projectVersion.replace(/^[\^~=v><\s]+/, '');
157
+ const pVer = parseSemVer(projectVersion) || parseSemVer(cleaned);
158
+ const cleanTarget = projectVersion.replace(/^[v=]/, '');
159
+ // 1. Exact match (e.g. project '14.2.3' and doc '14.2.3' or 'v14.2.3')
160
+ const exactMatch = availableDocVersions.find(v => {
161
+ const c = v.replace(/^[v=]/, '');
162
+ return c === cleanTarget;
163
+ });
164
+ if (exactMatch) {
165
+ return {
166
+ dependencyName,
167
+ projectVersion,
168
+ selectedDocVersion: exactMatch,
169
+ matchType: 'exact',
170
+ confidence: 1.0,
171
+ availableVersions: availableDocVersions,
172
+ };
173
+ }
174
+ if (pVer) {
175
+ // 2. Major.Minor match (e.g. project '14.2.3' and doc 'v14.2' or '14.2')
176
+ const mmTarget = `${pVer.major}.${pVer.minor}`;
177
+ const mmMatch = availableDocVersions.find(v => {
178
+ const c = v.replace(/^[v=]/, '');
179
+ return c === mmTarget || c === `${mmTarget}.x`;
180
+ });
181
+ if (mmMatch) {
182
+ return {
183
+ dependencyName,
184
+ projectVersion,
185
+ selectedDocVersion: mmMatch,
186
+ matchType: 'major_minor',
187
+ confidence: 0.95,
188
+ availableVersions: availableDocVersions,
189
+ };
190
+ }
191
+ // 3. Major match (e.g. project '14.2.3' and doc 'v14', '14.x', or '14')
192
+ const majorTarget = `${pVer.major}`;
193
+ const majorMatch = availableDocVersions.find(v => {
194
+ const c = v.replace(/^[v=]/, '');
195
+ return c === majorTarget || c === `${majorTarget}.x` || c === `${majorTarget}.*`;
196
+ });
197
+ if (majorMatch) {
198
+ return {
199
+ dependencyName,
200
+ projectVersion,
201
+ selectedDocVersion: majorMatch,
202
+ matchType: 'major',
203
+ confidence: 0.90,
204
+ availableVersions: availableDocVersions,
205
+ };
206
+ }
207
+ // 4. SemVer range satisfaction (find doc version that satisfies project version range or vice versa)
208
+ const rangeMatch = availableDocVersions
209
+ .filter(v => !['latest', 'stable', 'current', 'main', 'default'].includes(v.toLowerCase()))
210
+ .find(v => {
211
+ return satisfiesRange(projectVersion, v) || satisfiesRange(v, projectVersion);
212
+ });
213
+ if (rangeMatch) {
214
+ return {
215
+ dependencyName,
216
+ projectVersion,
217
+ selectedDocVersion: rangeMatch,
218
+ matchType: 'range',
219
+ confidence: 0.85,
220
+ availableVersions: availableDocVersions,
221
+ };
222
+ }
223
+ }
224
+ // 5. Fallback: 'latest' / 'stable' / 'current' or highest available version
225
+ const latestCandidate = availableDocVersions.find(v => ['latest', 'stable', 'current', 'main', 'default'].includes(v.toLowerCase()));
226
+ const fallbackVersion = latestCandidate || availableDocVersions[0];
227
+ return {
228
+ dependencyName,
229
+ projectVersion,
230
+ selectedDocVersion: fallbackVersion,
231
+ matchType: 'latest_fallback',
232
+ confidence: 0.50,
233
+ availableVersions: availableDocVersions,
234
+ };
235
+ }
package/package.json CHANGED
@@ -1,28 +1,29 @@
1
1
  {
2
2
  "name": "docorbit",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "description": "The Documentation Intelligence Layer for AI Coding Agents",
5
5
  "type": "module",
6
- "main": "packages/core/src/index.ts",
6
+ "main": "./dist/packages/core/src/index.js",
7
+ "types": "./dist/packages/core/src/index.d.ts",
7
8
  "bin": {
8
9
  "docorbit": "./bin/docorbit.js"
9
10
  },
10
11
  "files": [
11
12
  "bin",
12
- "apps",
13
- "packages",
13
+ "dist",
14
14
  "README.md",
15
15
  "LICENSE"
16
16
  ],
17
17
  "engines": {
18
- "node": ">=22.6.0"
18
+ "node": ">=22.5.0"
19
19
  },
20
20
  "scripts": {
21
+ "build": "tsc",
22
+ "prepack": "npm run build && npm test",
21
23
  "test": "node --experimental-strip-types --test tests/unit/*.test.ts tests/integration/*.test.ts",
22
24
  "test:unit": "node --experimental-strip-types --test tests/unit/*.test.ts",
23
25
  "test:integration": "node --experimental-strip-types --test tests/integration/*.test.ts",
24
- "docorbit": "node --experimental-strip-types bin/docorbit.js",
25
- "prepack": "npm test"
26
+ "docorbit": "node bin/docorbit.js"
26
27
  },
27
28
  "repository": {
28
29
  "type": "git",
@@ -42,5 +43,8 @@
42
43
  "context"
43
44
  ],
44
45
  "author": "DocOrbit Team",
45
- "license": "MIT"
46
- }
46
+ "license": "MIT",
47
+ "dependencies": {
48
+ "docorbit": "^0.1.1"
49
+ }
50
+ }
@@ -1,8 +0,0 @@
1
- #!/usr/bin/env -S node --experimental-strip-types
2
-
3
- import { main } from '../src/index.ts';
4
-
5
- main().catch(err => {
6
- console.error('Fatal DocOrbit Error:', err);
7
- process.exit(1);
8
- });
@@ -1,44 +0,0 @@
1
- import { DocOrbitDb, DocOrbitRepository } from '../../../../packages/storage/src/index.ts';
2
- import { IngestionPipeline } from '../../../../packages/core/src/index.ts';
3
- import { formatIngestionResult } from '../formatters/terminal.ts';
4
-
5
- export interface AddCommandOptions {
6
- json?: boolean;
7
- dbPath?: string;
8
- maxPages?: number;
9
- allowLocalhost?: boolean;
10
- }
11
-
12
- export async function runAddCommand(targetUrl: string, options: AddCommandOptions = {}): Promise<void> {
13
- if (!targetUrl) {
14
- console.error('Error: Please provide a documentation target URL.');
15
- console.error('Usage: docorbit add <url> [--json] [--db <path>]');
16
- process.exit(1);
17
- }
18
-
19
- const dbPath = options.dbPath || '.docorbit/docorbit.db';
20
- const db = new DocOrbitDb(dbPath);
21
- const repository = new DocOrbitRepository(db);
22
-
23
- try {
24
- const pipeline = new IngestionPipeline(repository, {
25
- allowLocalhostForTesting: options.allowLocalhost,
26
- crawlerConfig: {
27
- maxPages: options.maxPages || 50,
28
- },
29
- });
30
-
31
- const result = await pipeline.ingest(targetUrl);
32
-
33
- if (options.json) {
34
- console.log(JSON.stringify(result, null, 2));
35
- } else {
36
- console.log(formatIngestionResult(result));
37
- }
38
- } catch (err: unknown) {
39
- console.error(`DocOrbit Ingestion Error: ${err instanceof Error ? err.message : String(err)}`);
40
- process.exit(1);
41
- } finally {
42
- db.close();
43
- }
44
- }
@@ -1,38 +0,0 @@
1
- import { DocOrbitDb, DocOrbitRepository } from '../../../../packages/storage/src/index.ts';
2
- import { resolveProjectContext } from '../../../../packages/workspace/src/index.ts';
3
- import type { ApiCommandOptions } from '../../../../packages/shared/src/index.ts';
4
- import { formatApiEndpoints } from '../formatters/terminal.ts';
5
-
6
- export async function runApiCommand(query: string = '', options: ApiCommandOptions = {}): Promise<void> {
7
- const dbPath = options.dbPath || '.docorbit/docorbit.db';
8
- const db = new DocOrbitDb(dbPath);
9
- const repository = new DocOrbitRepository(db);
10
-
11
- try {
12
- let effectiveDocVersion = options.docVersion;
13
-
14
- if (options.projectDir) {
15
- const projContext = resolveProjectContext(options.projectDir, query, repository);
16
- if (projContext.matchedDependency && !effectiveDocVersion) {
17
- effectiveDocVersion = projContext.matchedDependency.targetDocVersion;
18
- }
19
- }
20
-
21
- const endpoints = repository.searchApiEndpoints(query, {
22
- method: options.method,
23
- docVersion: effectiveDocVersion,
24
- limit: options.limit || 20,
25
- });
26
-
27
- if (options.json) {
28
- console.log(JSON.stringify(endpoints, null, 2));
29
- } else {
30
- console.log(formatApiEndpoints(endpoints, query));
31
- }
32
- } catch (err: unknown) {
33
- console.error(`DocOrbit API Error: ${err instanceof Error ? err.message : String(err)}`);
34
- process.exit(1);
35
- } finally {
36
- db.close();
37
- }
38
- }
@@ -1,47 +0,0 @@
1
- import { DocOrbitDb, DocOrbitRepository } from '../../../../packages/storage/src/index.ts';
2
- import { RetrievalEngine } from '../../../../packages/retrieval/src/index.ts';
3
- import { formatContextPackage } from '../formatters/terminal.ts';
4
-
5
- export interface ContextCommandOptions {
6
- json?: boolean;
7
- dbPath?: string;
8
- tokens?: number;
9
- maxChunks?: number;
10
- snapshotId?: string;
11
- docVersion?: string;
12
- projectDir?: string;
13
- }
14
-
15
- export async function runContextCommand(task: string, options: ContextCommandOptions = {}): Promise<void> {
16
- if (!task) {
17
- console.error('Error: Please provide a coding task description.');
18
- console.error('Usage: docorbit context "<task>" [--tokens <n>] [--doc-version <ver>] [--project <dir>] [--json] [--db <path>]');
19
- process.exit(1);
20
- }
21
-
22
- const dbPath = options.dbPath || '.docorbit/docorbit.db';
23
- const db = new DocOrbitDb(dbPath);
24
- const repository = new DocOrbitRepository(db);
25
- const engine = new RetrievalEngine(repository);
26
-
27
- try {
28
- const pkg = await engine.buildContext(task, {
29
- tokenBudget: options.tokens || 3000,
30
- maxChunks: options.maxChunks,
31
- snapshotId: options.snapshotId,
32
- docVersion: options.docVersion,
33
- projectDir: options.projectDir,
34
- });
35
-
36
- if (options.json) {
37
- console.log(JSON.stringify(pkg, null, 2));
38
- } else {
39
- console.log(formatContextPackage(pkg));
40
- }
41
- } catch (err: unknown) {
42
- console.error(`DocOrbit Context Error: ${err instanceof Error ? err.message : String(err)}`);
43
- process.exit(1);
44
- } finally {
45
- db.close();
46
- }
47
- }
@@ -1,55 +0,0 @@
1
- import path from 'node:path';
2
- import { DocOrbitDb, DocOrbitRepository } from '../../../../packages/storage/src/index.ts';
3
- import { DashboardServer } from '../../../../packages/core/src/index.ts';
4
- import { c } from '../formatters/colors.ts';
5
-
6
- export interface DashboardCommandOptions {
7
- port?: number;
8
- host?: string;
9
- projectDir?: string;
10
- dbPath?: string;
11
- noOpen?: boolean;
12
- }
13
-
14
- export async function runDashboardCommand(options: DashboardCommandOptions = {}): Promise<void> {
15
- const projectDir = options.projectDir ? path.resolve(options.projectDir) : process.cwd();
16
- const dbPath = options.dbPath || path.join(projectDir, '.docorbit', 'docorbit.db');
17
- const port = options.port || 3737;
18
- const host = options.host || '127.0.0.1';
19
-
20
- const db = new DocOrbitDb(dbPath);
21
- const repo = new DocOrbitRepository(db);
22
-
23
- const server = new DashboardServer({
24
- repo,
25
- projectDir,
26
- dbPath,
27
- });
28
-
29
- try {
30
- const info = await server.start(port, host);
31
- console.log(`\n${c.bold(c.cyan('DocOrbit Local Dashboard'))}`);
32
- console.log(`${c.dim('Documentation Intelligence & Verification Layer')}\n`);
33
- console.log(` ${c.green('●')} Server running at: ${c.bold(c.underline(info.url))}`);
34
- console.log(` ${c.dim('Database:')} ${dbPath}`);
35
- console.log(` ${c.dim('Workspace:')} ${projectDir}`);
36
- console.log(` ${c.dim('Security:')} ${c.yellow('untrusted documentation boundary enforced')}\n`);
37
- console.log(c.dim('Press Ctrl+C to stop.\n'));
38
-
39
- // Keep process alive until interrupted
40
- await new Promise<void>((resolve) => {
41
- const shutdown = async () => {
42
- console.log(`\n${c.dim('Stopping dashboard server...')}`);
43
- await server.stop();
44
- db.close();
45
- resolve();
46
- };
47
- process.on('SIGINT', shutdown);
48
- process.on('SIGTERM', shutdown);
49
- });
50
- } catch (err: any) {
51
- db.close();
52
- console.error(c.red(`Failed to start dashboard server: ${err.message}`));
53
- process.exit(1);
54
- }
55
- }