@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,71 @@
1
+ import { type SearchBudgetCeilings, type SearchBudgetStore, type SearchHit, type SearchRequest } from '@noodle-borg/knowledge';
2
+ import type { SiteFetcher } from '@noodle-borg/knowledge-crawl';
3
+ import type { KnowledgeDeployHooks } from './publication.js';
4
+ import type { KnowledgeTenantRef } from './routes.js';
5
+ /** The reserved revision namespace for a component's crawled site corpus. */
6
+ export declare function siteCorpusName(componentName: string): string;
7
+ export type CrawlStatus = 'not_started' | 'in_progress' | 'completed' | 'failed';
8
+ export interface SiteCrawlState {
9
+ readonly status: CrawlStatus;
10
+ readonly lastCompletedAt?: number;
11
+ readonly lastError?: string;
12
+ readonly pagesIndexed: number;
13
+ readonly nextRefreshAt?: number;
14
+ }
15
+ export interface CrawlStateStore {
16
+ get(tenant: KnowledgeTenantRef, componentName: string): Promise<SiteCrawlState | undefined>;
17
+ put(tenant: KnowledgeTenantRef, componentName: string, state: SiteCrawlState): Promise<void>;
18
+ }
19
+ export declare class InMemoryCrawlStateStore implements CrawlStateStore {
20
+ private readonly states;
21
+ get(tenant: KnowledgeTenantRef, componentName: string): Promise<SiteCrawlState | undefined>;
22
+ put(tenant: KnowledgeTenantRef, componentName: string, state: SiteCrawlState): Promise<void>;
23
+ }
24
+ /** A provider config reference by name (variable()/secret() doctrine) — never a value. */
25
+ export interface ProviderConfigRef {
26
+ readonly kind: 'variable' | 'secret';
27
+ readonly name: string;
28
+ }
29
+ /** The component facts a crawl needs; a structural subset of the compiled component. */
30
+ export interface CrawlableComponent {
31
+ readonly name: string;
32
+ readonly sites: readonly {
33
+ readonly origin: string;
34
+ readonly include: readonly string[];
35
+ readonly refreshMinutes?: number | undefined;
36
+ }[];
37
+ readonly crawler?: {
38
+ readonly provider: 'firecrawl' | 'tavily';
39
+ readonly config: {
40
+ readonly apiKey: ProviderConfigRef;
41
+ };
42
+ } | undefined;
43
+ readonly index?: {
44
+ readonly provider: 'algolia' | 'meilisearch';
45
+ readonly config: Readonly<Record<string, ProviderConfigRef>>;
46
+ } | undefined;
47
+ }
48
+ export interface CrawlDeps {
49
+ readonly hooks: KnowledgeDeployHooks;
50
+ readonly crawlState: CrawlStateStore;
51
+ readonly fetcherFor: (tenant: KnowledgeTenantRef, component: CrawlableComponent) => SiteFetcher;
52
+ readonly budget?: {
53
+ readonly store: SearchBudgetStore;
54
+ readonly ceilings: (tenant: KnowledgeTenantRef) => Promise<SearchBudgetCeilings>;
55
+ };
56
+ readonly now?: () => number;
57
+ }
58
+ /**
59
+ * Crawl one component's sites and publish the site revision. Never throws: the outcome —
60
+ * including budget refusal and provider failure — lands in the crawl state, and the previous
61
+ * corpus keeps serving on any failure.
62
+ */
63
+ export declare function runComponentCrawl(deps: CrawlDeps, tenant: KnowledgeTenantRef, component: CrawlableComponent): Promise<SiteCrawlState>;
64
+ /** Crawl every served component whose refresh is due (or that has never crawled). */
65
+ export declare function runDueCrawls(deps: CrawlDeps, servedComponents: () => Promise<readonly {
66
+ tenant: KnowledgeTenantRef;
67
+ component: CrawlableComponent;
68
+ }[]>, at: number): Promise<void>;
69
+ /** Serve the crawled corpus: the bundled index over the site revision, hits remapped to `site`. */
70
+ export declare function searchSiteCorpus(hooks: KnowledgeDeployHooks, tenant: KnowledgeTenantRef, componentName: string, request: SearchRequest): Promise<readonly SearchHit[]>;
71
+ //# sourceMappingURL=crawl-lifecycle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crawl-lifecycle.d.ts","sourceRoot":"","sources":["../src/crawl-lifecycle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,138 @@
1
+ /**
2
+ * Site crawl lifecycle (ADR 0202 amendment 2026-08-18): a crawl fetches the component's declared
3
+ * sites through the selected `SiteFetcher`, meters the page count against the org/app crawl
4
+ * budget, and publishes the pages as a **site revision** — the reserved `<name>#site` component
5
+ * namespace in the same revision store and bundled index that serve documents. Site revisions
6
+ * refresh latest-wins and are never deployment-pinned ("live site never rolls back" survives as
7
+ * "rollback keeps serving the latest crawl"); a failed crawl keeps the last good corpus serving
8
+ * and records an attributable, content-free failure in the crawl state.
9
+ */
10
+ import { createHash } from 'node:crypto';
11
+ import { KnowledgeError, } from '@noodle-borg/knowledge';
12
+ import { DEFAULT_SITE_REFRESH_MINUTES, MAX_CRAWL_PAGE_BYTES, MAX_CRAWL_PAGES_PER_SITE, } from '@noodle-borg/knowledge/limits';
13
+ /** The reserved revision namespace for a component's crawled site corpus. */
14
+ export function siteCorpusName(componentName) {
15
+ return `${componentName}#site`;
16
+ }
17
+ export class InMemoryCrawlStateStore {
18
+ states = new Map();
19
+ async get(tenant, componentName) {
20
+ return this.states.get(stateKey(tenant, componentName));
21
+ }
22
+ async put(tenant, componentName, state) {
23
+ this.states.set(stateKey(tenant, componentName), state);
24
+ }
25
+ }
26
+ function stateKey(tenant, componentName) {
27
+ return `${tenant.org}/${tenant.app}/${tenant.env}#${componentName}`;
28
+ }
29
+ /**
30
+ * Crawl one component's sites and publish the site revision. Never throws: the outcome —
31
+ * including budget refusal and provider failure — lands in the crawl state, and the previous
32
+ * corpus keeps serving on any failure.
33
+ */
34
+ export async function runComponentCrawl(deps, tenant, component) {
35
+ const now = deps.now ?? Date.now;
36
+ if (component.sites.length === 0) {
37
+ const state = { status: 'not_started', pagesIndexed: 0 };
38
+ await deps.crawlState.put(tenant, component.name, state);
39
+ return state;
40
+ }
41
+ const previous = await deps.crawlState.get(tenant, component.name);
42
+ const refreshMinutes = Math.min(...component.sites.map((site) => site.refreshMinutes ?? DEFAULT_SITE_REFRESH_MINUTES));
43
+ await deps.crawlState.put(tenant, component.name, {
44
+ status: 'in_progress',
45
+ pagesIndexed: previous?.pagesIndexed ?? 0,
46
+ ...(previous?.lastCompletedAt === undefined
47
+ ? {}
48
+ : { lastCompletedAt: previous.lastCompletedAt }),
49
+ });
50
+ const fail = async (lastError) => {
51
+ const state = {
52
+ status: 'failed',
53
+ lastError,
54
+ pagesIndexed: previous?.pagesIndexed ?? 0,
55
+ ...(previous?.lastCompletedAt === undefined
56
+ ? {}
57
+ : { lastCompletedAt: previous.lastCompletedAt }),
58
+ nextRefreshAt: now() + refreshMinutes * 60 * 1000,
59
+ };
60
+ await deps.crawlState.put(tenant, component.name, state);
61
+ return state;
62
+ };
63
+ const documents = [];
64
+ try {
65
+ const fetcher = deps.fetcherFor(tenant, component);
66
+ for (const site of component.sites) {
67
+ const pages = await fetcher.fetchSite({
68
+ origin: site.origin,
69
+ include: site.include,
70
+ maxPages: MAX_CRAWL_PAGES_PER_SITE,
71
+ maxPageBytes: MAX_CRAWL_PAGE_BYTES,
72
+ });
73
+ for (const page of pages) {
74
+ documents.push({
75
+ descriptor: {
76
+ path: page.url,
77
+ title: page.title,
78
+ sha256: createHash('sha256').update(page.text).digest('hex'),
79
+ bytes: Buffer.byteLength(page.text, 'utf8'),
80
+ sourceUrl: page.url,
81
+ },
82
+ text: page.text,
83
+ });
84
+ }
85
+ }
86
+ }
87
+ catch (error) {
88
+ // Request-layer messages are our own (content-free by construction — e.g. the exact
89
+ // `noodle secrets set` fix for an unset BYO key) and stay visible; provider messages may
90
+ // carry URLs, bodies, or credentials and reduce to the attributable layer alone.
91
+ if (error instanceof KnowledgeError && error.layer === 'request') {
92
+ return fail(error.message);
93
+ }
94
+ const layer = error instanceof KnowledgeError ? error.layer : 'provider';
95
+ return fail(`crawl failed at the ${layer} layer`);
96
+ }
97
+ if (deps.budget !== undefined && documents.length > 0) {
98
+ const ceilings = await deps.budget.ceilings(tenant);
99
+ const decision = await deps.budget.store.consume({ org: tenant.org, app: tenant.app }, documents.length, ceilings);
100
+ if (!decision.granted)
101
+ return fail('crawl page budget exhausted for this month');
102
+ }
103
+ try {
104
+ await deps.hooks.publishSiteCorpus({ org: tenant.org, app: tenant.app, env: tenant.env }, siteCorpusName(component.name), documents);
105
+ }
106
+ catch {
107
+ return fail('site corpus publication failed at the store layer');
108
+ }
109
+ const state = {
110
+ status: 'completed',
111
+ lastCompletedAt: now(),
112
+ pagesIndexed: documents.length,
113
+ nextRefreshAt: now() + refreshMinutes * 60 * 1000,
114
+ };
115
+ await deps.crawlState.put(tenant, component.name, state);
116
+ return state;
117
+ }
118
+ /** Crawl every served component whose refresh is due (or that has never crawled). */
119
+ export async function runDueCrawls(deps, servedComponents, at) {
120
+ for (const { tenant, component } of await servedComponents()) {
121
+ if (component.sites.length === 0)
122
+ continue;
123
+ const state = await deps.crawlState.get(tenant, component.name);
124
+ if (state?.status === 'in_progress')
125
+ continue;
126
+ if (state?.nextRefreshAt !== undefined && state.nextRefreshAt > at)
127
+ continue;
128
+ if (state?.status === 'completed' && state.nextRefreshAt === undefined)
129
+ continue;
130
+ await runComponentCrawl({ ...deps, now: () => at }, tenant, component);
131
+ }
132
+ }
133
+ /** Serve the crawled corpus: the bundled index over the site revision, hits remapped to `site`. */
134
+ export async function searchSiteCorpus(hooks, tenant, componentName, request) {
135
+ const hits = await hooks.searchDocuments({ org: tenant.org, app: tenant.app, env: tenant.env }, siteCorpusName(componentName), request);
136
+ return hits.map((hit) => ({ ...hit, sourceKind: 'site' }));
137
+ }
138
+ //# sourceMappingURL=crawl-lifecycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crawl-lifecycle.js","sourceRoot":"","sources":["../src/crawl-lifecycle.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../src/dispatch.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAGjE,OAAO,EAGL,KAAK,kBAAkB,EACxB,MAAM,aAAa,CAAC;AAGrB,MAAM,WAAW,qBAAqB;IACpC,uFAAuF;IACvF,QAAQ,CAAC,SAAS,EAAE,CAClB,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,GAAG,EAAE,MAAM,KACR,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,kBAAkB,CAAC;IACvC,QAAQ,CAAC,oBAAoB,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,IAAI,CAAC;IAC7D,mFAAmF;IACnF,QAAQ,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC;CAC/E;AAED,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CA2BT"}
1
+ {"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../src/dispatch.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAGjE,OAAO,EAGL,KAAK,kBAAkB,EACxB,MAAM,aAAa,CAAC;AAOrB,MAAM,WAAW,qBAAqB;IACpC,uFAAuF;IACvF,QAAQ,CAAC,SAAS,EAAE,CAClB,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,GAAG,EAAE,MAAM,KACR,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,kBAAkB,CAAC;IACvC,QAAQ,CAAC,oBAAoB,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,IAAI,CAAC;IAC7D,mFAAmF;IACnF,QAAQ,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC;CAC/E;AAED,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAqCT"}
@@ -1,16 +1,21 @@
1
1
  import { sendJson } from './http.js';
2
2
  import { parseKnowledgePath } from './paths.js';
3
3
  import { handleKnowledgeDocumentUpload, handleKnowledgePreflight, } from './routes.js';
4
- import { handleKnowledgeList, handleKnowledgeStatus } from './status-routes.js';
4
+ import { handleKnowledgeList, handleKnowledgeRefresh, handleKnowledgeStatus, } from './status-routes.js';
5
5
  export function dispatchKnowledgeRequest(req, res, url, deps) {
6
6
  const ref = parseKnowledgePath(url.pathname);
7
7
  if (ref === undefined)
8
8
  return false;
9
- const method = ref.kind === 'preflight' ? 'POST' : ref.kind === 'document' ? 'PUT' : 'GET';
9
+ const method = ref.kind === 'preflight' || ref.kind === 'refresh'
10
+ ? 'POST'
11
+ : ref.kind === 'document'
12
+ ? 'PUT'
13
+ : 'GET';
10
14
  if (method !== req.method)
11
15
  return false;
12
16
  const statusDeps = deps.routeDeps.status;
13
- if ((ref.kind === 'list' || ref.kind === 'status') && statusDeps === undefined) {
17
+ if ((ref.kind === 'list' || ref.kind === 'status' || ref.kind === 'refresh') &&
18
+ statusDeps === undefined) {
14
19
  return false;
15
20
  }
16
21
  deps.applySecurityHeaders(res);
@@ -32,6 +37,9 @@ export function dispatchKnowledgeRequest(req, res, url, deps) {
32
37
  else if (statusDeps !== undefined && ref.kind === 'status') {
33
38
  await handleKnowledgeStatus(req, res, ref.tenant, ref.component, statusDeps);
34
39
  }
40
+ else if (statusDeps !== undefined && ref.kind === 'refresh') {
41
+ await handleKnowledgeRefresh(req, res, ref.tenant, ref.component, statusDeps);
42
+ }
35
43
  })().catch(() => {
36
44
  if (!res.headersSent)
37
45
  sendJson(res, 500, { error: 'internal error' });
@@ -1 +1 @@
1
- {"version":3,"file":"dispatch.js","sourceRoot":"","sources":["../src/dispatch.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EACL,6BAA6B,EAC7B,wBAAwB,GAEzB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAehF,MAAM,UAAU,wBAAwB,CACtC,GAAoB,EACpB,GAAmB,EACnB,GAAQ,EACR,IAA2B;IAE3B,MAAM,GAAG,GAAG,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC7C,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACpC,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;IAC3F,IAAI,MAAM,KAAK,GAAG,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IACxC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;IACzC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC/E,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7C,CAAC,KAAK,IAAI,EAAE;QACV,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChE,IAAI,QAAQ,KAAK,KAAK;YAAE,OAAO;QAC/B,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC7B,MAAM,wBAAwB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACvE,CAAC;aAAM,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YACnC,MAAM,6BAA6B,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACxF,CAAC;aAAM,IAAI,UAAU,KAAK,SAAS,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC3D,MAAM,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAC9D,CAAC;aAAM,IAAI,UAAU,KAAK,SAAS,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7D,MAAM,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,GAAG,CAAC,WAAW;YAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IACH,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"dispatch.js","sourceRoot":"","sources":["../src/dispatch.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,12 @@
1
1
  /**
2
- * Runtime `search_<name>` execution (ADR 0202 as amended): feature gate → bundled BM25 for
3
- * documents → budget-gated managed site search → deterministic RRF fusion with the exact
4
- * origin/path policy postfilter. Budget exhaustion on a mixed component is a typed error —
5
- * blocked, never silently degraded to document-only. Document-only components never touch
6
- * the budget (file search is bundled and costs nothing).
2
+ * Runtime `search_<name>` execution (ADR 0202 amendment 2026-08-18): feature gate → bundled
3
+ * BM25 for documents → bundled BM25 over the crawled site corpus → deterministic RRF fusion with
4
+ * the exact origin/path policy postfilter. Every query is in-process and free; the crawl-page
5
+ * budget is enforced at crawl time (`crawl-lifecycle.ts`), not here. Before a component's first
6
+ * completed crawl the site corpus is honestly empty, with the crawl state as the operator
7
+ * signal.
7
8
  */
8
- import { type SearchBudgetCeilings, type SearchBudgetStore, type SearchHit, type SiteSearch } from '@noodle-borg/knowledge';
9
+ import { type SearchHit } from '@noodle-borg/knowledge';
9
10
  import type { KnowledgeDeployHooks } from './publication.js';
10
11
  import { type KnowledgeTenantRef } from './routes.js';
11
12
  /** The component facts the executor needs; a structural subset of the compiled component. */
@@ -28,13 +29,6 @@ export interface KnowledgeSearchExecutor {
28
29
  export interface KnowledgeSearchExecutorDeps {
29
30
  readonly hooks: KnowledgeDeployHooks;
30
31
  readonly knowledgeEnabled: (tenant: KnowledgeTenantRef) => Promise<boolean>;
31
- /** Site-search spend control; absent means site search is unavailable (documents still serve). */
32
- readonly budget?: {
33
- readonly store: SearchBudgetStore;
34
- readonly ceilings: (tenant: KnowledgeTenantRef) => Promise<SearchBudgetCeilings>;
35
- };
36
- /** Managed live-site adapter bound per tenant; absent until the managed project is configured. */
37
- readonly siteSearchFor?: (tenant: KnowledgeTenantRef) => SiteSearch;
38
32
  }
39
33
  export declare function createKnowledgeSearchExecutor(deps: KnowledgeSearchExecutorDeps): KnowledgeSearchExecutor;
40
34
  //# sourceMappingURL=executor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAQL,KAAK,oBAAoB,EAEzB,KAAK,iBAAiB,EACtB,KAAK,SAAS,EACd,KAAK,UAAU,EAChB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,KAAK,kBAAkB,EAA0B,MAAM,aAAa,CAAC;AAE9E,6FAA6F;AAC7F,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,SAAS;QAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,EAAE,CAAC;CAC7F;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACtD,4FAA4F;IAC5F,MAAM,CACJ,MAAM,EAAE,kBAAkB,EAC1B,SAAS,EAAE,wBAAwB,EACnC,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,SAAS,SAAS,EAAE,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAC;IACrC,QAAQ,CAAC,gBAAgB,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5E,kGAAkG;IAClG,QAAQ,CAAC,MAAM,CAAC,EAAE;QAChB,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC;QAClC,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,OAAO,CAAC,oBAAoB,CAAC,CAAC;KAClF,CAAC;IACF,kGAAkG;IAClG,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,UAAU,CAAC;CACrE;AAED,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,2BAA2B,GAChC,uBAAuB,CA0EzB"}
1
+ {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAQL,KAAK,SAAS,EACf,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,KAAK,kBAAkB,EAA0B,MAAM,aAAa,CAAC;AAE9E,6FAA6F;AAC7F,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,SAAS;QAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,EAAE,CAAC;CAC7F;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACtD,4FAA4F;IAC5F,MAAM,CACJ,MAAM,EAAE,kBAAkB,EAC1B,SAAS,EAAE,wBAAwB,EACnC,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,SAAS,SAAS,EAAE,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAC;IACrC,QAAQ,CAAC,gBAAgB,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC7E;AAED,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,2BAA2B,GAChC,uBAAuB,CAgDzB"}
@@ -1,11 +1,13 @@
1
1
  /**
2
- * Runtime `search_<name>` execution (ADR 0202 as amended): feature gate → bundled BM25 for
3
- * documents → budget-gated managed site search → deterministic RRF fusion with the exact
4
- * origin/path policy postfilter. Budget exhaustion on a mixed component is a typed error —
5
- * blocked, never silently degraded to document-only. Document-only components never touch
6
- * the budget (file search is bundled and costs nothing).
2
+ * Runtime `search_<name>` execution (ADR 0202 amendment 2026-08-18): feature gate → bundled
3
+ * BM25 for documents → bundled BM25 over the crawled site corpus → deterministic RRF fusion with
4
+ * the exact origin/path policy postfilter. Every query is in-process and free; the crawl-page
5
+ * budget is enforced at crawl time (`crawl-lifecycle.ts`), not here. Before a component's first
6
+ * completed crawl the site corpus is honestly empty, with the crawl state as the operator
7
+ * signal.
7
8
  */
8
- import { DEFAULT_RESULT_LIMIT, fuseHits, KnowledgeError, MAX_QUERY_CHARS, MAX_RESULT_LIMIT, MIN_QUERY_CHARS, MIN_RESULT_LIMIT, SearchBudgetExhaustedError, } from '@noodle-borg/knowledge';
9
+ import { DEFAULT_RESULT_LIMIT, fuseHits, KnowledgeError, MAX_QUERY_CHARS, MAX_RESULT_LIMIT, MIN_QUERY_CHARS, MIN_RESULT_LIMIT, } from '@noodle-borg/knowledge';
10
+ import { searchSiteCorpus } from './crawl-lifecycle.js';
9
11
  import { knowledgeEnableCommand } from './routes.js';
10
12
  export function createKnowledgeSearchExecutor(deps) {
11
13
  return {
@@ -25,27 +27,14 @@ export function createKnowledgeSearchExecutor(deps) {
25
27
  });
26
28
  let sites = [];
27
29
  if (component.sites.length > 0) {
28
- // Blocked, never degraded the same contract as budget exhaustion. A sites-declared
29
- // component with no managed adapter or no budget metering is a wiring defect; answering
30
- // from documents alone would silently misrepresent the declared surface.
31
- const siteSearch = deps.siteSearchFor?.(tenant);
32
- if (siteSearch === undefined) {
33
- throw new KnowledgeError('provider', 'live-site search is unavailable: the managed knowledge project is not configured for this service; provision it or remove site() from the component');
34
- }
35
- if (deps.budget === undefined) {
36
- throw new KnowledgeError('provider', 'live-site search refused: no search budget store is configured to meter provider calls');
37
- }
38
- const ceilings = await deps.budget.ceilings(tenant);
39
- // One unit per provider request: the loop below makes one search per declared site.
40
- const decision = await deps.budget.store.consume({ org: tenant.org, app: tenant.app }, component.sites.length, ceilings);
41
- if (!decision.granted)
42
- throw new SearchBudgetExhaustedError(decision.state);
43
- const collected = [];
44
- for (const policy of component.sites) {
45
- const hits = await siteSearch.search({ origin: policy.origin, include: [...policy.include] }, { audience: 'public', revision: 'live' }, { query: request.query, limit });
46
- collected.push(...hits);
47
- }
48
- sites = collected;
30
+ // The crawled corpus serves in-process from the site revision (ADR 0202 amendment
31
+ // 2026-08-18): no provider call, no per-query spend crawl time owns the metering.
32
+ // Before the first completed crawl the corpus is legitimately empty; the crawl state in
33
+ // `knowledge status` is the honest signal, not a refusal.
34
+ sites = await searchSiteCorpus(deps.hooks, tenant, component.name, {
35
+ query: request.query,
36
+ limit,
37
+ });
49
38
  }
50
39
  return fuseHits(documents, sites, {
51
40
  limit,
@@ -1 +1 @@
1
- {"version":3,"file":"executor.js","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EACL,oBAAoB,EACpB,QAAQ,EACR,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAEhB,0BAA0B,GAI3B,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAA2B,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAmC9E,MAAM,UAAU,6BAA6B,CAC3C,IAAiC;IAEjC,OAAO;QACL,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;QAElD,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO;YACrC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;gBAC3C,MAAM,IAAI,cAAc,CACtB,SAAS,EACT,uDAAuD,sBAAsB,CAAC,MAAM,CAAC,EAAE,CACxF,CAAC;YACJ,CAAC;YACD,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,eAAe,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,eAAe,EAAE,CAAC;gBACrF,MAAM,IAAI,cAAc,CACtB,SAAS,EACT,yBAAyB,eAAe,QAAQ,eAAe,aAAa,CAC7E,CAAC;YACJ,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CACpB,gBAAgB,EAChB,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI,oBAAoB,CAAC,CAAC,CAC9E,CAAC;YACF,MAAM,KAAK,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;YACpE,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE;gBACxE,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,KAAK;aACN,CAAC,CAAC;YAEH,IAAI,KAAK,GAAyB,EAAE,CAAC;YACrC,IAAI,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC/B,qFAAqF;gBACrF,wFAAwF;gBACxF,yEAAyE;gBACzE,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC,CAAC;gBAChD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;oBAC7B,MAAM,IAAI,cAAc,CACtB,UAAU,EACV,qJAAqJ,CACtJ,CAAC;gBACJ,CAAC;gBACD,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oBAC9B,MAAM,IAAI,cAAc,CACtB,UAAU,EACV,wFAAwF,CACzF,CAAC;gBACJ,CAAC;gBACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACpD,oFAAoF;gBACpF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAC9C,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,EACpC,SAAS,CAAC,KAAK,CAAC,MAAM,EACtB,QAAQ,CACT,CAAC;gBACF,IAAI,CAAC,QAAQ,CAAC,OAAO;oBAAE,MAAM,IAAI,0BAA0B,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAC5E,MAAM,SAAS,GAAgB,EAAE,CAAC;gBAClC,KAAK,MAAM,MAAM,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;oBACrC,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,MAAM,CAClC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,EACvD,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,EACxC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,CAChC,CAAC;oBACF,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;gBAC1B,CAAC;gBACD,KAAK,GAAG,SAAS,CAAC;YACpB,CAAC;YAED,OAAO,QAAQ,CAAC,SAAS,EAAE,KAAK,EAAE;gBAChC,KAAK;gBACL,YAAY,EAAE,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;oBAC7C,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC;iBAC7B,CAAC,CAAC;aACJ,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EACL,oBAAoB,EACpB,QAAQ,EACR,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,gBAAgB,GAEjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAA2B,sBAAsB,EAAE,MAAM,aAAa,CAAC;AA4B9E,MAAM,UAAU,6BAA6B,CAC3C,IAAiC;IAEjC,OAAO;QACL,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;QAElD,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO;YACrC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;gBAC3C,MAAM,IAAI,cAAc,CACtB,SAAS,EACT,uDAAuD,sBAAsB,CAAC,MAAM,CAAC,EAAE,CACxF,CAAC;YACJ,CAAC;YACD,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,eAAe,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,eAAe,EAAE,CAAC;gBACrF,MAAM,IAAI,cAAc,CACtB,SAAS,EACT,yBAAyB,eAAe,QAAQ,eAAe,aAAa,CAC7E,CAAC;YACJ,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CACpB,gBAAgB,EAChB,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI,oBAAoB,CAAC,CAAC,CAC9E,CAAC;YACF,MAAM,KAAK,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;YACpE,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE;gBACxE,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,KAAK;aACN,CAAC,CAAC;YAEH,IAAI,KAAK,GAAyB,EAAE,CAAC;YACrC,IAAI,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC/B,kFAAkF;gBAClF,oFAAoF;gBACpF,wFAAwF;gBACxF,0DAA0D;gBAC1D,KAAK,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,IAAI,EAAE;oBACjE,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,KAAK;iBACN,CAAC,CAAC;YACL,CAAC;YAED,OAAO,QAAQ,CAAC,SAAS,EAAE,KAAK,EAAE;gBAChC,KAAK;gBACL,YAAY,EAAE,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;oBAC7C,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC;iBAC7B,CAAC,CAAC;aACJ,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -3,12 +3,12 @@
3
3
  * behind its thin dispatch; the CLI never imports this package.
4
4
  */
5
5
  export { type StringSecretBox, secretBoxDocumentCodec } from './codec.js';
6
+ export { type CrawlableComponent, type CrawlStateStore, type CrawlStatus, InMemoryCrawlStateStore, runComponentCrawl, runDueCrawls, type SiteCrawlState, siteCorpusName, } from './crawl-lifecycle.js';
6
7
  export { dispatchKnowledgeRequest, type KnowledgeDispatchDeps } from './dispatch.js';
7
8
  export { createKnowledgeSearchExecutor, type KnowledgeSearchComponent, type KnowledgeSearchExecutor, type KnowledgeSearchExecutorDeps, type KnowledgeSearchRequest, } from './executor.js';
8
- export { impersonatedTokenProvider, metadataServiceTokenProvider, } from './google-identity.js';
9
9
  export { readBody, sendJson } from './http.js';
10
- export { type ManagedGoogleKnowledge, managedGoogleFromEnv, managedSiteProvisioned, managedSiteSearchFor, } from './managed-google.js';
11
10
  export { type KnowledgeRouteRef, parseKnowledgePath } from './paths.js';
11
+ export { PostgresCrawlStateStore } from './postgres-crawl-state.js';
12
12
  export { createKnowledgeDeployHooks, type KnowledgeDeployFailure, type KnowledgeDeployHooks, KnowledgePublicationError, type KnowledgePublicationPlan, withKnowledgePublication, } from './publication.js';
13
13
  export { handleKnowledgeDocumentUpload, handleKnowledgePreflight, type KnowledgeRouteDeps, type KnowledgeTenantRef, knowledgeEnableCommand, knowledgeTenantKey, } from './routes.js';
14
14
  export { type BoundKnowledgeSearchPort, bindKnowledgeSearchPort, type KnowledgeSearchPortFactory, knowledgeSearchPortFactory, } from './search-port.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,KAAK,eAAe,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,KAAK,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACrF,OAAO,EACL,6BAA6B,EAC7B,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC5B,KAAK,2BAA2B,EAChC,KAAK,sBAAsB,GAC5B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,yBAAyB,EACzB,4BAA4B,GAC7B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EACL,KAAK,sBAAsB,EAC3B,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACxE,OAAO,EACL,0BAA0B,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EACzB,yBAAyB,EACzB,KAAK,wBAAwB,EAC7B,wBAAwB,GACzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,6BAA6B,EAC7B,wBAAwB,EACxB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,KAAK,wBAAwB,EAC7B,uBAAuB,EACvB,KAAK,0BAA0B,EAC/B,0BAA0B,GAC3B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,6BAA6B,EAC7B,sBAAsB,EACtB,KAAK,sBAAsB,EAC3B,aAAa,GACd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,6BAA6B,EAC7B,KAAK,qBAAqB,EAC1B,6BAA6B,EAC7B,cAAc,GACf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,KAAK,mBAAmB,GACzB,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,KAAK,eAAe,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAC1E,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,uBAAuB,EACvB,iBAAiB,EACjB,YAAY,EACZ,KAAK,cAAc,EACnB,cAAc,GACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,wBAAwB,EAAE,KAAK,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACrF,OAAO,EACL,6BAA6B,EAC7B,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC5B,KAAK,2BAA2B,EAChC,KAAK,sBAAsB,GAC5B,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,KAAK,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EACL,0BAA0B,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EACzB,yBAAyB,EACzB,KAAK,wBAAwB,EAC7B,wBAAwB,GACzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,6BAA6B,EAC7B,wBAAwB,EACxB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,KAAK,wBAAwB,EAC7B,uBAAuB,EACvB,KAAK,0BAA0B,EAC/B,0BAA0B,GAC3B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,6BAA6B,EAC7B,sBAAsB,EACtB,KAAK,sBAAsB,EAC3B,aAAa,GACd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,6BAA6B,EAC7B,KAAK,qBAAqB,EAC1B,6BAA6B,EAC7B,cAAc,GACf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,KAAK,mBAAmB,GACzB,MAAM,oBAAoB,CAAC"}
@@ -3,12 +3,12 @@
3
3
  * behind its thin dispatch; the CLI never imports this package.
4
4
  */
5
5
  export { secretBoxDocumentCodec } from './codec.js';
6
+ export { InMemoryCrawlStateStore, runComponentCrawl, runDueCrawls, siteCorpusName, } from './crawl-lifecycle.js';
6
7
  export { dispatchKnowledgeRequest } from './dispatch.js';
7
8
  export { createKnowledgeSearchExecutor, } from './executor.js';
8
- export { impersonatedTokenProvider, metadataServiceTokenProvider, } from './google-identity.js';
9
9
  export { readBody, sendJson } from './http.js';
10
- export { managedGoogleFromEnv, managedSiteProvisioned, managedSiteSearchFor, } from './managed-google.js';
11
10
  export { parseKnowledgePath } from './paths.js';
11
+ export { PostgresCrawlStateStore } from './postgres-crawl-state.js';
12
12
  export { createKnowledgeDeployHooks, KnowledgePublicationError, withKnowledgePublication, } from './publication.js';
13
13
  export { handleKnowledgeDocumentUpload, handleKnowledgePreflight, knowledgeEnableCommand, knowledgeTenantKey, } from './routes.js';
14
14
  export { bindKnowledgeSearchPort, knowledgeSearchPortFactory, } from './search-port.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAwB,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAA8B,MAAM,eAAe,CAAC;AACrF,OAAO,EACL,6BAA6B,GAK9B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,yBAAyB,EACzB,4BAA4B,GAC7B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAEL,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAA0B,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACxE,OAAO,EACL,0BAA0B,EAG1B,yBAAyB,EAEzB,wBAAwB,GACzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,6BAA6B,EAC7B,wBAAwB,EAGxB,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EAEL,uBAAuB,EAEvB,0BAA0B,GAC3B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,6BAA6B,EAC7B,sBAAsB,EAEtB,aAAa,GACd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,6BAA6B,EAE7B,6BAA6B,EAC7B,cAAc,GACf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,mBAAmB,EACnB,qBAAqB,GAEtB,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAwB,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAC1E,OAAO,EAIL,uBAAuB,EACvB,iBAAiB,EACjB,YAAY,EAEZ,cAAc,GACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,wBAAwB,EAA8B,MAAM,eAAe,CAAC;AACrF,OAAO,EACL,6BAA6B,GAK9B,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAA0B,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EACL,0BAA0B,EAG1B,yBAAyB,EAEzB,wBAAwB,GACzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,6BAA6B,EAC7B,wBAAwB,EAGxB,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EAEL,uBAAuB,EAEvB,0BAA0B,GAC3B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,6BAA6B,EAC7B,sBAAsB,EAEtB,aAAa,GACd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,6BAA6B,EAE7B,6BAA6B,EAC7B,cAAc,GACf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,mBAAmB,EACnB,qBAAqB,GAEtB,MAAM,oBAAoB,CAAC"}
@@ -16,6 +16,10 @@ export type KnowledgeRouteRef = {
16
16
  readonly kind: 'status';
17
17
  readonly tenant: KnowledgeTenantRef;
18
18
  readonly component: string;
19
+ } | {
20
+ readonly kind: 'refresh';
21
+ readonly tenant: KnowledgeTenantRef;
22
+ readonly component: string;
19
23
  };
20
24
  export declare function parseKnowledgePath(pathname: string): KnowledgeRouteRef | undefined;
21
25
  //# sourceMappingURL=paths.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEtD,MAAM,MAAM,iBAAiB,GACzB;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAA;CAAE,GACnE;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC3F;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAA;CAAE,GAC9D;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAQjG,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAkClF"}
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEtD,MAAM,MAAM,iBAAiB,GACzB;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAA;CAAE,GACnE;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC3F;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAA;CAAE,GAC9D;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC5F;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AASlG,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CA6ClF"}
@@ -2,6 +2,7 @@ const PREFLIGHT = /^\/v1\/orgs\/([^/]+)\/apps\/([^/]+)\/envs\/([^/]+)\/knowledge
2
2
  const DOCUMENT = /^\/v1\/orgs\/([^/]+)\/apps\/([^/]+)\/envs\/([^/]+)\/knowledge\/documents\/([^/]+)$/;
3
3
  const LIST = /^\/v1\/orgs\/([^/]+)\/apps\/([^/]+)\/envs\/([^/]+)\/knowledge$/;
4
4
  const STATUS = /^\/v1\/orgs\/([^/]+)\/apps\/([^/]+)\/envs\/([^/]+)\/knowledge\/([^/]+)\/status$/;
5
+ const REFRESH = /^\/v1\/orgs\/([^/]+)\/apps\/([^/]+)\/envs\/([^/]+)\/knowledge\/([^/]+)\/refresh$/;
5
6
  export function parseKnowledgePath(pathname) {
6
7
  const preflight = PREFLIGHT.exec(pathname);
7
8
  if (preflight !== null) {
@@ -18,6 +19,11 @@ export function parseKnowledgePath(pathname) {
18
19
  const [, org, app, env, component] = status;
19
20
  return { kind: 'status', tenant: { org, app, env }, component };
20
21
  }
22
+ const refresh = REFRESH.exec(pathname);
23
+ if (refresh !== null) {
24
+ const [, org, app, env, component] = refresh;
25
+ return { kind: 'refresh', tenant: { org, app, env }, component };
26
+ }
21
27
  const document = DOCUMENT.exec(pathname);
22
28
  if (document !== null) {
23
29
  const [, org, app, env, sha256] = document;
@@ -1 +1 @@
1
- {"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAWA,MAAM,SAAS,GAAG,2EAA2E,CAAC;AAC9F,MAAM,QAAQ,GACZ,oFAAoF,CAAC;AACvF,MAAM,IAAI,GAAG,gEAAgE,CAAC;AAC9E,MAAM,MAAM,GAAG,iFAAiF,CAAC;AAEjG,MAAM,UAAU,kBAAkB,CAAC,QAAgB;IACjD,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3C,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QACvB,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,SAAwD,CAAC;QACnF,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;IAC1D,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACjC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,IAAmD,CAAC;QAC9E,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;IACrD,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrC,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,GAAG,MAMpC,CAAC;QACF,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,CAAC;IAClE,CAAC;IACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzC,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,QAMjC,CAAC;QACF,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC;IACjE,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAYA,MAAM,SAAS,GAAG,2EAA2E,CAAC;AAC9F,MAAM,QAAQ,GACZ,oFAAoF,CAAC;AACvF,MAAM,IAAI,GAAG,gEAAgE,CAAC;AAC9E,MAAM,MAAM,GAAG,iFAAiF,CAAC;AACjG,MAAM,OAAO,GAAG,kFAAkF,CAAC;AAEnG,MAAM,UAAU,kBAAkB,CAAC,QAAgB;IACjD,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3C,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QACvB,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,SAAwD,CAAC;QACnF,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;IAC1D,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACjC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,IAAmD,CAAC;QAC9E,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;IACrD,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrC,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,GAAG,MAMpC,CAAC;QACF,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,CAAC;IAClE,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvC,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,GAAG,OAMpC,CAAC;QACF,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,CAAC;IACnE,CAAC;IACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzC,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,QAMjC,CAAC;QACF,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC;IACjE,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,12 @@
1
+ /** Durable crawl-state parity implementation (`knowledge_site_crawls`). */
2
+ import type { Pool } from 'pg';
3
+ import type { CrawlStateStore, SiteCrawlState } from './crawl-lifecycle.js';
4
+ import type { KnowledgeTenantRef } from './routes.js';
5
+ export declare class PostgresCrawlStateStore implements CrawlStateStore {
6
+ #private;
7
+ constructor(pool: Pool);
8
+ ensureSchema(): Promise<void>;
9
+ get(tenant: KnowledgeTenantRef, componentName: string): Promise<SiteCrawlState | undefined>;
10
+ put(tenant: KnowledgeTenantRef, componentName: string, state: SiteCrawlState): Promise<void>;
11
+ }
12
+ //# sourceMappingURL=postgres-crawl-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres-crawl-state.d.ts","sourceRoot":"","sources":["../src/postgres-crawl-state.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,KAAK,EAAE,eAAe,EAAe,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACzF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEtD,qBAAa,uBAAwB,YAAW,eAAe;;gBAGjD,IAAI,EAAE,IAAI;IAIhB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAiB7B,GAAG,CACP,MAAM,EAAE,kBAAkB,EAC1B,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;IAuBhC,GAAG,CACP,MAAM,EAAE,kBAAkB,EAC1B,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,cAAc,GACpB,OAAO,CAAC,IAAI,CAAC;CAwBjB"}
@@ -0,0 +1,58 @@
1
+ export class PostgresCrawlStateStore {
2
+ #pool;
3
+ constructor(pool) {
4
+ this.#pool = pool;
5
+ }
6
+ async ensureSchema() {
7
+ await this.#pool.query(`
8
+ CREATE TABLE IF NOT EXISTS knowledge_site_crawls (
9
+ org TEXT NOT NULL,
10
+ app TEXT NOT NULL,
11
+ env TEXT NOT NULL,
12
+ component TEXT NOT NULL,
13
+ status TEXT NOT NULL,
14
+ last_completed_at BIGINT,
15
+ last_error TEXT,
16
+ pages_indexed INTEGER NOT NULL DEFAULT 0,
17
+ next_refresh_at BIGINT,
18
+ PRIMARY KEY (org, app, env, component)
19
+ )
20
+ `);
21
+ }
22
+ async get(tenant, componentName) {
23
+ const result = await this.#pool.query(`SELECT status, last_completed_at, last_error, pages_indexed, next_refresh_at
24
+ FROM knowledge_site_crawls WHERE org = $1 AND app = $2 AND env = $3 AND component = $4`, [tenant.org, tenant.app, tenant.env, componentName]);
25
+ const row = result.rows[0];
26
+ if (row === undefined)
27
+ return undefined;
28
+ return {
29
+ status: row.status,
30
+ pagesIndexed: row.pages_indexed,
31
+ ...(row.last_completed_at === null ? {} : { lastCompletedAt: Number(row.last_completed_at) }),
32
+ ...(row.last_error === null ? {} : { lastError: row.last_error }),
33
+ ...(row.next_refresh_at === null ? {} : { nextRefreshAt: Number(row.next_refresh_at) }),
34
+ };
35
+ }
36
+ async put(tenant, componentName, state) {
37
+ await this.#pool.query(`INSERT INTO knowledge_site_crawls
38
+ (org, app, env, component, status, last_completed_at, last_error, pages_indexed, next_refresh_at)
39
+ VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)
40
+ ON CONFLICT (org, app, env, component) DO UPDATE SET
41
+ status = EXCLUDED.status,
42
+ last_completed_at = EXCLUDED.last_completed_at,
43
+ last_error = EXCLUDED.last_error,
44
+ pages_indexed = EXCLUDED.pages_indexed,
45
+ next_refresh_at = EXCLUDED.next_refresh_at`, [
46
+ tenant.org,
47
+ tenant.app,
48
+ tenant.env,
49
+ componentName,
50
+ state.status,
51
+ state.lastCompletedAt ?? null,
52
+ state.lastError ?? null,
53
+ state.pagesIndexed,
54
+ state.nextRefreshAt ?? null,
55
+ ]);
56
+ }
57
+ }
58
+ //# sourceMappingURL=postgres-crawl-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres-crawl-state.js","sourceRoot":"","sources":["../src/postgres-crawl-state.ts"],"names":[],"mappings":"AAKA,MAAM,OAAO,uBAAuB;IACzB,KAAK,CAAO;IAErB,YAAY,IAAU;QACpB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;;;;;;;;;;;;;KAatB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,GAAG,CACP,MAA0B,EAC1B,aAAqB;QAErB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAOnC;8FACwF,EACxF,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,aAAa,CAAC,CACpD,CAAC;QACF,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QACxC,OAAO;YACL,MAAM,EAAE,GAAG,CAAC,MAAqB;YACjC,YAAY,EAAE,GAAG,CAAC,aAAa;YAC/B,GAAG,CAAC,GAAG,CAAC,iBAAiB,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAC7F,GAAG,CAAC,GAAG,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC;YACjE,GAAG,CAAC,GAAG,CAAC,eAAe,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC;SACxF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,GAAG,CACP,MAA0B,EAC1B,aAAqB,EACrB,KAAqB;QAErB,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CACpB;;;;;;;;oDAQ8C,EAC9C;YACE,MAAM,CAAC,GAAG;YACV,MAAM,CAAC,GAAG;YACV,MAAM,CAAC,GAAG;YACV,aAAa;YACb,KAAK,CAAC,MAAM;YACZ,KAAK,CAAC,eAAe,IAAI,IAAI;YAC7B,KAAK,CAAC,SAAS,IAAI,IAAI;YACvB,KAAK,CAAC,YAAY;YAClB,KAAK,CAAC,aAAa,IAAI,IAAI;SAC5B,CACF,CAAC;IACJ,CAAC;CACF"}