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,10 @@
1
+ import type { ApiSchema } from '../../../shared/src/index.ts';
2
+ /**
3
+ * Resolves a JSON Pointer (e.g. `#/components/schemas/Pet` or `#/definitions/Pet`)
4
+ * within the root document. Handles circular references safely.
5
+ */
6
+ export declare function resolveJsonPointer(root: Record<string, unknown>, pointer: string, visited?: Set<string>): unknown;
7
+ /**
8
+ * Normalizes an OpenAPI / JSON schema object into an ApiSchema model.
9
+ */
10
+ export declare function normalizeSchema(rawSchema: unknown, root: Record<string, unknown>, visited?: Set<string>): ApiSchema | undefined;
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Resolves a JSON Pointer (e.g. `#/components/schemas/Pet` or `#/definitions/Pet`)
3
+ * within the root document. Handles circular references safely.
4
+ */
5
+ export function resolveJsonPointer(root, pointer, visited = new Set()) {
6
+ if (visited.has(pointer)) {
7
+ return { $ref: pointer, description: '[Circular Reference]' };
8
+ }
9
+ visited.add(pointer);
10
+ if (!pointer.startsWith('#/')) {
11
+ return { $ref: pointer, description: '[External Reference]' };
12
+ }
13
+ const parts = pointer.slice(2).split('/').map((part) => part.replace(/~1/g, '/').replace(/~0/g, '~'));
14
+ let current = root;
15
+ for (const part of parts) {
16
+ if (typeof current !== 'object' || current === null) {
17
+ return undefined;
18
+ }
19
+ current = current[part];
20
+ }
21
+ // If the resolved object itself is a reference, resolve further
22
+ if (typeof current === 'object' &&
23
+ current !== null &&
24
+ typeof current.$ref === 'string') {
25
+ return resolveJsonPointer(root, current.$ref, visited);
26
+ }
27
+ return current;
28
+ }
29
+ /**
30
+ * Normalizes an OpenAPI / JSON schema object into an ApiSchema model.
31
+ */
32
+ export function normalizeSchema(rawSchema, root, visited = new Set()) {
33
+ if (!rawSchema || typeof rawSchema !== 'object')
34
+ return undefined;
35
+ let schemaObj = rawSchema;
36
+ if (typeof schemaObj.$ref === 'string') {
37
+ const resolved = resolveJsonPointer(root, schemaObj.$ref, visited);
38
+ if (typeof resolved === 'object' && resolved !== null) {
39
+ schemaObj = resolved;
40
+ }
41
+ }
42
+ const type = typeof schemaObj.type === 'string'
43
+ ? schemaObj.type
44
+ : (Array.isArray(schemaObj.type) ? schemaObj.type.join(' | ') : undefined);
45
+ const description = typeof schemaObj.description === 'string'
46
+ ? schemaObj.description
47
+ : undefined;
48
+ const required = Array.isArray(schemaObj.required)
49
+ ? schemaObj.required.filter((r) => typeof r === 'string')
50
+ : undefined;
51
+ let properties;
52
+ if (typeof schemaObj.properties === 'object' && schemaObj.properties !== null) {
53
+ properties = {};
54
+ for (const [k, v] of Object.entries(schemaObj.properties)) {
55
+ if (typeof v === 'object' && v !== null && typeof v.$ref === 'string') {
56
+ const refResolved = resolveJsonPointer(root, v.$ref, new Set(visited));
57
+ properties[k] = refResolved || v;
58
+ }
59
+ else {
60
+ properties[k] = v;
61
+ }
62
+ }
63
+ }
64
+ let items;
65
+ if (typeof schemaObj.items === 'object' && schemaObj.items !== null) {
66
+ if (typeof schemaObj.items.$ref === 'string') {
67
+ const refResolved = resolveJsonPointer(root, schemaObj.items.$ref, new Set(visited));
68
+ items = refResolved || schemaObj.items;
69
+ }
70
+ else {
71
+ items = schemaObj.items;
72
+ }
73
+ }
74
+ return {
75
+ type,
76
+ properties,
77
+ required,
78
+ description,
79
+ items,
80
+ raw: schemaObj,
81
+ };
82
+ }
@@ -0,0 +1,2 @@
1
+ export * from "./openapi/schema-resolver.js";
2
+ export * from "./openapi/endpoint-parser.js";
@@ -0,0 +1,13 @@
1
+ import type { NormalizedPage } from '../../shared/src/index.ts';
2
+ export interface BuildNormalizedPageInput {
3
+ sourceId: string;
4
+ url: string;
5
+ rawContent: string;
6
+ contentType?: string;
7
+ sourceUrl?: string;
8
+ targetUrl?: string;
9
+ discoveredBy?: string;
10
+ fetchedAt?: string;
11
+ snapshotId?: string;
12
+ }
13
+ export declare function buildNormalizedPage(input: BuildNormalizedPageInput): NormalizedPage;
@@ -0,0 +1,150 @@
1
+ import { computeContentHash, estimateTokenCount, } from "../../shared/src/index.js";
2
+ import { detectSecurityAnnotations } from "../../security/src/index.js";
3
+ import { normalizeHtmlToMarkdown } from "./html.js";
4
+ import { parseLlmsTxt, isValidLlmsTxt } from "./llms.js";
5
+ import { detectOpenApiSpec } from "./openapi.js";
6
+ function extractMarkdownHeadings(content) {
7
+ const headings = [];
8
+ const lines = content.split('\n');
9
+ for (const line of lines) {
10
+ const match = line.match(/^(#{1,6})\s+(.+)$/);
11
+ if (match) {
12
+ const level = match[1].length;
13
+ const text = match[2].trim();
14
+ const anchor = text.toLowerCase().replace(/[^\w\s-]/g, '').replace(/\s+/g, '-');
15
+ headings.push({ level, text, anchor });
16
+ }
17
+ }
18
+ return headings;
19
+ }
20
+ function extractMarkdownCodeBlocks(content) {
21
+ const examples = [];
22
+ const regex = /```([a-zA-Z0-9_-]*)\n([\s\S]*?)```/g;
23
+ let match;
24
+ let idx = 1;
25
+ while ((match = regex.exec(content)) !== null) {
26
+ const lang = match[1].trim() || 'text';
27
+ const code = match[2].trim();
28
+ if (code) {
29
+ examples.push({
30
+ id: `code_${idx++}`,
31
+ language: lang,
32
+ code,
33
+ });
34
+ }
35
+ }
36
+ return examples;
37
+ }
38
+ function extractMarkdownLinks(content, baseUrl) {
39
+ const links = [];
40
+ const regex = /\[([^\]]+)\]\(([^)]+)\)/g;
41
+ let match;
42
+ while ((match = regex.exec(content)) !== null) {
43
+ const text = match[1].trim();
44
+ const href = match[2].trim();
45
+ if (href.startsWith('#') || href.startsWith('javascript:'))
46
+ continue;
47
+ let absoluteUrl = href;
48
+ let isExternal = false;
49
+ try {
50
+ const resolved = new URL(href, baseUrl);
51
+ absoluteUrl = resolved.href;
52
+ const baseHost = new URL(baseUrl).hostname;
53
+ isExternal = resolved.hostname !== baseHost;
54
+ }
55
+ catch {
56
+ // Keep raw href
57
+ }
58
+ links.push({ text, url: absoluteUrl, isExternal });
59
+ }
60
+ return links;
61
+ }
62
+ export function buildNormalizedPage(input) {
63
+ const { sourceId, url, rawContent, contentType = '' } = input;
64
+ const rawBytes = Buffer.byteLength(rawContent, 'utf-8');
65
+ let title = 'Documentation';
66
+ let cleanMarkdown = '';
67
+ let headings = [];
68
+ let links = [];
69
+ let codeExamples = [];
70
+ const isHtml = contentType.includes('text/html') || /^\s*<(!DOCTYPE|html)/i.test(rawContent);
71
+ const isOpenApi = contentType.includes('application/json') || url.endsWith('.json') || url.endsWith('.yaml');
72
+ if (isOpenApi) {
73
+ const apiSummary = detectOpenApiSpec(rawContent, url);
74
+ if (apiSummary) {
75
+ title = `${apiSummary.title} (OpenAPI ${apiSummary.specVersion})`;
76
+ cleanMarkdown = `# ${title}\n\n${apiSummary.description || ''}\n\n` +
77
+ `**Servers**: ${apiSummary.servers.join(', ') || 'None specified'}\n\n` +
78
+ `**Endpoints Count**: ${apiSummary.pathCount}\n\n` +
79
+ `\`\`\`json\n${JSON.stringify(apiSummary.rawJson, null, 2)}\n\`\`\``;
80
+ headings = [
81
+ { level: 1, text: title, anchor: 'title' },
82
+ { level: 2, text: 'API Overview', anchor: 'api-overview' },
83
+ ];
84
+ codeExamples = [
85
+ {
86
+ id: 'spec_1',
87
+ language: 'json',
88
+ code: JSON.stringify(apiSummary.rawJson, null, 2),
89
+ caption: 'OpenAPI Specification',
90
+ },
91
+ ];
92
+ }
93
+ }
94
+ if (!cleanMarkdown && isHtml) {
95
+ const extracted = normalizeHtmlToMarkdown(rawContent, url);
96
+ title = extracted.title;
97
+ cleanMarkdown = extracted.markdown;
98
+ headings = extracted.headings;
99
+ links = extracted.links;
100
+ codeExamples = extracted.codeExamples;
101
+ }
102
+ if (!cleanMarkdown) {
103
+ if (isValidLlmsTxt(rawContent)) {
104
+ const llmsDoc = parseLlmsTxt(rawContent, url);
105
+ title = llmsDoc.title || 'llms.txt Index';
106
+ cleanMarkdown = rawContent;
107
+ headings = extractMarkdownHeadings(rawContent);
108
+ links = extractMarkdownLinks(rawContent, url);
109
+ codeExamples = extractMarkdownCodeBlocks(rawContent);
110
+ }
111
+ else {
112
+ cleanMarkdown = rawContent.trim();
113
+ headings = extractMarkdownHeadings(cleanMarkdown);
114
+ links = extractMarkdownLinks(cleanMarkdown, url);
115
+ codeExamples = extractMarkdownCodeBlocks(cleanMarkdown);
116
+ if (headings.length > 0 && headings[0].level === 1) {
117
+ title = headings[0].text;
118
+ }
119
+ }
120
+ }
121
+ const contentHash = computeContentHash(cleanMarkdown);
122
+ const estimatedTokens = estimateTokenCount(cleanMarkdown);
123
+ const securityAnnotations = detectSecurityAnnotations(cleanMarkdown);
124
+ const id = `page_${computeContentHash(`${sourceId}:${url}`).slice(0, 16)}`;
125
+ const fetchedAt = input.fetchedAt || new Date().toISOString();
126
+ const provenance = {
127
+ sourceUrl: input.sourceUrl || url,
128
+ targetUrl: input.targetUrl || url,
129
+ fetchedAt,
130
+ discoveredBy: input.discoveredBy || 'direct',
131
+ contentHash,
132
+ snapshotId: input.snapshotId,
133
+ };
134
+ return {
135
+ id,
136
+ sourceId,
137
+ title,
138
+ url,
139
+ content: cleanMarkdown,
140
+ headings,
141
+ links,
142
+ codeExamples,
143
+ contentHash,
144
+ fetchedAt,
145
+ rawBytes,
146
+ estimatedTokens,
147
+ securityAnnotations,
148
+ provenance,
149
+ };
150
+ }
@@ -0,0 +1,6 @@
1
+ import type { NormalizedPage, DocumentChunk, Pitfall } from '../../shared/src/index.ts';
2
+ /**
3
+ * Extracts explicit, non-inferential pitfalls, deprecations, breaking changes,
4
+ * and security requirements from documentation pages and chunks.
5
+ */
6
+ export declare function extractPitfalls(page: NormalizedPage, chunks: DocumentChunk[], docVersion?: string, snapshotId?: string): Pitfall[];
@@ -0,0 +1,153 @@
1
+ import { createHash } from 'node:crypto';
2
+ const PITFALL_PATTERNS = [
3
+ {
4
+ kind: 'removed',
5
+ pattern: /(?:has been removed in|was removed in|removed in version|no longer supported in)\s+([^\n.]+)/i,
6
+ titlePrefix: 'Removed in',
7
+ },
8
+ {
9
+ kind: 'deprecated',
10
+ pattern: /(?:@deprecated|deprecated since|deprecated in|this (?:method|function|endpoint|parameter|feature) is deprecated|is deprecated; use|deprecated:\s+use)\s+([^\n.]+)/i,
11
+ titlePrefix: 'Deprecated',
12
+ },
13
+ {
14
+ kind: 'breaking_change',
15
+ pattern: /(?:breaking change:?|breaking in v?\d+|migrating to v?\d+ requires|incompatible with previous)\s*([^\n.]*)/i,
16
+ titlePrefix: 'Breaking Change',
17
+ },
18
+ {
19
+ kind: 'server_only',
20
+ pattern: /(?:can only be called (?:on|from) the server|server-only|server components? only|cannot be imported (?:on|into) the client|never expose.*in client(?:-side)? code)/i,
21
+ titlePrefix: 'Server-Only Restriction',
22
+ },
23
+ {
24
+ kind: 'client_only',
25
+ pattern: /(?:client-only|can only be called in the browser|client components? only|requires a browser environment|window is not defined)/i,
26
+ titlePrefix: 'Client-Only Restriction',
27
+ },
28
+ {
29
+ kind: 'rate_limit',
30
+ pattern: /(?:rate limit(?:ed)?|429 too many requests|requests per (?:minute|second|hour)|burst limit|quota exceeded)/i,
31
+ titlePrefix: 'Rate Limit Warning',
32
+ },
33
+ {
34
+ kind: 'security',
35
+ pattern: /(?:security warning|vulnerability|signature verification failure|never commit (?:your|the) secret|timing attacks?|replay attacks?)/i,
36
+ titlePrefix: 'Security Requirement',
37
+ },
38
+ {
39
+ kind: 'permission',
40
+ pattern: /(?:requires permission|requires scope|insufficient privileges|403 forbidden|unauthorized access|must have admin)/i,
41
+ titlePrefix: 'Permission Requirement',
42
+ },
43
+ {
44
+ kind: 'required_config',
45
+ pattern: /(?:must be configured before|environment variable.*is required|missing required config|prerequisite:\s+set)\s+([^\n.]+)/i,
46
+ titlePrefix: 'Required Configuration',
47
+ },
48
+ {
49
+ kind: 'runtime_restriction',
50
+ pattern: /(?:not supported in (?:the )?edge runtime|node(?:\.js)? runtime only|requires webcrypto|unsupported platform)/i,
51
+ titlePrefix: 'Runtime Restriction',
52
+ },
53
+ ];
54
+ const ADMONITION_REGEX = /(?:^|\n)(?:>|:::\s*)\[!(WARNING|CAUTION|DANGER|IMPORTANT|NOTE)\](?:\s+([^\n]+))?\n([\s\S]*?)(?=\n(?:>|:::|\s*$|$))/gi;
55
+ /**
56
+ * Extracts explicit, non-inferential pitfalls, deprecations, breaking changes,
57
+ * and security requirements from documentation pages and chunks.
58
+ */
59
+ export function extractPitfalls(page, chunks, docVersion, snapshotId) {
60
+ const pitfalls = [];
61
+ const seenKeys = new Set();
62
+ const nowIso = new Date().toISOString();
63
+ // Helper to add pitfall with deduplication
64
+ const addPitfall = (kind, title, content, chunk) => {
65
+ const trimmedContent = content.trim();
66
+ if (!trimmedContent || trimmedContent.length < 15)
67
+ return;
68
+ const dedupeKey = `${kind}:${title.toLowerCase()}:${trimmedContent.substring(0, 80).toLowerCase()}`;
69
+ if (seenKeys.has(dedupeKey))
70
+ return;
71
+ seenKeys.add(dedupeKey);
72
+ const id = createHash('sha256')
73
+ .update(`${page.id}:${kind}:${title}:${trimmedContent.substring(0, 100)}`)
74
+ .digest('hex')
75
+ .substring(0, 16);
76
+ // Extract related API or symbol from chunk if available
77
+ let relatedApi = undefined;
78
+ let relatedSymbol = undefined;
79
+ if (chunk) {
80
+ // Check section path or title for API
81
+ const apiMatch = (chunk.title || chunk.sectionPath.join(' ')).match(/\b(GET|POST|PUT|DELETE|PATCH)\s+([/\w\-_{}]+)/i);
82
+ if (apiMatch) {
83
+ relatedApi = `${apiMatch[1].toUpperCase()} ${apiMatch[2]}`;
84
+ }
85
+ }
86
+ const provenance = {
87
+ sourceUrl: page.url,
88
+ retrievedAt: page.metadata?.extractedAt || nowIso,
89
+ sourceAuthority: 'official',
90
+ };
91
+ const effectiveSnapshotId = snapshotId || chunk?.snapshotId || page.snapshotId || 'snap_default';
92
+ pitfalls.push({
93
+ id,
94
+ chunkId: chunk?.id,
95
+ pageId: page.id,
96
+ snapshotId: effectiveSnapshotId,
97
+ kind,
98
+ title: title.trim(),
99
+ content: trimmedContent,
100
+ relatedApi,
101
+ relatedSymbol,
102
+ docVersion: docVersion || chunk?.docVersion || page.docVersion,
103
+ provenance,
104
+ createdAt: nowIso,
105
+ });
106
+ };
107
+ // 1. Process chunks for admonitions (> [!WARNING], > [!CAUTION], etc.)
108
+ for (const chunk of chunks) {
109
+ const content = chunk.content;
110
+ // Match admonitions
111
+ let admMatch;
112
+ const admRegex = new RegExp(ADMONITION_REGEX.source, 'gi');
113
+ while ((admMatch = admRegex.exec(content)) !== null) {
114
+ const calloutType = admMatch[1].toUpperCase();
115
+ const customTitle = admMatch[2]?.trim();
116
+ const calloutBody = admMatch[3].replace(/^>\s?/gm, '').trim();
117
+ let kind = 'security';
118
+ if (calloutType === 'WARNING' || calloutType === 'DANGER') {
119
+ kind = 'breaking_change';
120
+ }
121
+ else if (calloutType === 'CAUTION') {
122
+ kind = 'security';
123
+ }
124
+ else if (calloutType === 'IMPORTANT') {
125
+ kind = 'required_config';
126
+ }
127
+ // Check if body specifically matches any pitfall pattern
128
+ for (const p of PITFALL_PATTERNS) {
129
+ if (p.pattern.test(calloutBody)) {
130
+ kind = p.kind;
131
+ break;
132
+ }
133
+ }
134
+ const defaultTitle = customTitle || `${kind.replace(/_/g, ' ').toUpperCase()} Warning: ${chunk.title || page.title}`;
135
+ addPitfall(kind, defaultTitle, calloutBody, chunk);
136
+ }
137
+ // 2. Scan chunk text for explicit pattern matches
138
+ for (const { kind, pattern, titlePrefix } of PITFALL_PATTERNS) {
139
+ const match = content.match(pattern);
140
+ if (match) {
141
+ // Extract paragraph containing the match
142
+ const paragraphs = content.split(/\n\s*\n/);
143
+ const matchingParagraph = paragraphs.find(p => pattern.test(p));
144
+ if (matchingParagraph) {
145
+ const detail = match[1]?.trim() ? `: ${match[1].trim()}` : '';
146
+ const title = `${titlePrefix}${detail}`;
147
+ addPitfall(kind, title, matchingParagraph, chunk);
148
+ }
149
+ }
150
+ }
151
+ }
152
+ return pitfalls;
153
+ }
@@ -0,0 +1,30 @@
1
+ import type { NormalizedPage, DocumentChunk, ChunkType, ChunkCode, SymbolReference, ChunkRelationship, ChunkingConfig } from '../../shared/src/index.ts';
2
+ export declare const DEFAULT_CHUNKING_CONFIG: ChunkingConfig;
3
+ export interface SlicingResult {
4
+ chunks: DocumentChunk[];
5
+ relationships: ChunkRelationship[];
6
+ codeSnippets: ChunkCode[];
7
+ symbols: SymbolReference[];
8
+ }
9
+ interface RawBlock {
10
+ type: 'heading' | 'code' | 'warning' | 'prose';
11
+ headingLevel?: number;
12
+ headingText?: string;
13
+ language?: string;
14
+ content: string;
15
+ }
16
+ /**
17
+ * Shallow, deterministic symbol extractor using lightweight regex patterns.
18
+ * No external AST parsers or language runtimes.
19
+ */
20
+ export declare function extractSymbols(content: string, chunkId: string): SymbolReference[];
21
+ /**
22
+ * Detects chunk type based on block composition and content.
23
+ */
24
+ export declare function detectChunkType(blocks: RawBlock[], content: string): ChunkType;
25
+ /**
26
+ * Slices a NormalizedPage into standalone, context-preserving DocumentChunks,
27
+ * maintaining section breadcrumbs, relationship links, code snippets, and symbols.
28
+ */
29
+ export declare function slicePageIntoChunks(page: NormalizedPage, snapshotId: string, config?: ChunkingConfig): SlicingResult;
30
+ export {};