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
package/README.md CHANGED
@@ -64,19 +64,32 @@ docorbit/
64
64
  ## Getting Started
65
65
 
66
66
  ### Requirements
67
- - **Node.js 24.0.0+** (utilizes native `--experimental-strip-types` and `node:sqlite`)
68
- - **No `npm install` needed** for core runtime!
67
+ - **Node.js 22.5.0+** (uses built-in `node:sqlite`)
68
+ - **Zero native dependencies**
69
69
 
70
70
  ### Installation
71
- Clone the repository and link or run directly:
72
71
 
72
+ #### Global or npx (Recommended)
73
+ ```bash
74
+ # Run directly without install
75
+ npx docorbit --help
76
+
77
+ # Or install globally
78
+ npm install -g docorbit
79
+ docorbit --help
80
+ ```
81
+
82
+ #### From Source
73
83
  ```bash
74
84
  # Clone repository
75
- git clone https://github.com/your-org/docorbit.git
85
+ git clone https://github.com/HakashiKatake/docorbit.git
76
86
  cd docorbit
77
87
 
78
- # Run CLI directly
79
- node --experimental-strip-types bin/docorbit.js --help
88
+ # Build distribution bundle
89
+ npm run build
90
+
91
+ # Run CLI
92
+ node bin/docorbit.js --help
80
93
  ```
81
94
 
82
95
  ---
@@ -425,18 +438,19 @@ node --experimental-strip-types bin/docorbit.js export agents.md --output docs/A
425
438
  Start DocOrbit as an agent-native MCP server communicating via JSON-RPC 2.0. Coding agents (Claude Code, Cursor, Windsurf, OpenCode) can interact over standard input/output (`stdio`) or Streamable HTTP:
426
439
 
427
440
  ```bash
428
- # Start in Stdio mode (for CLI agents like Claude Code, Cursor, OpenCode)
429
- node --experimental-strip-types bin/docorbit.js mcp --stdio
441
+ # Start in Stdio mode (for CLI agents like Claude Code, Cursor, Windsurf)
442
+ npx -y docorbit mcp --stdio
430
443
 
431
444
  # Or start in Streamable HTTP mode (supports POST /mcp, GET /sse, GET /health)
432
- node --experimental-strip-types bin/docorbit.js mcp --port 3000 --host 127.0.0.1
445
+ npx -y docorbit mcp --port 3000 --host 127.0.0.1
433
446
  ```
434
447
 
435
- #### The 14 Agent-Native Tools:
448
+ #### The 15 Agent-Native Tools:
436
449
 
437
450
  | Tool Name | Type | Description |
438
451
  | :--- | :--- | :--- |
439
- | `get_implementation_context` | **High-Level Centerpiece** | Orchestrates task project/dependency detection version resolution intent retrieval APIs examples pitfalls recipe → token-budgeted context → provenance → verification hints. |
452
+ | `ingest_doc` | **Ingestion & Loop Starter** | Ingests, crawls, and indexes documentation from any URL or raw content directly into local SQLite store, with optional instant implementation recipe synthesis. |
453
+ | `get_implementation_context` | **High-Level Centerpiece** | Orchestrates task → project/dependency detection → version resolution → intent → retrieval → APIs → examples → pitfalls → recipe → token-budgeted context → provenance → verification hints (supports auto-ingestion from `url`). |
440
454
  | `check_api` | Verification | Deterministically checks code against indexed OpenAPI schemas, parameters, required body fields, deprecations, and version contracts. |
441
455
  | `diff_docs` | Intelligence | Compares documentation versions/snapshots to detect added, removed, modified, and deprecated endpoints/pitfalls. |
442
456
  | `analyze_impact` | Intelligence | Scans workspace project files for breaking changes and deprecated APIs, returning line, snippet, and certainty. |
@@ -458,8 +472,8 @@ node --experimental-strip-types bin/docorbit.js mcp --port 3000 --host 127.0.0.1
458
472
  {
459
473
  "mcpServers": {
460
474
  "docorbit": {
461
- "command": "node",
462
- "args": ["--experimental-strip-types", "/path/to/docorbit/bin/docorbit.js", "mcp", "--stdio"]
475
+ "command": "npx",
476
+ "args": ["-y", "docorbit", "mcp", "--stdio"]
463
477
  }
464
478
  }
465
479
  }
@@ -470,8 +484,8 @@ node --experimental-strip-types bin/docorbit.js mcp --port 3000 --host 127.0.0.1
470
484
  {
471
485
  "mcpServers": {
472
486
  "docorbit": {
473
- "command": "node",
474
- "args": ["--experimental-strip-types", "/path/to/docorbit/bin/docorbit.js", "mcp", "--stdio"]
487
+ "command": "npx",
488
+ "args": ["-y", "docorbit", "mcp", "--stdio"]
475
489
  }
476
490
  }
477
491
  }
package/bin/docorbit.js CHANGED
@@ -1,6 +1,6 @@
1
- #!/usr/bin/env -S node --experimental-strip-types
1
+ #!/usr/bin/env node
2
2
 
3
- import { main } from '../apps/cli/src/index.ts';
3
+ import { main } from '../dist/apps/cli/src/index.js';
4
4
 
5
5
  main().catch(err => {
6
6
  console.error('Fatal DocOrbit Error:', err);
@@ -0,0 +1,7 @@
1
+ export interface AddCommandOptions {
2
+ json?: boolean;
3
+ dbPath?: string;
4
+ maxPages?: number;
5
+ allowLocalhost?: boolean;
6
+ }
7
+ export declare function runAddCommand(targetUrl: string, options?: AddCommandOptions): Promise<void>;
@@ -0,0 +1,35 @@
1
+ import { DocOrbitDb, DocOrbitRepository, resolveDefaultDbPath } from "../../../../packages/storage/src/index.js";
2
+ import { IngestionPipeline } from "../../../../packages/core/src/index.js";
3
+ import { formatIngestionResult } from "../formatters/terminal.js";
4
+ export async function runAddCommand(targetUrl, options = {}) {
5
+ if (!targetUrl) {
6
+ console.error('Error: Please provide a documentation target URL.');
7
+ console.error('Usage: docorbit add <url> [--json] [--db <path>]');
8
+ process.exit(1);
9
+ }
10
+ const dbPath = resolveDefaultDbPath(options.dbPath);
11
+ const db = new DocOrbitDb(dbPath);
12
+ const repository = new DocOrbitRepository(db);
13
+ try {
14
+ const pipeline = new IngestionPipeline(repository, {
15
+ allowLocalhostForTesting: options.allowLocalhost,
16
+ crawlerConfig: {
17
+ maxPages: options.maxPages || 50,
18
+ },
19
+ });
20
+ const result = await pipeline.ingest(targetUrl);
21
+ if (options.json) {
22
+ console.log(JSON.stringify(result, null, 2));
23
+ }
24
+ else {
25
+ console.log(formatIngestionResult(result));
26
+ }
27
+ }
28
+ catch (err) {
29
+ console.error(`DocOrbit Ingestion Error: ${err instanceof Error ? err.message : String(err)}`);
30
+ process.exit(1);
31
+ }
32
+ finally {
33
+ db.close();
34
+ }
35
+ }
@@ -0,0 +1,2 @@
1
+ import type { ApiCommandOptions } from '../../../../packages/shared/src/index.ts';
2
+ export declare function runApiCommand(query?: string, options?: ApiCommandOptions): Promise<void>;
@@ -0,0 +1,35 @@
1
+ import { DocOrbitDb, DocOrbitRepository } from "../../../../packages/storage/src/index.js";
2
+ import { resolveProjectContext } from "../../../../packages/workspace/src/index.js";
3
+ import { formatApiEndpoints } from "../formatters/terminal.js";
4
+ export async function runApiCommand(query = '', options = {}) {
5
+ const dbPath = options.dbPath || '.docorbit/docorbit.db';
6
+ const db = new DocOrbitDb(dbPath);
7
+ const repository = new DocOrbitRepository(db);
8
+ try {
9
+ let effectiveDocVersion = options.docVersion;
10
+ if (options.projectDir) {
11
+ const projContext = resolveProjectContext(options.projectDir, query, repository);
12
+ if (projContext.matchedDependency && !effectiveDocVersion) {
13
+ effectiveDocVersion = projContext.matchedDependency.targetDocVersion;
14
+ }
15
+ }
16
+ const endpoints = repository.searchApiEndpoints(query, {
17
+ method: options.method,
18
+ docVersion: effectiveDocVersion,
19
+ limit: options.limit || 20,
20
+ });
21
+ if (options.json) {
22
+ console.log(JSON.stringify(endpoints, null, 2));
23
+ }
24
+ else {
25
+ console.log(formatApiEndpoints(endpoints, query));
26
+ }
27
+ }
28
+ catch (err) {
29
+ console.error(`DocOrbit API Error: ${err instanceof Error ? err.message : String(err)}`);
30
+ process.exit(1);
31
+ }
32
+ finally {
33
+ db.close();
34
+ }
35
+ }
@@ -0,0 +1,10 @@
1
+ export interface ContextCommandOptions {
2
+ json?: boolean;
3
+ dbPath?: string;
4
+ tokens?: number;
5
+ maxChunks?: number;
6
+ snapshotId?: string;
7
+ docVersion?: string;
8
+ projectDir?: string;
9
+ }
10
+ export declare function runContextCommand(task: string, options?: ContextCommandOptions): Promise<void>;
@@ -0,0 +1,36 @@
1
+ import { DocOrbitDb, DocOrbitRepository } from "../../../../packages/storage/src/index.js";
2
+ import { RetrievalEngine } from "../../../../packages/retrieval/src/index.js";
3
+ import { formatContextPackage } from "../formatters/terminal.js";
4
+ export async function runContextCommand(task, options = {}) {
5
+ if (!task) {
6
+ console.error('Error: Please provide a coding task description.');
7
+ console.error('Usage: docorbit context "<task>" [--tokens <n>] [--doc-version <ver>] [--project <dir>] [--json] [--db <path>]');
8
+ process.exit(1);
9
+ }
10
+ const dbPath = options.dbPath || '.docorbit/docorbit.db';
11
+ const db = new DocOrbitDb(dbPath);
12
+ const repository = new DocOrbitRepository(db);
13
+ const engine = new RetrievalEngine(repository);
14
+ try {
15
+ const pkg = await engine.buildContext(task, {
16
+ tokenBudget: options.tokens || 3000,
17
+ maxChunks: options.maxChunks,
18
+ snapshotId: options.snapshotId,
19
+ docVersion: options.docVersion,
20
+ projectDir: options.projectDir,
21
+ });
22
+ if (options.json) {
23
+ console.log(JSON.stringify(pkg, null, 2));
24
+ }
25
+ else {
26
+ console.log(formatContextPackage(pkg));
27
+ }
28
+ }
29
+ catch (err) {
30
+ console.error(`DocOrbit Context Error: ${err instanceof Error ? err.message : String(err)}`);
31
+ process.exit(1);
32
+ }
33
+ finally {
34
+ db.close();
35
+ }
36
+ }
@@ -0,0 +1,8 @@
1
+ export interface DashboardCommandOptions {
2
+ port?: number;
3
+ host?: string;
4
+ projectDir?: string;
5
+ dbPath?: string;
6
+ noOpen?: boolean;
7
+ }
8
+ export declare function runDashboardCommand(options?: DashboardCommandOptions): Promise<void>;
@@ -0,0 +1,43 @@
1
+ import path from 'node:path';
2
+ import { DocOrbitDb, DocOrbitRepository } from "../../../../packages/storage/src/index.js";
3
+ import { DashboardServer } from "../../../../packages/core/src/index.js";
4
+ import { c } from "../formatters/colors.js";
5
+ export async function runDashboardCommand(options = {}) {
6
+ const projectDir = options.projectDir ? path.resolve(options.projectDir) : process.cwd();
7
+ const dbPath = options.dbPath || path.join(projectDir, '.docorbit', 'docorbit.db');
8
+ const port = options.port || 3737;
9
+ const host = options.host || '127.0.0.1';
10
+ const db = new DocOrbitDb(dbPath);
11
+ const repo = new DocOrbitRepository(db);
12
+ const server = new DashboardServer({
13
+ repo,
14
+ projectDir,
15
+ dbPath,
16
+ });
17
+ try {
18
+ const info = await server.start(port, host);
19
+ console.log(`\n${c.bold(c.cyan('DocOrbit Local Dashboard'))}`);
20
+ console.log(`${c.dim('Documentation Intelligence & Verification Layer')}\n`);
21
+ console.log(` ${c.green('●')} Server running at: ${c.bold(c.underline(info.url))}`);
22
+ console.log(` ${c.dim('Database:')} ${dbPath}`);
23
+ console.log(` ${c.dim('Workspace:')} ${projectDir}`);
24
+ console.log(` ${c.dim('Security:')} ${c.yellow('untrusted documentation boundary enforced')}\n`);
25
+ console.log(c.dim('Press Ctrl+C to stop.\n'));
26
+ // Keep process alive until interrupted
27
+ await new Promise((resolve) => {
28
+ const shutdown = async () => {
29
+ console.log(`\n${c.dim('Stopping dashboard server...')}`);
30
+ await server.stop();
31
+ db.close();
32
+ resolve();
33
+ };
34
+ process.on('SIGINT', shutdown);
35
+ process.on('SIGTERM', shutdown);
36
+ });
37
+ }
38
+ catch (err) {
39
+ db.close();
40
+ console.error(c.red(`Failed to start dashboard server: ${err.message}`));
41
+ process.exit(1);
42
+ }
43
+ }
@@ -0,0 +1,2 @@
1
+ import type { DiffCommandOptions } from '../../../../packages/shared/src/index.ts';
2
+ export declare function runDiffCommand(target?: string, options?: DiffCommandOptions): Promise<void>;
@@ -0,0 +1,29 @@
1
+ import { DocOrbitDb, DocOrbitRepository } from "../../../../packages/storage/src/index.js";
2
+ import { DiffService } from "../../../../packages/verification/src/index.js";
3
+ import { formatDiffReport } from "../formatters/terminal.js";
4
+ export async function runDiffCommand(target = '', options = {}) {
5
+ const dbPath = options.dbPath || '.docorbit/docorbit.db';
6
+ const db = new DocOrbitDb(dbPath);
7
+ const repo = new DocOrbitRepository(db);
8
+ try {
9
+ const service = new DiffService(repo);
10
+ const { result } = service.diffDocs({
11
+ fromVersion: options.from,
12
+ toVersion: options.to,
13
+ sourceId: options.source || (target && !target.startsWith('-') ? target : undefined),
14
+ });
15
+ if (options.json) {
16
+ console.log(JSON.stringify(result, null, 2));
17
+ }
18
+ else {
19
+ console.log(formatDiffReport(result));
20
+ }
21
+ }
22
+ catch (err) {
23
+ console.error(`DocOrbit Diff Error: ${err instanceof Error ? err.message : String(err)}`);
24
+ process.exit(1);
25
+ }
26
+ finally {
27
+ db.close();
28
+ }
29
+ }
@@ -0,0 +1,11 @@
1
+ export interface EvaluateCommandOptions {
2
+ split?: string;
3
+ strategy?: string;
4
+ task?: string;
5
+ output?: string;
6
+ json?: boolean;
7
+ verbose?: boolean;
8
+ /** Offline simulation mode — no network required, for CI regression only */
9
+ simulation?: boolean;
10
+ }
11
+ export declare function handleEvaluateCommand(options?: EvaluateCommandOptions): Promise<void>;
@@ -0,0 +1,101 @@
1
+ import { BenchmarkRunner } from "../../../../packages/evaluation/src/index.js";
2
+ import { c } from "../formatters/colors.js";
3
+ export async function handleEvaluateCommand(options = {}) {
4
+ const sim = options.simulation ?? false;
5
+ const runner = new BenchmarkRunner({ simulation: sim });
6
+ const split = options.split === 'train'
7
+ ? 'train'
8
+ : options.split === 'eval'
9
+ ? 'eval'
10
+ : options.split === 'verification'
11
+ ? 'verification'
12
+ : 'all';
13
+ let strategies;
14
+ if (options.strategy) {
15
+ const list = options.strategy.split(',').map((s) => s.trim());
16
+ strategies = list;
17
+ }
18
+ const tasks = options.task ? [options.task] : undefined;
19
+ if (!options.json) {
20
+ const modeLabel = sim
21
+ ? c.yellow('[SIMULATION MODE — offline CI, no network]')
22
+ : c.green('[REAL MODE — requires network access]');
23
+ console.log(c.bold(c.cyan('\n=== DocOrbit Real-World Agent Evaluation Benchmark ===')));
24
+ console.log(modeLabel);
25
+ if (!sim) {
26
+ console.log(c.gray(' Context7: real context7-mcp stdio subprocess (context7.com)'));
27
+ console.log(c.gray(' Firecrawl: real /v1/scrape API (api.firecrawl.dev)'));
28
+ console.log(c.gray(' Official Docs Fetch: direct HTTPS fetch to official docs URLs'));
29
+ console.log(c.gray(' DocOrbit: real in-process MCP server\n'));
30
+ }
31
+ console.log(`Split: ${c.yellow(split)} | Strategies: ${strategies ? strategies.join(', ') : 'all'}`);
32
+ console.log(`Artifacts: ${options.output || 'eval-results/'}\n`);
33
+ }
34
+ const report = await runner.run({
35
+ split,
36
+ strategies,
37
+ tasks,
38
+ outputDir: options.output,
39
+ verbose: options.verbose,
40
+ simulation: sim,
41
+ });
42
+ if (options.json) {
43
+ console.log(JSON.stringify(report, null, 2));
44
+ return;
45
+ }
46
+ const modeTag = sim ? ' [SIMULATION]' : ' [REAL]';
47
+ console.log(c.bold(c.green(`\nEvaluation Complete${modeTag} — ${report.totalTasks} tasks\n`)));
48
+ const sDocs = report.byStrategy.agent_official_docs_fetch || report.byStrategy.agent_web_search;
49
+ const sFC = report.byStrategy.agent_firecrawl;
50
+ const sDR = report.byStrategy.agent_docorbit;
51
+ if (sDocs && sC7 && sDR) {
52
+ const pct = (n) => `${(n * 100).toFixed(1)}%`;
53
+ if (sFC) {
54
+ const hr = '---------------------------------------------------------------------------------------------------------------------';
55
+ console.log(hr);
56
+ console.log(c.bold(`| ${'Metric'.padEnd(32)}| ${'Official Docs Fetch'.padEnd(21)}| ${'Firecrawl'.padEnd(14)}| ${'Context7'.padEnd(14)}| ${'DocOrbit'.padEnd(14)}|`));
57
+ console.log(hr);
58
+ const row = (label, vDocs, vFC, vC7, vDR) => `| ${label.padEnd(32)}| ${vDocs.padEnd(21)}| ${vFC.padEnd(14)}| ${vC7.padEnd(14)}| ${vDR.padEnd(14)}|`;
59
+ console.log(row('Overall Task Success Rate', pct(sDocs.overallSuccessRate), pct(sFC.overallSuccessRate), pct(sC7.overallSuccessRate), pct(sDR.overallSuccessRate)));
60
+ console.log(row('Held-Out Eval Success Rate', pct(sDocs.evalSuccessRate), pct(sFC.evalSuccessRate), pct(sC7.evalSuccessRate), pct(sDR.evalSuccessRate)));
61
+ console.log(row('Correct Version Selection', pct(sDocs.versionAccuracy), pct(sFC.versionAccuracy), pct(sC7.versionAccuracy), pct(sDR.versionAccuracy)));
62
+ console.log(row('Retrieval Precision@k', pct(sDocs.meanPrecision), pct(sFC.meanPrecision), pct(sC7.meanPrecision), pct(sDR.meanPrecision)));
63
+ console.log(row('Retrieval Recall@k', pct(sDocs.meanRecall), pct(sFC.meanRecall), pct(sC7.meanRecall), pct(sDR.meanRecall)));
64
+ console.log(row('Mean Token Ingestion', `~${Math.round(sDocs.meanTokens)}`, `~${Math.round(sFC.meanTokens)}`, `~${Math.round(sC7.meanTokens)}`, `~${Math.round(sDR.meanTokens)}`));
65
+ console.log(row('Context Prep Latency', `~${sDocs.meanLatencyMs.toFixed(0)}ms`, `~${sFC.meanLatencyMs.toFixed(0)}ms`, `~${sC7.meanLatencyMs.toFixed(0)}ms`, `~${sDR.meanLatencyMs.toFixed(0)}ms`));
66
+ console.log(row('Avg Tool Calls per Task', sDocs.meanToolCalls.toFixed(1), sFC.meanToolCalls.toFixed(1), sC7.meanToolCalls.toFixed(1), sDR.meanToolCalls.toFixed(1)));
67
+ console.log(row('AST Verification Catches', '—', '—', '—', String(sDR.totalVerificationCatches)));
68
+ console.log(row('Verification False Positives', '—', '—', '—', String(sDR.falsePositives)));
69
+ console.log(hr);
70
+ }
71
+ else {
72
+ const hr = '--------------------------------------------------------------------------------------------------';
73
+ console.log(hr);
74
+ console.log(c.bold(`| ${'Metric'.padEnd(36)}| ${'Official Docs Fetch'.padEnd(21)}| ${'Context7'.padEnd(14)}| ${'DocOrbit'.padEnd(14)}|`));
75
+ console.log(hr);
76
+ const row = (label, vDocs, vC7, vDR) => `| ${label.padEnd(36)}| ${vDocs.padEnd(21)}| ${vC7.padEnd(14)}| ${vDR.padEnd(14)}|`;
77
+ console.log(row('Overall Task Success Rate', pct(sDocs.overallSuccessRate), pct(sC7.overallSuccessRate), pct(sDR.overallSuccessRate)));
78
+ console.log(row('Held-Out Eval Success Rate', pct(sDocs.evalSuccessRate), pct(sC7.evalSuccessRate), pct(sDR.evalSuccessRate)));
79
+ console.log(row('Correct Version Selection', pct(sDocs.versionAccuracy), pct(sC7.versionAccuracy), pct(sDR.versionAccuracy)));
80
+ console.log(row('Retrieval Precision@k', pct(sDocs.meanPrecision), pct(sC7.meanPrecision), pct(sDR.meanPrecision)));
81
+ console.log(row('Retrieval Recall@k', pct(sDocs.meanRecall), pct(sC7.meanRecall), pct(sDR.meanRecall)));
82
+ console.log(row('Mean Token Ingestion', `~${Math.round(sDocs.meanTokens)}`, `~${Math.round(sC7.meanTokens)}`, `~${Math.round(sDR.meanTokens)}`));
83
+ console.log(row('Context Prep Latency', `~${sDocs.meanLatencyMs.toFixed(0)}ms`, `~${sC7.meanLatencyMs.toFixed(0)}ms`, `~${sDR.meanLatencyMs.toFixed(0)}ms`));
84
+ console.log(row('Avg Tool Calls per Task', sDocs.meanToolCalls.toFixed(1), sC7.meanToolCalls.toFixed(1), sDR.meanToolCalls.toFixed(1)));
85
+ console.log(row('AST Verification Catches', '—', '—', String(sDR.totalVerificationCatches)));
86
+ console.log(row('Verification False Positives', '—', '—', String(sDR.falsePositives)));
87
+ console.log(hr);
88
+ }
89
+ if (sDR) {
90
+ console.log(c.bold(c.cyan('\nAST Code Verification (`check_api`) Performance:')));
91
+ console.log(` Total Verification Catches: ${c.bold(String(sDR.totalVerificationCatches))}`);
92
+ console.log(` False Positives on Valid Code: ${c.bold(String(sDR.falsePositives))}`);
93
+ console.log(` Dynamic/Ambiguous Fallback Rate: ${c.bold(pct(sDR.insufficientEvidenceRate))}`);
94
+ }
95
+ if (sim) {
96
+ console.log(c.yellow('\n⚠ Results above are from simulated runners. Run without --simulation for real results.'));
97
+ }
98
+ console.log(c.gray('\n* Official Docs Fetch baseline directly fetches known official documentation URLs over HTTPS rather than querying a search engine.'));
99
+ }
100
+ console.log(`\nRaw artifacts: ${c.cyan(options.output || 'eval-results/')}\n`);
101
+ }
@@ -0,0 +1,2 @@
1
+ import type { ExamplesCommandOptions } from '../../../../packages/shared/src/index.ts';
2
+ export declare function runExamplesCommand(task?: string, options?: ExamplesCommandOptions): Promise<void>;
@@ -0,0 +1,36 @@
1
+ import { DocOrbitDb, DocOrbitRepository } from "../../../../packages/storage/src/index.js";
2
+ import { resolveProjectContext } from "../../../../packages/workspace/src/index.js";
3
+ import { formatIndexedExamples } from "../formatters/terminal.js";
4
+ export async function runExamplesCommand(task = '', options = {}) {
5
+ const dbPath = options.dbPath || '.docorbit/docorbit.db';
6
+ const db = new DocOrbitDb(dbPath);
7
+ const repository = new DocOrbitRepository(db);
8
+ try {
9
+ let effectiveDocVersion = options.docVersion;
10
+ if (options.projectDir) {
11
+ const projContext = resolveProjectContext(options.projectDir, task, repository);
12
+ if (projContext.matchedDependency && !effectiveDocVersion) {
13
+ effectiveDocVersion = projContext.matchedDependency.targetDocVersion;
14
+ }
15
+ }
16
+ const examples = repository.searchIndexedExamples(task, {
17
+ language: options.language,
18
+ framework: options.framework,
19
+ docVersion: effectiveDocVersion,
20
+ limit: options.limit || 10,
21
+ });
22
+ if (options.json) {
23
+ console.log(JSON.stringify(examples, null, 2));
24
+ }
25
+ else {
26
+ console.log(formatIndexedExamples(examples, task));
27
+ }
28
+ }
29
+ catch (err) {
30
+ console.error(`DocOrbit Examples Error: ${err instanceof Error ? err.message : String(err)}`);
31
+ process.exit(1);
32
+ }
33
+ finally {
34
+ db.close();
35
+ }
36
+ }
@@ -0,0 +1,11 @@
1
+ export interface ExportCommandOptions {
2
+ format?: string;
3
+ output?: string;
4
+ stdout?: boolean;
5
+ projectDir?: string;
6
+ docVersion?: string;
7
+ targetSource?: string;
8
+ json?: boolean;
9
+ dbPath?: string;
10
+ }
11
+ export declare function runExportCommand(formatArg?: string, options?: ExportCommandOptions): Promise<void>;
@@ -0,0 +1,72 @@
1
+ import path from 'node:path';
2
+ import { DocOrbitDb, DocOrbitRepository } from "../../../../packages/storage/src/index.js";
3
+ import { ExportService } from "../../../../packages/export/src/index.js";
4
+ import { c } from "../formatters/colors.js";
5
+ export async function runExportCommand(formatArg, options = {}) {
6
+ const rawFormat = (formatArg || options.format || 'agents.md').toLowerCase();
7
+ const validFormats = ['agents.md', 'claude.md', 'skill.md', 'llms.txt', 'docs-map.md'];
8
+ let format = 'agents.md';
9
+ if (validFormats.includes(rawFormat)) {
10
+ format = rawFormat;
11
+ }
12
+ else if (rawFormat === 'agents' || rawFormat === 'agent') {
13
+ format = 'agents.md';
14
+ }
15
+ else if (rawFormat === 'claude') {
16
+ format = 'claude.md';
17
+ }
18
+ else if (rawFormat === 'skill') {
19
+ format = 'skill.md';
20
+ }
21
+ else if (rawFormat === 'llms' || rawFormat === 'llms.txt') {
22
+ format = 'llms.txt';
23
+ }
24
+ else if (rawFormat === 'map' || rawFormat === 'docs-map') {
25
+ format = 'docs-map.md';
26
+ }
27
+ const projectDir = options.projectDir ? path.resolve(options.projectDir) : process.cwd();
28
+ const dbPath = options.dbPath || path.join(projectDir, '.docorbit', 'docorbit.db');
29
+ const db = new DocOrbitDb(dbPath);
30
+ const repo = new DocOrbitRepository(db);
31
+ const service = new ExportService(repo);
32
+ try {
33
+ if (options.stdout) {
34
+ const result = await service.generateExport({
35
+ format,
36
+ projectDir,
37
+ docVersion: options.docVersion,
38
+ targetSource: options.targetSource,
39
+ stdout: true,
40
+ });
41
+ if (options.json) {
42
+ console.log(JSON.stringify(result, null, 2));
43
+ }
44
+ else {
45
+ process.stdout.write(result.content);
46
+ }
47
+ return;
48
+ }
49
+ const result = await service.writeExport({
50
+ format,
51
+ projectDir,
52
+ docVersion: options.docVersion,
53
+ targetSource: options.targetSource,
54
+ outputPath: options.output,
55
+ });
56
+ if (options.json) {
57
+ console.log(JSON.stringify(result, null, 2));
58
+ return;
59
+ }
60
+ console.log(`\n${c.bold(c.green('✓'))} Generated ${c.bold(format)} for coding agents`);
61
+ console.log(` ${c.dim('Output file:')} ${c.cyan(result.outputPath || 'stdout')}`);
62
+ console.log(` ${c.dim('Doc Version:')} ${result.metadata.docVersion || 'global/latest'}`);
63
+ console.log(` ${c.dim('Estimated Tokens:')} ~${result.metadata.tokenEstimate.toLocaleString()}`);
64
+ console.log(` ${c.dim('APIs Included:')} ${result.metadata.totalApis}`);
65
+ console.log(` ${c.dim('Pitfalls Included:')}${result.metadata.totalPitfalls}`);
66
+ console.log(` ${c.dim('Indexed Sources:')} ${result.metadata.sources.length}`);
67
+ console.log(` ${c.dim('Security Boundary:')}${c.yellow('untrusted documentation preserved')}\n`);
68
+ }
69
+ finally {
70
+ db.close();
71
+ }
72
+ }
@@ -0,0 +1,2 @@
1
+ import type { ImpactCommandOptions } from '../../../../packages/shared/src/index.ts';
2
+ export declare function runImpactCommand(target?: string, options?: ImpactCommandOptions): Promise<void>;
@@ -0,0 +1,30 @@
1
+ import { DocOrbitDb, DocOrbitRepository } from "../../../../packages/storage/src/index.js";
2
+ import { ImpactAnalysisService } from "../../../../packages/verification/src/index.js";
3
+ import { formatImpactReport } from "../formatters/terminal.js";
4
+ export async function runImpactCommand(target = '', options = {}) {
5
+ const dbPath = options.dbPath || '.docorbit/docorbit.db';
6
+ const db = new DocOrbitDb(dbPath);
7
+ const repo = new DocOrbitRepository(db);
8
+ try {
9
+ const service = new ImpactAnalysisService(repo);
10
+ const { result } = service.analyzeImpact({
11
+ projectDir: options.projectDir || process.cwd(),
12
+ fromVersion: options.from,
13
+ toVersion: options.to,
14
+ sourceId: options.source || (target && !target.startsWith('-') ? target : undefined),
15
+ });
16
+ if (options.json) {
17
+ console.log(JSON.stringify(result, null, 2));
18
+ }
19
+ else {
20
+ console.log(formatImpactReport(result));
21
+ }
22
+ }
23
+ catch (err) {
24
+ console.error(`DocOrbit Impact Error: ${err instanceof Error ? err.message : String(err)}`);
25
+ process.exit(1);
26
+ }
27
+ finally {
28
+ db.close();
29
+ }
30
+ }
@@ -0,0 +1,5 @@
1
+ export interface InitCommandOptions {
2
+ json?: boolean;
3
+ dbPath?: string;
4
+ }
5
+ export declare function runInitCommand(targetDir?: string, options?: InitCommandOptions): Promise<void>;