@noodleseed/one 0.120.1 → 0.122.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 (511) hide show
  1. package/dist/commands/auth-ops.d.ts.map +1 -1
  2. package/dist/commands/auth-ops.js +1 -0
  3. package/dist/commands/auth-ops.js.map +1 -1
  4. package/dist/commands/catalog-data-bootstrap-authoring.d.ts.map +1 -1
  5. package/dist/commands/catalog-data-bootstrap-authoring.js +98 -189
  6. package/dist/commands/catalog-data-bootstrap-authoring.js.map +1 -1
  7. package/dist/commands/mcp-apps.d.ts.map +1 -1
  8. package/dist/commands/mcp-apps.js +1 -0
  9. package/dist/commands/mcp-apps.js.map +1 -1
  10. package/dist/commands/project-setup.d.ts.map +1 -1
  11. package/dist/commands/project-setup.js +25 -5
  12. package/dist/commands/project-setup.js.map +1 -1
  13. package/dist/commands/session.d.ts.map +1 -1
  14. package/dist/commands/session.js +5 -2
  15. package/dist/commands/session.js.map +1 -1
  16. package/dist/delegated-token-exchange-preflight.d.ts.map +1 -1
  17. package/dist/delegated-token-exchange-preflight.js +1 -0
  18. package/dist/delegated-token-exchange-preflight.js.map +1 -1
  19. package/dist/deploy.d.ts.map +1 -1
  20. package/dist/deploy.js +8 -131
  21. package/dist/deploy.js.map +1 -1
  22. package/dist/index.d.ts +1 -3
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +1 -1
  25. package/dist/index.js.map +1 -1
  26. package/dist/local-compile.d.ts.map +1 -1
  27. package/dist/local-compile.js +1 -0
  28. package/dist/local-compile.js.map +1 -1
  29. package/node_modules/@noodle-borg/agent-kit/dist/curated/error-fixes.d.ts.map +1 -1
  30. package/node_modules/@noodle-borg/agent-kit/dist/curated/error-fixes.js +2 -0
  31. package/node_modules/@noodle-borg/agent-kit/dist/curated/error-fixes.js.map +1 -1
  32. package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.d.ts.map +1 -1
  33. package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js +8 -6
  34. package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js.map +1 -1
  35. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.d.ts.map +1 -1
  36. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js +5 -0
  37. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js.map +1 -1
  38. package/node_modules/@noodle-borg/agent-kit/dist/plugin-marketplace-docs.js +4 -4
  39. package/node_modules/@noodle-borg/agent-kit/dist/plugin-submission.js +9 -9
  40. package/node_modules/@noodle-borg/agent-kit/dist/plugin-submission.js.map +1 -1
  41. package/node_modules/@noodle-borg/agent-kit/dist/product-skill-ownership.d.ts.map +1 -1
  42. package/node_modules/@noodle-borg/agent-kit/dist/product-skill-ownership.js +5 -3
  43. package/node_modules/@noodle-borg/agent-kit/dist/product-skill-ownership.js.map +1 -1
  44. package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-refs.d.ts.map +1 -1
  45. package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-refs.js +20 -0
  46. package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-refs.js.map +1 -1
  47. package/node_modules/@noodle-borg/agent-kit/dist/skill-operations-refs.d.ts.map +1 -1
  48. package/node_modules/@noodle-borg/agent-kit/dist/skill-operations-refs.js +6 -2
  49. package/node_modules/@noodle-borg/agent-kit/dist/skill-operations-refs.js.map +1 -1
  50. package/node_modules/@noodle-borg/agent-kit/package.json +1 -1
  51. package/node_modules/@noodle-borg/agent-packaging/dist/host-package-assets.d.ts +2 -1
  52. package/node_modules/@noodle-borg/agent-packaging/dist/host-package-assets.d.ts.map +1 -1
  53. package/node_modules/@noodle-borg/agent-packaging/dist/host-package-assets.js +11 -1
  54. package/node_modules/@noodle-borg/agent-packaging/dist/host-package-assets.js.map +1 -1
  55. package/node_modules/@noodle-borg/agent-packaging/dist/host-packaging-types.d.ts +16 -3
  56. package/node_modules/@noodle-borg/agent-packaging/dist/host-packaging-types.d.ts.map +1 -1
  57. package/node_modules/@noodle-borg/agent-packaging/dist/host-packaging-validation.d.ts.map +1 -1
  58. package/node_modules/@noodle-borg/agent-packaging/dist/host-packaging-validation.js +13 -4
  59. package/node_modules/@noodle-borg/agent-packaging/dist/host-packaging-validation.js.map +1 -1
  60. package/node_modules/@noodle-borg/agent-packaging/dist/index.d.ts +1 -0
  61. package/node_modules/@noodle-borg/agent-packaging/dist/index.d.ts.map +1 -1
  62. package/node_modules/@noodle-borg/agent-packaging/dist/index.js +1 -0
  63. package/node_modules/@noodle-borg/agent-packaging/dist/index.js.map +1 -1
  64. package/node_modules/@noodle-borg/agent-packaging/dist/product-skill-validation.d.ts.map +1 -1
  65. package/node_modules/@noodle-borg/agent-packaging/dist/product-skill-validation.js +4 -3
  66. package/node_modules/@noodle-borg/agent-packaging/dist/product-skill-validation.js.map +1 -1
  67. package/node_modules/@noodle-borg/assistant-gateway/package.json +1 -1
  68. package/node_modules/@noodle-borg/authoring/dist/assistant.d.ts +4 -3
  69. package/node_modules/@noodle-borg/authoring/dist/assistant.d.ts.map +1 -1
  70. package/node_modules/@noodle-borg/authoring/dist/assistant.js.map +1 -1
  71. package/node_modules/@noodle-borg/authoring/dist/distribution.d.ts +17 -3
  72. package/node_modules/@noodle-borg/authoring/dist/distribution.d.ts.map +1 -1
  73. package/node_modules/@noodle-borg/authoring/dist/distribution.js.map +1 -1
  74. package/node_modules/@noodle-borg/authoring/dist/index.d.ts +2 -1
  75. package/node_modules/@noodle-borg/authoring/dist/index.d.ts.map +1 -1
  76. package/node_modules/@noodle-borg/authoring/dist/index.js +1 -0
  77. package/node_modules/@noodle-borg/authoring/dist/index.js.map +1 -1
  78. package/node_modules/@noodle-borg/authoring/dist/knowledge.d.ts +70 -0
  79. package/node_modules/@noodle-borg/authoring/dist/knowledge.d.ts.map +1 -0
  80. package/node_modules/@noodle-borg/authoring/dist/knowledge.js +50 -0
  81. package/node_modules/@noodle-borg/authoring/dist/knowledge.js.map +1 -0
  82. package/node_modules/@noodle-borg/authoring/dist/load-authored.d.ts +24 -0
  83. package/node_modules/@noodle-borg/authoring/dist/load-authored.d.ts.map +1 -0
  84. package/node_modules/@noodle-borg/authoring/dist/load-authored.js +141 -0
  85. package/node_modules/@noodle-borg/authoring/dist/load-authored.js.map +1 -0
  86. package/node_modules/@noodle-borg/authoring/dist/react/components.d.ts +3 -3
  87. package/node_modules/@noodle-borg/authoring/dist/react/native-components.d.ts +2 -2
  88. package/node_modules/@noodle-borg/authoring/dist/server.d.ts +3 -0
  89. package/node_modules/@noodle-borg/authoring/dist/server.d.ts.map +1 -1
  90. package/node_modules/@noodle-borg/authoring/dist/server.js +4 -0
  91. package/node_modules/@noodle-borg/authoring/dist/server.js.map +1 -1
  92. package/node_modules/@noodle-borg/authoring/package.json +5 -0
  93. package/node_modules/@noodle-borg/brand-kit/dist/index.d.ts +8 -0
  94. package/node_modules/@noodle-borg/brand-kit/dist/index.d.ts.map +1 -0
  95. package/node_modules/@noodle-borg/brand-kit/dist/index.js +8 -0
  96. package/node_modules/@noodle-borg/brand-kit/dist/index.js.map +1 -0
  97. package/node_modules/@noodle-borg/{compiler/dist/widget-palette.d.ts → brand-kit/dist/palette.d.ts} +1 -1
  98. package/node_modules/@noodle-borg/brand-kit/dist/palette.d.ts.map +1 -0
  99. package/node_modules/@noodle-borg/{compiler/dist/widget-palette.js → brand-kit/dist/palette.js} +1 -1
  100. package/node_modules/@noodle-borg/brand-kit/dist/palette.js.map +1 -0
  101. package/node_modules/@noodle-borg/{compiler/dist/widget-ui-style.d.ts → brand-kit/dist/ui-style.d.ts} +1 -1
  102. package/node_modules/@noodle-borg/brand-kit/dist/ui-style.d.ts.map +1 -0
  103. package/node_modules/@noodle-borg/{compiler/dist/widget-ui-style.js → brand-kit/dist/ui-style.js} +1 -1
  104. package/node_modules/@noodle-borg/brand-kit/dist/ui-style.js.map +1 -0
  105. package/node_modules/@noodle-borg/brand-kit/package.json +28 -0
  106. package/node_modules/@noodle-borg/compiler/dist/artifact/assemble.d.ts +2 -1
  107. package/node_modules/@noodle-borg/compiler/dist/artifact/assemble.d.ts.map +1 -1
  108. package/node_modules/@noodle-borg/compiler/dist/artifact/assemble.js +2 -1
  109. package/node_modules/@noodle-borg/compiler/dist/artifact/assemble.js.map +1 -1
  110. package/node_modules/@noodle-borg/compiler/dist/artifact/types.d.ts +3 -0
  111. package/node_modules/@noodle-borg/compiler/dist/artifact/types.d.ts.map +1 -1
  112. package/node_modules/@noodle-borg/compiler/dist/artifact/types.js.map +1 -1
  113. package/node_modules/@noodle-borg/compiler/dist/branding.d.ts.map +1 -1
  114. package/node_modules/@noodle-borg/compiler/dist/branding.js +1 -1
  115. package/node_modules/@noodle-borg/compiler/dist/branding.js.map +1 -1
  116. package/node_modules/@noodle-borg/compiler/dist/compile.d.ts +8 -0
  117. package/node_modules/@noodle-borg/compiler/dist/compile.d.ts.map +1 -1
  118. package/node_modules/@noodle-borg/compiler/dist/compile.js +8 -1
  119. package/node_modules/@noodle-borg/compiler/dist/compile.js.map +1 -1
  120. package/node_modules/@noodle-borg/compiler/dist/errors.d.ts +1 -1
  121. package/node_modules/@noodle-borg/compiler/dist/errors.d.ts.map +1 -1
  122. package/node_modules/@noodle-borg/compiler/dist/index.d.ts +1 -1
  123. package/node_modules/@noodle-borg/compiler/dist/index.d.ts.map +1 -1
  124. package/node_modules/@noodle-borg/compiler/dist/index.js +1 -1
  125. package/node_modules/@noodle-borg/compiler/dist/index.js.map +1 -1
  126. package/node_modules/@noodle-borg/compiler/dist/manifest/schema.d.ts +36 -0
  127. package/node_modules/@noodle-borg/compiler/dist/manifest/schema.d.ts.map +1 -1
  128. package/node_modules/@noodle-borg/compiler/dist/manifest/schema.js +7 -1
  129. package/node_modules/@noodle-borg/compiler/dist/manifest/schema.js.map +1 -1
  130. package/node_modules/@noodle-borg/compiler/dist/manifest/website-projection.d.ts +4 -0
  131. package/node_modules/@noodle-borg/compiler/dist/manifest/website-projection.d.ts.map +1 -1
  132. package/node_modules/@noodle-borg/compiler/dist/manifest/website-projection.js +1 -0
  133. package/node_modules/@noodle-borg/compiler/dist/manifest/website-projection.js.map +1 -1
  134. package/node_modules/@noodle-borg/compiler/dist/widget-emit.d.ts +1 -1
  135. package/node_modules/@noodle-borg/compiler/dist/widget-emit.d.ts.map +1 -1
  136. package/node_modules/@noodle-borg/compiler/dist/widget-emit.js +1 -1
  137. package/node_modules/@noodle-borg/compiler/dist/widget-emit.js.map +1 -1
  138. package/node_modules/@noodle-borg/compiler/dist/widget-size-validation.d.ts +1 -1
  139. package/node_modules/@noodle-borg/compiler/dist/widget-size-validation.d.ts.map +1 -1
  140. package/node_modules/@noodle-borg/compiler/dist/widget-size-validation.js.map +1 -1
  141. package/node_modules/@noodle-borg/compiler/package.json +3 -0
  142. package/node_modules/@noodle-borg/developer-mcp/dist/contracts.d.ts +30 -9
  143. package/node_modules/@noodle-borg/developer-mcp/dist/contracts.d.ts.map +1 -1
  144. package/node_modules/@noodle-borg/developer-mcp/dist/contracts.js +21 -6
  145. package/node_modules/@noodle-borg/developer-mcp/dist/contracts.js.map +1 -1
  146. package/node_modules/@noodle-borg/developer-mcp/dist/port.d.ts +2 -1
  147. package/node_modules/@noodle-borg/developer-mcp/dist/port.d.ts.map +1 -1
  148. package/node_modules/@noodle-borg/developer-mcp/dist/port.js.map +1 -1
  149. package/node_modules/@noodle-borg/developer-mcp/dist/prompts.js +3 -3
  150. package/node_modules/@noodle-borg/developer-mcp/dist/prompts.js.map +1 -1
  151. package/node_modules/@noodle-borg/developer-mcp/dist/resources.d.ts.map +1 -1
  152. package/node_modules/@noodle-borg/developer-mcp/dist/resources.js +10 -9
  153. package/node_modules/@noodle-borg/developer-mcp/dist/resources.js.map +1 -1
  154. package/node_modules/@noodle-borg/developer-mcp/dist/results.d.ts +4 -3
  155. package/node_modules/@noodle-borg/developer-mcp/dist/results.d.ts.map +1 -1
  156. package/node_modules/@noodle-borg/developer-mcp/dist/results.js +5 -19
  157. package/node_modules/@noodle-borg/developer-mcp/dist/results.js.map +1 -1
  158. package/node_modules/@noodle-borg/developer-mcp/dist/server.js +3 -3
  159. package/node_modules/@noodle-borg/developer-mcp/dist/server.js.map +1 -1
  160. package/node_modules/@noodle-borg/developer-mcp/dist/tools/apps.d.ts.map +1 -1
  161. package/node_modules/@noodle-borg/developer-mcp/dist/tools/apps.js +6 -25
  162. package/node_modules/@noodle-borg/developer-mcp/dist/tools/apps.js.map +1 -1
  163. package/node_modules/@noodle-borg/developer-mcp/dist/tools/context.d.ts +16 -3
  164. package/node_modules/@noodle-borg/developer-mcp/dist/tools/context.d.ts.map +1 -1
  165. package/node_modules/@noodle-borg/developer-mcp/dist/tools/context.js +22 -19
  166. package/node_modules/@noodle-borg/developer-mcp/dist/tools/context.js.map +1 -1
  167. package/node_modules/@noodle-borg/developer-mcp/dist/tools/deployments.d.ts.map +1 -1
  168. package/node_modules/@noodle-borg/developer-mcp/dist/tools/deployments.js +3 -9
  169. package/node_modules/@noodle-borg/developer-mcp/dist/tools/deployments.js.map +1 -1
  170. package/node_modules/@noodle-borg/developer-mcp/dist/tools/diagnose.d.ts.map +1 -1
  171. package/node_modules/@noodle-borg/developer-mcp/dist/tools/diagnose.js +15 -16
  172. package/node_modules/@noodle-borg/developer-mcp/dist/tools/diagnose.js.map +1 -1
  173. package/node_modules/@noodle-borg/developer-mcp/dist/tools/operations.d.ts.map +1 -1
  174. package/node_modules/@noodle-borg/developer-mcp/dist/tools/operations.js +9 -17
  175. package/node_modules/@noodle-borg/developer-mcp/dist/tools/operations.js.map +1 -1
  176. package/node_modules/@noodle-borg/developer-mcp/dist/tools/rollback.d.ts.map +1 -1
  177. package/node_modules/@noodle-borg/developer-mcp/dist/tools/rollback.js +7 -10
  178. package/node_modules/@noodle-borg/developer-mcp/dist/tools/rollback.js.map +1 -1
  179. package/node_modules/@noodle-borg/knowledge/dist/bm25.d.ts +14 -0
  180. package/node_modules/@noodle-borg/knowledge/dist/bm25.d.ts.map +1 -0
  181. package/node_modules/@noodle-borg/knowledge/dist/bm25.js +133 -0
  182. package/node_modules/@noodle-borg/knowledge/dist/bm25.js.map +1 -0
  183. package/node_modules/@noodle-borg/knowledge/dist/budget.d.ts +61 -0
  184. package/node_modules/@noodle-borg/knowledge/dist/budget.d.ts.map +1 -0
  185. package/node_modules/@noodle-borg/knowledge/dist/budget.js +0 -0
  186. package/node_modules/@noodle-borg/knowledge/dist/budget.js.map +1 -0
  187. package/node_modules/@noodle-borg/knowledge/dist/compile.d.ts +52 -0
  188. package/node_modules/@noodle-borg/knowledge/dist/compile.d.ts.map +1 -0
  189. package/node_modules/@noodle-borg/knowledge/dist/compile.js +250 -0
  190. package/node_modules/@noodle-borg/knowledge/dist/compile.js.map +1 -0
  191. package/node_modules/@noodle-borg/knowledge/dist/conformance.d.ts +21 -0
  192. package/node_modules/@noodle-borg/knowledge/dist/conformance.d.ts.map +1 -0
  193. package/node_modules/@noodle-borg/knowledge/dist/conformance.js +225 -0
  194. package/node_modules/@noodle-borg/knowledge/dist/conformance.js.map +1 -0
  195. package/node_modules/@noodle-borg/knowledge/dist/fakes.d.ts +23 -0
  196. package/node_modules/@noodle-borg/knowledge/dist/fakes.d.ts.map +1 -0
  197. package/node_modules/@noodle-borg/knowledge/dist/fakes.js +141 -0
  198. package/node_modules/@noodle-borg/knowledge/dist/fakes.js.map +1 -0
  199. package/node_modules/@noodle-borg/knowledge/dist/fusion.d.ts +27 -0
  200. package/node_modules/@noodle-borg/knowledge/dist/fusion.d.ts.map +1 -0
  201. package/node_modules/@noodle-borg/knowledge/dist/fusion.js +119 -0
  202. package/node_modules/@noodle-borg/knowledge/dist/fusion.js.map +1 -0
  203. package/node_modules/@noodle-borg/knowledge/dist/google-agent-search.d.ts +49 -0
  204. package/node_modules/@noodle-borg/knowledge/dist/google-agent-search.d.ts.map +1 -0
  205. package/node_modules/@noodle-borg/knowledge/dist/google-agent-search.js +235 -0
  206. package/node_modules/@noodle-borg/knowledge/dist/google-agent-search.js.map +1 -0
  207. package/node_modules/@noodle-borg/knowledge/dist/hits.d.ts +31 -0
  208. package/node_modules/@noodle-borg/knowledge/dist/hits.d.ts.map +1 -0
  209. package/node_modules/@noodle-borg/knowledge/dist/hits.js +75 -0
  210. package/node_modules/@noodle-borg/knowledge/dist/hits.js.map +1 -0
  211. package/node_modules/@noodle-borg/knowledge/dist/index.d.ts +26 -0
  212. package/node_modules/@noodle-borg/knowledge/dist/index.d.ts.map +1 -0
  213. package/node_modules/@noodle-borg/knowledge/dist/index.js +26 -0
  214. package/node_modules/@noodle-borg/knowledge/dist/index.js.map +1 -0
  215. package/node_modules/@noodle-borg/knowledge/dist/ir.d.ts +53 -0
  216. package/node_modules/@noodle-borg/knowledge/dist/ir.d.ts.map +1 -0
  217. package/node_modules/@noodle-borg/knowledge/dist/ir.js +87 -0
  218. package/node_modules/@noodle-borg/knowledge/dist/ir.js.map +1 -0
  219. package/node_modules/@noodle-borg/knowledge/dist/limits.d.ts +19 -0
  220. package/node_modules/@noodle-borg/knowledge/dist/limits.d.ts.map +1 -0
  221. package/node_modules/@noodle-borg/knowledge/dist/limits.js +19 -0
  222. package/node_modules/@noodle-borg/knowledge/dist/limits.js.map +1 -0
  223. package/node_modules/@noodle-borg/knowledge/dist/manifest-schema.d.ts +42 -0
  224. package/node_modules/@noodle-borg/knowledge/dist/manifest-schema.d.ts.map +1 -0
  225. package/node_modules/@noodle-borg/knowledge/dist/manifest-schema.js +45 -0
  226. package/node_modules/@noodle-borg/knowledge/dist/manifest-schema.js.map +1 -0
  227. package/node_modules/@noodle-borg/knowledge/dist/ports.d.ts +56 -0
  228. package/node_modules/@noodle-borg/knowledge/dist/ports.d.ts.map +1 -0
  229. package/node_modules/@noodle-borg/knowledge/dist/ports.js +13 -0
  230. package/node_modules/@noodle-borg/knowledge/dist/ports.js.map +1 -0
  231. package/node_modules/@noodle-borg/knowledge/dist/postgres-budget-store.d.ts +22 -0
  232. package/node_modules/@noodle-borg/knowledge/dist/postgres-budget-store.d.ts.map +1 -0
  233. package/node_modules/@noodle-borg/knowledge/dist/postgres-budget-store.js +102 -0
  234. package/node_modules/@noodle-borg/knowledge/dist/postgres-budget-store.js.map +1 -0
  235. package/node_modules/@noodle-borg/knowledge/dist/postgres-revision-store.d.ts +35 -0
  236. package/node_modules/@noodle-borg/knowledge/dist/postgres-revision-store.d.ts.map +1 -0
  237. package/node_modules/@noodle-borg/knowledge/dist/postgres-revision-store.js +260 -0
  238. package/node_modules/@noodle-borg/knowledge/dist/postgres-revision-store.js.map +1 -0
  239. package/node_modules/@noodle-borg/knowledge/dist/revision-store.d.ts +86 -0
  240. package/node_modules/@noodle-borg/knowledge/dist/revision-store.d.ts.map +1 -0
  241. package/node_modules/@noodle-borg/knowledge/dist/revision-store.js +167 -0
  242. package/node_modules/@noodle-borg/knowledge/dist/revision-store.js.map +1 -0
  243. package/node_modules/@noodle-borg/knowledge/package.json +36 -0
  244. package/node_modules/@noodle-borg/module/dist/contract.d.ts +2 -0
  245. package/node_modules/@noodle-borg/module/dist/contract.d.ts.map +1 -1
  246. package/node_modules/@noodle-borg/module/dist/contract.js.map +1 -1
  247. package/node_modules/@noodle-borg/plugin-distribution/dist/anthropic-connector-render.d.ts +4 -0
  248. package/node_modules/@noodle-borg/plugin-distribution/dist/anthropic-connector-render.d.ts.map +1 -0
  249. package/node_modules/@noodle-borg/plugin-distribution/dist/anthropic-connector-render.js +147 -0
  250. package/node_modules/@noodle-borg/plugin-distribution/dist/anthropic-connector-render.js.map +1 -0
  251. package/node_modules/@noodle-borg/plugin-distribution/dist/anthropic-connector-types.d.ts +14 -0
  252. package/node_modules/@noodle-borg/plugin-distribution/dist/anthropic-connector-types.d.ts.map +1 -0
  253. package/node_modules/@noodle-borg/plugin-distribution/dist/anthropic-connector-types.js +2 -0
  254. package/node_modules/@noodle-borg/plugin-distribution/dist/anthropic-connector-types.js.map +1 -0
  255. package/node_modules/@noodle-borg/plugin-distribution/dist/anthropic-connector-validation.d.ts +10 -0
  256. package/node_modules/@noodle-borg/plugin-distribution/dist/anthropic-connector-validation.d.ts.map +1 -0
  257. package/node_modules/@noodle-borg/plugin-distribution/dist/anthropic-connector-validation.js +152 -0
  258. package/node_modules/@noodle-borg/plugin-distribution/dist/anthropic-connector-validation.js.map +1 -0
  259. package/node_modules/@noodle-borg/plugin-distribution/dist/anthropic-connector.d.ts +7 -0
  260. package/node_modules/@noodle-borg/plugin-distribution/dist/anthropic-connector.d.ts.map +1 -0
  261. package/node_modules/@noodle-borg/plugin-distribution/dist/anthropic-connector.js +24 -0
  262. package/node_modules/@noodle-borg/plugin-distribution/dist/anthropic-connector.js.map +1 -0
  263. package/node_modules/@noodle-borg/plugin-distribution/dist/claude-distribution-command.d.ts +6 -0
  264. package/node_modules/@noodle-borg/plugin-distribution/dist/claude-distribution-command.d.ts.map +1 -0
  265. package/node_modules/@noodle-borg/plugin-distribution/dist/claude-distribution-command.js +260 -0
  266. package/node_modules/@noodle-borg/plugin-distribution/dist/claude-distribution-command.js.map +1 -0
  267. package/node_modules/@noodle-borg/plugin-distribution/dist/claude-plugin-render.d.ts +3 -0
  268. package/node_modules/@noodle-borg/plugin-distribution/dist/claude-plugin-render.d.ts.map +1 -0
  269. package/node_modules/@noodle-borg/plugin-distribution/dist/claude-plugin-render.js +89 -0
  270. package/node_modules/@noodle-borg/plugin-distribution/dist/claude-plugin-render.js.map +1 -0
  271. package/node_modules/@noodle-borg/plugin-distribution/dist/claude-plugin-validation.d.ts +3 -0
  272. package/node_modules/@noodle-borg/plugin-distribution/dist/claude-plugin-validation.d.ts.map +1 -0
  273. package/node_modules/@noodle-borg/plugin-distribution/dist/claude-plugin-validation.js +16 -0
  274. package/node_modules/@noodle-borg/plugin-distribution/dist/claude-plugin-validation.js.map +1 -0
  275. package/node_modules/@noodle-borg/plugin-distribution/dist/claude-plugin.d.ts +5 -0
  276. package/node_modules/@noodle-borg/plugin-distribution/dist/claude-plugin.d.ts.map +1 -0
  277. package/node_modules/@noodle-borg/plugin-distribution/dist/claude-plugin.js +15 -0
  278. package/node_modules/@noodle-borg/plugin-distribution/dist/claude-plugin.js.map +1 -0
  279. package/node_modules/@noodle-borg/plugin-distribution/dist/command.d.ts +3 -0
  280. package/node_modules/@noodle-borg/plugin-distribution/dist/command.d.ts.map +1 -0
  281. package/node_modules/@noodle-borg/plugin-distribution/dist/command.js +3 -0
  282. package/node_modules/@noodle-borg/plugin-distribution/dist/command.js.map +1 -0
  283. package/node_modules/@noodle-borg/plugin-distribution/dist/distribution-command-support.d.ts +37 -0
  284. package/node_modules/@noodle-borg/plugin-distribution/dist/distribution-command-support.d.ts.map +1 -0
  285. package/node_modules/@noodle-borg/plugin-distribution/dist/distribution-command-support.js +60 -0
  286. package/node_modules/@noodle-borg/plugin-distribution/dist/distribution-command-support.js.map +1 -0
  287. package/node_modules/@noodle-borg/plugin-distribution/dist/index.d.ts +2 -0
  288. package/node_modules/@noodle-borg/plugin-distribution/dist/index.d.ts.map +1 -1
  289. package/node_modules/@noodle-borg/plugin-distribution/dist/index.js +2 -0
  290. package/node_modules/@noodle-borg/plugin-distribution/dist/index.js.map +1 -1
  291. package/node_modules/@noodle-borg/plugin-distribution/dist/openai-plugin-command.d.ts +3 -28
  292. package/node_modules/@noodle-borg/plugin-distribution/dist/openai-plugin-command.d.ts.map +1 -1
  293. package/node_modules/@noodle-borg/plugin-distribution/dist/openai-plugin-command.js +23 -64
  294. package/node_modules/@noodle-borg/plugin-distribution/dist/openai-plugin-command.js.map +1 -1
  295. package/node_modules/@noodle-borg/plugin-distribution/dist/openai-plugin-render.d.ts.map +1 -1
  296. package/node_modules/@noodle-borg/plugin-distribution/dist/openai-plugin-render.js +3 -97
  297. package/node_modules/@noodle-borg/plugin-distribution/dist/openai-plugin-render.js.map +1 -1
  298. package/node_modules/@noodle-borg/plugin-distribution/dist/openai-plugin-validation.d.ts.map +1 -1
  299. package/node_modules/@noodle-borg/plugin-distribution/dist/openai-plugin-validation.js +19 -8
  300. package/node_modules/@noodle-borg/plugin-distribution/dist/openai-plugin-validation.js.map +1 -1
  301. package/node_modules/@noodle-borg/plugin-distribution/dist/openai-submission-render.d.ts +5 -0
  302. package/node_modules/@noodle-borg/plugin-distribution/dist/openai-submission-render.d.ts.map +1 -0
  303. package/node_modules/@noodle-borg/plugin-distribution/dist/openai-submission-render.js +147 -0
  304. package/node_modules/@noodle-borg/plugin-distribution/dist/openai-submission-render.js.map +1 -0
  305. package/node_modules/@noodle-borg/plugin-distribution/dist/public-url.d.ts +3 -0
  306. package/node_modules/@noodle-borg/plugin-distribution/dist/public-url.d.ts.map +1 -0
  307. package/node_modules/@noodle-borg/plugin-distribution/dist/public-url.js +22 -0
  308. package/node_modules/@noodle-borg/plugin-distribution/dist/public-url.js.map +1 -0
  309. package/node_modules/@noodle-borg/plugin-distribution/package.json +2 -2
  310. package/node_modules/@noodle-borg/protocol/dist/handlers/resources.d.ts +1 -1
  311. package/node_modules/@noodle-borg/protocol/dist/handlers/resources.d.ts.map +1 -1
  312. package/node_modules/@noodle-borg/protocol/dist/handlers/resources.js +1 -1
  313. package/node_modules/@noodle-borg/protocol/dist/handlers/resources.js.map +1 -1
  314. package/node_modules/@noodle-borg/protocol/dist/v2/response-observation.d.ts +1 -1
  315. package/node_modules/@noodle-borg/protocol/dist/v2/response-observation.d.ts.map +1 -1
  316. package/node_modules/@noodle-borg/protocol/dist/v2/response-observation.js +1 -1
  317. package/node_modules/@noodle-borg/protocol/dist/v2/response-observation.js.map +1 -1
  318. package/node_modules/@noodle-borg/protocol/dist/v2/server.d.ts.map +1 -1
  319. package/node_modules/@noodle-borg/protocol/dist/v2/server.js +1 -1
  320. package/node_modules/@noodle-borg/protocol/dist/v2/server.js.map +1 -1
  321. package/node_modules/@noodle-borg/protocol/package.json +1 -0
  322. package/node_modules/@noodle-borg/service/dist/auth/developer-grant-guard.d.ts +6 -4
  323. package/node_modules/@noodle-borg/service/dist/auth/developer-grant-guard.d.ts.map +1 -1
  324. package/node_modules/@noodle-borg/service/dist/auth/developer-grant-guard.js +13 -16
  325. package/node_modules/@noodle-borg/service/dist/auth/developer-grant-guard.js.map +1 -1
  326. package/node_modules/@noodle-borg/service/dist/developer-mcp/control-plane-adapter.d.ts +3 -2
  327. package/node_modules/@noodle-borg/service/dist/developer-mcp/control-plane-adapter.d.ts.map +1 -1
  328. package/node_modules/@noodle-borg/service/dist/developer-mcp/control-plane-adapter.js +66 -47
  329. package/node_modules/@noodle-borg/service/dist/developer-mcp/control-plane-adapter.js.map +1 -1
  330. package/node_modules/@noodle-borg/service/dist/developer-mcp/mount.d.ts.map +1 -1
  331. package/node_modules/@noodle-borg/service/dist/developer-mcp/mount.js +15 -16
  332. package/node_modules/@noodle-borg/service/dist/developer-mcp/mount.js.map +1 -1
  333. package/node_modules/@noodle-borg/service/dist/index.d.ts +2 -3
  334. package/node_modules/@noodle-borg/service/dist/index.d.ts.map +1 -1
  335. package/node_modules/@noodle-borg/service/dist/index.js +1 -2
  336. package/node_modules/@noodle-borg/service/dist/index.js.map +1 -1
  337. package/node_modules/@noodle-borg/service/dist/main.js +0 -52
  338. package/node_modules/@noodle-borg/service/dist/main.js.map +1 -1
  339. package/node_modules/@noodle-borg/service/dist/modules/host.d.ts +2 -6
  340. package/node_modules/@noodle-borg/service/dist/modules/host.d.ts.map +1 -1
  341. package/node_modules/@noodle-borg/service/dist/modules/host.js.map +1 -1
  342. package/node_modules/@noodle-borg/service/dist/oauth/consent-claims.d.ts +0 -2
  343. package/node_modules/@noodle-borg/service/dist/oauth/consent-claims.d.ts.map +1 -1
  344. package/node_modules/@noodle-borg/service/dist/oauth/consent-claims.js +0 -16
  345. package/node_modules/@noodle-borg/service/dist/oauth/consent-claims.js.map +1 -1
  346. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-authorizer.d.ts +3 -28
  347. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-authorizer.d.ts.map +1 -1
  348. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-authorizer.js +8 -67
  349. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-authorizer.js.map +1 -1
  350. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-bootstrap.d.ts +0 -4
  351. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-bootstrap.d.ts.map +1 -1
  352. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-bootstrap.js +1 -14
  353. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-bootstrap.js.map +1 -1
  354. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-flow.d.ts +1 -1
  355. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-flow.d.ts.map +1 -1
  356. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-flow.js +45 -36
  357. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-flow.js.map +1 -1
  358. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-page.d.ts +2 -2
  359. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-page.d.ts.map +1 -1
  360. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-page.js +20 -229
  361. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-page.js.map +1 -1
  362. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-store-postgres.d.ts +3 -2
  363. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-store-postgres.d.ts.map +1 -1
  364. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-store-postgres.js +70 -36
  365. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-store-postgres.js.map +1 -1
  366. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant.d.ts +17 -6
  367. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant.d.ts.map +1 -1
  368. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant.js +98 -26
  369. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant.js.map +1 -1
  370. package/node_modules/@noodle-borg/service/dist/oauth/service-bootstrap.d.ts.map +1 -1
  371. package/node_modules/@noodle-borg/service/dist/oauth/service-bootstrap.js +0 -2
  372. package/node_modules/@noodle-borg/service/dist/oauth/service-bootstrap.js.map +1 -1
  373. package/node_modules/@noodle-borg/service/dist/oauth/upstream-consent.js +1 -1
  374. package/node_modules/@noodle-borg/service/dist/oauth/upstream-consent.js.map +1 -1
  375. package/node_modules/@noodle-borg/service/dist/options.d.ts +1 -21
  376. package/node_modules/@noodle-borg/service/dist/options.d.ts.map +1 -1
  377. package/node_modules/@noodle-borg/service/dist/routes/analytics.js +3 -3
  378. package/node_modules/@noodle-borg/service/dist/routes/analytics.js.map +1 -1
  379. package/node_modules/@noodle-borg/service/dist/routes/apps.d.ts.map +1 -1
  380. package/node_modules/@noodle-borg/service/dist/routes/apps.js +6 -27
  381. package/node_modules/@noodle-borg/service/dist/routes/apps.js.map +1 -1
  382. package/node_modules/@noodle-borg/service/dist/routes/config-values.d.ts.map +1 -1
  383. package/node_modules/@noodle-borg/service/dist/routes/config-values.js +5 -8
  384. package/node_modules/@noodle-borg/service/dist/routes/config-values.js.map +1 -1
  385. package/node_modules/@noodle-borg/service/dist/routes/control-plane.d.ts +7 -6
  386. package/node_modules/@noodle-borg/service/dist/routes/control-plane.d.ts.map +1 -1
  387. package/node_modules/@noodle-borg/service/dist/routes/control-plane.js +7 -6
  388. package/node_modules/@noodle-borg/service/dist/routes/control-plane.js.map +1 -1
  389. package/node_modules/@noodle-borg/service/dist/routes/deploy-preflight.js +1 -1
  390. package/node_modules/@noodle-borg/service/dist/routes/deploy-preflight.js.map +1 -1
  391. package/node_modules/@noodle-borg/service/dist/routes/deployment-package.d.ts.map +1 -1
  392. package/node_modules/@noodle-borg/service/dist/routes/deployment-package.js +2 -7
  393. package/node_modules/@noodle-borg/service/dist/routes/deployment-package.js.map +1 -1
  394. package/node_modules/@noodle-borg/service/dist/routes/deployments.d.ts.map +1 -1
  395. package/node_modules/@noodle-borg/service/dist/routes/deployments.js +7 -20
  396. package/node_modules/@noodle-borg/service/dist/routes/deployments.js.map +1 -1
  397. package/node_modules/@noodle-borg/service/dist/routes/diagnostics.js +1 -1
  398. package/node_modules/@noodle-borg/service/dist/routes/diagnostics.js.map +1 -1
  399. package/node_modules/@noodle-borg/service/dist/routes/envs.d.ts.map +1 -1
  400. package/node_modules/@noodle-borg/service/dist/routes/envs.js +4 -8
  401. package/node_modules/@noodle-borg/service/dist/routes/envs.js.map +1 -1
  402. package/node_modules/@noodle-borg/service/dist/routes/logs.js +1 -1
  403. package/node_modules/@noodle-borg/service/dist/routes/logs.js.map +1 -1
  404. package/node_modules/@noodle-borg/service/dist/routes/rollback.js +1 -1
  405. package/node_modules/@noodle-borg/service/dist/routes/rollback.js.map +1 -1
  406. package/node_modules/@noodle-borg/service/dist/serve-options.d.ts +7 -1
  407. package/node_modules/@noodle-borg/service/dist/serve-options.d.ts.map +1 -1
  408. package/node_modules/@noodle-borg/service/dist/serve.d.ts +0 -1
  409. package/node_modules/@noodle-borg/service/dist/serve.d.ts.map +1 -1
  410. package/node_modules/@noodle-borg/service/dist/serve.js +22 -26
  411. package/node_modules/@noodle-borg/service/dist/serve.js.map +1 -1
  412. package/node_modules/@noodle-borg/service/dist/service-config.d.ts +1 -1
  413. package/node_modules/@noodle-borg/service/dist/service-config.d.ts.map +1 -1
  414. package/node_modules/@noodle-borg/service/dist/service-config.js.map +1 -1
  415. package/node_modules/@noodle-borg/service/dist/service.d.ts.map +1 -1
  416. package/node_modules/@noodle-borg/service/dist/service.js +1 -24
  417. package/node_modules/@noodle-borg/service/dist/service.js.map +1 -1
  418. package/node_modules/@noodle-borg/service/dist/store/postgres-schema.d.ts.map +1 -1
  419. package/node_modules/@noodle-borg/service/dist/store/postgres-schema.js +21 -0
  420. package/node_modules/@noodle-borg/service/dist/store/postgres-schema.js.map +1 -1
  421. package/node_modules/@noodle-borg/service/package.json +2 -1
  422. package/node_modules/@noodle-borg/service-modules/dist/index.d.ts +9 -0
  423. package/node_modules/@noodle-borg/service-modules/dist/index.d.ts.map +1 -0
  424. package/node_modules/@noodle-borg/service-modules/dist/index.js +9 -0
  425. package/node_modules/@noodle-borg/service-modules/dist/index.js.map +1 -0
  426. package/node_modules/@noodle-borg/service-modules/dist/loaded-module.d.ts +8 -0
  427. package/node_modules/@noodle-borg/service-modules/dist/loaded-module.d.ts.map +1 -0
  428. package/node_modules/@noodle-borg/service-modules/dist/loaded-module.js +2 -0
  429. package/node_modules/@noodle-borg/service-modules/dist/loaded-module.js.map +1 -0
  430. package/node_modules/@noodle-borg/{service/dist/modules → service-modules/dist}/loader.d.ts +1 -1
  431. package/node_modules/@noodle-borg/service-modules/dist/loader.d.ts.map +1 -0
  432. package/node_modules/@noodle-borg/service-modules/dist/loader.js.map +1 -0
  433. package/node_modules/@noodle-borg/service-modules/package.json +32 -0
  434. package/node_modules/@noodle-borg/uri-template/dist/index.d.ts +7 -0
  435. package/node_modules/@noodle-borg/uri-template/dist/index.d.ts.map +1 -0
  436. package/node_modules/@noodle-borg/uri-template/dist/index.js +7 -0
  437. package/node_modules/@noodle-borg/uri-template/dist/index.js.map +1 -0
  438. package/node_modules/@noodle-borg/uri-template/package.json +28 -0
  439. package/node_modules/@noodleseed/assistant/package.json +42 -16
  440. package/package.json +6 -2
  441. package/node_modules/@noodle-borg/compiler/dist/widget-palette.d.ts.map +0 -1
  442. package/node_modules/@noodle-borg/compiler/dist/widget-palette.js.map +0 -1
  443. package/node_modules/@noodle-borg/compiler/dist/widget-ui-style.d.ts.map +0 -1
  444. package/node_modules/@noodle-borg/compiler/dist/widget-ui-style.js.map +0 -1
  445. package/node_modules/@noodle-borg/service/dist/feedback-operations/bootstrap.d.ts +0 -7
  446. package/node_modules/@noodle-borg/service/dist/feedback-operations/bootstrap.d.ts.map +0 -1
  447. package/node_modules/@noodle-borg/service/dist/feedback-operations/bootstrap.js +0 -23
  448. package/node_modules/@noodle-borg/service/dist/feedback-operations/bootstrap.js.map +0 -1
  449. package/node_modules/@noodle-borg/service/dist/feedback-operations/config.d.ts +0 -12
  450. package/node_modules/@noodle-borg/service/dist/feedback-operations/config.d.ts.map +0 -1
  451. package/node_modules/@noodle-borg/service/dist/feedback-operations/config.js +0 -47
  452. package/node_modules/@noodle-borg/service/dist/feedback-operations/config.js.map +0 -1
  453. package/node_modules/@noodle-borg/service/dist/feedback-operations/contracts.d.ts +0 -24
  454. package/node_modules/@noodle-borg/service/dist/feedback-operations/contracts.d.ts.map +0 -1
  455. package/node_modules/@noodle-borg/service/dist/feedback-operations/contracts.js +0 -2
  456. package/node_modules/@noodle-borg/service/dist/feedback-operations/contracts.js.map +0 -1
  457. package/node_modules/@noodle-borg/service/dist/feedback-operations/delivery-worker.d.ts +0 -29
  458. package/node_modules/@noodle-borg/service/dist/feedback-operations/delivery-worker.d.ts.map +0 -1
  459. package/node_modules/@noodle-borg/service/dist/feedback-operations/delivery-worker.js +0 -263
  460. package/node_modules/@noodle-borg/service/dist/feedback-operations/delivery-worker.js.map +0 -1
  461. package/node_modules/@noodle-borg/service/dist/feedback-operations/linear-client.d.ts +0 -39
  462. package/node_modules/@noodle-borg/service/dist/feedback-operations/linear-client.d.ts.map +0 -1
  463. package/node_modules/@noodle-borg/service/dist/feedback-operations/linear-client.js +0 -142
  464. package/node_modules/@noodle-borg/service/dist/feedback-operations/linear-client.js.map +0 -1
  465. package/node_modules/@noodle-borg/service/dist/feedback-operations/reporter-email.d.ts +0 -33
  466. package/node_modules/@noodle-borg/service/dist/feedback-operations/reporter-email.d.ts.map +0 -1
  467. package/node_modules/@noodle-borg/service/dist/feedback-operations/reporter-email.js +0 -142
  468. package/node_modules/@noodle-borg/service/dist/feedback-operations/reporter-email.js.map +0 -1
  469. package/node_modules/@noodle-borg/service/dist/feedback-operations/slack-card.d.ts +0 -138
  470. package/node_modules/@noodle-borg/service/dist/feedback-operations/slack-card.d.ts.map +0 -1
  471. package/node_modules/@noodle-borg/service/dist/feedback-operations/slack-card.js +0 -199
  472. package/node_modules/@noodle-borg/service/dist/feedback-operations/slack-card.js.map +0 -1
  473. package/node_modules/@noodle-borg/service/dist/feedback-operations/slack-client.d.ts +0 -52
  474. package/node_modules/@noodle-borg/service/dist/feedback-operations/slack-client.d.ts.map +0 -1
  475. package/node_modules/@noodle-borg/service/dist/feedback-operations/slack-client.js +0 -103
  476. package/node_modules/@noodle-borg/service/dist/feedback-operations/slack-client.js.map +0 -1
  477. package/node_modules/@noodle-borg/service/dist/github/feedback-issues.d.ts +0 -44
  478. package/node_modules/@noodle-borg/service/dist/github/feedback-issues.d.ts.map +0 -1
  479. package/node_modules/@noodle-borg/service/dist/github/feedback-issues.js +0 -117
  480. package/node_modules/@noodle-borg/service/dist/github/feedback-issues.js.map +0 -1
  481. package/node_modules/@noodle-borg/service/dist/modules/loader.d.ts.map +0 -1
  482. package/node_modules/@noodle-borg/service/dist/modules/loader.js.map +0 -1
  483. package/node_modules/@noodle-borg/service/dist/routes/feedback-operations-dispatch.d.ts +0 -10
  484. package/node_modules/@noodle-borg/service/dist/routes/feedback-operations-dispatch.d.ts.map +0 -1
  485. package/node_modules/@noodle-borg/service/dist/routes/feedback-operations-dispatch.js +0 -54
  486. package/node_modules/@noodle-borg/service/dist/routes/feedback-operations-dispatch.js.map +0 -1
  487. package/node_modules/@noodle-borg/service/dist/routes/feedback.d.ts +0 -30
  488. package/node_modules/@noodle-borg/service/dist/routes/feedback.d.ts.map +0 -1
  489. package/node_modules/@noodle-borg/service/dist/routes/feedback.js +0 -233
  490. package/node_modules/@noodle-borg/service/dist/routes/feedback.js.map +0 -1
  491. package/node_modules/@noodle-borg/service/dist/routes/linear-feedback-webhook.d.ts +0 -17
  492. package/node_modules/@noodle-borg/service/dist/routes/linear-feedback-webhook.d.ts.map +0 -1
  493. package/node_modules/@noodle-borg/service/dist/routes/linear-feedback-webhook.js +0 -141
  494. package/node_modules/@noodle-borg/service/dist/routes/linear-feedback-webhook.js.map +0 -1
  495. package/node_modules/@noodle-borg/service/dist/routes/slack-feedback-actions.d.ts +0 -15
  496. package/node_modules/@noodle-borg/service/dist/routes/slack-feedback-actions.d.ts.map +0 -1
  497. package/node_modules/@noodle-borg/service/dist/routes/slack-feedback-actions.js +0 -135
  498. package/node_modules/@noodle-borg/service/dist/routes/slack-feedback-actions.js.map +0 -1
  499. package/node_modules/@noodle-borg/service/dist/store/feedback-operations.d.ts +0 -188
  500. package/node_modules/@noodle-borg/service/dist/store/feedback-operations.d.ts.map +0 -1
  501. package/node_modules/@noodle-borg/service/dist/store/feedback-operations.js +0 -489
  502. package/node_modules/@noodle-borg/service/dist/store/feedback-operations.js.map +0 -1
  503. package/node_modules/@noodle-borg/service/dist/store/postgres-feedback-operations.d.ts +0 -35
  504. package/node_modules/@noodle-borg/service/dist/store/postgres-feedback-operations.d.ts.map +0 -1
  505. package/node_modules/@noodle-borg/service/dist/store/postgres-feedback-operations.js +0 -172
  506. package/node_modules/@noodle-borg/service/dist/store/postgres-feedback-operations.js.map +0 -1
  507. /package/node_modules/@noodle-borg/{service/dist/modules → service-modules/dist}/loader.js +0 -0
  508. /package/node_modules/@noodle-borg/{compiler → uri-template}/dist/uri-template.d.ts +0 -0
  509. /package/node_modules/@noodle-borg/{compiler → uri-template}/dist/uri-template.d.ts.map +0 -0
  510. /package/node_modules/@noodle-borg/{compiler → uri-template}/dist/uri-template.js +0 -0
  511. /package/node_modules/@noodle-borg/{compiler → uri-template}/dist/uri-template.js.map +0 -0
@@ -0,0 +1,21 @@
1
+ import type { AudiencePredicate, KnowledgeScope } from './ir.js';
2
+ import { type KnowledgeIndex, type SiteSearch, type StagedDocument } from './ports.js';
3
+ /**
4
+ * The two grouping primitives every JS test runner exposes. The caller passes its own —
5
+ * `{ describe, it }` from Vitest in this repository — so the suites stay runner-neutral.
6
+ */
7
+ export interface ConformanceRunner {
8
+ describe(name: string, body: () => void): void;
9
+ it(name: string, body: () => void | Promise<void>): void;
10
+ }
11
+ export declare const testScope: KnowledgeScope;
12
+ export declare const testComponent = "product";
13
+ export declare function stagedDocument(path: string, title: string, text: string, sourceUrl?: string): StagedDocument;
14
+ export declare const publicPredicate: (revision: string) => AudiencePredicate;
15
+ export declare function describeKnowledgeIndex(runner: ConformanceRunner, makeIndex: () => KnowledgeIndex, label: string): void;
16
+ export declare function describeSiteSearch(runner: ConformanceRunner, makeSearch: () => SiteSearch & {
17
+ addPage?: (uri: string, title: string, text: string) => unknown;
18
+ }, label: string): void;
19
+ /** Cross-source fusion is part of the contract: policy filters run before the limit. */
20
+ export declare function fusionContractCases(runner: ConformanceRunner): void;
21
+ //# sourceMappingURL=conformance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conformance.d.ts","sourceRoot":"","sources":["../src/conformance.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAc,MAAM,SAAS,CAAC;AAC7E,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,cAAc,EACpB,MAAM,YAAY,CAAC;AAEpB;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IAC/C,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAC1D;AAED,eAAO,MAAM,SAAS,EAAE,cAA8D,CAAC;AACvF,eAAO,MAAM,aAAa,YAAY,CAAC;AAEvC,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,SAAS,CAAC,EAAE,MAAM,GACjB,cAAc,CAahB;AAED,eAAO,MAAM,eAAe,GAAI,UAAU,MAAM,KAAG,iBAGjD,CAAC;AAEH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,iBAAiB,EACzB,SAAS,EAAE,MAAM,cAAc,EAC/B,KAAK,EAAE,MAAM,GACZ,IAAI,CAqHN;AAID,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,iBAAiB,EACzB,UAAU,EAAE,MAAM,UAAU,GAAG;IAC7B,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;CACjE,EACD,KAAK,EAAE,MAAM,GACZ,IAAI,CAgDN;AAED,wFAAwF;AACxF,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAoEnE"}
@@ -0,0 +1,225 @@
1
+ /**
2
+ * Shared port conformance suites (ADR 0202): every `KnowledgeIndex` implementation — the
3
+ * fake, the bundled BM25 adapter, and the managed Google adapter — passes the identical
4
+ * suite, and likewise every `SiteSearch` implementation. A behaviour asserted only against
5
+ * one implementation is one the others are free to violate in production.
6
+ *
7
+ * This module is shipped source, so it imports no test framework: assertions use the
8
+ * `node:assert` builtin and the caller injects its runner's `describe`/`it`. Declaring a
9
+ * framework here — even as an optional peer — would put it in the dependency graph of
10
+ * everything that depends on this package, including the published CLI.
11
+ */
12
+ import assert from 'node:assert/strict';
13
+ import { createHash } from 'node:crypto';
14
+ import { fuseHits } from './fusion.js';
15
+ import { searchRequestSchema } from './hits.js';
16
+ import { KnowledgeError, } from './ports.js';
17
+ export const testScope = { org: 'acme', app: 'acme-app', env: 'prod' };
18
+ export const testComponent = 'product';
19
+ export function stagedDocument(path, title, text, sourceUrl) {
20
+ const bytes = Buffer.byteLength(text, 'utf8');
21
+ const hash = createHash('sha256').update(text, 'utf8').digest('hex');
22
+ return {
23
+ descriptor: {
24
+ path,
25
+ title,
26
+ ...(sourceUrl !== undefined ? { sourceUrl } : {}),
27
+ sha256: hash,
28
+ bytes,
29
+ },
30
+ text,
31
+ };
32
+ }
33
+ export const publicPredicate = (revision) => ({
34
+ audience: 'public',
35
+ revision,
36
+ });
37
+ export function describeKnowledgeIndex(runner, makeIndex, label) {
38
+ const { describe, it } = runner;
39
+ describe(`KnowledgeIndex conformance — ${label}`, () => {
40
+ it('stages a complete revision and reports its descriptors', async () => {
41
+ const index = makeIndex();
42
+ const revision = await index.stage(testScope, testComponent, [
43
+ stagedDocument('knowledge/a.md', 'A', 'alpha beta'),
44
+ stagedDocument('knowledge/b.txt', 'B', 'gamma delta'),
45
+ ]);
46
+ assert.equal(revision.documents.length, 2);
47
+ assert.deepEqual(revision.documents.map((document) => document.path), ['knowledge/a.md', 'knowledge/b.txt']);
48
+ assert.deepEqual(revision.scope, testScope);
49
+ });
50
+ it('verifies a positive predicate for the staged revision and rejects a mismatched one', async () => {
51
+ const index = makeIndex();
52
+ const revision = await index.stage(testScope, testComponent, [
53
+ stagedDocument('knowledge/a.md', 'A', 'alpha beta'),
54
+ ]);
55
+ assert.equal(await index.verify(revision.revisionId, publicPredicate(revision.revisionId)), true);
56
+ assert.equal(await index.verify(revision.revisionId, publicPredicate('other-revision')), false);
57
+ });
58
+ it('activates atomically: search reads only the active revision', async () => {
59
+ const index = makeIndex();
60
+ const first = await index.stage(testScope, testComponent, [
61
+ stagedDocument('knowledge/a.md', 'A', 'ancient content'),
62
+ ]);
63
+ await index.activate(first.revisionId);
64
+ const second = await index.stage(testScope, testComponent, [
65
+ stagedDocument('knowledge/a.md', 'A', 'fresh content'),
66
+ stagedDocument('knowledge/b.md', 'B', 'fresh content too'),
67
+ ]);
68
+ await index.activate(second.revisionId);
69
+ const hits = await index.search(testScope, testComponent, searchRequestSchema.parse({ query: 'content' }));
70
+ assert.ok(hits.length > 0, 'expected the active revision to return hits');
71
+ assert.equal(hits.some((hit) => hit.title === 'B'), true);
72
+ const active = await index.activeRevision(testScope, testComponent);
73
+ assert.equal(active?.revisionId, second.revisionId);
74
+ });
75
+ it('search before activation fails with an attributable not-found error', async () => {
76
+ const index = makeIndex();
77
+ await index.stage(testScope, testComponent, [stagedDocument('knowledge/a.md', 'A', 'alpha')]);
78
+ await assert.rejects(index.search(testScope, testComponent, { query: 'alpha', limit: 8 }), KnowledgeError);
79
+ });
80
+ it('returns bounded hits with stable ids, titles, excerpts, and source kind', async () => {
81
+ const index = makeIndex();
82
+ const revision = await index.stage(testScope, testComponent, [
83
+ stagedDocument('knowledge/a.md', 'Alpha doc', 'alpha beta gamma', 'https://acme.example/docs/a'),
84
+ stagedDocument('knowledge/b.md', 'Beta doc', 'beta gamma delta'),
85
+ ]);
86
+ await index.activate(revision.revisionId);
87
+ const hits = await index.search(testScope, testComponent, { query: 'gamma', limit: 1 });
88
+ assert.equal(hits.length, 1);
89
+ const hit = hits[0];
90
+ if (hit === undefined)
91
+ throw new Error('expected one bounded hit');
92
+ assert.ok(hit.id.length > 0, 'hit id must be stable and non-empty');
93
+ assert.ok(hit.title.length > 0, 'hit title must be non-empty');
94
+ assert.ok(hit.excerpt.length <= 2000, 'excerpt must stay within MAX_EXCERPT_CHARS');
95
+ assert.equal(hit.sourceKind, 'document');
96
+ if (hit.uri !== undefined)
97
+ assert.equal(hit.uri.startsWith('https://'), true);
98
+ });
99
+ it('deletes only unreferenced revisions', async () => {
100
+ const index = makeIndex();
101
+ const revision = await index.stage(testScope, testComponent, [
102
+ stagedDocument('knowledge/a.md', 'A', 'alpha'),
103
+ ]);
104
+ await index.activate(revision.revisionId);
105
+ await assert.rejects(index.delete(revision.revisionId), KnowledgeError);
106
+ const retired = await index.stage(testScope, testComponent, [
107
+ stagedDocument('knowledge/b.md', 'B', 'beta'),
108
+ ]);
109
+ await index.activate(retired.revisionId);
110
+ assert.equal(await index.delete(revision.revisionId), undefined);
111
+ });
112
+ it('rejects a non-public audience predicate at verification', async () => {
113
+ const index = makeIndex();
114
+ const revision = await index.stage(testScope, testComponent, [
115
+ stagedDocument('knowledge/a.md', 'A', 'alpha'),
116
+ ]);
117
+ assert.equal(await index.verify(revision.revisionId, {
118
+ audience: 'public',
119
+ revision: revision.revisionId,
120
+ }), true);
121
+ });
122
+ });
123
+ }
124
+ const policy = { origin: 'https://www.acme.test', include: ['/docs/**', '/pricing'] };
125
+ export function describeSiteSearch(runner, makeSearch, label) {
126
+ const { describe, it } = runner;
127
+ describe(`SiteSearch conformance — ${label}`, () => {
128
+ it('requires a public audience predicate', async () => {
129
+ const search = makeSearch();
130
+ await assert.rejects(search.search(policy, { audience: 'private', revision: 'r' }, { query: 'anything', limit: 8 }), KnowledgeError);
131
+ });
132
+ it('returns only exact-origin, path-approved hits', async () => {
133
+ const search = makeSearch();
134
+ search.addPage?.('https://www.acme.test/docs/guide', 'Guide', 'install instructions here');
135
+ search.addPage?.('https://www.acme.test/blog/post', 'Blog', 'install instructions here');
136
+ search.addPage?.('https://evil.test/docs/guide', 'Evil', 'install instructions here');
137
+ const hits = await search.search(policy, publicPredicate('live'), {
138
+ query: 'install',
139
+ limit: 8,
140
+ });
141
+ assert.equal(hits.length, 1);
142
+ assert.equal(hits[0]?.uri, 'https://www.acme.test/docs/guide');
143
+ });
144
+ it('bounds results to the requested limit', async () => {
145
+ const search = makeSearch();
146
+ search.addPage?.('https://www.acme.test/docs/one', 'One', 'pricing details');
147
+ search.addPage?.('https://www.acme.test/docs/two', 'Two', 'pricing details');
148
+ search.addPage?.('https://www.acme.test/pricing', 'Pricing', 'pricing details');
149
+ const hits = await search.search(policy, publicPredicate('live'), {
150
+ query: 'pricing',
151
+ limit: 2,
152
+ });
153
+ assert.equal(hits.length, 2);
154
+ });
155
+ it('attributes failures through KnowledgeError, never raw provider text', async () => {
156
+ const search = makeSearch();
157
+ await assert.rejects(search.search(policy, publicPredicate('live'), { query: '', limit: 8 }), KnowledgeError);
158
+ });
159
+ });
160
+ }
161
+ /** Cross-source fusion is part of the contract: policy filters run before the limit. */
162
+ export function fusionContractCases(runner) {
163
+ const { describe, it } = runner;
164
+ describe('fusion contract', () => {
165
+ const sitePolicies = [policy];
166
+ it('applies policy before the limit, never after', () => {
167
+ const documents = [];
168
+ const sites = [
169
+ {
170
+ id: 'https://www.acme.test/docs/a',
171
+ title: 'A',
172
+ excerpt: 'x',
173
+ sourceKind: 'site',
174
+ uri: 'https://www.acme.test/docs/a',
175
+ },
176
+ {
177
+ id: 'https://evil.test/docs/b',
178
+ title: 'Evil',
179
+ excerpt: 'x',
180
+ sourceKind: 'site',
181
+ uri: 'https://evil.test/docs/b',
182
+ },
183
+ {
184
+ id: 'https://www.acme.test/blog/c',
185
+ title: 'Blog',
186
+ excerpt: 'x',
187
+ sourceKind: 'site',
188
+ uri: 'https://www.acme.test/blog/c',
189
+ },
190
+ ];
191
+ const fused = fuseHits(documents, sites, { limit: 2, sitePolicies });
192
+ assert.equal(fused.length, 1);
193
+ assert.equal(fused[0]?.id, 'https://www.acme.test/docs/a');
194
+ });
195
+ it('deduplicates by canonical URL then stable id, preferring document evidence', () => {
196
+ const sharedUri = 'https://www.acme.test/docs/a';
197
+ const documents = [
198
+ { id: 'doc:1', title: 'Doc', excerpt: 'x', sourceKind: 'document', uri: sharedUri },
199
+ ];
200
+ const sites = [
201
+ { id: sharedUri, title: 'Site', excerpt: 'x', sourceKind: 'site', uri: sharedUri },
202
+ ];
203
+ const fused = fuseHits(documents, sites, { limit: 8, sitePolicies });
204
+ assert.equal(fused.length, 1);
205
+ assert.equal(fused[0]?.sourceKind, 'document');
206
+ });
207
+ it('breaks equal scores deterministically: document evidence outranks site evidence', () => {
208
+ const documents = [
209
+ { id: 'doc:b', title: 'B', excerpt: 'x', sourceKind: 'document' },
210
+ ];
211
+ const sites = [
212
+ {
213
+ id: 'https://www.acme.test/docs/a',
214
+ title: 'A',
215
+ excerpt: 'x',
216
+ sourceKind: 'site',
217
+ uri: 'https://www.acme.test/docs/a',
218
+ },
219
+ ];
220
+ const fused = fuseHits(documents, sites, { limit: 2, sitePolicies });
221
+ assert.deepEqual(fused.map((hit) => hit.id), ['doc:b', 'https://www.acme.test/docs/a']);
222
+ });
223
+ });
224
+ }
225
+ //# sourceMappingURL=conformance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conformance.js","sourceRoot":"","sources":["../src/conformance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { type SearchHit, type SearchRequest } from './hits.js';
2
+ import type { AudiencePredicate, KnowledgeScope, SitePolicy } from './ir.js';
3
+ import { type KnowledgeIndex, type KnowledgeRevision, type SiteSearch, type StagedDocument } from './ports.js';
4
+ export declare class FakeKnowledgeIndex implements KnowledgeIndex {
5
+ private readonly entries;
6
+ stage(scope: KnowledgeScope, componentName: string, documents: readonly StagedDocument[]): Promise<KnowledgeRevision>;
7
+ verify(revisionId: string, predicate: AudiencePredicate): Promise<boolean>;
8
+ activate(revisionId: string): Promise<void>;
9
+ search(scope: KnowledgeScope, componentName: string, request: SearchRequest): Promise<readonly SearchHit[]>;
10
+ delete(revisionId: string): Promise<void>;
11
+ activeRevision(scope: KnowledgeScope, componentName: string): Promise<KnowledgeRevision | undefined>;
12
+ /** Test hook: pin a revision like a deployment record would. */
13
+ pin(revisionId: string, deploymentId: string): void;
14
+ private require;
15
+ }
16
+ export declare function fakeDocumentHit(document: StagedDocument): SearchHit;
17
+ /** Seeded live-site result set; applies the exact origin/path policy as its postfilter. */
18
+ export declare class FakeSiteSearch implements SiteSearch {
19
+ private readonly pages;
20
+ addPage(uri: string, title: string, text: string): this;
21
+ search(policy: SitePolicy, predicate: AudiencePredicate, request: SearchRequest): Promise<readonly SearchHit[]>;
22
+ }
23
+ //# sourceMappingURL=fakes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fakes.d.ts","sourceRoot":"","sources":["../src/fakes.ts"],"names":[],"mappings":"AAOA,OAAO,EAAgB,KAAK,SAAS,EAAE,KAAK,aAAa,EAAY,MAAM,WAAW,CAAC;AACvF,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE7E,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,cAAc,EACpB,MAAM,YAAY,CAAC;AASpB,qBAAa,kBAAmB,YAAW,cAAc;IACvD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgC;IAElD,KAAK,CACT,KAAK,EAAE,cAAc,EACrB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,SAAS,cAAc,EAAE,GACnC,OAAO,CAAC,iBAAiB,CAAC;IAwBvB,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC;IAQ1E,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAe3C,MAAM,CACV,KAAK,EAAE,cAAc,EACrB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,SAAS,SAAS,EAAE,CAAC;IA2B1B,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQzC,cAAc,CAClB,KAAK,EAAE,cAAc,EACrB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC;IASzC,gEAAgE;IAChE,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI;IAInD,OAAO,CAAC,OAAO;CAMhB;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,cAAc,GAAG,SAAS,CAQnE;AAED,2FAA2F;AAC3F,qBAAa,cAAe,YAAW,UAAU;IAC/C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAsD;IAE5E,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAKjD,MAAM,CACV,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,iBAAiB,EAC5B,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,SAAS,SAAS,EAAE,CAAC;CA2BjC"}
@@ -0,0 +1,141 @@
1
+ /**
2
+ * In-memory reference implementations of the knowledge ports. They exist to make the shared
3
+ * conformance suites executable without a provider; the bundled BM25 adapter and the managed
4
+ * Google adapter must pass the exact same suites.
5
+ */
6
+ import { createHash } from 'node:crypto';
7
+ import { siteHitAllowed } from './fusion.js';
8
+ import { buildExcerpt, tokenize } from './hits.js';
9
+ import { knowledgeScopeKey } from './ir.js';
10
+ import { KnowledgeError, } from './ports.js';
11
+ export class FakeKnowledgeIndex {
12
+ entries = new Map();
13
+ async stage(scope, componentName, documents) {
14
+ const hash = createHash('sha256')
15
+ .update(documents.map((document) => document.descriptor.sha256).join('\n'))
16
+ .digest('hex');
17
+ const revisionId = `fake-rev-${hash.slice(0, 16)}`;
18
+ this.entries.set(revisionId, {
19
+ revision: {
20
+ revisionId,
21
+ scope,
22
+ componentName,
23
+ documents: documents.map((document) => document.descriptor),
24
+ },
25
+ documents,
26
+ state: 'staged',
27
+ pins: new Set(),
28
+ });
29
+ return {
30
+ revisionId,
31
+ scope,
32
+ componentName,
33
+ documents: documents.map((document) => document.descriptor),
34
+ };
35
+ }
36
+ async verify(revisionId, predicate) {
37
+ const entry = this.require(revisionId);
38
+ if (predicate.audience !== 'public') {
39
+ throw new KnowledgeError('predicate', 'fake index only accepts a public audience');
40
+ }
41
+ return entry.revision.revisionId === predicate.revision && entry.documents.length > 0;
42
+ }
43
+ async activate(revisionId) {
44
+ const entry = this.require(revisionId);
45
+ for (const other of this.entries.values()) {
46
+ if (other !== entry &&
47
+ other.state === 'active' &&
48
+ knowledgeScopeKey(other.revision.scope, other.revision.componentName) ===
49
+ knowledgeScopeKey(entry.revision.scope, entry.revision.componentName)) {
50
+ other.state = 'retired';
51
+ }
52
+ }
53
+ entry.state = 'active';
54
+ }
55
+ async search(scope, componentName, request) {
56
+ const scopeKey = knowledgeScopeKey(scope, componentName);
57
+ const entry = [...this.entries.values()].find((candidate) => candidate.state === 'active' &&
58
+ knowledgeScopeKey(candidate.revision.scope, candidate.revision.componentName) === scopeKey);
59
+ if (entry === undefined)
60
+ throw new KnowledgeError('not-found', 'no active revision for this component');
61
+ const terms = new Set(tokenize(request.query));
62
+ return entry.documents
63
+ .map((document) => {
64
+ const documentTerms = tokenize(document.text);
65
+ const matches = documentTerms.filter((term) => terms.has(term)).length;
66
+ return { document, matches };
67
+ })
68
+ .filter((candidate) => candidate.matches > 0)
69
+ .sort((a, b) => b.matches !== a.matches
70
+ ? b.matches - a.matches
71
+ : a.document.descriptor.path.localeCompare(b.document.descriptor.path))
72
+ .slice(0, request.limit)
73
+ .map(({ document }) => fakeDocumentHit(document));
74
+ }
75
+ async delete(revisionId) {
76
+ const entry = this.require(revisionId);
77
+ if (entry.state === 'active')
78
+ throw new KnowledgeError('store', 'cannot delete the active revision');
79
+ if (entry.pins.size > 0)
80
+ throw new KnowledgeError('store', 'cannot delete a pinned revision');
81
+ this.entries.delete(revisionId);
82
+ }
83
+ async activeRevision(scope, componentName) {
84
+ const scopeKey = knowledgeScopeKey(scope, componentName);
85
+ return [...this.entries.values()].find((candidate) => candidate.state === 'active' &&
86
+ knowledgeScopeKey(candidate.revision.scope, candidate.revision.componentName) === scopeKey)?.revision;
87
+ }
88
+ /** Test hook: pin a revision like a deployment record would. */
89
+ pin(revisionId, deploymentId) {
90
+ this.require(revisionId).pins.add(deploymentId);
91
+ }
92
+ require(revisionId) {
93
+ const entry = this.entries.get(revisionId);
94
+ if (entry === undefined)
95
+ throw new KnowledgeError('not-found', `unknown revision ${revisionId}`);
96
+ return entry;
97
+ }
98
+ }
99
+ export function fakeDocumentHit(document) {
100
+ return {
101
+ id: `doc:${document.descriptor.sha256.slice(0, 16)}`,
102
+ title: document.descriptor.title,
103
+ excerpt: buildExcerpt(document.text, ''),
104
+ sourceKind: 'document',
105
+ ...(document.descriptor.sourceUrl !== undefined ? { uri: document.descriptor.sourceUrl } : {}),
106
+ };
107
+ }
108
+ /** Seeded live-site result set; applies the exact origin/path policy as its postfilter. */
109
+ export class FakeSiteSearch {
110
+ pages = new Map();
111
+ addPage(uri, title, text) {
112
+ this.pages.set(uri, { title, text });
113
+ return this;
114
+ }
115
+ async search(policy, predicate, request) {
116
+ if (predicate.audience !== 'public') {
117
+ throw new KnowledgeError('predicate', 'site search rejects non-public audiences');
118
+ }
119
+ if (request.query.trim().length === 0) {
120
+ throw new KnowledgeError('request', 'query must not be empty');
121
+ }
122
+ const terms = new Set(tokenize(request.query));
123
+ return [...this.pages.entries()]
124
+ .map(([uri, page]) => {
125
+ const hit = {
126
+ id: uri,
127
+ title: page.title,
128
+ excerpt: buildExcerpt(page.text, request.query),
129
+ sourceKind: 'site',
130
+ uri,
131
+ };
132
+ const matches = tokenize(`${page.title} ${page.text}`).filter((term) => terms.has(term)).length;
133
+ return { hit, matches };
134
+ })
135
+ .filter(({ hit, matches }) => matches > 0 && siteHitAllowed(policy, hit))
136
+ .sort((a, b) => b.matches - a.matches || a.hit.id.localeCompare(b.hit.id))
137
+ .slice(0, request.limit)
138
+ .map(({ hit }) => hit);
139
+ }
140
+ }
141
+ //# sourceMappingURL=fakes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fakes.js","sourceRoot":"","sources":["../src/fakes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Deterministic result fusion (ADR 0202): equal-weight reciprocal rank fusion with k = 60,
3
+ * canonical-URL then stable-ID dedupe, deterministic source-kind/stable-ID tie-break, and
4
+ * policy filtering applied before the requested limit.
5
+ */
6
+ import type { SearchHit } from './hits.js';
7
+ import type { SitePolicy } from './ir.js';
8
+ /** Exact origin/path admission for site hits — everything else is dropped, not returned. */
9
+ export declare function siteHitAllowed(policy: SitePolicy, hit: SearchHit): boolean;
10
+ /**
11
+ * Glob matching over URL paths. Supports `**` (any segments) and `*` (within one segment),
12
+ * with an exact literal as the degenerate case. A pattern with a trailing `/**` admits
13
+ * everything beneath the prefix but not the bare prefix itself unless listed.
14
+ */
15
+ export declare function pathMatches(pathname: string, glob: string): boolean;
16
+ export interface FuseOptions {
17
+ readonly limit: number;
18
+ /** Every site policy of the knowledge component; a site hit must satisfy at least one. */
19
+ readonly sitePolicies: readonly SitePolicy[];
20
+ }
21
+ /**
22
+ * Fuse document and site result lists. Both inputs are ranked best-first and may be longer
23
+ * than `limit`; providers' own scores are ignored — rank position is the only signal that
24
+ * crosses a provider boundary.
25
+ */
26
+ export declare function fuseHits(documents: readonly SearchHit[], sites: readonly SearchHit[], options: FuseOptions): SearchHit[];
27
+ //# sourceMappingURL=fusion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fusion.d.ts","sourceRoot":"","sources":["../src/fusion.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAG1C,4FAA4F;AAC5F,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,SAAS,GAAG,OAAO,CAU1E;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAyBnE;AAqBD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,0FAA0F;IAC1F,QAAQ,CAAC,YAAY,EAAE,SAAS,UAAU,EAAE,CAAC;CAC9C;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CACtB,SAAS,EAAE,SAAS,SAAS,EAAE,EAC/B,KAAK,EAAE,SAAS,SAAS,EAAE,EAC3B,OAAO,EAAE,WAAW,GACnB,SAAS,EAAE,CA0Cb"}
@@ -0,0 +1,119 @@
1
+ import { RRF_K } from './limits.js';
2
+ /** Exact origin/path admission for site hits — everything else is dropped, not returned. */
3
+ export function siteHitAllowed(policy, hit) {
4
+ if (hit.sourceKind !== 'site' || hit.uri === undefined)
5
+ return false;
6
+ let parsed;
7
+ try {
8
+ parsed = new URL(hit.uri);
9
+ }
10
+ catch {
11
+ return false;
12
+ }
13
+ if (parsed.origin !== policy.origin)
14
+ return false;
15
+ return policy.include.some((glob) => pathMatches(parsed.pathname, glob));
16
+ }
17
+ /**
18
+ * Glob matching over URL paths. Supports `**` (any segments) and `*` (within one segment),
19
+ * with an exact literal as the degenerate case. A pattern with a trailing `/**` admits
20
+ * everything beneath the prefix but not the bare prefix itself unless listed.
21
+ */
22
+ export function pathMatches(pathname, glob) {
23
+ const pathSegments = pathname.split('/').filter((segment) => segment !== '');
24
+ const globSegments = glob.split('/').filter((segment) => segment !== '');
25
+ if (globSegments.length === 0)
26
+ return false;
27
+ function match(pathIndex, globIndex) {
28
+ if (globIndex === globSegments.length)
29
+ return pathIndex === pathSegments.length;
30
+ const pattern = globSegments[globIndex];
31
+ if (pattern === undefined)
32
+ return false;
33
+ if (pattern === '**') {
34
+ // `**` consumes zero or more segments; a *trailing* `**` must consume at least one,
35
+ // so `/docs/**` admits everything beneath `/docs` but not the bare prefix.
36
+ const minimum = globIndex === globSegments.length - 1 ? 1 : 0;
37
+ for (let skip = pathSegments.length - pathIndex; skip >= minimum; skip -= 1) {
38
+ if (match(pathIndex + skip, globIndex + 1))
39
+ return true;
40
+ }
41
+ return false;
42
+ }
43
+ if (pathIndex === pathSegments.length)
44
+ return false;
45
+ const segment = pathSegments[pathIndex];
46
+ if (segment === undefined || !segmentMatches(segment, pattern))
47
+ return false;
48
+ return match(pathIndex + 1, globIndex + 1);
49
+ }
50
+ return match(0, 0);
51
+ }
52
+ function segmentMatches(segment, pattern) {
53
+ const firstStar = pattern.indexOf('*');
54
+ if (firstStar === -1)
55
+ return segment === pattern;
56
+ const lastStar = pattern.lastIndexOf('*');
57
+ const prefix = pattern.slice(0, firstStar);
58
+ const suffix = pattern.slice(lastStar + 1);
59
+ if (!segment.startsWith(prefix) || !segment.endsWith(suffix))
60
+ return false;
61
+ if (segment.length < prefix.length + suffix.length)
62
+ return false;
63
+ const available = segment.length - suffix.length;
64
+ let cursor = prefix.length;
65
+ for (const middle of pattern.slice(firstStar + 1, lastStar).split('*')) {
66
+ if (middle === '')
67
+ continue;
68
+ const found = segment.indexOf(middle, cursor);
69
+ if (found === -1 || found + middle.length > available)
70
+ return false;
71
+ cursor = found + middle.length;
72
+ }
73
+ return true;
74
+ }
75
+ /**
76
+ * Fuse document and site result lists. Both inputs are ranked best-first and may be longer
77
+ * than `limit`; providers' own scores are ignored — rank position is the only signal that
78
+ * crosses a provider boundary.
79
+ */
80
+ export function fuseHits(documents, sites, options) {
81
+ const scores = new Map();
82
+ const admit = (hit, rank, weight) => {
83
+ if (hit.sourceKind === 'site' &&
84
+ !options.sitePolicies.some((policy) => siteHitAllowed(policy, hit))) {
85
+ return;
86
+ }
87
+ const key = hit.uri ?? hit.id;
88
+ const contribution = weight / (RRF_K + rank + 1);
89
+ const existing = scores.get(key);
90
+ if (existing === undefined) {
91
+ scores.set(key, { hit, score: contribution });
92
+ return;
93
+ }
94
+ existing.score += contribution;
95
+ // Canonical-URL then stable-ID dedupe keeps the earliest-seen hit; document evidence
96
+ // outranks site evidence on collision because it is the versioned source.
97
+ if (existing.hit.sourceKind === 'site' && hit.sourceKind === 'document') {
98
+ existing.hit = hit;
99
+ }
100
+ };
101
+ documents.forEach((hit, rank) => {
102
+ admit(hit, rank, 1);
103
+ });
104
+ sites.forEach((hit, rank) => {
105
+ admit(hit, rank, 1);
106
+ });
107
+ return [...scores.values()]
108
+ .sort((a, b) => {
109
+ if (b.score !== a.score)
110
+ return b.score - a.score;
111
+ if (a.hit.sourceKind !== b.hit.sourceKind) {
112
+ return a.hit.sourceKind === 'document' ? -1 : 1;
113
+ }
114
+ return a.hit.id.localeCompare(b.hit.id);
115
+ })
116
+ .slice(0, options.limit)
117
+ .map((entry) => entry.hit);
118
+ }
119
+ //# sourceMappingURL=fusion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fusion.js","sourceRoot":"","sources":["../src/fusion.ts"],"names":[],"mappings":"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"}