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,210 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import { WorkspaceResolver } from "../../workspace/src/index.js";
4
+ import { RecipeEngine } from "../../retrieval/src/index.js";
5
+ import { generateAgentsMd } from "./agents-md.js";
6
+ import { generateClaudeMd } from "./claude-md.js";
7
+ import { generateSkillMd } from "./skill-md.js";
8
+ import { generateLlmsTxt } from "./llms-txt.js";
9
+ import { buildDocumentationMap } from "./docs-map.js";
10
+ export class ExportService {
11
+ repo;
12
+ workspaceResolver;
13
+ recipeEngine;
14
+ constructor(repo) {
15
+ this.repo = repo;
16
+ this.workspaceResolver = new WorkspaceResolver(repo);
17
+ this.recipeEngine = new RecipeEngine(repo);
18
+ }
19
+ /**
20
+ * Generates agent documentation export deterministically based on indexed evidence.
21
+ */
22
+ async generateExport(options) {
23
+ const projectDir = options.projectDir ? path.resolve(options.projectDir) : undefined;
24
+ const docVersion = options.docVersion;
25
+ // 1. Resolve workspace dependencies if project directory exists
26
+ const dependencies = [];
27
+ if (projectDir && fs.existsSync(projectDir)) {
28
+ try {
29
+ const resolvedMap = await this.workspaceResolver.resolveAllDependencies(projectDir);
30
+ for (const [, item] of resolvedMap) {
31
+ dependencies.push({
32
+ dep: item.dependency,
33
+ resolution: item.resolution,
34
+ });
35
+ }
36
+ }
37
+ catch {
38
+ // Workspace detection is best-effort
39
+ }
40
+ }
41
+ // 2. Fetch indexed sources & pages
42
+ const sources = this.repo.sources.listSources();
43
+ const sourceUrls = sources.map(s => s.url);
44
+ const pages = this.repo.pages.listPages(1000);
45
+ // 3. Fetch endpoints (filtered by docVersion if provided)
46
+ const endpoints = this.repo.apis.searchApiEndpoints('', {
47
+ docVersion,
48
+ limit: 200,
49
+ });
50
+ // 4. Fetch pitfalls (filtered by docVersion if provided)
51
+ const pitfalls = this.repo.pitfalls.searchPitfalls('', {
52
+ docVersion,
53
+ limit: 100,
54
+ });
55
+ // 5. Fetch code examples
56
+ const examples = this.repo.examples.searchIndexedExamples('', {
57
+ docVersion,
58
+ limit: 100,
59
+ });
60
+ // 6. Build recipes for common goals
61
+ const recipes = [];
62
+ const candidateGoals = [
63
+ 'Stripe webhook signature verification',
64
+ 'Handle webhook events',
65
+ 'Create customer subscription',
66
+ 'Dynamic route parameter migration',
67
+ 'Authenticate API request',
68
+ ];
69
+ for (const goal of candidateGoals) {
70
+ try {
71
+ const recipe = this.recipeEngine.assembleRecipe(goal, { docVersion });
72
+ if (recipe.prerequisites.length > 0 || recipe.steps.length > 0) {
73
+ recipes.push(recipe);
74
+ }
75
+ }
76
+ catch {
77
+ // Goal not covered by current index
78
+ }
79
+ }
80
+ // 7. Format generation
81
+ let content = '';
82
+ const format = options.format;
83
+ switch (format) {
84
+ case 'agents.md': {
85
+ content = generateAgentsMd({
86
+ projectDir,
87
+ docVersion,
88
+ dependencies,
89
+ endpoints,
90
+ pitfalls,
91
+ recipes,
92
+ sources: sourceUrls,
93
+ });
94
+ break;
95
+ }
96
+ case 'claude.md': {
97
+ content = generateClaudeMd({
98
+ projectDir,
99
+ docVersion,
100
+ dependencies,
101
+ endpoints,
102
+ pitfalls,
103
+ sources: sourceUrls,
104
+ });
105
+ break;
106
+ }
107
+ case 'skill.md': {
108
+ content = generateSkillMd({
109
+ skillName: options.targetSource || 'docorbit-agent-skill',
110
+ docVersion,
111
+ endpoints,
112
+ pitfalls,
113
+ recipes,
114
+ sources: sourceUrls,
115
+ });
116
+ break;
117
+ }
118
+ case 'llms.txt': {
119
+ content = generateLlmsTxt({
120
+ title: options.targetSource || 'Indexed Documentation',
121
+ docVersion,
122
+ pages,
123
+ endpoints,
124
+ pitfalls,
125
+ });
126
+ break;
127
+ }
128
+ case 'docs-map.md': {
129
+ const map = buildDocumentationMap({
130
+ sources,
131
+ pages,
132
+ endpoints,
133
+ pitfalls,
134
+ docVersion,
135
+ });
136
+ content = map.markdownTree;
137
+ break;
138
+ }
139
+ default:
140
+ throw new Error(`Unsupported export format: ${format}`);
141
+ }
142
+ const tokenEstimate = Math.ceil(content.length / 4);
143
+ return {
144
+ format,
145
+ content,
146
+ outputPath: options.outputPath,
147
+ metadata: {
148
+ generatedAt: '2026-09-06T00:00:00.000Z', // Deterministic baseline timestamp
149
+ sources: sourceUrls,
150
+ docVersion,
151
+ projectDependencies: dependencies.map(d => ({
152
+ name: d.dep.name,
153
+ version: d.resolution?.targetVersion || d.dep.requestedVersion,
154
+ matchType: d.resolution?.matchedBy || 'unresolved',
155
+ })),
156
+ totalApis: endpoints.length,
157
+ totalPitfalls: pitfalls.length,
158
+ totalExamples: examples.length,
159
+ tokenEstimate,
160
+ untrusted: true,
161
+ },
162
+ };
163
+ }
164
+ /**
165
+ * Retrieves the structured documentation map.
166
+ */
167
+ getDocumentationMap(options = {}) {
168
+ let sources = this.repo.sources.listSources();
169
+ if (options.sourceId) {
170
+ sources = sources.filter(s => s.id === options.sourceId || s.url.includes(options.sourceId));
171
+ }
172
+ const pages = this.repo.pages.listPages(1000);
173
+ const endpoints = this.repo.apis.searchApiEndpoints('', { docVersion: options.docVersion, limit: 500 });
174
+ const pitfalls = this.repo.pitfalls.searchPitfalls('', { docVersion: options.docVersion, limit: 200 });
175
+ return buildDocumentationMap({
176
+ sources,
177
+ pages,
178
+ endpoints,
179
+ pitfalls,
180
+ docVersion: options.docVersion,
181
+ });
182
+ }
183
+ /**
184
+ * Generates export and writes directly to workspace file.
185
+ */
186
+ async writeExport(options) {
187
+ const result = await this.generateExport(options);
188
+ if (!options.stdout) {
189
+ let targetFile = options.outputPath;
190
+ if (!targetFile) {
191
+ const baseDir = options.projectDir || process.cwd();
192
+ const defaultNames = {
193
+ 'agents.md': 'AGENTS.md',
194
+ 'claude.md': 'CLAUDE.md',
195
+ 'skill.md': 'skill.md',
196
+ 'llms.txt': 'llms.txt',
197
+ 'docs-map.md': 'docs-map.md',
198
+ };
199
+ targetFile = path.join(baseDir, defaultNames[options.format]);
200
+ }
201
+ const dir = path.dirname(targetFile);
202
+ if (!fs.existsSync(dir)) {
203
+ fs.mkdirSync(dir, { recursive: true });
204
+ }
205
+ fs.writeFileSync(targetFile, result.content, 'utf-8');
206
+ result.outputPath = targetFile;
207
+ }
208
+ return result;
209
+ }
210
+ }
@@ -0,0 +1,14 @@
1
+ import type { ApiEndpoint, Pitfall, Recipe } from '../../shared/src/index.ts';
2
+ export interface SkillMdExportData {
3
+ skillName?: string;
4
+ docVersion?: string;
5
+ endpoints: ApiEndpoint[];
6
+ pitfalls: Pitfall[];
7
+ recipes: Recipe[];
8
+ sources: string[];
9
+ }
10
+ /**
11
+ * Generates a skill.md file compatible with AI agent skill systems.
12
+ * Embeds YAML frontmatter, deterministic recipes, and verified schemas.
13
+ */
14
+ export declare function generateSkillMd(data: SkillMdExportData): string;
@@ -0,0 +1,107 @@
1
+ /**
2
+ * Generates a skill.md file compatible with AI agent skill systems.
3
+ * Embeds YAML frontmatter, deterministic recipes, and verified schemas.
4
+ */
5
+ export function generateSkillMd(data) {
6
+ const lines = [];
7
+ const skillName = data.skillName || 'docorbit-implementation-skill';
8
+ const version = data.docVersion || '0.1.0';
9
+ // Frontmatter
10
+ lines.push('---');
11
+ lines.push(`name: ${skillName}`);
12
+ lines.push('description: Evidence-grounded documentation intelligence and API implementation recipes.');
13
+ lines.push(`version: ${version}`);
14
+ lines.push('untrusted_documentation: true');
15
+ lines.push('grounding: strict_evidence');
16
+ lines.push('---');
17
+ lines.push('');
18
+ lines.push(`# Skill: ${skillName} (${version})`);
19
+ lines.push('');
20
+ lines.push('This agent skill contains deterministic recipes and verified API signatures generated from authoritative');
21
+ lines.push('documentation. Never fabricate undocumented steps or validation rules.');
22
+ lines.push('');
23
+ // 1. Recipes
24
+ lines.push('## 1. Actionable Implementation Recipes');
25
+ lines.push('');
26
+ if (data.recipes.length > 0) {
27
+ for (const r of data.recipes) {
28
+ lines.push(`### Recipe: ${r.title}`);
29
+ lines.push(`- **Goal**: ${r.goal}`);
30
+ lines.push(`- **Evidence Status**: ${r.evidenceLevels.strictGrounded ? 'Grounded' : 'Partial'}`);
31
+ lines.push('');
32
+ if (r.prerequisites.length > 0) {
33
+ lines.push('**Prerequisites:**');
34
+ for (const pre of r.prerequisites) {
35
+ lines.push(`- [${pre.evidenceLevel}] ${pre.description}`);
36
+ }
37
+ lines.push('');
38
+ }
39
+ if (r.steps.length > 0) {
40
+ lines.push('**Steps:**');
41
+ for (const step of r.steps) {
42
+ lines.push(`${step.stepNumber}. [${step.evidenceLevel}] **${step.title}**: ${step.action}`);
43
+ if (step.codeSnippet) {
44
+ lines.push(' ```' + (step.codeSnippet.language || 'typescript'));
45
+ lines.push(step.codeSnippet.code.trim().split('\n').map(l => ' ' + l).join('\n'));
46
+ lines.push(' ```');
47
+ }
48
+ }
49
+ lines.push('');
50
+ }
51
+ if (r.validationSteps.length > 0) {
52
+ lines.push('**Evidence-Based Validation:**');
53
+ for (const v of r.validationSteps) {
54
+ lines.push(`- Verify: ${v.assertion} (Expected: \`${v.expectedOutcome}\`)`);
55
+ }
56
+ lines.push('');
57
+ }
58
+ }
59
+ }
60
+ else {
61
+ lines.push('- *No compiled recipes available for this scope.*');
62
+ lines.push('');
63
+ }
64
+ // 2. API Reference
65
+ lines.push('## 2. API Reference & Schemas');
66
+ lines.push('');
67
+ if (data.endpoints.length > 0) {
68
+ const sortedEndpoints = [...data.endpoints].sort((a, b) => {
69
+ const cmp = a.path.localeCompare(b.path);
70
+ return cmp !== 0 ? cmp : a.method.localeCompare(b.method);
71
+ });
72
+ for (const ep of sortedEndpoints) {
73
+ lines.push(`### \`${ep.method.toUpperCase()} ${ep.path}\``);
74
+ if (ep.summary)
75
+ lines.push(ep.summary);
76
+ if (ep.parameters && ep.parameters.length > 0) {
77
+ lines.push('Parameters:');
78
+ for (const p of ep.parameters) {
79
+ lines.push(`- \`${p.name}\` (${p.in}, ${p.required ? 'required' : 'optional'})`);
80
+ }
81
+ }
82
+ lines.push('');
83
+ }
84
+ }
85
+ else {
86
+ lines.push('- *No endpoints indexed.*');
87
+ lines.push('');
88
+ }
89
+ // 3. Known Pitfalls
90
+ lines.push('## 3. Known Pitfalls & Defenses');
91
+ lines.push('');
92
+ if (data.pitfalls.length > 0) {
93
+ const sortedPitfalls = [...data.pitfalls].sort((a, b) => a.title.localeCompare(b.title));
94
+ for (const pf of sortedPitfalls) {
95
+ lines.push(`- **[${pf.kind}] ${pf.title}**: ${pf.message}`);
96
+ if (pf.mitigation) {
97
+ lines.push(` - Defense: ${pf.mitigation}`);
98
+ }
99
+ }
100
+ lines.push('');
101
+ }
102
+ else {
103
+ lines.push('- *No pitfalls recorded.*');
104
+ lines.push('');
105
+ }
106
+ return lines.join('\n');
107
+ }
@@ -1,44 +1,11 @@
1
- export type {
2
- JsonRpcRequest,
3
- JsonRpcResponse,
4
- JsonRpcNotification,
5
- JsonRpcErrorObject,
6
- ToolInputSchema,
7
- McpTool,
8
- ToolContentItem,
9
- CallToolResult,
10
- McpResource,
11
- ResourceContent,
12
- ReadResourceResult,
13
- ServerCapabilities,
14
- InitializeResult,
15
- } from './types.ts';
16
-
1
+ export type { JsonRpcRequest, JsonRpcResponse, JsonRpcNotification, JsonRpcErrorObject, ToolInputSchema, McpTool, ToolContentItem, CallToolResult, McpResource, ResourceContent, ReadResourceResult, ServerCapabilities, InitializeResult, } from './types.ts';
17
2
  export { JSONRPC_ERRORS } from './types.ts';
18
-
19
3
  export type { McpContext, McpToolHandler } from './tools/types.ts';
20
- export {
21
- createDefaultTools,
22
- SearchDocsTool,
23
- GetDocTool,
24
- FindApiTool,
25
- FindExampleTool,
26
- FindPitfallTool,
27
- FindRecipeTool,
28
- GetVersionTool,
29
- ListSourcesTool,
30
- GetImplementationContextTool,
31
- CheckApiTool,
32
- DiffDocsTool,
33
- AnalyzeImpactTool,
34
- } from './tools/index.ts';
35
-
4
+ export { createDefaultTools, SearchDocsTool, GetDocTool, FindApiTool, FindExampleTool, FindPitfallTool, FindRecipeTool, GetVersionTool, ListSourcesTool, GetImplementationContextTool, CheckApiTool, DiffDocsTool, AnalyzeImpactTool, GetDocumentationMapTool, ExportAgentContextTool, IngestDocTool, } from './tools/index.ts';
36
5
  export type { ResourceManagerOptions } from './resources/index.ts';
37
6
  export { McpResourceManager } from './resources/index.ts';
38
-
39
7
  export type { McpServerOptions } from './server.ts';
40
8
  export { McpServer } from './server.ts';
41
-
42
9
  export type { McpTransport } from './transports/types.ts';
43
10
  export type { StdioTransportOptions } from './transports/stdio.ts';
44
11
  export { StdioServerTransport } from './transports/stdio.ts';
@@ -0,0 +1,6 @@
1
+ export { JSONRPC_ERRORS } from "./types.js";
2
+ export { createDefaultTools, SearchDocsTool, GetDocTool, FindApiTool, FindExampleTool, FindPitfallTool, FindRecipeTool, GetVersionTool, ListSourcesTool, GetImplementationContextTool, CheckApiTool, DiffDocsTool, AnalyzeImpactTool, GetDocumentationMapTool, ExportAgentContextTool, IngestDocTool, } from "./tools/index.js";
3
+ export { McpResourceManager } from "./resources/index.js";
4
+ export { McpServer } from "./server.js";
5
+ export { StdioServerTransport } from "./transports/stdio.js";
6
+ export { StreamableHttpTransport } from "./transports/http.js";
@@ -0,0 +1,12 @@
1
+ import type { DocOrbitRepository } from '../../../storage/src/index.ts';
2
+ import type { McpResource, ReadResourceResult } from '../types.ts';
3
+ export interface ResourceManagerOptions {
4
+ maxResourceBytes?: number;
5
+ }
6
+ export declare class McpResourceManager {
7
+ private repo;
8
+ private maxChars;
9
+ constructor(repo: DocOrbitRepository, options?: ResourceManagerOptions);
10
+ listResources(): McpResource[];
11
+ readResource(uri: string): ReadResourceResult;
12
+ }
@@ -0,0 +1,165 @@
1
+ export class McpResourceManager {
2
+ repo;
3
+ maxChars;
4
+ constructor(repo, options = {}) {
5
+ this.repo = repo;
6
+ // Default 64KB bounded limit
7
+ this.maxChars = options.maxResourceBytes || 64 * 1024;
8
+ }
9
+ listResources() {
10
+ const resources = [
11
+ {
12
+ uri: 'docorbit://sources',
13
+ name: 'Indexed Documentation Sources',
14
+ description: 'Collection of all indexed documentation sources, version status, and snapshots.',
15
+ mimeType: 'application/json',
16
+ },
17
+ ];
18
+ try {
19
+ const sources = this.repo.listSources();
20
+ for (const source of sources) {
21
+ resources.push({
22
+ uri: `docorbit://sources/${source.id}`,
23
+ name: `Source: ${source.url}`,
24
+ description: `Indexed documentation source (${source.type}, authority: ${source.authority})`,
25
+ mimeType: 'application/json',
26
+ });
27
+ }
28
+ }
29
+ catch {
30
+ // Continue if database is empty or error occurs
31
+ }
32
+ try {
33
+ const pages = this.repo.listPages(100);
34
+ for (const page of pages) {
35
+ resources.push({
36
+ uri: `docorbit://pages/${page.id}`,
37
+ name: `Page: ${page.title || page.url}`,
38
+ description: `Documentation page at ${page.url} (~${page.estimatedTokens} tokens)`,
39
+ mimeType: 'text/markdown',
40
+ });
41
+ }
42
+ }
43
+ catch {
44
+ // Continue
45
+ }
46
+ return resources;
47
+ }
48
+ readResource(uri) {
49
+ if (uri === 'docorbit://sources') {
50
+ const sources = this.repo.listSources();
51
+ const snapshots = this.repo.listSnapshots();
52
+ const payload = sources.map(s => ({
53
+ id: s.id,
54
+ url: s.url,
55
+ type: s.type,
56
+ authority: s.authority,
57
+ confidence: s.confidence,
58
+ status: s.status,
59
+ machineReadable: s.machineReadable,
60
+ snapshots: snapshots.filter(sn => sn.sourceId === s.id).map(sn => ({
61
+ id: sn.id,
62
+ pageCount: sn.pageCount,
63
+ docVersion: sn.docVersion,
64
+ capturedAt: sn.capturedAt,
65
+ })),
66
+ }));
67
+ return {
68
+ contents: [
69
+ {
70
+ uri,
71
+ mimeType: 'application/json',
72
+ text: JSON.stringify(payload, null, 2),
73
+ },
74
+ ],
75
+ };
76
+ }
77
+ if (uri.startsWith('docorbit://sources/')) {
78
+ const sourceId = uri.slice('docorbit://sources/'.length);
79
+ const source = this.repo.getSource(sourceId);
80
+ if (!source) {
81
+ throw new Error(`Resource not found: ${uri}`);
82
+ }
83
+ const snapshots = this.repo.listSnapshots().filter(sn => sn.sourceId === source.id);
84
+ const pageCount = this.repo.countPages(source.id);
85
+ return {
86
+ contents: [
87
+ {
88
+ uri,
89
+ mimeType: 'application/json',
90
+ text: JSON.stringify({
91
+ source,
92
+ pageCount,
93
+ snapshots,
94
+ untrusted: true,
95
+ }, null, 2),
96
+ },
97
+ ],
98
+ };
99
+ }
100
+ if (uri.startsWith('docorbit://pages/')) {
101
+ const pageId = uri.slice('docorbit://pages/'.length);
102
+ const page = this.repo.getPage(pageId);
103
+ if (!page) {
104
+ throw new Error(`Resource not found: ${uri}`);
105
+ }
106
+ let content = page.content;
107
+ let truncated = false;
108
+ if (content.length > this.maxChars) {
109
+ content = content.slice(0, this.maxChars) + '\n\n[Content truncated at 64KB bounded resource limit...]';
110
+ truncated = true;
111
+ }
112
+ const header = [
113
+ `# ${page.title}`,
114
+ `**URL**: ${page.url}`,
115
+ `**Tokens**: ~${page.estimatedTokens} | **Content Hash**: \`${page.contentHash.slice(0, 8)}\``,
116
+ page.securityAnnotations.length > 0
117
+ ? `> [!WARNING] Security alerts: ${page.securityAnnotations.map(a => a.patternName).join(', ')}`
118
+ : `> [!NOTE] External content is untrusted.`,
119
+ truncated ? `> [!IMPORTANT] Output was truncated to meet resource limits.` : '',
120
+ '---\n',
121
+ ].filter(Boolean).join('\n');
122
+ return {
123
+ contents: [
124
+ {
125
+ uri,
126
+ mimeType: 'text/markdown',
127
+ text: `${header}\n${content}`,
128
+ },
129
+ ],
130
+ };
131
+ }
132
+ if (uri.startsWith('docorbit://chunks/')) {
133
+ const chunkId = uri.slice('docorbit://chunks/'.length);
134
+ const chunk = this.repo.getChunk(chunkId);
135
+ if (!chunk) {
136
+ throw new Error(`Resource not found: ${uri}`);
137
+ }
138
+ let content = chunk.content;
139
+ let truncated = false;
140
+ if (content.length > this.maxChars) {
141
+ content = content.slice(0, this.maxChars) + '\n\n[Content truncated at bounded limit...]';
142
+ truncated = true;
143
+ }
144
+ const breadcrumb = chunk.sectionPath.length > 0 ? chunk.sectionPath.join(' > ') : (chunk.title || 'General');
145
+ const header = [
146
+ `### Chunk: ${breadcrumb}`,
147
+ `**ID**: \`${chunk.id}\` | **Type**: \`${chunk.chunkType}\` | **Est. Tokens**: ~${chunk.tokenEstimate}`,
148
+ chunk.docVersion ? `**Doc Version**: \`${chunk.docVersion}\`` : '',
149
+ `> [!NOTE] External content is untrusted.\n`,
150
+ truncated ? `> [!IMPORTANT] Output was truncated to meet resource limits.\n` : '',
151
+ '---\n',
152
+ ].filter(Boolean).join('\n');
153
+ return {
154
+ contents: [
155
+ {
156
+ uri,
157
+ mimeType: 'text/markdown',
158
+ text: `${header}\n${content}`,
159
+ },
160
+ ],
161
+ };
162
+ }
163
+ throw new Error(`Unsupported resource URI: ${uri}`);
164
+ }
165
+ }
@@ -0,0 +1,30 @@
1
+ import type { DocOrbitRepository } from '../../storage/src/index.ts';
2
+ import type { WorkspaceResolver } from '../../workspace/src/index.ts';
3
+ import type { JsonRpcResponse, McpTool } from './types.ts';
4
+ import type { McpContext, McpToolHandler } from './tools/types.ts';
5
+ import { McpResourceManager } from './resources/index.ts';
6
+ export interface McpServerOptions {
7
+ repo: DocOrbitRepository;
8
+ resolver?: WorkspaceResolver;
9
+ projectDir?: string;
10
+ serverName?: string;
11
+ serverVersion?: string;
12
+ tools?: Map<string, McpToolHandler>;
13
+ maxResourceBytes?: number;
14
+ }
15
+ export declare class McpServer {
16
+ private repo;
17
+ private resolver?;
18
+ private projectDir?;
19
+ private serverName;
20
+ private serverVersion;
21
+ private tools;
22
+ private resourceManager;
23
+ private context;
24
+ private initialized;
25
+ constructor(options: McpServerOptions);
26
+ getContext(): McpContext;
27
+ getResourceManager(): McpResourceManager;
28
+ getTools(): McpTool[];
29
+ handleMessage(raw: unknown): Promise<JsonRpcResponse | null>;
30
+ }