@noodleseed/one 0.125.0 → 0.127.0

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 (412) hide show
  1. package/dist/cli.d.ts.map +1 -1
  2. package/dist/cli.js +3 -0
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/catalog-data-account.d.ts +2 -3
  5. package/dist/commands/catalog-data-account.d.ts.map +1 -1
  6. package/dist/commands/catalog-data-account.js +2 -310
  7. package/dist/commands/catalog-data-account.js.map +1 -1
  8. package/dist/commands/catalog-data-assistant.d.ts +2 -3
  9. package/dist/commands/catalog-data-assistant.d.ts.map +1 -1
  10. package/dist/commands/catalog-data-assistant.js +2 -259
  11. package/dist/commands/catalog-data-assistant.js.map +1 -1
  12. package/dist/commands/catalog-data-auth-discovery.d.ts +2 -3
  13. package/dist/commands/catalog-data-auth-discovery.d.ts.map +1 -1
  14. package/dist/commands/catalog-data-auth-discovery.js +2 -357
  15. package/dist/commands/catalog-data-auth-discovery.js.map +1 -1
  16. package/dist/commands/catalog-data-billing.d.ts +2 -3
  17. package/dist/commands/catalog-data-billing.d.ts.map +1 -1
  18. package/dist/commands/catalog-data-billing.js +2 -311
  19. package/dist/commands/catalog-data-billing.js.map +1 -1
  20. package/dist/commands/catalog-data-bootstrap-authoring.d.ts +2 -3
  21. package/dist/commands/catalog-data-bootstrap-authoring.d.ts.map +1 -1
  22. package/dist/commands/catalog-data-bootstrap-authoring.js +2 -381
  23. package/dist/commands/catalog-data-bootstrap-authoring.js.map +1 -1
  24. package/dist/commands/catalog-data-bootstrap-pre-auth.d.ts +2 -3
  25. package/dist/commands/catalog-data-bootstrap-pre-auth.d.ts.map +1 -1
  26. package/dist/commands/catalog-data-bootstrap-pre-auth.js +2 -388
  27. package/dist/commands/catalog-data-bootstrap-pre-auth.js.map +1 -1
  28. package/dist/commands/catalog-data-config.d.ts +2 -6
  29. package/dist/commands/catalog-data-config.d.ts.map +1 -1
  30. package/dist/commands/catalog-data-config.js +2 -266
  31. package/dist/commands/catalog-data-config.js.map +1 -1
  32. package/dist/commands/catalog-data-core.d.ts +2 -5
  33. package/dist/commands/catalog-data-core.d.ts.map +1 -1
  34. package/dist/commands/catalog-data-core.js +2 -86
  35. package/dist/commands/catalog-data-core.js.map +1 -1
  36. package/dist/commands/catalog-data-distributions.d.ts +3 -0
  37. package/dist/commands/catalog-data-distributions.d.ts.map +1 -0
  38. package/dist/commands/catalog-data-distributions.js +3 -0
  39. package/dist/commands/catalog-data-distributions.js.map +1 -0
  40. package/dist/commands/catalog-data-hosted-deployment.d.ts +2 -3
  41. package/dist/commands/catalog-data-hosted-deployment.d.ts.map +1 -1
  42. package/dist/commands/catalog-data-hosted-deployment.js +2 -329
  43. package/dist/commands/catalog-data-hosted-deployment.js.map +1 -1
  44. package/dist/commands/catalog-data-hosted-governance.d.ts +2 -3
  45. package/dist/commands/catalog-data-hosted-governance.d.ts.map +1 -1
  46. package/dist/commands/catalog-data-hosted-governance.js +2 -3
  47. package/dist/commands/catalog-data-hosted-governance.js.map +1 -1
  48. package/dist/commands/catalog-data-hosted-observability.d.ts +2 -3
  49. package/dist/commands/catalog-data-hosted-observability.d.ts.map +1 -1
  50. package/dist/commands/catalog-data-hosted-observability.js +2 -453
  51. package/dist/commands/catalog-data-hosted-observability.js.map +1 -1
  52. package/dist/commands/catalog-data-local-authoring.d.ts +2 -3
  53. package/dist/commands/catalog-data-local-authoring.d.ts.map +1 -1
  54. package/dist/commands/catalog-data-local-authoring.js +2 -293
  55. package/dist/commands/catalog-data-local-authoring.js.map +1 -1
  56. package/dist/commands/catalog-data-platform-auth.d.ts +2 -6
  57. package/dist/commands/catalog-data-platform-auth.d.ts.map +1 -1
  58. package/dist/commands/catalog-data-platform-auth.js +2 -332
  59. package/dist/commands/catalog-data-platform-auth.js.map +1 -1
  60. package/dist/commands/catalog-data-policy.d.ts +2 -3
  61. package/dist/commands/catalog-data-policy.d.ts.map +1 -1
  62. package/dist/commands/catalog-data-policy.js +2 -327
  63. package/dist/commands/catalog-data-policy.js.map +1 -1
  64. package/dist/commands/catalog-data-tenant-admin.d.ts +2 -3
  65. package/dist/commands/catalog-data-tenant-admin.d.ts.map +1 -1
  66. package/dist/commands/catalog-data-tenant-admin.js +2 -478
  67. package/dist/commands/catalog-data-tenant-admin.js.map +1 -1
  68. package/dist/commands/catalog-data-tenant-resources.d.ts +2 -3
  69. package/dist/commands/catalog-data-tenant-resources.d.ts.map +1 -1
  70. package/dist/commands/catalog-data-tenant-resources.js +2 -222
  71. package/dist/commands/catalog-data-tenant-resources.js.map +1 -1
  72. package/dist/commands/catalog-types.d.ts +2 -103
  73. package/dist/commands/catalog-types.d.ts.map +1 -1
  74. package/dist/commands/catalog-types.js +0 -5
  75. package/dist/commands/catalog-types.js.map +1 -1
  76. package/dist/commands/catalog.d.ts.map +1 -1
  77. package/dist/commands/catalog.js +3 -0
  78. package/dist/commands/catalog.js.map +1 -1
  79. package/dist/commands/distribution-lifecycle-ops.d.ts +3 -0
  80. package/dist/commands/distribution-lifecycle-ops.d.ts.map +1 -0
  81. package/dist/commands/distribution-lifecycle-ops.js +200 -0
  82. package/dist/commands/distribution-lifecycle-ops.js.map +1 -0
  83. package/dist/commands/distribution-ops-support.d.ts +36 -0
  84. package/dist/commands/distribution-ops-support.d.ts.map +1 -0
  85. package/dist/commands/distribution-ops-support.js +109 -0
  86. package/dist/commands/distribution-ops-support.js.map +1 -0
  87. package/dist/commands/distributions-ops.d.ts +3 -0
  88. package/dist/commands/distributions-ops.d.ts.map +1 -0
  89. package/dist/commands/distributions-ops.js +272 -0
  90. package/dist/commands/distributions-ops.js.map +1 -0
  91. package/dist/commands/knowledge.d.ts.map +1 -1
  92. package/dist/commands/knowledge.js +27 -9
  93. package/dist/commands/knowledge.js.map +1 -1
  94. package/dist/control-plane-request.d.ts +24 -0
  95. package/dist/control-plane-request.d.ts.map +1 -0
  96. package/dist/control-plane-request.js +124 -0
  97. package/dist/control-plane-request.js.map +1 -0
  98. package/dist/control-plane.d.ts +1 -17
  99. package/dist/control-plane.d.ts.map +1 -1
  100. package/dist/control-plane.js +1 -112
  101. package/dist/control-plane.js.map +1 -1
  102. package/dist/index.d.ts +1 -1
  103. package/dist/index.d.ts.map +1 -1
  104. package/dist/index.js +1 -1
  105. package/dist/index.js.map +1 -1
  106. package/dist/plugin-mode/plugin-operation-contract.d.ts +9 -9
  107. package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.d.ts.map +1 -1
  108. package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.js +5 -1
  109. package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.js.map +1 -1
  110. package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js +2 -2
  111. package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js.map +1 -1
  112. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.d.ts.map +1 -1
  113. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js +5 -0
  114. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js.map +1 -1
  115. package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-refs.d.ts.map +1 -1
  116. package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-refs.js +4 -2
  117. package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-refs.js.map +1 -1
  118. package/node_modules/@noodle-borg/agent-kit/dist/skill-embedded-assistant-ref.d.ts.map +1 -1
  119. package/node_modules/@noodle-borg/agent-kit/dist/skill-embedded-assistant-ref.js +2 -0
  120. package/node_modules/@noodle-borg/agent-kit/dist/skill-embedded-assistant-ref.js.map +1 -1
  121. package/node_modules/@noodle-borg/agent-kit/dist/skill-operations-refs.d.ts.map +1 -1
  122. package/node_modules/@noodle-borg/agent-kit/dist/skill-operations-refs.js +17 -0
  123. package/node_modules/@noodle-borg/agent-kit/dist/skill-operations-refs.js.map +1 -1
  124. package/node_modules/@noodle-borg/agent-kit/package.json +1 -1
  125. package/node_modules/@noodle-borg/authoring/dist/index.d.ts +1 -1
  126. package/node_modules/@noodle-borg/authoring/dist/index.d.ts.map +1 -1
  127. package/node_modules/@noodle-borg/authoring/dist/index.js +1 -1
  128. package/node_modules/@noodle-borg/authoring/dist/index.js.map +1 -1
  129. package/node_modules/@noodle-borg/authoring/dist/knowledge.d.ts +66 -2
  130. package/node_modules/@noodle-borg/authoring/dist/knowledge.d.ts.map +1 -1
  131. package/node_modules/@noodle-borg/authoring/dist/knowledge.js +54 -2
  132. package/node_modules/@noodle-borg/authoring/dist/knowledge.js.map +1 -1
  133. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-account.d.ts +4 -0
  134. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-account.d.ts.map +1 -0
  135. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-account.js +311 -0
  136. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-account.js.map +1 -0
  137. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-assistant.d.ts +4 -0
  138. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-assistant.d.ts.map +1 -0
  139. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-assistant.js +260 -0
  140. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-assistant.js.map +1 -0
  141. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-auth-discovery.d.ts +4 -0
  142. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-auth-discovery.d.ts.map +1 -0
  143. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-auth-discovery.js +358 -0
  144. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-auth-discovery.js.map +1 -0
  145. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-billing.d.ts +4 -0
  146. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-billing.d.ts.map +1 -0
  147. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-billing.js +312 -0
  148. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-billing.js.map +1 -0
  149. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-bootstrap-authoring.d.ts +4 -0
  150. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-bootstrap-authoring.d.ts.map +1 -0
  151. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-bootstrap-authoring.js +382 -0
  152. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-bootstrap-authoring.js.map +1 -0
  153. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-bootstrap-pre-auth.d.ts +4 -0
  154. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-bootstrap-pre-auth.d.ts.map +1 -0
  155. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-bootstrap-pre-auth.js +389 -0
  156. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-bootstrap-pre-auth.js.map +1 -0
  157. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-config.d.ts +7 -0
  158. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-config.d.ts.map +1 -0
  159. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-config.js +267 -0
  160. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-config.js.map +1 -0
  161. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-core.d.ts +6 -0
  162. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-core.d.ts.map +1 -0
  163. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-core.js +87 -0
  164. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-core.js.map +1 -0
  165. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-distributions.d.ts +4 -0
  166. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-distributions.d.ts.map +1 -0
  167. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-distributions.js +260 -0
  168. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-distributions.js.map +1 -0
  169. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-hosted-deployment.d.ts +4 -0
  170. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-hosted-deployment.d.ts.map +1 -0
  171. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-hosted-deployment.js +330 -0
  172. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-hosted-deployment.js.map +1 -0
  173. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-hosted-governance.d.ts +4 -0
  174. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-hosted-governance.d.ts.map +1 -0
  175. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-hosted-governance.js +4 -0
  176. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-hosted-governance.js.map +1 -0
  177. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-hosted-observability.d.ts +4 -0
  178. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-hosted-observability.d.ts.map +1 -0
  179. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-hosted-observability.js +470 -0
  180. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-hosted-observability.js.map +1 -0
  181. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-local-authoring.d.ts +4 -0
  182. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-local-authoring.d.ts.map +1 -0
  183. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-local-authoring.js +294 -0
  184. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-local-authoring.js.map +1 -0
  185. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-platform-auth.d.ts +7 -0
  186. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-platform-auth.d.ts.map +1 -0
  187. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-platform-auth.js +333 -0
  188. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-platform-auth.js.map +1 -0
  189. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-policy.d.ts +4 -0
  190. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-policy.d.ts.map +1 -0
  191. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-policy.js +328 -0
  192. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-policy.js.map +1 -0
  193. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-tenant-admin.d.ts +4 -0
  194. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-tenant-admin.d.ts.map +1 -0
  195. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-tenant-admin.js +479 -0
  196. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-tenant-admin.js.map +1 -0
  197. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-tenant-resources.d.ts +4 -0
  198. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-tenant-resources.d.ts.map +1 -0
  199. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-tenant-resources.js +223 -0
  200. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-tenant-resources.js.map +1 -0
  201. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-types.d.ts +104 -0
  202. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-types.d.ts.map +1 -0
  203. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-types.js +7 -0
  204. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-types.js.map +1 -0
  205. package/node_modules/@noodle-borg/cli-catalog/dist/index.d.ts +19 -0
  206. package/node_modules/@noodle-borg/cli-catalog/dist/index.d.ts.map +1 -0
  207. package/node_modules/@noodle-borg/cli-catalog/dist/index.js +19 -0
  208. package/node_modules/@noodle-borg/cli-catalog/dist/index.js.map +1 -0
  209. package/node_modules/@noodle-borg/cli-catalog/package.json +97 -0
  210. package/node_modules/@noodle-borg/compiler/dist/manifest/schema.d.ts +58 -0
  211. package/node_modules/@noodle-borg/compiler/dist/manifest/schema.d.ts.map +1 -1
  212. package/node_modules/@noodle-borg/knowledge/dist/algolia-index.d.ts +30 -0
  213. package/node_modules/@noodle-borg/knowledge/dist/algolia-index.d.ts.map +1 -0
  214. package/node_modules/@noodle-borg/knowledge/dist/algolia-index.js +141 -0
  215. package/node_modules/@noodle-borg/knowledge/dist/algolia-index.js.map +1 -0
  216. package/node_modules/@noodle-borg/knowledge/dist/compile.d.ts +4 -0
  217. package/node_modules/@noodle-borg/knowledge/dist/compile.d.ts.map +1 -1
  218. package/node_modules/@noodle-borg/knowledge/dist/compile.js +3 -0
  219. package/node_modules/@noodle-borg/knowledge/dist/compile.js.map +1 -1
  220. package/node_modules/@noodle-borg/knowledge/dist/google-agent-search.d.ts +2 -8
  221. package/node_modules/@noodle-borg/knowledge/dist/google-agent-search.d.ts.map +1 -1
  222. package/node_modules/@noodle-borg/knowledge/dist/google-agent-search.js +0 -48
  223. package/node_modules/@noodle-borg/knowledge/dist/google-agent-search.js.map +1 -1
  224. package/node_modules/@noodle-borg/knowledge/dist/index.d.ts +2 -0
  225. package/node_modules/@noodle-borg/knowledge/dist/index.d.ts.map +1 -1
  226. package/node_modules/@noodle-borg/knowledge/dist/index.js +2 -0
  227. package/node_modules/@noodle-borg/knowledge/dist/index.js.map +1 -1
  228. package/node_modules/@noodle-borg/knowledge/dist/limits.d.ts +6 -0
  229. package/node_modules/@noodle-borg/knowledge/dist/limits.d.ts.map +1 -1
  230. package/node_modules/@noodle-borg/knowledge/dist/limits.js +6 -0
  231. package/node_modules/@noodle-borg/knowledge/dist/limits.js.map +1 -1
  232. package/node_modules/@noodle-borg/knowledge/dist/manifest-schema.d.ts +58 -0
  233. package/node_modules/@noodle-borg/knowledge/dist/manifest-schema.d.ts.map +1 -1
  234. package/node_modules/@noodle-borg/knowledge/dist/manifest-schema.js +28 -0
  235. package/node_modules/@noodle-borg/knowledge/dist/manifest-schema.js.map +1 -1
  236. package/node_modules/@noodle-borg/knowledge/dist/meilisearch-index.d.ts +33 -0
  237. package/node_modules/@noodle-borg/knowledge/dist/meilisearch-index.d.ts.map +1 -0
  238. package/node_modules/@noodle-borg/knowledge/dist/meilisearch-index.js +153 -0
  239. package/node_modules/@noodle-borg/knowledge/dist/meilisearch-index.js.map +1 -0
  240. package/node_modules/@noodle-borg/knowledge/dist/postgres-revision-store.d.ts +1 -0
  241. package/node_modules/@noodle-borg/knowledge/dist/postgres-revision-store.d.ts.map +1 -1
  242. package/node_modules/@noodle-borg/knowledge/dist/postgres-revision-store.js +3 -0
  243. package/node_modules/@noodle-borg/knowledge/dist/postgres-revision-store.js.map +1 -1
  244. package/node_modules/@noodle-borg/knowledge/dist/provider-index-shared.d.ts +19 -0
  245. package/node_modules/@noodle-borg/knowledge/dist/provider-index-shared.d.ts.map +1 -0
  246. package/node_modules/@noodle-borg/knowledge/dist/provider-index-shared.js +47 -0
  247. package/node_modules/@noodle-borg/knowledge/dist/provider-index-shared.js.map +1 -0
  248. package/node_modules/@noodle-borg/knowledge/dist/revision-store.d.ts +7 -0
  249. package/node_modules/@noodle-borg/knowledge/dist/revision-store.d.ts.map +1 -1
  250. package/node_modules/@noodle-borg/knowledge/dist/revision-store.js +4 -0
  251. package/node_modules/@noodle-borg/knowledge/dist/revision-store.js.map +1 -1
  252. package/node_modules/@noodle-borg/knowledge-crawl/dist/bounds.d.ts +3 -0
  253. package/node_modules/@noodle-borg/knowledge-crawl/dist/bounds.d.ts.map +1 -0
  254. package/node_modules/@noodle-borg/knowledge-crawl/dist/bounds.js +30 -0
  255. package/node_modules/@noodle-borg/knowledge-crawl/dist/bounds.js.map +1 -0
  256. package/node_modules/@noodle-borg/knowledge-crawl/dist/firecrawl.d.ts +13 -0
  257. package/node_modules/@noodle-borg/knowledge-crawl/dist/firecrawl.d.ts.map +1 -0
  258. package/node_modules/@noodle-borg/knowledge-crawl/dist/firecrawl.js +90 -0
  259. package/node_modules/@noodle-borg/knowledge-crawl/dist/firecrawl.js.map +1 -0
  260. package/node_modules/@noodle-borg/knowledge-crawl/dist/first-party.d.ts +11 -0
  261. package/node_modules/@noodle-borg/knowledge-crawl/dist/first-party.d.ts.map +1 -0
  262. package/node_modules/@noodle-borg/knowledge-crawl/dist/first-party.js +108 -0
  263. package/node_modules/@noodle-borg/knowledge-crawl/dist/first-party.js.map +1 -0
  264. package/node_modules/@noodle-borg/knowledge-crawl/dist/html-text.d.ts +19 -0
  265. package/node_modules/@noodle-borg/knowledge-crawl/dist/html-text.d.ts.map +1 -0
  266. package/node_modules/@noodle-borg/knowledge-crawl/dist/html-text.js +62 -0
  267. package/node_modules/@noodle-borg/knowledge-crawl/dist/html-text.js.map +1 -0
  268. package/node_modules/@noodle-borg/knowledge-crawl/dist/index.d.ts +5 -0
  269. package/node_modules/@noodle-borg/knowledge-crawl/dist/index.d.ts.map +1 -0
  270. package/node_modules/@noodle-borg/knowledge-crawl/dist/index.js +4 -0
  271. package/node_modules/@noodle-borg/knowledge-crawl/dist/index.js.map +1 -0
  272. package/node_modules/@noodle-borg/knowledge-crawl/dist/origin.d.ts +3 -0
  273. package/node_modules/@noodle-borg/knowledge-crawl/dist/origin.d.ts.map +1 -0
  274. package/node_modules/@noodle-borg/knowledge-crawl/dist/origin.js +30 -0
  275. package/node_modules/@noodle-borg/knowledge-crawl/dist/origin.js.map +1 -0
  276. package/node_modules/@noodle-borg/knowledge-crawl/dist/ports.d.ts +28 -0
  277. package/node_modules/@noodle-borg/knowledge-crawl/dist/ports.d.ts.map +1 -0
  278. package/node_modules/@noodle-borg/knowledge-crawl/dist/ports.js +8 -0
  279. package/node_modules/@noodle-borg/knowledge-crawl/dist/ports.js.map +1 -0
  280. package/node_modules/@noodle-borg/knowledge-crawl/dist/robots.d.ts +12 -0
  281. package/node_modules/@noodle-borg/knowledge-crawl/dist/robots.d.ts.map +1 -0
  282. package/node_modules/@noodle-borg/knowledge-crawl/dist/robots.js +64 -0
  283. package/node_modules/@noodle-borg/knowledge-crawl/dist/robots.js.map +1 -0
  284. package/node_modules/@noodle-borg/knowledge-crawl/dist/sitemap.d.ts +3 -0
  285. package/node_modules/@noodle-borg/knowledge-crawl/dist/sitemap.d.ts.map +1 -0
  286. package/node_modules/@noodle-borg/knowledge-crawl/dist/sitemap.js +11 -0
  287. package/node_modules/@noodle-borg/knowledge-crawl/dist/sitemap.js.map +1 -0
  288. package/node_modules/@noodle-borg/knowledge-crawl/dist/tavily.d.ts +11 -0
  289. package/node_modules/@noodle-borg/knowledge-crawl/dist/tavily.d.ts.map +1 -0
  290. package/node_modules/@noodle-borg/knowledge-crawl/dist/tavily.js +53 -0
  291. package/node_modules/@noodle-borg/knowledge-crawl/dist/tavily.js.map +1 -0
  292. package/node_modules/@noodle-borg/knowledge-crawl/package.json +32 -0
  293. package/node_modules/@noodle-borg/knowledge-operations/dist/crawl-lifecycle.d.ts +71 -0
  294. package/node_modules/@noodle-borg/knowledge-operations/dist/crawl-lifecycle.d.ts.map +1 -0
  295. package/node_modules/@noodle-borg/knowledge-operations/dist/crawl-lifecycle.js +138 -0
  296. package/node_modules/@noodle-borg/knowledge-operations/dist/crawl-lifecycle.js.map +1 -0
  297. package/node_modules/@noodle-borg/knowledge-operations/dist/dispatch.d.ts.map +1 -1
  298. package/node_modules/@noodle-borg/knowledge-operations/dist/dispatch.js +11 -3
  299. package/node_modules/@noodle-borg/knowledge-operations/dist/dispatch.js.map +1 -1
  300. package/node_modules/@noodle-borg/knowledge-operations/dist/executor.d.ts +7 -13
  301. package/node_modules/@noodle-borg/knowledge-operations/dist/executor.d.ts.map +1 -1
  302. package/node_modules/@noodle-borg/knowledge-operations/dist/executor.js +16 -27
  303. package/node_modules/@noodle-borg/knowledge-operations/dist/executor.js.map +1 -1
  304. package/node_modules/@noodle-borg/knowledge-operations/dist/index.d.ts +2 -2
  305. package/node_modules/@noodle-borg/knowledge-operations/dist/index.d.ts.map +1 -1
  306. package/node_modules/@noodle-borg/knowledge-operations/dist/index.js +2 -2
  307. package/node_modules/@noodle-borg/knowledge-operations/dist/index.js.map +1 -1
  308. package/node_modules/@noodle-borg/knowledge-operations/dist/paths.d.ts +4 -0
  309. package/node_modules/@noodle-borg/knowledge-operations/dist/paths.d.ts.map +1 -1
  310. package/node_modules/@noodle-borg/knowledge-operations/dist/paths.js +6 -0
  311. package/node_modules/@noodle-borg/knowledge-operations/dist/paths.js.map +1 -1
  312. package/node_modules/@noodle-borg/knowledge-operations/dist/postgres-crawl-state.d.ts +12 -0
  313. package/node_modules/@noodle-borg/knowledge-operations/dist/postgres-crawl-state.d.ts.map +1 -0
  314. package/node_modules/@noodle-borg/knowledge-operations/dist/postgres-crawl-state.js +58 -0
  315. package/node_modules/@noodle-borg/knowledge-operations/dist/postgres-crawl-state.js.map +1 -0
  316. package/node_modules/@noodle-borg/knowledge-operations/dist/publication.d.ts +14 -1
  317. package/node_modules/@noodle-borg/knowledge-operations/dist/publication.d.ts.map +1 -1
  318. package/node_modules/@noodle-borg/knowledge-operations/dist/publication.js +84 -42
  319. package/node_modules/@noodle-borg/knowledge-operations/dist/publication.js.map +1 -1
  320. package/node_modules/@noodle-borg/knowledge-operations/dist/service-wiring.d.ts +18 -11
  321. package/node_modules/@noodle-borg/knowledge-operations/dist/service-wiring.d.ts.map +1 -1
  322. package/node_modules/@noodle-borg/knowledge-operations/dist/service-wiring.js +149 -26
  323. package/node_modules/@noodle-borg/knowledge-operations/dist/service-wiring.js.map +1 -1
  324. package/node_modules/@noodle-borg/knowledge-operations/dist/status-routes.d.ts +13 -4
  325. package/node_modules/@noodle-borg/knowledge-operations/dist/status-routes.d.ts.map +1 -1
  326. package/node_modules/@noodle-borg/knowledge-operations/dist/status-routes.js +28 -0
  327. package/node_modules/@noodle-borg/knowledge-operations/dist/status-routes.js.map +1 -1
  328. package/node_modules/@noodle-borg/knowledge-operations/package.json +1 -0
  329. package/node_modules/@noodle-borg/module/dist/contract.d.ts +67 -0
  330. package/node_modules/@noodle-borg/module/dist/contract.d.ts.map +1 -1
  331. package/node_modules/@noodle-borg/module/dist/contract.js.map +1 -1
  332. package/node_modules/@noodle-borg/plugin-distribution/dist/command.d.ts +1 -0
  333. package/node_modules/@noodle-borg/plugin-distribution/dist/command.d.ts.map +1 -1
  334. package/node_modules/@noodle-borg/plugin-distribution/dist/command.js +1 -0
  335. package/node_modules/@noodle-borg/plugin-distribution/dist/command.js.map +1 -1
  336. package/node_modules/@noodle-borg/protocol/dist/sdk-server.d.ts +3 -0
  337. package/node_modules/@noodle-borg/protocol/dist/sdk-server.d.ts.map +1 -1
  338. package/node_modules/@noodle-borg/protocol/dist/sdk-server.js.map +1 -1
  339. package/node_modules/@noodle-borg/protocol/dist/v2/server.d.ts +1 -1
  340. package/node_modules/@noodle-borg/protocol/dist/v2/server.d.ts.map +1 -1
  341. package/node_modules/@noodle-borg/protocol/dist/v2/server.js +26 -4
  342. package/node_modules/@noodle-borg/protocol/dist/v2/server.js.map +1 -1
  343. package/node_modules/@noodle-borg/protocol/dist/v2/skills.d.ts +30 -0
  344. package/node_modules/@noodle-borg/protocol/dist/v2/skills.d.ts.map +1 -0
  345. package/node_modules/@noodle-borg/protocol/dist/v2/skills.js +126 -0
  346. package/node_modules/@noodle-borg/protocol/dist/v2/skills.js.map +1 -0
  347. package/node_modules/@noodle-borg/protocol/package.json +3 -1
  348. package/node_modules/@noodle-borg/service/dist/assistant-bindings.d.ts.map +1 -1
  349. package/node_modules/@noodle-borg/service/dist/assistant-bindings.js +29 -1
  350. package/node_modules/@noodle-borg/service/dist/assistant-bindings.js.map +1 -1
  351. package/node_modules/@noodle-borg/service/dist/knowledge-wiring.d.ts +8 -0
  352. package/node_modules/@noodle-borg/service/dist/knowledge-wiring.d.ts.map +1 -0
  353. package/node_modules/@noodle-borg/service/dist/knowledge-wiring.js +10 -0
  354. package/node_modules/@noodle-borg/service/dist/knowledge-wiring.js.map +1 -0
  355. package/node_modules/@noodle-borg/service/dist/modules/commercial-modules.d.ts +8 -0
  356. package/node_modules/@noodle-borg/service/dist/modules/commercial-modules.d.ts.map +1 -0
  357. package/node_modules/@noodle-borg/service/dist/modules/commercial-modules.js +21 -0
  358. package/node_modules/@noodle-borg/service/dist/modules/commercial-modules.js.map +1 -0
  359. package/node_modules/@noodle-borg/service/dist/modules/route-dispatch.d.ts +30 -0
  360. package/node_modules/@noodle-borg/service/dist/modules/route-dispatch.d.ts.map +1 -0
  361. package/node_modules/@noodle-borg/service/dist/modules/route-dispatch.js +155 -0
  362. package/node_modules/@noodle-borg/service/dist/modules/route-dispatch.js.map +1 -0
  363. package/node_modules/@noodle-borg/service/dist/registry-targets.d.ts.map +1 -1
  364. package/node_modules/@noodle-borg/service/dist/registry-targets.js +10 -2
  365. package/node_modules/@noodle-borg/service/dist/registry-targets.js.map +1 -1
  366. package/node_modules/@noodle-borg/service/dist/serve.d.ts.map +1 -1
  367. package/node_modules/@noodle-borg/service/dist/serve.js +4 -20
  368. package/node_modules/@noodle-borg/service/dist/serve.js.map +1 -1
  369. package/node_modules/@noodle-borg/service/dist/service.d.ts.map +1 -1
  370. package/node_modules/@noodle-borg/service/dist/service.js +18 -18
  371. package/node_modules/@noodle-borg/service/dist/service.js.map +1 -1
  372. package/node_modules/@noodle-borg/service/package.json +1 -1
  373. package/node_modules/@noodle-borg/transport-http/dist/admission-context.js +5 -1
  374. package/node_modules/@noodle-borg/transport-http/dist/admission-context.js.map +1 -1
  375. package/node_modules/@noodle-borg/transport-http/dist/request-capture.d.ts.map +1 -1
  376. package/node_modules/@noodle-borg/transport-http/dist/request-capture.js +4 -1
  377. package/node_modules/@noodle-borg/transport-http/dist/request-capture.js.map +1 -1
  378. package/node_modules/@noodle-borg/wire-contracts/dist/distribution.d.ts +561 -0
  379. package/node_modules/@noodle-borg/wire-contracts/dist/distribution.d.ts.map +1 -0
  380. package/node_modules/@noodle-borg/wire-contracts/dist/distribution.js +223 -0
  381. package/node_modules/@noodle-borg/wire-contracts/dist/distribution.js.map +1 -0
  382. package/node_modules/@noodle-borg/wire-contracts/dist/index.d.ts +1 -0
  383. package/node_modules/@noodle-borg/wire-contracts/dist/index.d.ts.map +1 -1
  384. package/node_modules/@noodle-borg/wire-contracts/dist/index.js +1 -0
  385. package/node_modules/@noodle-borg/wire-contracts/dist/index.js.map +1 -1
  386. package/node_modules/@noodle-borg/wire-contracts/dist/knowledge.d.ts +42 -1
  387. package/node_modules/@noodle-borg/wire-contracts/dist/knowledge.d.ts.map +1 -1
  388. package/node_modules/@noodle-borg/wire-contracts/dist/knowledge.js +14 -0
  389. package/node_modules/@noodle-borg/wire-contracts/dist/knowledge.js.map +1 -1
  390. package/node_modules/@noodleseed/assistant/dist/{chunk-MZNENVFY.js → chunk-RFETV5KQ.js} +158 -6
  391. package/node_modules/@noodleseed/assistant/dist/chunk-RFETV5KQ.js.map +1 -0
  392. package/node_modules/@noodleseed/assistant/dist/{chunk-RIKRQFKS.js → chunk-S373FCAI.js} +2 -1
  393. package/node_modules/@noodleseed/assistant/dist/client.js +1 -1
  394. package/node_modules/@noodleseed/assistant/dist/embed.global.js +57 -57
  395. package/node_modules/@noodleseed/assistant/dist/index.cjs +268 -117
  396. package/node_modules/@noodleseed/assistant/dist/index.cjs.map +1 -1
  397. package/node_modules/@noodleseed/assistant/dist/index.js +2 -2
  398. package/node_modules/@noodleseed/assistant/dist/react/client.js +1 -1
  399. package/node_modules/@noodleseed/assistant/dist/react.cjs +268 -117
  400. package/node_modules/@noodleseed/assistant/dist/react.cjs.map +1 -1
  401. package/node_modules/@noodleseed/assistant/dist/react.js +2 -2
  402. package/package.json +6 -2
  403. package/node_modules/@noodle-borg/knowledge-operations/dist/google-identity.d.ts +0 -15
  404. package/node_modules/@noodle-borg/knowledge-operations/dist/google-identity.d.ts.map +0 -1
  405. package/node_modules/@noodle-borg/knowledge-operations/dist/google-identity.js +0 -50
  406. package/node_modules/@noodle-borg/knowledge-operations/dist/google-identity.js.map +0 -1
  407. package/node_modules/@noodle-borg/knowledge-operations/dist/managed-google.d.ts +0 -34
  408. package/node_modules/@noodle-borg/knowledge-operations/dist/managed-google.d.ts.map +0 -1
  409. package/node_modules/@noodle-borg/knowledge-operations/dist/managed-google.js +0 -68
  410. package/node_modules/@noodle-borg/knowledge-operations/dist/managed-google.js.map +0 -1
  411. package/node_modules/@noodleseed/assistant/dist/chunk-MZNENVFY.js.map +0 -1
  412. /package/node_modules/@noodleseed/assistant/dist/{chunk-RIKRQFKS.js.map → chunk-S373FCAI.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"firecrawl.js","sourceRoot":"","sources":["../src/firecrawl.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,MAAM,GAAG,GAAG,oCAAoC,CAAC;AAcjD,MAAM,OAAO,oBAAoB;IACtB,QAAQ,CAEf;IAEF,YAAY,OAAoC;QAC9C,IAAI,CAAC,QAAQ,GAAG;YACd,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,KAAK;YACrC,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,IAAI;YAC9C,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,GAAG;SAClC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,OAAyB;QACvC,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE;YAC9C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,GAAG,EAAE,MAAM,CAAC,MAAM;gBAClB,KAAK,EAAE,OAAO,CAAC,QAAQ;gBACvB,aAAa,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE;aACnD,CAAC;SACH,CAAC,CAAoB,CAAC;QACvB,IAAI,OAAO,OAAO,CAAC,EAAE,KAAK,QAAQ,IAAI,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;YACxD,MAAM,IAAI,cAAc,CAAC,UAAU,EAAE,0CAA0C,CAAC,CAAC;QACnF,CAAC;QAED,MAAM,SAAS,GAAwB,EAAE,CAAC;QAC1C,IAAI,OAAO,GAAG,GAAG,GAAG,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;QACrC,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC;YACzD,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,CAIlD,CAAC;YACF,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC/B,MAAM,IAAI,cAAc,CAAC,UAAU,EAAE,wBAAwB,CAAC,CAAC;YACjE,CAAC;YACD,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;gBAClC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;gBACvC,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,KAAK,EAAE,EAAE,CAAC;oBAC1D,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC;oBACtB,SAAS;gBACX,CAAC;gBACD,OAAO,UAAU,CACf,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;oBAC3B,GAAG,EAAE,QAAQ,CAAC,QAAQ,EAAE,SAAS,IAAI,EAAE;oBACvC,KAAK,EAAE,cAAc,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC;oBAC/C,IAAI,EAAE,QAAQ,CAAC,QAAQ,IAAI,EAAE;iBAC9B,CAAC,CAAC,EACH,OAAO,EACP,MAAM,CACP,CAAC;YACJ,CAAC;YACD,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,GAAG,CAAC,EAAE,CAAC;gBACrC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC;YACpF,CAAC;QACH,CAAC;QACD,MAAM,IAAI,cAAc,CAAC,UAAU,EAAE,yDAAyD,CAAC,CAAC;IAClG,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,SAAiB,EAAE,GAAW,EAAE,OAAoB,EAAE;QAChE,IAAI,QAAkB,CAAC;QACvB,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE;gBAC5C,GAAG,IAAI;gBACP,OAAO,EAAE;oBACP,aAAa,EAAE,UAAU,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;oBAC/C,cAAc,EAAE,kBAAkB;iBACnC;aACF,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,cAAc,CAAC,UAAU,EAAE,aAAa,SAAS,iBAAiB,CAAC,CAAC;QAChF,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,cAAc,CACtB,UAAU,EACV,aAAa,SAAS,kBAAkB,QAAQ,CAAC,MAAM,EAAE,CAC1D,CAAC;QACJ,CAAC;QACD,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3C,CAAC;CACF;AAED,SAAS,cAAc,CAAC,KAA6C;IACnE,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC;IACxF,OAAO,EAAE,CAAC;AACZ,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { CrawlPage, SiteCrawlRequest, SiteFetcher } from './ports.js';
2
+ export interface FirstPartySiteFetcherOptions {
3
+ /** Injected for tests; defaults to the SSRF-guarded fetch. */
4
+ readonly fetchImpl?: typeof fetch;
5
+ }
6
+ export declare class FirstPartySiteFetcher implements SiteFetcher {
7
+ #private;
8
+ constructor(options?: FirstPartySiteFetcherOptions);
9
+ fetchSite(request: SiteCrawlRequest): Promise<readonly CrawlPage[]>;
10
+ }
11
+ //# sourceMappingURL=first-party.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"first-party.d.ts","sourceRoot":"","sources":["../src/first-party.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAO3E,MAAM,WAAW,4BAA4B;IAC3C,8DAA8D;IAC9D,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CACnC;AAED,qBAAa,qBAAsB,YAAW,WAAW;;gBAG3C,OAAO,GAAE,4BAAiC;IAMhD,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,SAAS,SAAS,EAAE,CAAC;CAkF1E"}
@@ -0,0 +1,108 @@
1
+ /**
2
+ * The managed first-party site fetcher (ADR 0202 amendment 2026-08-18): sitemap-first discovery,
3
+ * an include-contained same-origin link walk, robots.txt, and bounded, deterministic output.
4
+ *
5
+ * Egress is SSRF-guarded in layers: the default fetch path is `guardedFetch` from
6
+ * `@noodle-borg/connector-http` (socket-level DNS pinning to public unicast addresses, ADR 0026),
7
+ * and this fetcher additionally enforces HTTPS-only, rejects literal-IP origins (no DNS step means
8
+ * no pinning), keeps every fetched URL on the declared origin, and never follows redirects
9
+ * (a moved page is indexed at its new URL when discovery finds it there).
10
+ */
11
+ import { guardedFetch } from '@noodle-borg/connector-http';
12
+ import { pathMatches } from '@noodle-borg/knowledge';
13
+ import { extractPageContent } from './html-text.js';
14
+ import { parseOrigin, safeUrl } from './origin.js';
15
+ import { parseRobots } from './robots.js';
16
+ import { parseSitemapLocations } from './sitemap.js';
17
+ const ALLOW_ALL = { isAllowed: () => true, sitemaps: [] };
18
+ const LINK = /<a\s[^>]*?href\s*=\s*["']([^"'#]+)["']/gi;
19
+ export class FirstPartySiteFetcher {
20
+ #fetch;
21
+ constructor(options = {}) {
22
+ this.#fetch =
23
+ options.fetchImpl ??
24
+ ((url, init) => guardedFetch(new URL(String(url)), init));
25
+ }
26
+ async fetchSite(request) {
27
+ const origin = parseOrigin(request.origin);
28
+ const robots = await this.#robots(origin);
29
+ const indexable = (url) => url.origin === origin.origin &&
30
+ robots.isAllowed(url.pathname) &&
31
+ request.include.some((glob) => pathMatches(url.pathname, glob));
32
+ const queue = new Set();
33
+ for (const location of await this.#sitemapLocations(origin, robots)) {
34
+ const url = safeUrl(location);
35
+ if (url !== undefined && indexable(url))
36
+ queue.add(url.origin + url.pathname);
37
+ }
38
+ const pages = [];
39
+ const visited = new Set();
40
+ // The root is fetched for discovery even when it is not itself indexable.
41
+ const discovery = [`${origin.origin}/`];
42
+ for (;;) {
43
+ const next = [...queue].filter((url) => !visited.has(url)).sort()[0] ??
44
+ discovery.find((url) => !visited.has(url));
45
+ if (next === undefined || pages.length >= request.maxPages)
46
+ break;
47
+ visited.add(next);
48
+ const fetched = await this.#page(next, request.maxPageBytes);
49
+ if (fetched === undefined)
50
+ continue;
51
+ for (const href of fetched.html.matchAll(LINK)) {
52
+ const linked = safeUrl(href[1] ?? '', next);
53
+ if (linked !== undefined && indexable(linked))
54
+ queue.add(linked.origin + linked.pathname);
55
+ }
56
+ if (indexable(new URL(next)) && fetched.text !== '') {
57
+ pages.push({
58
+ url: next,
59
+ title: fetched.title === '' ? next : fetched.title,
60
+ text: fetched.text,
61
+ });
62
+ }
63
+ }
64
+ return pages.sort((a, b) => a.url.localeCompare(b.url));
65
+ }
66
+ async #robots(origin) {
67
+ try {
68
+ const response = await this.#fetch(`${origin.origin}/robots.txt`);
69
+ if (response.status !== 200)
70
+ return ALLOW_ALL;
71
+ return parseRobots(await response.text());
72
+ }
73
+ catch {
74
+ return ALLOW_ALL;
75
+ }
76
+ }
77
+ async #sitemapLocations(origin, robots) {
78
+ const sitemapUrls = (robots.sitemaps.length > 0 ? robots.sitemaps : [`${origin.origin}/sitemap.xml`]).filter((url) => safeUrl(url)?.origin === origin.origin);
79
+ const locations = [];
80
+ for (const sitemapUrl of sitemapUrls) {
81
+ try {
82
+ const response = await this.#fetch(sitemapUrl);
83
+ if (response.status !== 200)
84
+ continue;
85
+ locations.push(...parseSitemapLocations(await response.text()));
86
+ }
87
+ catch {
88
+ // A missing or failing sitemap is not an error; the link walk still discovers pages.
89
+ }
90
+ }
91
+ return locations;
92
+ }
93
+ async #page(url, maxPageBytes) {
94
+ try {
95
+ const response = await this.#fetch(url, { redirect: 'manual' });
96
+ if (response.status !== 200)
97
+ return undefined;
98
+ const bytes = await response.arrayBuffer();
99
+ if (bytes.byteLength > maxPageBytes)
100
+ return undefined;
101
+ return extractPageContent(response.headers.get('content-type') ?? '', bytes);
102
+ }
103
+ catch {
104
+ return undefined;
105
+ }
106
+ }
107
+ }
108
+ //# sourceMappingURL=first-party.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"first-party.js","sourceRoot":"","sources":["../src/first-party.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Deliberately small HTML→text extraction for a lexical index: strip non-content blocks and
3
+ * markup, decode the common entities, collapse whitespace. Fetched pages are untrusted input —
4
+ * this reduces them to bounded plain text and nothing here evaluates or resolves anything.
5
+ */
6
+ export declare function extractHtmlText(html: string): string;
7
+ /**
8
+ * The content-extraction seam: (content type, bytes) → indexable `{ html, title, text }`, or
9
+ * `undefined` for media we cannot yet extract. Future formats — PDF is the named next candidate
10
+ * (ADR 0202 deferred triggers) — become one new case here; everything downstream (sealing,
11
+ * revisions, indexing, fusion, citations) is format-agnostic.
12
+ */
13
+ export declare function extractPageContent(contentType: string, bytes: ArrayBuffer): {
14
+ html: string;
15
+ title: string;
16
+ text: string;
17
+ } | undefined;
18
+ export declare function extractHtmlTitle(html: string): string;
19
+ //# sourceMappingURL=html-text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"html-text.d.ts","sourceRoot":"","sources":["../src/html-text.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAgCH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKpD;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,WAAW,GACjB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAI3D;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAYrD"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Deliberately small HTML→text extraction for a lexical index: strip non-content blocks and
3
+ * markup, decode the common entities, collapse whitespace. Fetched pages are untrusted input —
4
+ * this reduces them to bounded plain text and nothing here evaluates or resolves anything.
5
+ */
6
+ const NON_CONTENT_BLOCKS = /<(script|style|noscript|template|svg)\b[\s\S]*?<\/\1\s*>/gi;
7
+ const BLOCK_BREAK = /<\/?(p|div|li|ul|ol|table|tr|td|th|h[1-6]|br|hr|section|article|header|footer|nav|blockquote|pre)\b[^>]*>/gi;
8
+ const NAMED_ENTITIES = {
9
+ amp: '&',
10
+ lt: '<',
11
+ gt: '>',
12
+ quot: '"',
13
+ apos: "'",
14
+ nbsp: ' ',
15
+ mdash: '—',
16
+ ndash: '–',
17
+ hellip: '…',
18
+ rsquo: '’',
19
+ lsquo: '‘',
20
+ rdquo: '”',
21
+ ldquo: '“',
22
+ copy: '©',
23
+ };
24
+ function decodeEntities(text) {
25
+ return text
26
+ .replace(/&#x([0-9a-f]+);/gi, (_, hex) => String.fromCodePoint(Number.parseInt(hex, 16)))
27
+ .replace(/&#(\d+);/g, (_, dec) => String.fromCodePoint(Number.parseInt(dec, 10)))
28
+ .replace(/&([a-z]+);/gi, (match, name) => NAMED_ENTITIES[name.toLowerCase()] ?? match);
29
+ }
30
+ export function extractHtmlText(html) {
31
+ const withoutBlocks = html.replace(NON_CONTENT_BLOCKS, ' ');
32
+ const withBreaks = withoutBlocks.replace(BLOCK_BREAK, ' ');
33
+ const withoutTags = withBreaks.replace(/<[^>]+>/g, '');
34
+ return decodeEntities(withoutTags).replace(/\s+/g, ' ').trim();
35
+ }
36
+ /**
37
+ * The content-extraction seam: (content type, bytes) → indexable `{ html, title, text }`, or
38
+ * `undefined` for media we cannot yet extract. Future formats — PDF is the named next candidate
39
+ * (ADR 0202 deferred triggers) — become one new case here; everything downstream (sealing,
40
+ * revisions, indexing, fusion, citations) is format-agnostic.
41
+ */
42
+ export function extractPageContent(contentType, bytes) {
43
+ if (!contentType.startsWith('text/html'))
44
+ return undefined;
45
+ const html = new TextDecoder().decode(bytes);
46
+ return { html, title: extractHtmlTitle(html), text: extractHtmlText(html) };
47
+ }
48
+ export function extractHtmlTitle(html) {
49
+ const title = /<title[^>]*>([\s\S]*?)<\/title\s*>/i.exec(html)?.[1];
50
+ if (title !== undefined && title.trim() !== '')
51
+ return decodeEntities(title).replace(/\s+/g, ' ').trim();
52
+ const heading = /<h1[^>]*>([\s\S]*?)<\/h1\s*>/i.exec(html)?.[1];
53
+ if (heading !== undefined) {
54
+ const text = decodeEntities(heading.replace(/<[^>]+>/g, ''))
55
+ .replace(/\s+/g, ' ')
56
+ .trim();
57
+ if (text !== '')
58
+ return text;
59
+ }
60
+ return '';
61
+ }
62
+ //# sourceMappingURL=html-text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"html-text.js","sourceRoot":"","sources":["../src/html-text.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export { FirecrawlSiteFetcher, type FirecrawlSiteFetcherOptions } from './firecrawl.js';
2
+ export { FirstPartySiteFetcher, type FirstPartySiteFetcherOptions } from './first-party.js';
3
+ export type { CrawlPage, SiteCrawlRequest, SiteFetcher } from './ports.js';
4
+ export { TavilySiteFetcher, type TavilySiteFetcherOptions } from './tavily.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,KAAK,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AACxF,OAAO,EAAE,qBAAqB,EAAE,KAAK,4BAA4B,EAAE,MAAM,kBAAkB,CAAC;AAC5F,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,KAAK,wBAAwB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { FirecrawlSiteFetcher } from './firecrawl.js';
2
+ export { FirstPartySiteFetcher } from './first-party.js';
3
+ export { TavilySiteFetcher } from './tavily.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAoC,MAAM,gBAAgB,CAAC;AACxF,OAAO,EAAE,qBAAqB,EAAqC,MAAM,kBAAkB,CAAC;AAE5F,OAAO,EAAE,iBAAiB,EAAiC,MAAM,aAAa,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function parseOrigin(origin: string): URL;
2
+ export declare function safeUrl(href: string, base?: string): URL | undefined;
3
+ //# sourceMappingURL=origin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"origin.d.ts","sourceRoot":"","sources":["../src/origin.ts"],"names":[],"mappings":"AAIA,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAe/C;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,GAAG,GAAG,SAAS,CAOpE"}
@@ -0,0 +1,30 @@
1
+ /** Shared origin/URL validation for every fetcher (managed and BYO). */
2
+ import { isIP } from 'node:net';
3
+ import { KnowledgeError } from '@noodle-borg/knowledge';
4
+ export function parseOrigin(origin) {
5
+ let url;
6
+ try {
7
+ url = new URL(origin);
8
+ }
9
+ catch {
10
+ throw new KnowledgeError('request', `site origin ${origin} is not a valid URL`);
11
+ }
12
+ if (url.protocol !== 'https:') {
13
+ throw new KnowledgeError('request', 'site origin must use https');
14
+ }
15
+ if (isIP(url.hostname.replace(/^\[|\]$/g, '')) !== 0) {
16
+ // A literal-IP host has no DNS step, which would bypass the socket-level SSRF guard.
17
+ throw new KnowledgeError('request', 'site origin must be a DNS hostname, not an IP address');
18
+ }
19
+ return url;
20
+ }
21
+ export function safeUrl(href, base) {
22
+ try {
23
+ const url = base === undefined ? new URL(href) : new URL(href, base);
24
+ return url.protocol === 'https:' ? url : undefined;
25
+ }
26
+ catch {
27
+ return undefined;
28
+ }
29
+ }
30
+ //# sourceMappingURL=origin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"origin.js","sourceRoot":"","sources":["../src/origin.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,MAAM,UAAU,WAAW,CAAC,MAAc;IACxC,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,cAAc,CAAC,SAAS,EAAE,eAAe,MAAM,qBAAqB,CAAC,CAAC;IAClF,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,cAAc,CAAC,SAAS,EAAE,4BAA4B,CAAC,CAAC;IACpE,CAAC;IACD,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;QACrD,qFAAqF;QACrF,MAAM,IAAI,cAAc,CAAC,SAAS,EAAE,uDAAuD,CAAC,CAAC;IAC/F,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,IAAY,EAAE,IAAa;IACjD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACrE,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Provider-neutral site crawling port (ADR 0202 amendment 2026-08-18): one bounded call in, a
3
+ * deterministic ordered list of plain-text pages out. Every fetcher — the managed first-party
4
+ * crawler and the BYO provider adapters — satisfies this contract and its shared tests; provider
5
+ * concepts (job ids, credits, raw payloads) never cross it.
6
+ */
7
+ export interface SiteCrawlRequest {
8
+ /** Exact HTTPS origin, no path. Literal-IP hosts are rejected (they bypass the DNS SSRF guard). */
9
+ readonly origin: string;
10
+ /** Path globs a page must match to be indexed; discovery may touch only these plus the root. */
11
+ readonly include: readonly string[];
12
+ readonly maxPages: number;
13
+ readonly maxPageBytes: number;
14
+ }
15
+ export interface CrawlPage {
16
+ readonly url: string;
17
+ readonly title: string;
18
+ readonly text: string;
19
+ }
20
+ export interface SiteFetcher {
21
+ /**
22
+ * Crawl the site within the request bounds. Returns pages sorted by URL; individual page
23
+ * failures are skipped, a total provider failure throws a `KnowledgeError` with an
24
+ * attributable layer and no content.
25
+ */
26
+ fetchSite(request: SiteCrawlRequest): Promise<readonly CrawlPage[]>;
27
+ }
28
+ //# sourceMappingURL=ports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ports.d.ts","sourceRoot":"","sources":["../src/ports.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,mGAAmG;IACnG,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,gGAAgG;IAChG,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,SAAS,SAAS,EAAE,CAAC,CAAC;CACrE"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Provider-neutral site crawling port (ADR 0202 amendment 2026-08-18): one bounded call in, a
3
+ * deterministic ordered list of plain-text pages out. Every fetcher — the managed first-party
4
+ * crawler and the BYO provider adapters — satisfies this contract and its shared tests; provider
5
+ * concepts (job ids, credits, raw payloads) never cross it.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=ports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ports.js","sourceRoot":"","sources":["../src/ports.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Minimal robots.txt evaluation for the managed crawler: `*` user-agent groups only, with the
3
+ * de-facto longest-match precedence between Allow and Disallow (Allow wins an exact-length tie),
4
+ * plus global `Sitemap:` collection. Deliberately dependency-free; if richer semantics are ever
5
+ * needed, verify the dependency license first (root rules).
6
+ */
7
+ export interface Robots {
8
+ isAllowed(path: string): boolean;
9
+ readonly sitemaps: readonly string[];
10
+ }
11
+ export declare function parseRobots(text: string): Robots;
12
+ //# sourceMappingURL=robots.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"robots.d.ts","sourceRoot":"","sources":["../src/robots.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,MAAM,WAAW,MAAM;IACrB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAmDhD"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Minimal robots.txt evaluation for the managed crawler: `*` user-agent groups only, with the
3
+ * de-facto longest-match precedence between Allow and Disallow (Allow wins an exact-length tie),
4
+ * plus global `Sitemap:` collection. Deliberately dependency-free; if richer semantics are ever
5
+ * needed, verify the dependency license first (root rules).
6
+ */
7
+ export function parseRobots(text) {
8
+ const rules = [];
9
+ const sitemaps = [];
10
+ let inStarGroup = false;
11
+ let groupHasAgents = false;
12
+ for (const rawLine of text.split(/\r?\n/)) {
13
+ const line = rawLine.replace(/#.*$/, '').trim();
14
+ if (line === '')
15
+ continue;
16
+ const separator = line.indexOf(':');
17
+ if (separator === -1)
18
+ continue;
19
+ const field = line.slice(0, separator).trim().toLowerCase();
20
+ const value = line.slice(separator + 1).trim();
21
+ if (field === 'sitemap') {
22
+ if (value !== '')
23
+ sitemaps.push(value);
24
+ continue;
25
+ }
26
+ if (field === 'user-agent') {
27
+ // Consecutive user-agent lines share one group; a rule line closes the agent list, so a
28
+ // user-agent line after rules starts a fresh group.
29
+ if (groupHasAgents) {
30
+ inStarGroup = false;
31
+ groupHasAgents = false;
32
+ }
33
+ if (value === '*')
34
+ inStarGroup = true;
35
+ continue;
36
+ }
37
+ if (field === 'allow' || field === 'disallow') {
38
+ groupHasAgents = true;
39
+ if (!inStarGroup)
40
+ continue;
41
+ // A bare "Disallow:" means allow-all per the de-facto standard.
42
+ if (value === '')
43
+ continue;
44
+ rules.push({ allow: field === 'allow', path: value });
45
+ }
46
+ }
47
+ return {
48
+ sitemaps,
49
+ isAllowed(path) {
50
+ let best;
51
+ for (const rule of rules) {
52
+ if (!path.startsWith(rule.path))
53
+ continue;
54
+ if (best === undefined ||
55
+ rule.path.length > best.path.length ||
56
+ (rule.path.length === best.path.length && rule.allow)) {
57
+ best = rule;
58
+ }
59
+ }
60
+ return best?.allow ?? true;
61
+ },
62
+ };
63
+ }
64
+ //# sourceMappingURL=robots.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"robots.js","sourceRoot":"","sources":["../src/robots.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,MAAM,KAAK,GAAiB,EAAE,CAAC;IAC/B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAChD,IAAI,IAAI,KAAK,EAAE;YAAE,SAAS;QAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,SAAS,KAAK,CAAC,CAAC;YAAE,SAAS;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC5D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,IAAI,KAAK,KAAK,EAAE;gBAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvC,SAAS;QACX,CAAC;QACD,IAAI,KAAK,KAAK,YAAY,EAAE,CAAC;YAC3B,wFAAwF;YACxF,oDAAoD;YACpD,IAAI,cAAc,EAAE,CAAC;gBACnB,WAAW,GAAG,KAAK,CAAC;gBACpB,cAAc,GAAG,KAAK,CAAC;YACzB,CAAC;YACD,IAAI,KAAK,KAAK,GAAG;gBAAE,WAAW,GAAG,IAAI,CAAC;YACtC,SAAS;QACX,CAAC;QACD,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;YAC9C,cAAc,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,WAAW;gBAAE,SAAS;YAC3B,gEAAgE;YAChE,IAAI,KAAK,KAAK,EAAE;gBAAE,SAAS;YAC3B,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,KAAK,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IACD,OAAO;QACL,QAAQ;QACR,SAAS,CAAC,IAAY;YACpB,IAAI,IAA4B,CAAC;YACjC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;oBAAE,SAAS;gBAC1C,IACE,IAAI,KAAK,SAAS;oBAClB,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM;oBACnC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,EACrD,CAAC;oBACD,IAAI,GAAG,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;YACD,OAAO,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC;QAC7B,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** Bounded `<loc>` extraction from sitemap XML — locations only, nothing else is read. */
2
+ export declare function parseSitemapLocations(xml: string): readonly string[];
3
+ //# sourceMappingURL=sitemap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sitemap.d.ts","sourceRoot":"","sources":["../src/sitemap.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAC1F,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAOpE"}
@@ -0,0 +1,11 @@
1
+ /** Bounded `<loc>` extraction from sitemap XML — locations only, nothing else is read. */
2
+ export function parseSitemapLocations(xml) {
3
+ const locations = [];
4
+ for (const match of xml.matchAll(/<loc>\s*([^<]+?)\s*<\/loc>/gi)) {
5
+ const location = match[1];
6
+ if (location !== undefined && location !== '')
7
+ locations.push(location);
8
+ }
9
+ return locations;
10
+ }
11
+ //# sourceMappingURL=sitemap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sitemap.js","sourceRoot":"","sources":["../src/sitemap.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAC1F,MAAM,UAAU,qBAAqB,CAAC,GAAW;IAC/C,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,QAAQ,CAAC,8BAA8B,CAAC,EAAE,CAAC;QACjE,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,EAAE;YAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { CrawlPage, SiteCrawlRequest, SiteFetcher } from './ports.js';
2
+ export interface TavilySiteFetcherOptions {
3
+ readonly apiKey: string;
4
+ readonly fetchImpl?: typeof fetch;
5
+ }
6
+ export declare class TavilySiteFetcher implements SiteFetcher {
7
+ #private;
8
+ constructor(options: TavilySiteFetcherOptions);
9
+ fetchSite(request: SiteCrawlRequest): Promise<readonly CrawlPage[]>;
10
+ }
11
+ //# sourceMappingURL=tavily.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tavily.d.ts","sourceRoot":"","sources":["../src/tavily.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAI3E,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CACnC;AAED,qBAAa,iBAAkB,YAAW,WAAW;;gBAIvC,OAAO,EAAE,wBAAwB;IAKvC,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,SAAS,SAAS,EAAE,CAAC;CAqC1E"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * BYO Tavily fetcher (ADR 0202 amendment 2026-08-18): the customer's own Tavily account crawls
3
+ * the site through the synchronous hosted REST API. Wire shape transcribed from the official API
4
+ * reference 2026-08-18: `POST https://api.tavily.com/crawl` with Bearer auth and
5
+ * `{ url, limit, allow_external, format, extract_depth }` → `{ results: [{ url, raw_content }] }`.
6
+ * Crawled pages carry no separate title field, so the URL stands in. Errors are attributable and
7
+ * content-free — provider bodies and the API key never cross the port.
8
+ */
9
+ import { KnowledgeError } from '@noodle-borg/knowledge';
10
+ import { boundPages } from './bounds.js';
11
+ import { parseOrigin } from './origin.js';
12
+ const API = 'https://api.tavily.com/crawl';
13
+ export class TavilySiteFetcher {
14
+ #apiKey;
15
+ #fetch;
16
+ constructor(options) {
17
+ this.#apiKey = options.apiKey;
18
+ this.#fetch = options.fetchImpl ?? fetch;
19
+ }
20
+ async fetchSite(request) {
21
+ const origin = parseOrigin(request.origin);
22
+ let response;
23
+ try {
24
+ response = await this.#fetch(API, {
25
+ method: 'POST',
26
+ headers: {
27
+ authorization: `Bearer ${this.#apiKey}`,
28
+ 'content-type': 'application/json',
29
+ },
30
+ body: JSON.stringify({
31
+ url: origin.origin,
32
+ limit: request.maxPages,
33
+ allow_external: false,
34
+ format: 'text',
35
+ extract_depth: 'basic',
36
+ }),
37
+ });
38
+ }
39
+ catch {
40
+ throw new KnowledgeError('provider', 'tavily crawl request failed');
41
+ }
42
+ if (!response.ok) {
43
+ throw new KnowledgeError('provider', `tavily crawl returned HTTP ${response.status}`);
44
+ }
45
+ const body = (await response.json().catch(() => ({})));
46
+ return boundPages((body.results ?? []).map((result) => ({
47
+ url: result.url ?? '',
48
+ title: '',
49
+ text: result.raw_content ?? '',
50
+ })), request, origin);
51
+ }
52
+ }
53
+ //# sourceMappingURL=tavily.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tavily.js","sourceRoot":"","sources":["../src/tavily.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,MAAM,GAAG,GAAG,8BAA8B,CAAC;AAO3C,MAAM,OAAO,iBAAiB;IACnB,OAAO,CAAS;IAChB,MAAM,CAAe;IAE9B,YAAY,OAAiC;QAC3C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;QAC9B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,OAAyB;QACvC,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,QAAkB,CAAC;QACvB,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;gBAChC,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,aAAa,EAAE,UAAU,IAAI,CAAC,OAAO,EAAE;oBACvC,cAAc,EAAE,kBAAkB;iBACnC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,GAAG,EAAE,MAAM,CAAC,MAAM;oBAClB,KAAK,EAAE,OAAO,CAAC,QAAQ;oBACvB,cAAc,EAAE,KAAK;oBACrB,MAAM,EAAE,MAAM;oBACd,aAAa,EAAE,OAAO;iBACvB,CAAC;aACH,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,cAAc,CAAC,UAAU,EAAE,6BAA6B,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,cAAc,CAAC,UAAU,EAAE,8BAA8B,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QACxF,CAAC;QACD,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAEpD,CAAC;QACF,OAAO,UAAU,CACf,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YACpC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,EAAE;YACrB,KAAK,EAAE,EAAE;YACT,IAAI,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE;SAC/B,CAAC,CAAC,EACH,OAAO,EACP,MAAM,CACP,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,32 @@
1
+ {
2
+ "name": "@noodle-borg/knowledge-crawl",
3
+ "version": "0.0.0",
4
+ "private": true,
5
+ "license": "Apache-2.0",
6
+ "type": "module",
7
+ "engines": {
8
+ "node": ">=24"
9
+ },
10
+ "main": "./dist/index.js",
11
+ "types": "./dist/index.d.ts",
12
+ "exports": {
13
+ ".": {
14
+ "types": "./dist/index.d.ts",
15
+ "import": "./dist/index.js"
16
+ }
17
+ },
18
+ "files": [
19
+ "dist"
20
+ ],
21
+ "scripts": {
22
+ "build": "tsc -p tsconfig.json",
23
+ "typecheck": "tsc -p tsconfig.json --noEmit"
24
+ },
25
+ "dependencies": {
26
+ "@noodle-borg/connector-http": "0.0.0",
27
+ "@noodle-borg/knowledge": "0.0.0"
28
+ },
29
+ "devDependencies": {
30
+ "@types/node": "^24.13.1"
31
+ }
32
+ }