docorbit 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (402) hide show
  1. package/bin/docorbit.js +2 -2
  2. package/dist/apps/cli/src/commands/add.d.ts +7 -0
  3. package/dist/apps/cli/src/commands/add.js +35 -0
  4. package/dist/apps/cli/src/commands/api.d.ts +2 -0
  5. package/dist/apps/cli/src/commands/api.js +35 -0
  6. package/dist/apps/cli/src/commands/context.d.ts +10 -0
  7. package/dist/apps/cli/src/commands/context.js +36 -0
  8. package/dist/apps/cli/src/commands/dashboard.d.ts +8 -0
  9. package/dist/apps/cli/src/commands/dashboard.js +43 -0
  10. package/dist/apps/cli/src/commands/diff.d.ts +2 -0
  11. package/dist/apps/cli/src/commands/diff.js +29 -0
  12. package/dist/apps/cli/src/commands/evaluate.d.ts +11 -0
  13. package/dist/apps/cli/src/commands/evaluate.js +101 -0
  14. package/dist/apps/cli/src/commands/examples.d.ts +2 -0
  15. package/dist/apps/cli/src/commands/examples.js +36 -0
  16. package/dist/apps/cli/src/commands/export.d.ts +11 -0
  17. package/dist/apps/cli/src/commands/export.js +72 -0
  18. package/dist/apps/cli/src/commands/impact.d.ts +2 -0
  19. package/dist/apps/cli/src/commands/impact.js +30 -0
  20. package/dist/apps/cli/src/commands/init.d.ts +5 -0
  21. package/dist/apps/cli/src/commands/init.js +52 -0
  22. package/dist/apps/cli/src/commands/inspect.d.ts +5 -0
  23. package/dist/apps/cli/src/commands/inspect.js +24 -0
  24. package/dist/apps/cli/src/commands/mcp.d.ts +8 -0
  25. package/dist/apps/cli/src/commands/mcp.js +49 -0
  26. package/dist/apps/cli/src/commands/pitfalls.d.ts +2 -0
  27. package/dist/apps/cli/src/commands/pitfalls.js +35 -0
  28. package/dist/apps/cli/src/commands/recipes.d.ts +2 -0
  29. package/dist/apps/cli/src/commands/recipes.js +33 -0
  30. package/dist/apps/cli/src/commands/search.d.ts +11 -0
  31. package/dist/apps/cli/src/commands/search.js +36 -0
  32. package/dist/apps/cli/src/commands/update.d.ts +6 -0
  33. package/dist/apps/cli/src/commands/update.js +53 -0
  34. package/dist/apps/cli/src/commands/verify.d.ts +2 -0
  35. package/dist/apps/cli/src/commands/verify.js +44 -0
  36. package/dist/apps/cli/src/formatters/colors.d.ts +21 -0
  37. package/dist/apps/cli/src/formatters/colors.js +22 -0
  38. package/dist/apps/cli/src/formatters/inspection.d.ts +3 -0
  39. package/dist/apps/cli/src/formatters/inspection.js +88 -0
  40. package/dist/apps/cli/src/formatters/knowledge.d.ts +5 -0
  41. package/dist/apps/cli/src/formatters/knowledge.js +229 -0
  42. package/dist/apps/cli/src/formatters/retrieval.d.ts +3 -0
  43. package/dist/apps/cli/src/formatters/retrieval.js +61 -0
  44. package/{apps/cli/src/formatters/terminal.ts → dist/apps/cli/src/formatters/terminal.d.ts} +0 -1
  45. package/dist/apps/cli/src/formatters/terminal.js +5 -0
  46. package/dist/apps/cli/src/formatters/verification.d.ts +4 -0
  47. package/dist/apps/cli/src/formatters/verification.js +102 -0
  48. package/dist/apps/cli/src/index.d.ts +1 -0
  49. package/dist/apps/cli/src/index.js +376 -0
  50. package/dist/packages/core/src/dashboard/server.d.ts +33 -0
  51. package/dist/packages/core/src/dashboard/server.js +267 -0
  52. package/dist/packages/core/src/dashboard/ui.d.ts +5 -0
  53. package/{packages/core/src/dashboard/ui.ts → dist/packages/core/src/dashboard/ui.js} +2 -2
  54. package/dist/packages/core/src/implementation-service.d.ts +73 -0
  55. package/dist/packages/core/src/implementation-service.js +325 -0
  56. package/{packages/core/src/index.ts → dist/packages/core/src/index.d.ts} +0 -1
  57. package/dist/packages/core/src/index.js +6 -0
  58. package/dist/packages/core/src/inspector.d.ts +22 -0
  59. package/dist/packages/core/src/inspector.js +38 -0
  60. package/dist/packages/core/src/pipeline.d.ts +45 -0
  61. package/dist/packages/core/src/pipeline.js +246 -0
  62. package/dist/packages/crawler/src/config.d.ts +2 -0
  63. package/dist/packages/crawler/src/config.js +10 -0
  64. package/dist/packages/crawler/src/fetcher.d.ts +31 -0
  65. package/dist/packages/crawler/src/fetcher.js +139 -0
  66. package/dist/packages/crawler/src/index.js +2 -0
  67. package/dist/packages/discovery/src/index.d.ts +11 -0
  68. package/dist/packages/discovery/src/index.js +29 -0
  69. package/dist/packages/discovery/src/provider.d.ts +12 -0
  70. package/dist/packages/discovery/src/provider.js +30 -0
  71. package/dist/packages/discovery/src/providers/generic.d.ts +7 -0
  72. package/dist/packages/discovery/src/providers/generic.js +94 -0
  73. package/dist/packages/discovery/src/providers/github.d.ts +7 -0
  74. package/dist/packages/discovery/src/providers/github.js +52 -0
  75. package/dist/packages/discovery/src/providers/llms-txt.d.ts +7 -0
  76. package/dist/packages/discovery/src/providers/llms-txt.js +60 -0
  77. package/dist/packages/discovery/src/providers/markdown.d.ts +7 -0
  78. package/dist/packages/discovery/src/providers/markdown.js +38 -0
  79. package/dist/packages/discovery/src/providers/openapi.d.ts +7 -0
  80. package/dist/packages/discovery/src/providers/openapi.js +77 -0
  81. package/dist/packages/discovery/src/providers/sitemap.d.ts +7 -0
  82. package/dist/packages/discovery/src/providers/sitemap.js +53 -0
  83. package/dist/packages/discovery/src/providers/skill.d.ts +7 -0
  84. package/dist/packages/discovery/src/providers/skill.js +46 -0
  85. package/dist/packages/discovery/src/ranker.d.ts +6 -0
  86. package/dist/packages/discovery/src/ranker.js +107 -0
  87. package/dist/packages/evaluation/src/dataset.d.ts +2 -0
  88. package/dist/packages/evaluation/src/dataset.js +944 -0
  89. package/dist/packages/evaluation/src/index.js +8 -0
  90. package/dist/packages/evaluation/src/runner.d.ts +7 -0
  91. package/dist/packages/evaluation/src/runner.js +196 -0
  92. package/dist/packages/evaluation/src/strategies/context7-runner.d.ts +24 -0
  93. package/dist/packages/evaluation/src/strategies/context7-runner.js +229 -0
  94. package/dist/packages/evaluation/src/strategies/docorbit-runner.d.ts +5 -0
  95. package/dist/packages/evaluation/src/strategies/docorbit-runner.js +210 -0
  96. package/dist/packages/evaluation/src/strategies/firecrawl-runner.d.ts +24 -0
  97. package/dist/packages/evaluation/src/strategies/firecrawl-runner.js +151 -0
  98. package/dist/packages/evaluation/src/strategies/web-search-runner.d.ts +32 -0
  99. package/dist/packages/evaluation/src/strategies/web-search-runner.js +161 -0
  100. package/dist/packages/evaluation/src/types.d.ts +15 -0
  101. package/dist/packages/evaluation/src/types.js +1 -0
  102. package/dist/packages/evaluation/src/version-matcher.d.ts +11 -0
  103. package/dist/packages/evaluation/src/version-matcher.js +61 -0
  104. package/dist/packages/export/src/agents-md.d.ts +19 -0
  105. package/dist/packages/export/src/agents-md.js +170 -0
  106. package/dist/packages/export/src/claude-md.d.ts +17 -0
  107. package/dist/packages/export/src/claude-md.js +118 -0
  108. package/dist/packages/export/src/docs-map.d.ts +14 -0
  109. package/dist/packages/export/src/docs-map.js +118 -0
  110. package/dist/packages/export/src/index.js +6 -0
  111. package/dist/packages/export/src/llms-txt.d.ts +15 -0
  112. package/dist/packages/export/src/llms-txt.js +73 -0
  113. package/dist/packages/export/src/service.d.ts +23 -0
  114. package/dist/packages/export/src/service.js +210 -0
  115. package/dist/packages/export/src/skill-md.d.ts +14 -0
  116. package/dist/packages/export/src/skill-md.js +107 -0
  117. package/{packages/mcp/src/index.ts → dist/packages/mcp/src/index.d.ts} +2 -35
  118. package/dist/packages/mcp/src/index.js +6 -0
  119. package/dist/packages/mcp/src/resources/index.d.ts +12 -0
  120. package/dist/packages/mcp/src/resources/index.js +165 -0
  121. package/dist/packages/mcp/src/server.d.ts +30 -0
  122. package/dist/packages/mcp/src/server.js +243 -0
  123. package/dist/packages/mcp/src/tools/analyze-impact.d.ts +6 -0
  124. package/dist/packages/mcp/src/tools/analyze-impact.js +64 -0
  125. package/dist/packages/mcp/src/tools/check-api.d.ts +6 -0
  126. package/dist/packages/mcp/src/tools/check-api.js +74 -0
  127. package/dist/packages/mcp/src/tools/diff-docs.d.ts +6 -0
  128. package/dist/packages/mcp/src/tools/diff-docs.js +58 -0
  129. package/dist/packages/mcp/src/tools/export-context.d.ts +6 -0
  130. package/dist/packages/mcp/src/tools/export-context.js +61 -0
  131. package/dist/packages/mcp/src/tools/find-api.d.ts +6 -0
  132. package/dist/packages/mcp/src/tools/find-api.js +91 -0
  133. package/dist/packages/mcp/src/tools/find-example.d.ts +6 -0
  134. package/dist/packages/mcp/src/tools/find-example.js +92 -0
  135. package/dist/packages/mcp/src/tools/find-pitfall.d.ts +6 -0
  136. package/dist/packages/mcp/src/tools/find-pitfall.js +85 -0
  137. package/dist/packages/mcp/src/tools/find-recipe.d.ts +6 -0
  138. package/dist/packages/mcp/src/tools/find-recipe.js +89 -0
  139. package/dist/packages/mcp/src/tools/get-doc.d.ts +6 -0
  140. package/dist/packages/mcp/src/tools/get-doc.js +118 -0
  141. package/dist/packages/mcp/src/tools/get-docs-map.d.ts +6 -0
  142. package/dist/packages/mcp/src/tools/get-docs-map.js +54 -0
  143. package/dist/packages/mcp/src/tools/get-version.d.ts +6 -0
  144. package/dist/packages/mcp/src/tools/get-version.js +104 -0
  145. package/dist/packages/mcp/src/tools/implementation-context.d.ts +6 -0
  146. package/dist/packages/mcp/src/tools/implementation-context.js +82 -0
  147. package/dist/packages/mcp/src/tools/index.d.ts +18 -0
  148. package/dist/packages/mcp/src/tools/index.js +39 -0
  149. package/dist/packages/mcp/src/tools/list-sources.d.ts +6 -0
  150. package/dist/packages/mcp/src/tools/list-sources.js +76 -0
  151. package/dist/packages/mcp/src/tools/search-docs.d.ts +6 -0
  152. package/dist/packages/mcp/src/tools/search-docs.js +113 -0
  153. package/dist/packages/mcp/src/tools/types.d.ts +22 -0
  154. package/dist/packages/mcp/src/tools/types.js +1 -0
  155. package/dist/packages/mcp/src/transports/http.d.ts +31 -0
  156. package/dist/packages/mcp/src/transports/http.js +215 -0
  157. package/dist/packages/mcp/src/transports/stdio.d.ts +22 -0
  158. package/dist/packages/mcp/src/transports/stdio.js +86 -0
  159. package/{packages/mcp/src/transports/types.ts → dist/packages/mcp/src/transports/types.d.ts} +2 -3
  160. package/dist/packages/mcp/src/transports/types.js +1 -0
  161. package/dist/packages/mcp/src/types.d.ts +89 -0
  162. package/dist/packages/mcp/src/types.js +7 -0
  163. package/dist/packages/normalizer/src/example-indexer.d.ts +5 -0
  164. package/dist/packages/normalizer/src/example-indexer.js +200 -0
  165. package/dist/packages/normalizer/src/html.d.ts +13 -0
  166. package/dist/packages/normalizer/src/html.js +221 -0
  167. package/{packages/normalizer/src/index.ts → dist/packages/normalizer/src/index.d.ts} +0 -1
  168. package/dist/packages/normalizer/src/index.js +7 -0
  169. package/dist/packages/normalizer/src/llms.d.ts +3 -0
  170. package/dist/packages/normalizer/src/llms.js +71 -0
  171. package/dist/packages/normalizer/src/openapi/endpoint-parser.d.ts +11 -0
  172. package/dist/packages/normalizer/src/openapi/endpoint-parser.js +357 -0
  173. package/dist/packages/normalizer/src/openapi/schema-resolver.d.ts +10 -0
  174. package/dist/packages/normalizer/src/openapi/schema-resolver.js +82 -0
  175. package/dist/packages/normalizer/src/openapi.js +2 -0
  176. package/dist/packages/normalizer/src/page.d.ts +13 -0
  177. package/dist/packages/normalizer/src/page.js +150 -0
  178. package/dist/packages/normalizer/src/pitfall-extractor.d.ts +6 -0
  179. package/dist/packages/normalizer/src/pitfall-extractor.js +153 -0
  180. package/dist/packages/normalizer/src/slicer.d.ts +30 -0
  181. package/dist/packages/normalizer/src/slicer.js +360 -0
  182. package/dist/packages/retrieval/src/engine.d.ts +17 -0
  183. package/dist/packages/retrieval/src/engine.js +93 -0
  184. package/{packages/retrieval/src/index.ts → dist/packages/retrieval/src/index.d.ts} +0 -1
  185. package/dist/packages/retrieval/src/index.js +6 -0
  186. package/dist/packages/retrieval/src/intent.d.ts +6 -0
  187. package/dist/packages/retrieval/src/intent.js +39 -0
  188. package/dist/packages/retrieval/src/packer.d.ts +2 -0
  189. package/dist/packages/retrieval/src/packer.js +108 -0
  190. package/dist/packages/retrieval/src/recipe-engine.d.ts +18 -0
  191. package/dist/packages/retrieval/src/recipe-engine.js +265 -0
  192. package/dist/packages/retrieval/src/scorer.d.ts +13 -0
  193. package/dist/packages/retrieval/src/scorer.js +110 -0
  194. package/dist/packages/retrieval/src/weights.d.ts +3 -0
  195. package/dist/packages/retrieval/src/weights.js +28 -0
  196. package/dist/packages/security/src/annotations.d.ts +10 -0
  197. package/dist/packages/security/src/annotations.js +100 -0
  198. package/dist/packages/security/src/index.js +2 -0
  199. package/dist/packages/security/src/ssrf.d.ts +17 -0
  200. package/dist/packages/security/src/ssrf.js +132 -0
  201. package/dist/packages/shared/src/errors.d.ts +22 -0
  202. package/dist/packages/shared/src/errors.js +44 -0
  203. package/dist/packages/shared/src/hashing.d.ts +3 -0
  204. package/dist/packages/shared/src/hashing.js +21 -0
  205. package/dist/packages/shared/src/index.js +3 -0
  206. package/dist/packages/shared/src/types.d.ts +715 -0
  207. package/dist/packages/shared/src/types.js +1 -0
  208. package/dist/packages/storage/src/db.d.ts +10 -0
  209. package/dist/packages/storage/src/db.js +61 -0
  210. package/dist/packages/storage/src/index.js +10 -0
  211. package/dist/packages/storage/src/interfaces.d.ts +83 -0
  212. package/dist/packages/storage/src/interfaces.js +1 -0
  213. package/dist/packages/storage/src/repositories/api-repository.d.ts +16 -0
  214. package/dist/packages/storage/src/repositories/api-repository.js +169 -0
  215. package/dist/packages/storage/src/repositories/chunk-repository.d.ts +32 -0
  216. package/dist/packages/storage/src/repositories/chunk-repository.js +250 -0
  217. package/dist/packages/storage/src/repositories/example-repository.d.ts +16 -0
  218. package/dist/packages/storage/src/repositories/example-repository.js +158 -0
  219. package/dist/packages/storage/src/repositories/page-repository.d.ts +16 -0
  220. package/dist/packages/storage/src/repositories/page-repository.js +161 -0
  221. package/dist/packages/storage/src/repositories/pitfall-repository.d.ts +15 -0
  222. package/dist/packages/storage/src/repositories/pitfall-repository.js +144 -0
  223. package/dist/packages/storage/src/repositories/source-repository.d.ts +33 -0
  224. package/dist/packages/storage/src/repositories/source-repository.js +153 -0
  225. package/dist/packages/storage/src/repository.d.ts +92 -0
  226. package/dist/packages/storage/src/repository.js +157 -0
  227. package/dist/packages/storage/src/schema.d.ts +2 -0
  228. package/{packages/storage/src/schema.ts → dist/packages/storage/src/schema.js} +0 -3
  229. package/dist/packages/storage/src/search-tokens.d.ts +6 -0
  230. package/dist/packages/storage/src/search-tokens.js +26 -0
  231. package/dist/packages/verification/src/diff-engine.d.ts +18 -0
  232. package/dist/packages/verification/src/diff-engine.js +218 -0
  233. package/dist/packages/verification/src/extractor.d.ts +29 -0
  234. package/dist/packages/verification/src/extractor.js +302 -0
  235. package/dist/packages/verification/src/impact-scanner.d.ts +9 -0
  236. package/dist/packages/verification/src/impact-scanner.js +181 -0
  237. package/dist/packages/verification/src/index.js +5 -0
  238. package/dist/packages/verification/src/services.d.ts +55 -0
  239. package/dist/packages/verification/src/services.js +189 -0
  240. package/dist/packages/verification/src/verifier.d.ts +15 -0
  241. package/dist/packages/verification/src/verifier.js +315 -0
  242. package/dist/packages/workspace/src/detector.d.ts +7 -0
  243. package/dist/packages/workspace/src/detector.js +117 -0
  244. package/dist/packages/workspace/src/ecosystems/cargo.d.ts +10 -0
  245. package/dist/packages/workspace/src/ecosystems/cargo.js +69 -0
  246. package/dist/packages/workspace/src/ecosystems/composer.d.ts +7 -0
  247. package/dist/packages/workspace/src/ecosystems/composer.js +40 -0
  248. package/dist/packages/workspace/src/ecosystems/go.d.ts +7 -0
  249. package/dist/packages/workspace/src/ecosystems/go.js +49 -0
  250. package/{packages/workspace/src/ecosystems/index.ts → dist/packages/workspace/src/ecosystems/index.d.ts} +2 -24
  251. package/dist/packages/workspace/src/ecosystems/index.js +21 -0
  252. package/dist/packages/workspace/src/ecosystems/maven.d.ts +7 -0
  253. package/dist/packages/workspace/src/ecosystems/maven.js +28 -0
  254. package/dist/packages/workspace/src/ecosystems/npm.d.ts +10 -0
  255. package/dist/packages/workspace/src/ecosystems/npm.js +73 -0
  256. package/dist/packages/workspace/src/ecosystems/pub.d.ts +7 -0
  257. package/dist/packages/workspace/src/ecosystems/pub.js +34 -0
  258. package/dist/packages/workspace/src/ecosystems/pypi.d.ts +9 -0
  259. package/dist/packages/workspace/src/ecosystems/pypi.js +94 -0
  260. package/dist/packages/workspace/src/ecosystems/rubygems.d.ts +7 -0
  261. package/dist/packages/workspace/src/ecosystems/rubygems.js +25 -0
  262. package/dist/packages/workspace/src/ecosystems/types.d.ts +9 -0
  263. package/dist/packages/workspace/src/ecosystems/types.js +1 -0
  264. package/dist/packages/workspace/src/index.js +5 -0
  265. package/dist/packages/workspace/src/lockfile.d.ts +21 -0
  266. package/dist/packages/workspace/src/lockfile.js +153 -0
  267. package/dist/packages/workspace/src/resolver.d.ts +39 -0
  268. package/dist/packages/workspace/src/resolver.js +164 -0
  269. package/dist/packages/workspace/src/semver.d.ts +33 -0
  270. package/dist/packages/workspace/src/semver.js +235 -0
  271. package/package.json +8 -7
  272. package/apps/cli/bin/docorbit.js +0 -8
  273. package/apps/cli/src/commands/add.ts +0 -44
  274. package/apps/cli/src/commands/api.ts +0 -38
  275. package/apps/cli/src/commands/context.ts +0 -47
  276. package/apps/cli/src/commands/dashboard.ts +0 -55
  277. package/apps/cli/src/commands/diff.ts +0 -30
  278. package/apps/cli/src/commands/evaluate.ts +0 -133
  279. package/apps/cli/src/commands/examples.ts +0 -39
  280. package/apps/cli/src/commands/export.ts +0 -89
  281. package/apps/cli/src/commands/impact.ts +0 -31
  282. package/apps/cli/src/commands/init.ts +0 -69
  283. package/apps/cli/src/commands/inspect.ts +0 -30
  284. package/apps/cli/src/commands/mcp.ts +0 -72
  285. package/apps/cli/src/commands/pitfalls.ts +0 -38
  286. package/apps/cli/src/commands/recipes.ts +0 -35
  287. package/apps/cli/src/commands/search.ts +0 -48
  288. package/apps/cli/src/commands/update.ts +0 -73
  289. package/apps/cli/src/commands/verify.ts +0 -48
  290. package/apps/cli/src/formatters/colors.ts +0 -23
  291. package/apps/cli/src/formatters/inspection.ts +0 -102
  292. package/apps/cli/src/formatters/knowledge.ts +0 -272
  293. package/apps/cli/src/formatters/retrieval.ts +0 -74
  294. package/apps/cli/src/formatters/verification.ts +0 -126
  295. package/apps/cli/src/index.ts +0 -409
  296. package/packages/core/src/dashboard/server.ts +0 -314
  297. package/packages/core/src/implementation-service.ts +0 -451
  298. package/packages/core/src/inspector.ts +0 -71
  299. package/packages/core/src/pipeline.ts +0 -331
  300. package/packages/crawler/src/config.ts +0 -12
  301. package/packages/crawler/src/fetcher.ts +0 -185
  302. package/packages/discovery/src/index.ts +0 -31
  303. package/packages/discovery/src/provider.ts +0 -47
  304. package/packages/discovery/src/providers/generic.ts +0 -98
  305. package/packages/discovery/src/providers/github.ts +0 -61
  306. package/packages/discovery/src/providers/llms-txt.ts +0 -73
  307. package/packages/discovery/src/providers/markdown.ts +0 -48
  308. package/packages/discovery/src/providers/openapi.ts +0 -91
  309. package/packages/discovery/src/providers/sitemap.ts +0 -62
  310. package/packages/discovery/src/providers/skill.ts +0 -54
  311. package/packages/discovery/src/ranker.ts +0 -123
  312. package/packages/evaluation/src/dataset.ts +0 -963
  313. package/packages/evaluation/src/runner.ts +0 -241
  314. package/packages/evaluation/src/strategies/context7-runner.ts +0 -269
  315. package/packages/evaluation/src/strategies/docorbit-runner.ts +0 -228
  316. package/packages/evaluation/src/strategies/firecrawl-runner.ts +0 -172
  317. package/packages/evaluation/src/strategies/web-search-runner.ts +0 -194
  318. package/packages/evaluation/src/types.ts +0 -34
  319. package/packages/evaluation/src/version-matcher.ts +0 -73
  320. package/packages/export/src/agents-md.ts +0 -200
  321. package/packages/export/src/claude-md.ts +0 -141
  322. package/packages/export/src/docs-map.ts +0 -150
  323. package/packages/export/src/llms-txt.ts +0 -96
  324. package/packages/export/src/service.ts +0 -250
  325. package/packages/export/src/skill-md.ts +0 -128
  326. package/packages/mcp/src/resources/index.ts +0 -189
  327. package/packages/mcp/src/server.ts +0 -278
  328. package/packages/mcp/src/tools/analyze-impact.ts +0 -74
  329. package/packages/mcp/src/tools/check-api.ts +0 -86
  330. package/packages/mcp/src/tools/diff-docs.ts +0 -68
  331. package/packages/mcp/src/tools/export-context.ts +0 -73
  332. package/packages/mcp/src/tools/find-api.ts +0 -99
  333. package/packages/mcp/src/tools/find-example.ts +0 -100
  334. package/packages/mcp/src/tools/find-pitfall.ts +0 -94
  335. package/packages/mcp/src/tools/find-recipe.ts +0 -98
  336. package/packages/mcp/src/tools/get-doc.ts +0 -130
  337. package/packages/mcp/src/tools/get-docs-map.ts +0 -64
  338. package/packages/mcp/src/tools/get-version.ts +0 -118
  339. package/packages/mcp/src/tools/implementation-context.ts +0 -88
  340. package/packages/mcp/src/tools/index.ts +0 -59
  341. package/packages/mcp/src/tools/list-sources.ts +0 -85
  342. package/packages/mcp/src/tools/search-docs.ts +0 -123
  343. package/packages/mcp/src/tools/types.ts +0 -28
  344. package/packages/mcp/src/transports/http.ts +0 -256
  345. package/packages/mcp/src/transports/stdio.ts +0 -105
  346. package/packages/mcp/src/types.ts +0 -102
  347. package/packages/normalizer/src/example-indexer.ts +0 -240
  348. package/packages/normalizer/src/html.ts +0 -253
  349. package/packages/normalizer/src/llms.ts +0 -83
  350. package/packages/normalizer/src/openapi/endpoint-parser.ts +0 -406
  351. package/packages/normalizer/src/openapi/schema-resolver.ts +0 -111
  352. package/packages/normalizer/src/page.ts +0 -184
  353. package/packages/normalizer/src/pitfall-extractor.ts +0 -190
  354. package/packages/normalizer/src/slicer.ts +0 -455
  355. package/packages/retrieval/src/engine.ts +0 -120
  356. package/packages/retrieval/src/intent.ts +0 -43
  357. package/packages/retrieval/src/packer.ts +0 -145
  358. package/packages/retrieval/src/recipe-engine.ts +0 -313
  359. package/packages/retrieval/src/scorer.ts +0 -139
  360. package/packages/retrieval/src/weights.ts +0 -31
  361. package/packages/security/src/annotations.ts +0 -112
  362. package/packages/security/src/ssrf.ts +0 -153
  363. package/packages/shared/src/errors.ts +0 -53
  364. package/packages/shared/src/hashing.ts +0 -23
  365. package/packages/shared/src/types.ts +0 -881
  366. package/packages/storage/src/db.ts +0 -72
  367. package/packages/storage/src/interfaces.ts +0 -115
  368. package/packages/storage/src/repositories/api-repository.ts +0 -219
  369. package/packages/storage/src/repositories/chunk-repository.ts +0 -316
  370. package/packages/storage/src/repositories/example-repository.ts +0 -206
  371. package/packages/storage/src/repositories/page-repository.ts +0 -205
  372. package/packages/storage/src/repositories/pitfall-repository.ts +0 -188
  373. package/packages/storage/src/repositories/source-repository.ts +0 -205
  374. package/packages/storage/src/repository.ts +0 -256
  375. package/packages/storage/src/search-tokens.ts +0 -28
  376. package/packages/verification/src/diff-engine.ts +0 -258
  377. package/packages/verification/src/extractor.ts +0 -339
  378. package/packages/verification/src/impact-scanner.ts +0 -203
  379. package/packages/verification/src/services.ts +0 -238
  380. package/packages/verification/src/verifier.ts +0 -375
  381. package/packages/workspace/src/detector.ts +0 -143
  382. package/packages/workspace/src/ecosystems/cargo.ts +0 -84
  383. package/packages/workspace/src/ecosystems/composer.ts +0 -42
  384. package/packages/workspace/src/ecosystems/go.ts +0 -54
  385. package/packages/workspace/src/ecosystems/maven.ts +0 -34
  386. package/packages/workspace/src/ecosystems/npm.ts +0 -83
  387. package/packages/workspace/src/ecosystems/pub.ts +0 -40
  388. package/packages/workspace/src/ecosystems/pypi.ts +0 -100
  389. package/packages/workspace/src/ecosystems/rubygems.ts +0 -30
  390. package/packages/workspace/src/ecosystems/types.ts +0 -18
  391. package/packages/workspace/src/lockfile.ts +0 -194
  392. package/packages/workspace/src/resolver.ts +0 -234
  393. package/packages/workspace/src/semver.ts +0 -259
  394. /package/{packages/crawler/src/index.ts → dist/packages/crawler/src/index.d.ts} +0 -0
  395. /package/{packages/evaluation/src/index.ts → dist/packages/evaluation/src/index.d.ts} +0 -0
  396. /package/{packages/export/src/index.ts → dist/packages/export/src/index.d.ts} +0 -0
  397. /package/{packages/normalizer/src/openapi.ts → dist/packages/normalizer/src/openapi.d.ts} +0 -0
  398. /package/{packages/security/src/index.ts → dist/packages/security/src/index.d.ts} +0 -0
  399. /package/{packages/shared/src/index.ts → dist/packages/shared/src/index.d.ts} +0 -0
  400. /package/{packages/storage/src/index.ts → dist/packages/storage/src/index.d.ts} +0 -0
  401. /package/{packages/verification/src/index.ts → dist/packages/verification/src/index.d.ts} +0 -0
  402. /package/{packages/workspace/src/index.ts → dist/packages/workspace/src/index.d.ts} +0 -0
@@ -1,250 +0,0 @@
1
- import fs from 'node:fs';
2
- import path from 'node:path';
3
- import type {
4
- DocOrbitRepository,
5
- } from '../../storage/src/index.ts';
6
- import { WorkspaceResolver } from '../../workspace/src/index.ts';
7
- import { RecipeEngine } from '../../retrieval/src/index.ts';
8
- import type {
9
- ExportFormat,
10
- ExportOptions,
11
- ExportResult,
12
- DocumentationMapResult,
13
- ProjectDependency,
14
- VersionResolutionResult,
15
- ApiEndpoint,
16
- Pitfall,
17
- Recipe,
18
- NormalizedPage,
19
- DiscoveredSource,
20
- } from '../../shared/src/index.ts';
21
- import { generateAgentsMd } from './agents-md.ts';
22
- import { generateClaudeMd } from './claude-md.ts';
23
- import { generateSkillMd } from './skill-md.ts';
24
- import { generateLlmsTxt } from './llms-txt.ts';
25
- import { buildDocumentationMap } from './docs-map.ts';
26
-
27
- export class ExportService {
28
- private repo: DocOrbitRepository;
29
- private workspaceResolver: WorkspaceResolver;
30
- private recipeEngine: RecipeEngine;
31
-
32
- constructor(repo: DocOrbitRepository) {
33
- this.repo = repo;
34
- this.workspaceResolver = new WorkspaceResolver(repo);
35
- this.recipeEngine = new RecipeEngine(repo);
36
- }
37
-
38
- /**
39
- * Generates agent documentation export deterministically based on indexed evidence.
40
- */
41
- async generateExport(options: ExportOptions): Promise<ExportResult> {
42
- const projectDir = options.projectDir ? path.resolve(options.projectDir) : undefined;
43
- const docVersion = options.docVersion;
44
-
45
- // 1. Resolve workspace dependencies if project directory exists
46
- const dependencies: Array<{
47
- dep: ProjectDependency;
48
- resolution?: VersionResolutionResult;
49
- }> = [];
50
-
51
- if (projectDir && fs.existsSync(projectDir)) {
52
- try {
53
- const resolvedMap = await this.workspaceResolver.resolveAllDependencies(projectDir);
54
- for (const [, item] of resolvedMap) {
55
- dependencies.push({
56
- dep: item.dependency,
57
- resolution: item.resolution,
58
- });
59
- }
60
- } catch {
61
- // Workspace detection is best-effort
62
- }
63
- }
64
-
65
- // 2. Fetch indexed sources & pages
66
- const sources = this.repo.sources.listSources();
67
- const sourceUrls = sources.map(s => s.url);
68
- const pages = this.repo.pages.listPages(1000);
69
-
70
- // 3. Fetch endpoints (filtered by docVersion if provided)
71
- const endpoints = this.repo.apis.searchApiEndpoints('', {
72
- docVersion,
73
- limit: 200,
74
- });
75
-
76
- // 4. Fetch pitfalls (filtered by docVersion if provided)
77
- const pitfalls = this.repo.pitfalls.searchPitfalls('', {
78
- docVersion,
79
- limit: 100,
80
- });
81
-
82
- // 5. Fetch code examples
83
- const examples = this.repo.examples.searchIndexedExamples('', {
84
- docVersion,
85
- limit: 100,
86
- });
87
-
88
- // 6. Build recipes for common goals
89
- const recipes: Recipe[] = [];
90
- const candidateGoals = [
91
- 'Stripe webhook signature verification',
92
- 'Handle webhook events',
93
- 'Create customer subscription',
94
- 'Dynamic route parameter migration',
95
- 'Authenticate API request',
96
- ];
97
-
98
- for (const goal of candidateGoals) {
99
- try {
100
- const recipe = this.recipeEngine.assembleRecipe(goal, { docVersion });
101
- if (recipe.prerequisites.length > 0 || recipe.steps.length > 0) {
102
- recipes.push(recipe);
103
- }
104
- } catch {
105
- // Goal not covered by current index
106
- }
107
- }
108
-
109
- // 7. Format generation
110
- let content = '';
111
- const format = options.format;
112
-
113
- switch (format) {
114
- case 'agents.md': {
115
- content = generateAgentsMd({
116
- projectDir,
117
- docVersion,
118
- dependencies,
119
- endpoints,
120
- pitfalls,
121
- recipes,
122
- sources: sourceUrls,
123
- });
124
- break;
125
- }
126
- case 'claude.md': {
127
- content = generateClaudeMd({
128
- projectDir,
129
- docVersion,
130
- dependencies,
131
- endpoints,
132
- pitfalls,
133
- sources: sourceUrls,
134
- });
135
- break;
136
- }
137
- case 'skill.md': {
138
- content = generateSkillMd({
139
- skillName: options.targetSource || 'docorbit-agent-skill',
140
- docVersion,
141
- endpoints,
142
- pitfalls,
143
- recipes,
144
- sources: sourceUrls,
145
- });
146
- break;
147
- }
148
- case 'llms.txt': {
149
- content = generateLlmsTxt({
150
- title: options.targetSource || 'Indexed Documentation',
151
- docVersion,
152
- pages,
153
- endpoints,
154
- pitfalls,
155
- });
156
- break;
157
- }
158
- case 'docs-map.md': {
159
- const map = buildDocumentationMap({
160
- sources,
161
- pages,
162
- endpoints,
163
- pitfalls,
164
- docVersion,
165
- });
166
- content = map.markdownTree;
167
- break;
168
- }
169
- default:
170
- throw new Error(`Unsupported export format: ${format}`);
171
- }
172
-
173
- const tokenEstimate = Math.ceil(content.length / 4);
174
-
175
- return {
176
- format,
177
- content,
178
- outputPath: options.outputPath,
179
- metadata: {
180
- generatedAt: '2026-09-06T00:00:00.000Z', // Deterministic baseline timestamp
181
- sources: sourceUrls,
182
- docVersion,
183
- projectDependencies: dependencies.map(d => ({
184
- name: d.dep.name,
185
- version: d.resolution?.targetVersion || d.dep.requestedVersion,
186
- matchType: d.resolution?.matchedBy || 'unresolved',
187
- })),
188
- totalApis: endpoints.length,
189
- totalPitfalls: pitfalls.length,
190
- totalExamples: examples.length,
191
- tokenEstimate,
192
- untrusted: true,
193
- },
194
- };
195
- }
196
-
197
- /**
198
- * Retrieves the structured documentation map.
199
- */
200
- getDocumentationMap(options: { sourceId?: string; docVersion?: string } = {}): DocumentationMapResult {
201
- let sources = this.repo.sources.listSources();
202
- if (options.sourceId) {
203
- sources = sources.filter(s => s.id === options.sourceId || s.url.includes(options.sourceId!));
204
- }
205
-
206
- const pages = this.repo.pages.listPages(1000);
207
- const endpoints = this.repo.apis.searchApiEndpoints('', { docVersion: options.docVersion, limit: 500 });
208
- const pitfalls = this.repo.pitfalls.searchPitfalls('', { docVersion: options.docVersion, limit: 200 });
209
-
210
- return buildDocumentationMap({
211
- sources,
212
- pages,
213
- endpoints,
214
- pitfalls,
215
- docVersion: options.docVersion,
216
- });
217
- }
218
-
219
- /**
220
- * Generates export and writes directly to workspace file.
221
- */
222
- async writeExport(options: ExportOptions): Promise<ExportResult> {
223
- const result = await this.generateExport(options);
224
-
225
- if (!options.stdout) {
226
- let targetFile = options.outputPath;
227
- if (!targetFile) {
228
- const baseDir = options.projectDir || process.cwd();
229
- const defaultNames: Record<ExportFormat, string> = {
230
- 'agents.md': 'AGENTS.md',
231
- 'claude.md': 'CLAUDE.md',
232
- 'skill.md': 'skill.md',
233
- 'llms.txt': 'llms.txt',
234
- 'docs-map.md': 'docs-map.md',
235
- };
236
- targetFile = path.join(baseDir, defaultNames[options.format]);
237
- }
238
-
239
- const dir = path.dirname(targetFile);
240
- if (!fs.existsSync(dir)) {
241
- fs.mkdirSync(dir, { recursive: true });
242
- }
243
-
244
- fs.writeFileSync(targetFile, result.content, 'utf-8');
245
- result.outputPath = targetFile;
246
- }
247
-
248
- return result;
249
- }
250
- }
@@ -1,128 +0,0 @@
1
- import type {
2
- ApiEndpoint,
3
- Pitfall,
4
- Recipe,
5
- } from '../../shared/src/index.ts';
6
-
7
- export interface SkillMdExportData {
8
- skillName?: string;
9
- docVersion?: string;
10
- endpoints: ApiEndpoint[];
11
- pitfalls: Pitfall[];
12
- recipes: Recipe[];
13
- sources: string[];
14
- }
15
-
16
- /**
17
- * Generates a skill.md file compatible with AI agent skill systems.
18
- * Embeds YAML frontmatter, deterministic recipes, and verified schemas.
19
- */
20
- export function generateSkillMd(data: SkillMdExportData): string {
21
- const lines: string[] = [];
22
- const skillName = data.skillName || 'docorbit-implementation-skill';
23
- const version = data.docVersion || '0.1.0';
24
-
25
- // Frontmatter
26
- lines.push('---');
27
- lines.push(`name: ${skillName}`);
28
- lines.push('description: Evidence-grounded documentation intelligence and API implementation recipes.');
29
- lines.push(`version: ${version}`);
30
- lines.push('untrusted_documentation: true');
31
- lines.push('grounding: strict_evidence');
32
- lines.push('---');
33
- lines.push('');
34
-
35
- lines.push(`# Skill: ${skillName} (${version})`);
36
- lines.push('');
37
- lines.push('This agent skill contains deterministic recipes and verified API signatures generated from authoritative');
38
- lines.push('documentation. Never fabricate undocumented steps or validation rules.');
39
- lines.push('');
40
-
41
- // 1. Recipes
42
- lines.push('## 1. Actionable Implementation Recipes');
43
- lines.push('');
44
- if (data.recipes.length > 0) {
45
- for (const r of data.recipes) {
46
- lines.push(`### Recipe: ${r.title}`);
47
- lines.push(`- **Goal**: ${r.goal}`);
48
- lines.push(`- **Evidence Status**: ${r.evidenceLevels.strictGrounded ? 'Grounded' : 'Partial'}`);
49
- lines.push('');
50
-
51
- if (r.prerequisites.length > 0) {
52
- lines.push('**Prerequisites:**');
53
- for (const pre of r.prerequisites) {
54
- lines.push(`- [${pre.evidenceLevel}] ${pre.description}`);
55
- }
56
- lines.push('');
57
- }
58
-
59
- if (r.steps.length > 0) {
60
- lines.push('**Steps:**');
61
- for (const step of r.steps) {
62
- lines.push(`${step.stepNumber}. [${step.evidenceLevel}] **${step.title}**: ${step.action}`);
63
- if (step.codeSnippet) {
64
- lines.push(' ```' + (step.codeSnippet.language || 'typescript'));
65
- lines.push(step.codeSnippet.code.trim().split('\n').map(l => ' ' + l).join('\n'));
66
- lines.push(' ```');
67
- }
68
- }
69
- lines.push('');
70
- }
71
-
72
- if (r.validationSteps.length > 0) {
73
- lines.push('**Evidence-Based Validation:**');
74
- for (const v of r.validationSteps) {
75
- lines.push(`- Verify: ${v.assertion} (Expected: \`${v.expectedOutcome}\`)`);
76
- }
77
- lines.push('');
78
- }
79
- }
80
- } else {
81
- lines.push('- *No compiled recipes available for this scope.*');
82
- lines.push('');
83
- }
84
-
85
- // 2. API Reference
86
- lines.push('## 2. API Reference & Schemas');
87
- lines.push('');
88
- if (data.endpoints.length > 0) {
89
- const sortedEndpoints = [...data.endpoints].sort((a, b) => {
90
- const cmp = a.path.localeCompare(b.path);
91
- return cmp !== 0 ? cmp : a.method.localeCompare(b.method);
92
- });
93
-
94
- for (const ep of sortedEndpoints) {
95
- lines.push(`### \`${ep.method.toUpperCase()} ${ep.path}\``);
96
- if (ep.summary) lines.push(ep.summary);
97
- if (ep.parameters && ep.parameters.length > 0) {
98
- lines.push('Parameters:');
99
- for (const p of ep.parameters) {
100
- lines.push(`- \`${p.name}\` (${p.in}, ${p.required ? 'required' : 'optional'})`);
101
- }
102
- }
103
- lines.push('');
104
- }
105
- } else {
106
- lines.push('- *No endpoints indexed.*');
107
- lines.push('');
108
- }
109
-
110
- // 3. Known Pitfalls
111
- lines.push('## 3. Known Pitfalls & Defenses');
112
- lines.push('');
113
- if (data.pitfalls.length > 0) {
114
- const sortedPitfalls = [...data.pitfalls].sort((a, b) => a.title.localeCompare(b.title));
115
- for (const pf of sortedPitfalls) {
116
- lines.push(`- **[${pf.kind}] ${pf.title}**: ${pf.message}`);
117
- if (pf.mitigation) {
118
- lines.push(` - Defense: ${pf.mitigation}`);
119
- }
120
- }
121
- lines.push('');
122
- } else {
123
- lines.push('- *No pitfalls recorded.*');
124
- lines.push('');
125
- }
126
-
127
- return lines.join('\n');
128
- }
@@ -1,189 +0,0 @@
1
- import type { DocOrbitRepository } from '../../../storage/src/index.ts';
2
- import type { McpResource, ReadResourceResult, ResourceContent } from '../types.ts';
3
-
4
- export interface ResourceManagerOptions {
5
- maxResourceBytes?: number;
6
- }
7
-
8
- export class McpResourceManager {
9
- private repo: DocOrbitRepository;
10
- private maxChars: number;
11
-
12
- constructor(repo: DocOrbitRepository, options: ResourceManagerOptions = {}) {
13
- this.repo = repo;
14
- // Default 64KB bounded limit
15
- this.maxChars = options.maxResourceBytes || 64 * 1024;
16
- }
17
-
18
- listResources(): McpResource[] {
19
- const resources: McpResource[] = [
20
- {
21
- uri: 'docorbit://sources',
22
- name: 'Indexed Documentation Sources',
23
- description: 'Collection of all indexed documentation sources, version status, and snapshots.',
24
- mimeType: 'application/json',
25
- },
26
- ];
27
-
28
- try {
29
- const sources = this.repo.listSources();
30
- for (const source of sources) {
31
- resources.push({
32
- uri: `docorbit://sources/${source.id}`,
33
- name: `Source: ${source.url}`,
34
- description: `Indexed documentation source (${source.type}, authority: ${source.authority})`,
35
- mimeType: 'application/json',
36
- });
37
- }
38
- } catch {
39
- // Continue if database is empty or error occurs
40
- }
41
-
42
- try {
43
- const pages = this.repo.listPages(100);
44
- for (const page of pages) {
45
- resources.push({
46
- uri: `docorbit://pages/${page.id}`,
47
- name: `Page: ${page.title || page.url}`,
48
- description: `Documentation page at ${page.url} (~${page.estimatedTokens} tokens)`,
49
- mimeType: 'text/markdown',
50
- });
51
- }
52
- } catch {
53
- // Continue
54
- }
55
-
56
- return resources;
57
- }
58
-
59
- readResource(uri: string): ReadResourceResult {
60
- if (uri === 'docorbit://sources') {
61
- const sources = this.repo.listSources();
62
- const snapshots = this.repo.listSnapshots();
63
- const payload = sources.map(s => ({
64
- id: s.id,
65
- url: s.url,
66
- type: s.type,
67
- authority: s.authority,
68
- confidence: s.confidence,
69
- status: s.status,
70
- machineReadable: s.machineReadable,
71
- snapshots: snapshots.filter(sn => sn.sourceId === s.id).map(sn => ({
72
- id: sn.id,
73
- pageCount: sn.pageCount,
74
- docVersion: sn.docVersion,
75
- capturedAt: sn.capturedAt,
76
- })),
77
- }));
78
-
79
- return {
80
- contents: [
81
- {
82
- uri,
83
- mimeType: 'application/json',
84
- text: JSON.stringify(payload, null, 2),
85
- },
86
- ],
87
- };
88
- }
89
-
90
- if (uri.startsWith('docorbit://sources/')) {
91
- const sourceId = uri.slice('docorbit://sources/'.length);
92
- const source = this.repo.getSource(sourceId);
93
- if (!source) {
94
- throw new Error(`Resource not found: ${uri}`);
95
- }
96
-
97
- const snapshots = this.repo.listSnapshots().filter(sn => sn.sourceId === source.id);
98
- const pageCount = this.repo.countPages(source.id);
99
-
100
- return {
101
- contents: [
102
- {
103
- uri,
104
- mimeType: 'application/json',
105
- text: JSON.stringify({
106
- source,
107
- pageCount,
108
- snapshots,
109
- untrusted: true,
110
- }, null, 2),
111
- },
112
- ],
113
- };
114
- }
115
-
116
- if (uri.startsWith('docorbit://pages/')) {
117
- const pageId = uri.slice('docorbit://pages/'.length);
118
- const page = this.repo.getPage(pageId);
119
- if (!page) {
120
- throw new Error(`Resource not found: ${uri}`);
121
- }
122
-
123
- let content = page.content;
124
- let truncated = false;
125
- if (content.length > this.maxChars) {
126
- content = content.slice(0, this.maxChars) + '\n\n[Content truncated at 64KB bounded resource limit...]';
127
- truncated = true;
128
- }
129
-
130
- const header = [
131
- `# ${page.title}`,
132
- `**URL**: ${page.url}`,
133
- `**Tokens**: ~${page.estimatedTokens} | **Content Hash**: \`${page.contentHash.slice(0, 8)}\``,
134
- page.securityAnnotations.length > 0
135
- ? `> [!WARNING] Security alerts: ${page.securityAnnotations.map(a => a.patternName).join(', ')}`
136
- : `> [!NOTE] External content is untrusted.`,
137
- truncated ? `> [!IMPORTANT] Output was truncated to meet resource limits.` : '',
138
- '---\n',
139
- ].filter(Boolean).join('\n');
140
-
141
- return {
142
- contents: [
143
- {
144
- uri,
145
- mimeType: 'text/markdown',
146
- text: `${header}\n${content}`,
147
- },
148
- ],
149
- };
150
- }
151
-
152
- if (uri.startsWith('docorbit://chunks/')) {
153
- const chunkId = uri.slice('docorbit://chunks/'.length);
154
- const chunk = this.repo.getChunk(chunkId);
155
- if (!chunk) {
156
- throw new Error(`Resource not found: ${uri}`);
157
- }
158
-
159
- let content = chunk.content;
160
- let truncated = false;
161
- if (content.length > this.maxChars) {
162
- content = content.slice(0, this.maxChars) + '\n\n[Content truncated at bounded limit...]';
163
- truncated = true;
164
- }
165
-
166
- const breadcrumb = chunk.sectionPath.length > 0 ? chunk.sectionPath.join(' > ') : (chunk.title || 'General');
167
- const header = [
168
- `### Chunk: ${breadcrumb}`,
169
- `**ID**: \`${chunk.id}\` | **Type**: \`${chunk.chunkType}\` | **Est. Tokens**: ~${chunk.tokenEstimate}`,
170
- chunk.docVersion ? `**Doc Version**: \`${chunk.docVersion}\`` : '',
171
- `> [!NOTE] External content is untrusted.\n`,
172
- truncated ? `> [!IMPORTANT] Output was truncated to meet resource limits.\n` : '',
173
- '---\n',
174
- ].filter(Boolean).join('\n');
175
-
176
- return {
177
- contents: [
178
- {
179
- uri,
180
- mimeType: 'text/markdown',
181
- text: `${header}\n${content}`,
182
- },
183
- ],
184
- };
185
- }
186
-
187
- throw new Error(`Unsupported resource URI: ${uri}`);
188
- }
189
- }