@noodleseed/one 0.47.0 → 0.49.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 (270) hide show
  1. package/dist/commands/archive-ops.js +1 -1
  2. package/dist/commands/archive-ops.js.map +1 -1
  3. package/dist/commands/assistant-ops.d.ts.map +1 -1
  4. package/dist/commands/assistant-ops.js +65 -1
  5. package/dist/commands/assistant-ops.js.map +1 -1
  6. package/dist/commands/billing-admission-output.d.ts +16 -0
  7. package/dist/commands/billing-admission-output.d.ts.map +1 -0
  8. package/dist/commands/billing-admission-output.js +40 -0
  9. package/dist/commands/billing-admission-output.js.map +1 -0
  10. package/dist/commands/billing-enforcement-activation-args.d.ts +40 -0
  11. package/dist/commands/billing-enforcement-activation-args.d.ts.map +1 -0
  12. package/dist/commands/billing-enforcement-activation-args.js +125 -0
  13. package/dist/commands/billing-enforcement-activation-args.js.map +1 -0
  14. package/dist/commands/billing-enforcement-activation-files.d.ts +11 -0
  15. package/dist/commands/billing-enforcement-activation-files.d.ts.map +1 -0
  16. package/dist/commands/billing-enforcement-activation-files.js +54 -0
  17. package/dist/commands/billing-enforcement-activation-files.js.map +1 -0
  18. package/dist/commands/billing-enforcement-activation-ops.d.ts +2 -0
  19. package/dist/commands/billing-enforcement-activation-ops.d.ts.map +1 -0
  20. package/dist/commands/billing-enforcement-activation-ops.js +283 -0
  21. package/dist/commands/billing-enforcement-activation-ops.js.map +1 -0
  22. package/dist/commands/billing-enforcement-ops.d.ts.map +1 -1
  23. package/dist/commands/billing-enforcement-ops.js +5 -1
  24. package/dist/commands/billing-enforcement-ops.js.map +1 -1
  25. package/dist/commands/billing-read-ops.d.ts.map +1 -1
  26. package/dist/commands/billing-read-ops.js +15 -3
  27. package/dist/commands/billing-read-ops.js.map +1 -1
  28. package/dist/commands/billing-read-view.d.ts +40 -1
  29. package/dist/commands/billing-read-view.d.ts.map +1 -1
  30. package/dist/commands/billing-read-view.js +50 -0
  31. package/dist/commands/billing-read-view.js.map +1 -1
  32. package/dist/commands/catalog-data-resources.d.ts.map +1 -1
  33. package/dist/commands/catalog-data-resources.js +15 -4
  34. package/dist/commands/catalog-data-resources.js.map +1 -1
  35. package/dist/commands/deploy-ops.d.ts +1 -0
  36. package/dist/commands/deploy-ops.d.ts.map +1 -1
  37. package/dist/commands/deploy-ops.js +5 -0
  38. package/dist/commands/deploy-ops.js.map +1 -1
  39. package/dist/commands/deploy-status-ops.js +1 -1
  40. package/dist/commands/deploy-status-ops.js.map +1 -1
  41. package/dist/commands/mcp-apps-chatgpt.js +4 -4
  42. package/dist/commands/mcp-apps-chatgpt.js.map +1 -1
  43. package/dist/commands/shared.d.ts.map +1 -1
  44. package/dist/commands/shared.js +13 -0
  45. package/dist/commands/shared.js.map +1 -1
  46. package/dist/deploy.d.ts +1 -0
  47. package/dist/deploy.d.ts.map +1 -1
  48. package/dist/deploy.js +5 -1
  49. package/dist/deploy.js.map +1 -1
  50. package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js +1 -1
  51. package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js.map +1 -1
  52. package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-refs.js +1 -1
  53. package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-refs.js.map +1 -1
  54. package/node_modules/@noodle-borg/agent-kit/dist/skill-embedded-assistant-ref.d.ts.map +1 -1
  55. package/node_modules/@noodle-borg/agent-kit/dist/skill-embedded-assistant-ref.js +9 -1
  56. package/node_modules/@noodle-borg/agent-kit/dist/skill-embedded-assistant-ref.js.map +1 -1
  57. package/node_modules/@noodle-borg/agent-kit/package.json +1 -1
  58. package/node_modules/@noodle-borg/protocol/dist/mapping.d.ts.map +1 -1
  59. package/node_modules/@noodle-borg/protocol/dist/mapping.js +42 -1
  60. package/node_modules/@noodle-borg/protocol/dist/mapping.js.map +1 -1
  61. package/node_modules/@noodle-borg/protocol/dist/sdk-server.d.ts.map +1 -1
  62. package/node_modules/@noodle-borg/protocol/dist/sdk-server.js +94 -4
  63. package/node_modules/@noodle-borg/protocol/dist/sdk-server.js.map +1 -1
  64. package/node_modules/@noodle-borg/protocol/dist/tool-interaction.d.ts +7 -3
  65. package/node_modules/@noodle-borg/protocol/dist/tool-interaction.d.ts.map +1 -1
  66. package/node_modules/@noodle-borg/protocol/dist/tool-interaction.js +59 -4
  67. package/node_modules/@noodle-borg/protocol/dist/tool-interaction.js.map +1 -1
  68. package/node_modules/@noodle-borg/protocol/dist/widget/action-wiring-bootstrap.d.ts +3 -0
  69. package/node_modules/@noodle-borg/protocol/dist/widget/action-wiring-bootstrap.d.ts.map +1 -0
  70. package/node_modules/@noodle-borg/protocol/dist/widget/action-wiring-bootstrap.js +17 -0
  71. package/node_modules/@noodle-borg/protocol/dist/widget/action-wiring-bootstrap.js.map +1 -0
  72. package/node_modules/@noodle-borg/protocol/dist/widget/bootstrap.d.ts.map +1 -1
  73. package/node_modules/@noodle-borg/protocol/dist/widget/bootstrap.js +8 -16
  74. package/node_modules/@noodle-borg/protocol/dist/widget/bootstrap.js.map +1 -1
  75. package/node_modules/@noodle-borg/protocol/dist/widget/interaction-bootstrap.d.ts +3 -0
  76. package/node_modules/@noodle-borg/protocol/dist/widget/interaction-bootstrap.d.ts.map +1 -0
  77. package/node_modules/@noodle-borg/protocol/dist/widget/interaction-bootstrap.js +177 -0
  78. package/node_modules/@noodle-borg/protocol/dist/widget/interaction-bootstrap.js.map +1 -0
  79. package/node_modules/@noodle-borg/runtime/dist/result.d.ts +3 -1
  80. package/node_modules/@noodle-borg/runtime/dist/result.d.ts.map +1 -1
  81. package/node_modules/@noodle-borg/runtime/dist/result.js.map +1 -1
  82. package/node_modules/@noodle-borg/runtime/dist/tool-dispatch.d.ts +10 -0
  83. package/node_modules/@noodle-borg/runtime/dist/tool-dispatch.d.ts.map +1 -1
  84. package/node_modules/@noodle-borg/runtime/dist/tool-dispatch.js +26 -1
  85. package/node_modules/@noodle-borg/runtime/dist/tool-dispatch.js.map +1 -1
  86. package/node_modules/@noodle-borg/service/dist/billing/authoritative-admission.d.ts +46 -0
  87. package/node_modules/@noodle-borg/service/dist/billing/authoritative-admission.d.ts.map +1 -0
  88. package/node_modules/@noodle-borg/service/dist/billing/authoritative-admission.js +111 -0
  89. package/node_modules/@noodle-borg/service/dist/billing/authoritative-admission.js.map +1 -0
  90. package/node_modules/@noodle-borg/service/dist/billing/commercial-enforcement-projection.d.ts +80 -0
  91. package/node_modules/@noodle-borg/service/dist/billing/commercial-enforcement-projection.d.ts.map +1 -0
  92. package/node_modules/@noodle-borg/service/dist/billing/commercial-enforcement-projection.js +2 -0
  93. package/node_modules/@noodle-borg/service/dist/billing/commercial-enforcement-projection.js.map +1 -0
  94. package/node_modules/@noodle-borg/service/dist/billing/commercial-entitlements.d.ts +18 -0
  95. package/node_modules/@noodle-borg/service/dist/billing/commercial-entitlements.d.ts.map +1 -0
  96. package/node_modules/@noodle-borg/service/dist/billing/commercial-entitlements.js +51 -0
  97. package/node_modules/@noodle-borg/service/dist/billing/commercial-entitlements.js.map +1 -0
  98. package/node_modules/@noodle-borg/service/dist/billing/enforcement-activation-support.d.ts +34 -0
  99. package/node_modules/@noodle-borg/service/dist/billing/enforcement-activation-support.d.ts.map +1 -0
  100. package/node_modules/@noodle-borg/service/dist/billing/enforcement-activation-support.js +125 -0
  101. package/node_modules/@noodle-borg/service/dist/billing/enforcement-activation-support.js.map +1 -0
  102. package/node_modules/@noodle-borg/service/dist/billing/enforcement-activation.d.ts +265 -0
  103. package/node_modules/@noodle-borg/service/dist/billing/enforcement-activation.d.ts.map +1 -0
  104. package/node_modules/@noodle-borg/service/dist/billing/enforcement-activation.js +340 -0
  105. package/node_modules/@noodle-borg/service/dist/billing/enforcement-activation.js.map +1 -0
  106. package/node_modules/@noodle-borg/service/dist/billing/enforcement-profile.d.ts +1 -1
  107. package/node_modules/@noodle-borg/service/dist/billing/integration.d.ts +15 -3
  108. package/node_modules/@noodle-borg/service/dist/billing/integration.d.ts.map +1 -1
  109. package/node_modules/@noodle-borg/service/dist/billing/integration.js +56 -3
  110. package/node_modules/@noodle-borg/service/dist/billing/integration.js.map +1 -1
  111. package/node_modules/@noodle-borg/service/dist/billing/postgres-authoritative-authority.d.ts +20 -0
  112. package/node_modules/@noodle-borg/service/dist/billing/postgres-authoritative-authority.d.ts.map +1 -0
  113. package/node_modules/@noodle-borg/service/dist/billing/postgres-authoritative-authority.js +121 -0
  114. package/node_modules/@noodle-borg/service/dist/billing/postgres-authoritative-authority.js.map +1 -0
  115. package/node_modules/@noodle-borg/service/dist/billing/postgres-commercial-enforcement-apps.d.ts +10 -0
  116. package/node_modules/@noodle-borg/service/dist/billing/postgres-commercial-enforcement-apps.d.ts.map +1 -0
  117. package/node_modules/@noodle-borg/service/dist/billing/postgres-commercial-enforcement-apps.js +33 -0
  118. package/node_modules/@noodle-borg/service/dist/billing/postgres-commercial-enforcement-apps.js.map +1 -0
  119. package/node_modules/@noodle-borg/service/dist/billing/postgres-commercial-enforcement-counters.d.ts +25 -0
  120. package/node_modules/@noodle-borg/service/dist/billing/postgres-commercial-enforcement-counters.d.ts.map +1 -0
  121. package/node_modules/@noodle-borg/service/dist/billing/postgres-commercial-enforcement-counters.js +248 -0
  122. package/node_modules/@noodle-borg/service/dist/billing/postgres-commercial-enforcement-counters.js.map +1 -0
  123. package/node_modules/@noodle-borg/service/dist/billing/postgres-commercial-enforcement-projection.d.ts +17 -0
  124. package/node_modules/@noodle-borg/service/dist/billing/postgres-commercial-enforcement-projection.d.ts.map +1 -0
  125. package/node_modules/@noodle-borg/service/dist/billing/postgres-commercial-enforcement-projection.js +278 -0
  126. package/node_modules/@noodle-borg/service/dist/billing/postgres-commercial-enforcement-projection.js.map +1 -0
  127. package/node_modules/@noodle-borg/service/dist/billing/postgres-commercial-enforcement-transaction.d.ts +7 -0
  128. package/node_modules/@noodle-borg/service/dist/billing/postgres-commercial-enforcement-transaction.d.ts.map +1 -0
  129. package/node_modules/@noodle-borg/service/dist/billing/postgres-commercial-enforcement-transaction.js +63 -0
  130. package/node_modules/@noodle-borg/service/dist/billing/postgres-commercial-enforcement-transaction.js.map +1 -0
  131. package/node_modules/@noodle-borg/service/dist/billing/postgres-enforcement-activation-locks.d.ts +6 -0
  132. package/node_modules/@noodle-borg/service/dist/billing/postgres-enforcement-activation-locks.d.ts.map +1 -0
  133. package/node_modules/@noodle-borg/service/dist/billing/postgres-enforcement-activation-locks.js +89 -0
  134. package/node_modules/@noodle-borg/service/dist/billing/postgres-enforcement-activation-locks.js.map +1 -0
  135. package/node_modules/@noodle-borg/service/dist/billing/postgres-enforcement-activation-preflight.d.ts +13 -0
  136. package/node_modules/@noodle-borg/service/dist/billing/postgres-enforcement-activation-preflight.d.ts.map +1 -0
  137. package/node_modules/@noodle-borg/service/dist/billing/postgres-enforcement-activation-preflight.js +193 -0
  138. package/node_modules/@noodle-borg/service/dist/billing/postgres-enforcement-activation-preflight.js.map +1 -0
  139. package/node_modules/@noodle-borg/service/dist/billing/postgres-enforcement-activation-schema.d.ts +4 -0
  140. package/node_modules/@noodle-borg/service/dist/billing/postgres-enforcement-activation-schema.d.ts.map +1 -0
  141. package/node_modules/@noodle-borg/service/dist/billing/postgres-enforcement-activation-schema.js +119 -0
  142. package/node_modules/@noodle-borg/service/dist/billing/postgres-enforcement-activation-schema.js.map +1 -0
  143. package/node_modules/@noodle-borg/service/dist/billing/postgres-enforcement-activation-support.d.ts +65 -0
  144. package/node_modules/@noodle-borg/service/dist/billing/postgres-enforcement-activation-support.d.ts.map +1 -0
  145. package/node_modules/@noodle-borg/service/dist/billing/postgres-enforcement-activation-support.js +159 -0
  146. package/node_modules/@noodle-borg/service/dist/billing/postgres-enforcement-activation-support.js.map +1 -0
  147. package/node_modules/@noodle-borg/service/dist/billing/postgres-enforcement-activation.d.ts +31 -0
  148. package/node_modules/@noodle-borg/service/dist/billing/postgres-enforcement-activation.d.ts.map +1 -0
  149. package/node_modules/@noodle-borg/service/dist/billing/postgres-enforcement-activation.js +247 -0
  150. package/node_modules/@noodle-borg/service/dist/billing/postgres-enforcement-activation.js.map +1 -0
  151. package/node_modules/@noodle-borg/service/dist/billing/postgres-enforcement-profile-schema.d.ts.map +1 -1
  152. package/node_modules/@noodle-borg/service/dist/billing/postgres-enforcement-profile-schema.js +40 -0
  153. package/node_modules/@noodle-borg/service/dist/billing/postgres-enforcement-profile-schema.js.map +1 -1
  154. package/node_modules/@noodle-borg/service/dist/billing/postgres-enforcement-profile.d.ts +1 -0
  155. package/node_modules/@noodle-borg/service/dist/billing/postgres-enforcement-profile.d.ts.map +1 -1
  156. package/node_modules/@noodle-borg/service/dist/billing/postgres-enforcement-profile.js +45 -22
  157. package/node_modules/@noodle-borg/service/dist/billing/postgres-enforcement-profile.js.map +1 -1
  158. package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-admission-ledger.d.ts +33 -0
  159. package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-admission-ledger.d.ts.map +1 -0
  160. package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-admission-ledger.js +158 -0
  161. package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-admission-ledger.js.map +1 -0
  162. package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-admission.d.ts +18 -0
  163. package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-admission.d.ts.map +1 -0
  164. package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-admission.js +326 -0
  165. package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-admission.js.map +1 -0
  166. package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-epochs.d.ts +2 -0
  167. package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-epochs.d.ts.map +1 -1
  168. package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-epochs.js +10 -5
  169. package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-epochs.js.map +1 -1
  170. package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-live-validation.js +3 -3
  171. package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-live-validation.js.map +1 -1
  172. package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-readiness.d.ts +3 -1
  173. package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-readiness.d.ts.map +1 -1
  174. package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-readiness.js +8 -2
  175. package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-readiness.js.map +1 -1
  176. package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-reconciliation.js +4 -4
  177. package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-reconciliation.js.map +1 -1
  178. package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-runtime.d.ts +2 -2
  179. package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-runtime.d.ts.map +1 -1
  180. package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-runtime.js.map +1 -1
  181. package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-scheduler-store.js +1 -1
  182. package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-schema.d.ts.map +1 -1
  183. package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-schema.js +27 -1
  184. package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-schema.js.map +1 -1
  185. package/node_modules/@noodle-borg/service/dist/billing/postgres-production-app-admission.d.ts +33 -0
  186. package/node_modules/@noodle-borg/service/dist/billing/postgres-production-app-admission.d.ts.map +1 -0
  187. package/node_modules/@noodle-borg/service/dist/billing/postgres-production-app-admission.js +272 -0
  188. package/node_modules/@noodle-borg/service/dist/billing/postgres-production-app-admission.js.map +1 -0
  189. package/node_modules/@noodle-borg/service/dist/billing/postgres-schema.d.ts.map +1 -1
  190. package/node_modules/@noodle-borg/service/dist/billing/postgres-schema.js +2 -0
  191. package/node_modules/@noodle-borg/service/dist/billing/postgres-schema.js.map +1 -1
  192. package/node_modules/@noodle-borg/service/dist/billing/read-contract.d.ts +174 -28
  193. package/node_modules/@noodle-borg/service/dist/billing/read-contract.d.ts.map +1 -1
  194. package/node_modules/@noodle-borg/service/dist/billing/read-contract.js +51 -6
  195. package/node_modules/@noodle-borg/service/dist/billing/read-contract.js.map +1 -1
  196. package/node_modules/@noodle-borg/service/dist/billing-public.d.ts +3 -0
  197. package/node_modules/@noodle-borg/service/dist/billing-public.d.ts.map +1 -1
  198. package/node_modules/@noodle-borg/service/dist/billing-public.js +3 -0
  199. package/node_modules/@noodle-borg/service/dist/billing-public.js.map +1 -1
  200. package/node_modules/@noodle-borg/service/dist/http-util.d.ts +11 -0
  201. package/node_modules/@noodle-borg/service/dist/http-util.d.ts.map +1 -1
  202. package/node_modules/@noodle-borg/service/dist/http-util.js +41 -1
  203. package/node_modules/@noodle-borg/service/dist/http-util.js.map +1 -1
  204. package/node_modules/@noodle-borg/service/dist/options.d.ts +14 -2
  205. package/node_modules/@noodle-borg/service/dist/options.d.ts.map +1 -1
  206. package/node_modules/@noodle-borg/service/dist/persistence-options.d.ts.map +1 -1
  207. package/node_modules/@noodle-borg/service/dist/persistence-options.js +9 -0
  208. package/node_modules/@noodle-borg/service/dist/persistence-options.js.map +1 -1
  209. package/node_modules/@noodle-borg/service/dist/registry.d.ts +2 -0
  210. package/node_modules/@noodle-borg/service/dist/registry.d.ts.map +1 -1
  211. package/node_modules/@noodle-borg/service/dist/registry.js +10 -0
  212. package/node_modules/@noodle-borg/service/dist/registry.js.map +1 -1
  213. package/node_modules/@noodle-borg/service/dist/routes/archive.d.ts.map +1 -1
  214. package/node_modules/@noodle-borg/service/dist/routes/archive.js +18 -1
  215. package/node_modules/@noodle-borg/service/dist/routes/archive.js.map +1 -1
  216. package/node_modules/@noodle-borg/service/dist/routes/assistant-dispatch.d.ts.map +1 -1
  217. package/node_modules/@noodle-borg/service/dist/routes/assistant-dispatch.js +10 -1
  218. package/node_modules/@noodle-borg/service/dist/routes/assistant-dispatch.js.map +1 -1
  219. package/node_modules/@noodle-borg/service/dist/routes/assistant.d.ts +2 -0
  220. package/node_modules/@noodle-borg/service/dist/routes/assistant.d.ts.map +1 -1
  221. package/node_modules/@noodle-borg/service/dist/routes/assistant.js +85 -0
  222. package/node_modules/@noodle-borg/service/dist/routes/assistant.js.map +1 -1
  223. package/node_modules/@noodle-borg/service/dist/routes/billing-enforcement-activation.d.ts +15 -0
  224. package/node_modules/@noodle-borg/service/dist/routes/billing-enforcement-activation.d.ts.map +1 -0
  225. package/node_modules/@noodle-borg/service/dist/routes/billing-enforcement-activation.js +197 -0
  226. package/node_modules/@noodle-borg/service/dist/routes/billing-enforcement-activation.js.map +1 -0
  227. package/node_modules/@noodle-borg/service/dist/routes/billing-production-app-response.d.ts +15 -0
  228. package/node_modules/@noodle-borg/service/dist/routes/billing-production-app-response.d.ts.map +1 -0
  229. package/node_modules/@noodle-borg/service/dist/routes/billing-production-app-response.js +33 -0
  230. package/node_modules/@noodle-borg/service/dist/routes/billing-production-app-response.js.map +1 -0
  231. package/node_modules/@noodle-borg/service/dist/routes/billing-read.d.ts +2 -0
  232. package/node_modules/@noodle-borg/service/dist/routes/billing-read.d.ts.map +1 -1
  233. package/node_modules/@noodle-borg/service/dist/routes/billing-read.js +203 -41
  234. package/node_modules/@noodle-borg/service/dist/routes/billing-read.js.map +1 -1
  235. package/node_modules/@noodle-borg/service/dist/routes/commercial-dispatch.d.ts +4 -0
  236. package/node_modules/@noodle-borg/service/dist/routes/commercial-dispatch.d.ts.map +1 -1
  237. package/node_modules/@noodle-borg/service/dist/routes/commercial-dispatch.js +25 -0
  238. package/node_modules/@noodle-borg/service/dist/routes/commercial-dispatch.js.map +1 -1
  239. package/node_modules/@noodle-borg/service/dist/routes/commercial-service-deps.d.ts +1 -0
  240. package/node_modules/@noodle-borg/service/dist/routes/commercial-service-deps.d.ts.map +1 -1
  241. package/node_modules/@noodle-borg/service/dist/routes/commercial-service-deps.js +9 -1
  242. package/node_modules/@noodle-borg/service/dist/routes/commercial-service-deps.js.map +1 -1
  243. package/node_modules/@noodle-borg/service/dist/routes/control-plane.d.ts.map +1 -1
  244. package/node_modules/@noodle-borg/service/dist/routes/control-plane.js +22 -6
  245. package/node_modules/@noodle-borg/service/dist/routes/control-plane.js.map +1 -1
  246. package/node_modules/@noodle-borg/service/dist/routes/rollback.d.ts.map +1 -1
  247. package/node_modules/@noodle-borg/service/dist/routes/rollback.js +19 -1
  248. package/node_modules/@noodle-borg/service/dist/routes/rollback.js.map +1 -1
  249. package/node_modules/@noodle-borg/service/dist/serve.d.ts.map +1 -1
  250. package/node_modules/@noodle-borg/service/dist/serve.js +41 -1
  251. package/node_modules/@noodle-borg/service/dist/serve.js.map +1 -1
  252. package/node_modules/@noodle-borg/service/dist/service.d.ts.map +1 -1
  253. package/node_modules/@noodle-borg/service/dist/service.js +6 -3
  254. package/node_modules/@noodle-borg/service/dist/service.js.map +1 -1
  255. package/node_modules/@noodle-borg/service/dist/store/cloudsql-pool.js +3 -3
  256. package/node_modules/@noodle-borg/service/dist/store/cloudsql-pool.js.map +1 -1
  257. package/node_modules/@noodle-borg/service/dist/store/postgres-apps.d.ts +5 -7
  258. package/node_modules/@noodle-borg/service/dist/store/postgres-apps.d.ts.map +1 -1
  259. package/node_modules/@noodle-borg/service/dist/store/postgres-apps.js +71 -0
  260. package/node_modules/@noodle-borg/service/dist/store/postgres-apps.js.map +1 -1
  261. package/node_modules/@noodle-borg/service/dist/store/postgres-github-runs.d.ts.map +1 -1
  262. package/node_modules/@noodle-borg/service/dist/store/postgres-github-runs.js +7 -0
  263. package/node_modules/@noodle-borg/service/dist/store/postgres-github-runs.js.map +1 -1
  264. package/node_modules/@noodle-borg/service/dist/store/postgres-schema.d.ts.map +1 -1
  265. package/node_modules/@noodle-borg/service/dist/store/postgres-schema.js +5 -0
  266. package/node_modules/@noodle-borg/service/dist/store/postgres-schema.js.map +1 -1
  267. package/node_modules/@noodle-borg/service/dist/store/postgres.d.ts.map +1 -1
  268. package/node_modules/@noodle-borg/service/dist/store/postgres.js +29 -34
  269. package/node_modules/@noodle-borg/service/dist/store/postgres.js.map +1 -1
  270. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interaction-bootstrap.js","sourceRoot":"","sources":["../../src/widget/interaction-bootstrap.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,MAAM,CAAC,MAAM,yBAAyB,GAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8KhD,CAAC"}
@@ -1,5 +1,5 @@
1
1
  /** Why a tool call could not be fulfilled. Protocol and embedded adapters map this internal contract. */
2
- export type ExecutionErrorCode = 'shape_only_artifact' | 'unknown_tool' | 'unknown_resource' | 'unknown_prompt' | 'unsupported_fulfilment' | 'connector_unavailable' | 'credential_unavailable' | 'signature_drift' | 'policy_denied' | 'policy_error' | 'dispatch_denied' | 'execution_admission_error' | 'execution_cancelled' | 'arg_invalid' | 'invalid_continuation' | 'invalid_elicitation_flow' | 'invalid_confirmation_flow' | 'expression_error' | 'circular_call_dependency' | 'connector_error' | 'output_invalid';
2
+ export type ExecutionErrorCode = 'shape_only_artifact' | 'unknown_tool' | 'unknown_resource' | 'unknown_prompt' | 'unsupported_fulfilment' | 'connector_unavailable' | 'credential_unavailable' | 'signature_drift' | 'policy_denied' | 'policy_error' | 'dispatch_denied' | 'usage_limit_exceeded' | 'duplicate_execution_suppressed' | 'execution_admission_error' | 'execution_cancelled' | 'arg_invalid' | 'invalid_continuation' | 'invalid_elicitation_flow' | 'invalid_confirmation_flow' | 'expression_error' | 'circular_call_dependency' | 'connector_error' | 'output_invalid';
3
3
  /** A typed execution failure. `path` locates the offending field/expression when applicable and
4
4
  * never carries a sensitive value. */
5
5
  export interface ExecutionError {
@@ -8,6 +8,8 @@ export interface ExecutionError {
8
8
  readonly path?: string;
9
9
  /** Stable, allowlisted machine-readable detail. Never an upstream error message. */
10
10
  readonly reason?: string;
11
+ /** Safe monthly-allowance reset instant, present only for commercial usage denial. */
12
+ readonly resetAt?: string;
11
13
  /** Safe remediation text intended for a developer or agent. */
12
14
  readonly fix?: string;
13
15
  /** Safe follow-up commands or actions. */
@@ -1 +1 @@
1
- {"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../src/result.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../src/result.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"result.js","sourceRoot":"","sources":["../src/result.ts"],"names":[],"mappings":"AAuKA,MAAM,UAAU,eAAe,CAC7B,MAAkC;IAElC,OAAO,MAAM,CAAC,MAAM,KAAK,gBAAgB,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC5C,MAAqC;IAErC,OAAO,MAAM,CAAC,MAAM,KAAK,gBAAgB,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,MAAqC;IAErC,OAAO,MAAM,CAAC,MAAM,KAAK,uBAAuB,CAAC;AACnD,CAAC"}
1
+ {"version":3,"file":"result.js","sourceRoot":"","sources":["../src/result.ts"],"names":[],"mappings":"AA2KA,MAAM,UAAU,eAAe,CAC7B,MAAkC;IAElC,OAAO,MAAM,CAAC,MAAM,KAAK,gBAAgB,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC5C,MAAqC;IAErC,OAAO,MAAM,CAAC,MAAM,KAAK,gBAAgB,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,MAAqC;IAErC,OAAO,MAAM,CAAC,MAAM,KAAK,uBAAuB,CAAC;AACnD,CAAC"}
@@ -9,6 +9,16 @@ export type ToolDispatchDecision = {
9
9
  readonly allow: false;
10
10
  /** Safe to surface; must not contain request data. */
11
11
  readonly reason: string;
12
+ readonly kind?: undefined;
13
+ } | {
14
+ readonly allow: false;
15
+ readonly reason: 'billing_usage_limit_exceeded';
16
+ readonly kind: 'usage_limit_exceeded';
17
+ readonly resetAt: string;
18
+ } | {
19
+ readonly allow: false;
20
+ readonly reason: 'billing_usage_duplicate_suppressed';
21
+ readonly kind: 'duplicate_execution_suppressed';
12
22
  };
13
23
  /** Called at each connector boundary; request adapters may wrap it to admit one logical call once. */
14
24
  export type ToolDispatchHook = (context: ToolDispatchContext) => ToolDispatchDecision | Promise<ToolDispatchDecision>;
@@ -1 +1 @@
1
- {"version":3,"file":"tool-dispatch.d.ts","sourceRoot":"","sources":["../src/tool-dispatch.ts"],"names":[],"mappings":"AAAA,+FAA+F;AAC/F,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,oGAAoG;AACpG,MAAM,MAAM,oBAAoB,GAC5B;IAAE,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAA;CAAE,GACxB;IACE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,sDAAsD;IACtD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;AAEN,sGAAsG;AACtG,MAAM,MAAM,gBAAgB,GAAG,CAC7B,OAAO,EAAE,mBAAmB,KACzB,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAI1D,kFAAkF;AAClF,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,gBAAgB,GAAG,SAAS,EAClC,MAAM,EAAE,WAAW,GAAG,SAAS,GAC9B,gBAAgB,GAAG,SAAS,CAU9B;AAED,uGAAuG;AACvG,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,gBAAgB,GAAG,SAAS,EAClC,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAchC;AAED,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"tool-dispatch.d.ts","sourceRoot":"","sources":["../src/tool-dispatch.ts"],"names":[],"mappings":"AAAA,+FAA+F;AAC/F,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,oGAAoG;AACpG,MAAM,MAAM,oBAAoB,GAC5B;IAAE,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAA;CAAE,GACxB;IACE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,sDAAsD;IACtD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC;CAC3B,GACD;IACE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,8BAA8B,CAAC;IAChD,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,GACD;IACE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,oCAAoC,CAAC;IACtD,QAAQ,CAAC,IAAI,EAAE,gCAAgC,CAAC;CACjD,CAAC;AAEN,sGAAsG;AACtG,MAAM,MAAM,gBAAgB,GAAG,CAC7B,OAAO,EAAE,mBAAmB,KACzB,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAI1D,kFAAkF;AAClF,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,gBAAgB,GAAG,SAAS,EAClC,MAAM,EAAE,WAAW,GAAG,SAAS,GAC9B,gBAAgB,GAAG,SAAS,CAU9B;AAED,uGAAuG;AACvG,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,gBAAgB,GAAG,SAAS,EAClC,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAgChC;AAUD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC"}
@@ -20,7 +20,25 @@ export async function admitToolDispatch(hook, context) {
20
20
  return null;
21
21
  try {
22
22
  const decision = await hook(context);
23
- return decision.allow ? null : { code: 'dispatch_denied', message: decision.reason };
23
+ if (decision.allow)
24
+ return null;
25
+ if (decision.kind === 'usage_limit_exceeded') {
26
+ const resetAt = normalizeResetAt(decision.resetAt);
27
+ return {
28
+ code: 'usage_limit_exceeded',
29
+ message: `Monthly MCP call limit reached. Usage resets at ${resetAt}.`,
30
+ reason: decision.reason,
31
+ resetAt,
32
+ };
33
+ }
34
+ if (decision.kind === 'duplicate_execution_suppressed') {
35
+ return {
36
+ code: 'duplicate_execution_suppressed',
37
+ message: 'This retry was already admitted. Duplicate connector execution was suppressed; verify the original side effect before issuing a new request.',
38
+ reason: decision.reason,
39
+ };
40
+ }
41
+ return { code: 'dispatch_denied', message: decision.reason };
24
42
  }
25
43
  catch (error) {
26
44
  if (error instanceof ToolDispatchCancelled) {
@@ -32,4 +50,11 @@ export async function admitToolDispatch(hook, context) {
32
50
  return { code: 'execution_admission_error', message: 'tool execution admission failed' };
33
51
  }
34
52
  }
53
+ function normalizeResetAt(value) {
54
+ const parsed = new Date(value);
55
+ if (!Number.isFinite(parsed.getTime()) || parsed.toISOString() !== value) {
56
+ throw new Error('usage-limit reset time is invalid');
57
+ }
58
+ return value;
59
+ }
35
60
  //# sourceMappingURL=tool-dispatch.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tool-dispatch.js","sourceRoot":"","sources":["../src/tool-dispatch.ts"],"names":[],"mappings":"AAmBA,MAAM,qBAAsB,SAAQ,KAAK;CAAG;AAE5C,kFAAkF;AAClF,MAAM,UAAU,0BAA0B,CACxC,IAAkC,EAClC,MAA+B;IAE/B,IAAI,IAAI,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACjE,IAAI,OAAkD,CAAC;IACvD,OAAO,CAAC,OAAO,EAAE,EAAE;QACjB,OAAO,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;YACtC,IAAI,MAAM,EAAE,OAAO;gBAAE,MAAM,IAAI,qBAAqB,EAAE,CAAC;YACvD,OAAO,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;AACJ,CAAC;AAED,uGAAuG;AACvG,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAAkC,EAClC,OAA4B;IAE5B,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACpC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;QACrC,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IACvF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,qBAAqB,EAAE,CAAC;YAC3C,OAAO;gBACL,IAAI,EAAE,qBAAqB;gBAC3B,OAAO,EAAE,wDAAwD;aAClE,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,2BAA2B,EAAE,OAAO,EAAE,iCAAiC,EAAE,CAAC;IAC3F,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"tool-dispatch.js","sourceRoot":"","sources":["../src/tool-dispatch.ts"],"names":[],"mappings":"AA+BA,MAAM,qBAAsB,SAAQ,KAAK;CAAG;AAE5C,kFAAkF;AAClF,MAAM,UAAU,0BAA0B,CACxC,IAAkC,EAClC,MAA+B;IAE/B,IAAI,IAAI,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACjE,IAAI,OAAkD,CAAC;IACvD,OAAO,CAAC,OAAO,EAAE,EAAE;QACjB,OAAO,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;YACtC,IAAI,MAAM,EAAE,OAAO;gBAAE,MAAM,IAAI,qBAAqB,EAAE,CAAC;YACvD,OAAO,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;AACJ,CAAC;AAED,uGAAuG;AACvG,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAAkC,EAClC,OAA4B;IAE5B,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACpC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,QAAQ,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAChC,IAAI,QAAQ,CAAC,IAAI,KAAK,sBAAsB,EAAE,CAAC;YAC7C,MAAM,OAAO,GAAG,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACnD,OAAO;gBACL,IAAI,EAAE,sBAAsB;gBAC5B,OAAO,EAAE,mDAAmD,OAAO,GAAG;gBACtE,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,OAAO;aACR,CAAC;QACJ,CAAC;QACD,IAAI,QAAQ,CAAC,IAAI,KAAK,gCAAgC,EAAE,CAAC;YACvD,OAAO;gBACL,IAAI,EAAE,gCAAgC;gBACtC,OAAO,EACL,8IAA8I;gBAChJ,MAAM,EAAE,QAAQ,CAAC,MAAM;aACxB,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IAC/D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,qBAAqB,EAAE,CAAC;YAC3C,OAAO;gBACL,IAAI,EAAE,qBAAqB;gBAC3B,OAAO,EAAE,wDAAwD;aAClE,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,2BAA2B,EAAE,OAAO,EAAE,iCAAiC,EAAE,CAAC;IAC3F,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAa;IACrC,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,IAAI,MAAM,CAAC,WAAW,EAAE,KAAK,KAAK,EAAE,CAAC;QACzE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,46 @@
1
+ import type { HostedToolDispatchHook, Logger } from '@noodle-borg/transport-http';
2
+ import type { AuditEventInput } from '../store/audit.js';
3
+ import { type BillingUsageDispatchIdentity } from './usage-identity.js';
4
+ export interface BillingAuthoritativeAdmissionInput {
5
+ readonly org: string;
6
+ readonly app: string;
7
+ readonly environment: string;
8
+ readonly deploymentId: string;
9
+ readonly identity: BillingUsageDispatchIdentity;
10
+ }
11
+ export type BillingAuthoritativeAdmissionResult = {
12
+ readonly outcome: 'bypass';
13
+ readonly reason: 'cohort_unsealed' | 'legacy_internal_exempt' | 'not_activated' | 'rolled_back';
14
+ } | {
15
+ readonly outcome: 'admitted';
16
+ readonly receiptOutcome: 'recorded' | 'duplicate';
17
+ readonly classification: 'included' | 'overage';
18
+ readonly resetAt: string;
19
+ } | {
20
+ readonly outcome: 'denied';
21
+ readonly reason: 'billing_usage_limit_exceeded';
22
+ readonly resetAt: string;
23
+ };
24
+ /** Durable fail-closed admission port at the first connector-dispatch boundary. */
25
+ export interface BillingAuthoritativeAdmissionStore {
26
+ admit(input: BillingAuthoritativeAdmissionInput): Promise<BillingAuthoritativeAdmissionResult>;
27
+ }
28
+ export declare class BillingAuthoritativeAdmissionUnavailableError extends Error {
29
+ readonly code: "billing_authoritative_admission_unavailable";
30
+ constructor();
31
+ }
32
+ export declare class BillingAuthoritativeIdempotencyConflictError extends Error {
33
+ readonly code: "billing_authoritative_idempotency_conflict";
34
+ constructor();
35
+ }
36
+ /**
37
+ * Derive privacy-safe retry identity, then preserve the store's portable quota denial while allowing
38
+ * infrastructure failures to reach the runtime's fail-closed admission-error mapping.
39
+ */
40
+ export declare function createAuthoritativeBillingDispatch(input: {
41
+ readonly store: BillingAuthoritativeAdmissionStore;
42
+ readonly hmacKey: string;
43
+ readonly logger: Logger;
44
+ readonly audit?: (event: AuditEventInput) => Promise<void>;
45
+ }): HostedToolDispatchHook;
46
+ //# sourceMappingURL=authoritative-admission.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authoritative-admission.d.ts","sourceRoot":"","sources":["../../src/billing/authoritative-admission.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,sBAAsB,EACtB,MAAM,EACP,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EACL,KAAK,4BAA4B,EAElC,MAAM,qBAAqB,CAAC;AAE7B,MAAM,WAAW,kCAAkC;IACjD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,4BAA4B,CAAC;CACjD;AAED,MAAM,MAAM,mCAAmC,GAC3C;IACE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC;IAC3B,QAAQ,CAAC,MAAM,EACX,iBAAiB,GACjB,wBAAwB,GACxB,eAAe,GACf,aAAa,CAAC;CACnB,GACD;IACE,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,UAAU,GAAG,WAAW,CAAC;IAClD,QAAQ,CAAC,cAAc,EAAE,UAAU,GAAG,SAAS,CAAC;IAChD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,GACD;IACE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,8BAA8B,CAAC;IAChD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEN,mFAAmF;AACnF,MAAM,WAAW,kCAAkC;IACjD,KAAK,CAAC,KAAK,EAAE,kCAAkC,GAAG,OAAO,CAAC,mCAAmC,CAAC,CAAC;CAChG;AAED,qBAAa,6CAA8C,SAAQ,KAAK;IACtE,QAAQ,CAAC,IAAI,EAAG,6CAA6C,CAAU;;CAMxE;AAED,qBAAa,4CAA6C,SAAQ,KAAK;IACrE,QAAQ,CAAC,IAAI,EAAG,4CAA4C,CAAU;;CAMvE;AAED;;;GAGG;AACH,wBAAgB,kCAAkC,CAAC,KAAK,EAAE;IACxD,QAAQ,CAAC,KAAK,EAAE,kCAAkC,CAAC;IACnD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5D,GAAG,sBAAsB,CAuDzB"}
@@ -0,0 +1,111 @@
1
+ import { createBillingUsageIdentityDeriver, } from './usage-identity.js';
2
+ export class BillingAuthoritativeAdmissionUnavailableError extends Error {
3
+ code = 'billing_authoritative_admission_unavailable';
4
+ constructor() {
5
+ super('authoritative billing admission is temporarily unavailable');
6
+ this.name = 'BillingAuthoritativeAdmissionUnavailableError';
7
+ }
8
+ }
9
+ export class BillingAuthoritativeIdempotencyConflictError extends Error {
10
+ code = 'billing_authoritative_idempotency_conflict';
11
+ constructor() {
12
+ super('billing usage execution key was reused for different invocation semantics');
13
+ this.name = 'BillingAuthoritativeIdempotencyConflictError';
14
+ }
15
+ }
16
+ /**
17
+ * Derive privacy-safe retry identity, then preserve the store's portable quota denial while allowing
18
+ * infrastructure failures to reach the runtime's fail-closed admission-error mapping.
19
+ */
20
+ export function createAuthoritativeBillingDispatch(input) {
21
+ const deriveIdentity = createBillingUsageIdentityDeriver(input.hmacKey);
22
+ return async (context) => {
23
+ try {
24
+ const result = await input.store.admit({
25
+ org: context.org,
26
+ app: context.app,
27
+ environment: context.environment,
28
+ deploymentId: context.deploymentId,
29
+ identity: deriveIdentity(context),
30
+ });
31
+ if (result.outcome === 'bypass')
32
+ return { allow: true };
33
+ if (result.outcome === 'admitted' && result.receiptOutcome === 'recorded') {
34
+ return { allow: true };
35
+ }
36
+ if (result.outcome === 'admitted') {
37
+ await input.audit?.({
38
+ eventType: 'billing.usage.duplicate_suppressed',
39
+ org: context.org,
40
+ app: context.app,
41
+ env: context.environment,
42
+ deploymentId: context.deploymentId,
43
+ decision: 'deny',
44
+ status: 409,
45
+ reasonCode: 'billing_usage_duplicate_suppressed',
46
+ });
47
+ return {
48
+ allow: false,
49
+ reason: 'billing_usage_duplicate_suppressed',
50
+ kind: 'duplicate_execution_suppressed',
51
+ };
52
+ }
53
+ await input.audit?.({
54
+ eventType: 'billing.usage.denied',
55
+ org: context.org,
56
+ app: context.app,
57
+ env: context.environment,
58
+ deploymentId: context.deploymentId,
59
+ decision: 'deny',
60
+ status: 429,
61
+ reasonCode: result.reason,
62
+ details: { resetAt: result.resetAt },
63
+ });
64
+ return {
65
+ allow: false,
66
+ reason: result.reason,
67
+ kind: 'usage_limit_exceeded',
68
+ resetAt: result.resetAt,
69
+ };
70
+ }
71
+ catch (error) {
72
+ await emitUnavailableAudit(input.audit, context);
73
+ warnAdmissionFailure(input.logger, context, error);
74
+ throw error;
75
+ }
76
+ };
77
+ }
78
+ async function emitUnavailableAudit(audit, context) {
79
+ if (audit === undefined)
80
+ return;
81
+ try {
82
+ await audit({
83
+ eventType: 'billing.usage.enforcement_unavailable',
84
+ org: context.org,
85
+ app: context.app,
86
+ env: context.environment,
87
+ deploymentId: context.deploymentId,
88
+ decision: 'deny',
89
+ status: 503,
90
+ reasonCode: 'billing_authoritative_admission_unavailable',
91
+ });
92
+ }
93
+ catch {
94
+ // Preserve the original fail-closed admission failure if the audit sink is also unavailable.
95
+ }
96
+ }
97
+ function warnAdmissionFailure(logger, context, error) {
98
+ try {
99
+ logger.warn('billing.usage.authoritative_admission_failed', {
100
+ org: context.org,
101
+ app: context.app,
102
+ env: context.environment,
103
+ deploymentId: context.deploymentId,
104
+ errorKind: error instanceof Error ? error.name : 'unknown',
105
+ });
106
+ }
107
+ catch {
108
+ // Diagnostics must not replace the original fail-closed admission error.
109
+ }
110
+ }
111
+ //# sourceMappingURL=authoritative-admission.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authoritative-admission.js","sourceRoot":"","sources":["../../src/billing/authoritative-admission.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,80 @@
1
+ export type BillingCommercialEnforcementScope = {
2
+ readonly kind: 'billing_account';
3
+ readonly billingAccountId: string;
4
+ } | {
5
+ readonly kind: 'organization';
6
+ readonly org: string;
7
+ };
8
+ export interface BillingCommercialSnapshotBinding {
9
+ readonly snapshotId: string;
10
+ readonly version: number;
11
+ readonly contentChecksum: string;
12
+ }
13
+ export interface BillingCommercialProductionAppUsage {
14
+ readonly active: number;
15
+ readonly limit: number;
16
+ }
17
+ export interface BillingCommercialEnforcementUsage {
18
+ readonly includedLimitCalls: number;
19
+ readonly includedUsedCalls: number;
20
+ readonly overageUsedCalls: number;
21
+ readonly totalUsedCalls: number;
22
+ readonly includedRemainingCalls: number;
23
+ readonly overageAllowed: boolean;
24
+ readonly countingSince: string;
25
+ readonly windowStart: string;
26
+ readonly windowEnd: string;
27
+ readonly resetAt: string;
28
+ }
29
+ export interface BillingCommercialOrganizationUsage {
30
+ readonly includedUsedCalls: number;
31
+ readonly overageUsedCalls: number;
32
+ readonly totalUsedCalls: number;
33
+ readonly countingSince: string;
34
+ readonly windowStart: string;
35
+ readonly windowEnd: string;
36
+ readonly resetAt: string;
37
+ }
38
+ export type BillingCommercialEnforcementUnavailableReason = 'authority_inconsistent' | 'profile_inconsistent' | 'snapshot_inconsistent' | 'counter_inconsistent' | 'window_inconsistent' | 'meter_unavailable';
39
+ type InactiveProjection = {
40
+ readonly state: 'inactive';
41
+ readonly reason: 'not_activated' | 'rolled_back';
42
+ readonly scope: BillingCommercialEnforcementScope;
43
+ };
44
+ type ActiveProjectionBase = {
45
+ readonly state: 'active';
46
+ readonly meteringMode: 'authoritative';
47
+ };
48
+ export type BillingCommercialEnforcementProjection = {
49
+ readonly state: 'unconfigured';
50
+ readonly scope: BillingCommercialEnforcementScope;
51
+ } | InactiveProjection | {
52
+ readonly state: 'exempt';
53
+ readonly reason: 'legacy_internal_exempt';
54
+ readonly scope: BillingCommercialEnforcementScope;
55
+ } | (ActiveProjectionBase & {
56
+ readonly scope: Extract<BillingCommercialEnforcementScope, {
57
+ readonly kind: 'billing_account';
58
+ }>;
59
+ readonly usage: BillingCommercialEnforcementUsage;
60
+ /** Internal consistency token; route serializers must not expose it. */
61
+ readonly snapshotBinding: BillingCommercialSnapshotBinding;
62
+ readonly productionApps: BillingCommercialProductionAppUsage;
63
+ }) | (ActiveProjectionBase & {
64
+ readonly scope: Extract<BillingCommercialEnforcementScope, {
65
+ readonly kind: 'organization';
66
+ }>;
67
+ readonly usage: BillingCommercialOrganizationUsage;
68
+ /** Organization count plus the shared limit; never the payer's pooled active count. */
69
+ readonly productionApps: BillingCommercialProductionAppUsage;
70
+ }) | {
71
+ readonly state: 'unavailable';
72
+ readonly reason: BillingCommercialEnforcementUnavailableReason;
73
+ readonly scope: BillingCommercialEnforcementScope;
74
+ };
75
+ /** Read-only commercial authority projection; it never changes admission or billing state. */
76
+ export interface BillingCommercialEnforcementProjectionStore {
77
+ getCommercialEnforcementProjection(scope: BillingCommercialEnforcementScope, expectedSnapshotBinding?: BillingCommercialSnapshotBinding): Promise<BillingCommercialEnforcementProjection>;
78
+ }
79
+ export {};
80
+ //# sourceMappingURL=commercial-enforcement-projection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commercial-enforcement-projection.d.ts","sourceRoot":"","sources":["../../src/billing/commercial-enforcement-projection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=commercial-enforcement-projection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commercial-enforcement-projection.js","sourceRoot":"","sources":["../../src/billing/commercial-enforcement-projection.ts"],"names":[],"mappings":""}
@@ -0,0 +1,18 @@
1
+ export interface BillingCommercialUsageEntitlements {
2
+ readonly includedCalls: number;
3
+ readonly overageAllowed: boolean;
4
+ }
5
+ export declare const BILLING_COMMERCIAL_FREE_V1_INCLUDED_CALLS = 1000000;
6
+ export declare const BILLING_COMMERCIAL_FREE_V1_PRODUCTION_APPS = 1;
7
+ export interface BillingCommercialFreeV1Entitlements extends BillingCommercialUsageEntitlements {
8
+ readonly productionAppLimit: typeof BILLING_COMMERCIAL_FREE_V1_PRODUCTION_APPS;
9
+ }
10
+ export declare class BillingCommercialEntitlementError extends Error {
11
+ constructor();
12
+ }
13
+ /** Canonical parser shared by admission and read projections for verified commercial snapshots. */
14
+ export declare function parseBillingCommercialUsageEntitlements(value: unknown): BillingCommercialUsageEntitlements;
15
+ /** Require the exact commercial tuple supported by the Free-v1 activation contract. */
16
+ export declare function parseBillingCommercialFreeV1Entitlements(value: unknown): BillingCommercialFreeV1Entitlements;
17
+ export declare function isBillingCommercialFreeV1Entitlements(value: unknown): boolean;
18
+ //# sourceMappingURL=commercial-entitlements.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commercial-entitlements.d.ts","sourceRoot":"","sources":["../../src/billing/commercial-entitlements.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kCAAkC;IACjD,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;CAClC;AAED,eAAO,MAAM,yCAAyC,UAAY,CAAC;AACnE,eAAO,MAAM,0CAA0C,IAAI,CAAC;AAE5D,MAAM,WAAW,mCAAoC,SAAQ,kCAAkC;IAC7F,QAAQ,CAAC,kBAAkB,EAAE,OAAO,0CAA0C,CAAC;CAChF;AAED,qBAAa,iCAAkC,SAAQ,KAAK;;CAK3D;AAED,mGAAmG;AACnG,wBAAgB,uCAAuC,CACrD,KAAK,EAAE,OAAO,GACb,kCAAkC,CAapC;AAED,uFAAuF;AACvF,wBAAgB,wCAAwC,CACtD,KAAK,EAAE,OAAO,GACb,mCAAmC,CAWrC;AAED,wBAAgB,qCAAqC,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAQ7E"}
@@ -0,0 +1,51 @@
1
+ export const BILLING_COMMERCIAL_FREE_V1_INCLUDED_CALLS = 1_000_000;
2
+ export const BILLING_COMMERCIAL_FREE_V1_PRODUCTION_APPS = 1;
3
+ export class BillingCommercialEntitlementError extends Error {
4
+ constructor() {
5
+ super('commercial usage entitlements are invalid');
6
+ this.name = 'BillingCommercialEntitlementError';
7
+ }
8
+ }
9
+ /** Canonical parser shared by admission and read projections for verified commercial snapshots. */
10
+ export function parseBillingCommercialUsageEntitlements(value) {
11
+ if (value === null || typeof value !== 'object' || Array.isArray(value))
12
+ throw invalid();
13
+ const record = value;
14
+ const included = record['usage.mcp_calls.included'];
15
+ if (!Number.isSafeInteger(included) || included < 1)
16
+ throw invalid();
17
+ const overage = record['usage.mcp_calls.overage'];
18
+ if (overage === false) {
19
+ return { includedCalls: included, overageAllowed: false };
20
+ }
21
+ if (overage === true || (typeof overage === 'string' && overage.trim().length > 0)) {
22
+ return { includedCalls: included, overageAllowed: true };
23
+ }
24
+ throw invalid();
25
+ }
26
+ /** Require the exact commercial tuple supported by the Free-v1 activation contract. */
27
+ export function parseBillingCommercialFreeV1Entitlements(value) {
28
+ const usage = parseBillingCommercialUsageEntitlements(value);
29
+ const record = value;
30
+ if (usage.includedCalls !== BILLING_COMMERCIAL_FREE_V1_INCLUDED_CALLS ||
31
+ usage.overageAllowed ||
32
+ record['apps.production.max'] !== BILLING_COMMERCIAL_FREE_V1_PRODUCTION_APPS) {
33
+ throw invalid();
34
+ }
35
+ return { ...usage, productionAppLimit: BILLING_COMMERCIAL_FREE_V1_PRODUCTION_APPS };
36
+ }
37
+ export function isBillingCommercialFreeV1Entitlements(value) {
38
+ try {
39
+ parseBillingCommercialFreeV1Entitlements(value);
40
+ return true;
41
+ }
42
+ catch (error) {
43
+ if (error instanceof BillingCommercialEntitlementError)
44
+ return false;
45
+ throw error;
46
+ }
47
+ }
48
+ function invalid() {
49
+ return new BillingCommercialEntitlementError();
50
+ }
51
+ //# sourceMappingURL=commercial-entitlements.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commercial-entitlements.js","sourceRoot":"","sources":["../../src/billing/commercial-entitlements.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,yCAAyC,GAAG,SAAS,CAAC;AACnE,MAAM,CAAC,MAAM,0CAA0C,GAAG,CAAC,CAAC;AAM5D,MAAM,OAAO,iCAAkC,SAAQ,KAAK;IAC1D;QACE,KAAK,CAAC,2CAA2C,CAAC,CAAC;QACnD,IAAI,CAAC,IAAI,GAAG,mCAAmC,CAAC;IAClD,CAAC;CACF;AAED,mGAAmG;AACnG,MAAM,UAAU,uCAAuC,CACrD,KAAc;IAEd,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,OAAO,EAAE,CAAC;IACzF,MAAM,MAAM,GAAG,KAAgC,CAAC;IAChD,MAAM,QAAQ,GAAG,MAAM,CAAC,0BAA0B,CAAC,CAAC;IACpD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAK,QAAmB,GAAG,CAAC;QAAE,MAAM,OAAO,EAAE,CAAC;IACjF,MAAM,OAAO,GAAG,MAAM,CAAC,yBAAyB,CAAC,CAAC;IAClD,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;QACtB,OAAO,EAAE,aAAa,EAAE,QAAkB,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;IACtE,CAAC;IACD,IAAI,OAAO,KAAK,IAAI,IAAI,CAAC,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;QACnF,OAAO,EAAE,aAAa,EAAE,QAAkB,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;IACrE,CAAC;IACD,MAAM,OAAO,EAAE,CAAC;AAClB,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,wCAAwC,CACtD,KAAc;IAEd,MAAM,KAAK,GAAG,uCAAuC,CAAC,KAAK,CAAC,CAAC;IAC7D,MAAM,MAAM,GAAG,KAAgC,CAAC;IAChD,IACE,KAAK,CAAC,aAAa,KAAK,yCAAyC;QACjE,KAAK,CAAC,cAAc;QACpB,MAAM,CAAC,qBAAqB,CAAC,KAAK,0CAA0C,EAC5E,CAAC;QACD,MAAM,OAAO,EAAE,CAAC;IAClB,CAAC;IACD,OAAO,EAAE,GAAG,KAAK,EAAE,kBAAkB,EAAE,0CAA0C,EAAE,CAAC;AACtF,CAAC;AAED,MAAM,UAAU,qCAAqC,CAAC,KAAc;IAClE,IAAI,CAAC;QACH,wCAAwC,CAAC,KAAK,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,iCAAiC;YAAE,OAAO,KAAK,CAAC;QACrE,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,OAAO;IACd,OAAO,IAAI,iCAAiC,EAAE,CAAC;AACjD,CAAC"}
@@ -0,0 +1,34 @@
1
+ import type { z } from 'zod';
2
+ import type { BillingEnforcementActivationApproval, BillingEnforcementActivationSignals } from './enforcement-activation.js';
3
+ export declare const BILLING_ENFORCEMENT_ACTIVATION_EVIDENCE_MAX_AGE_MS: Readonly<{
4
+ trafficFleetConvergence: number;
5
+ planVolumeCapacity: number;
6
+ nonproductionFailClosedDrill: number;
7
+ protectedProductionApproval: number;
8
+ }>;
9
+ export declare const BILLING_ENFORCEMENT_ACTIVATION_EFFECTS: Readonly<{
10
+ profileScope: "enforced";
11
+ commercialScope: "free_v1";
12
+ paidPlans: false;
13
+ startsFreshAuthoritativeEpochAtZero: true;
14
+ productionAppEnforcement: true;
15
+ legacyInternalExemptBypass: true;
16
+ stripe: false;
17
+ migrationGrants: false;
18
+ invoiceEvidence: false;
19
+ }>;
20
+ export declare function validateActivationStatus(status: {
21
+ readonly state: 'not_activated' | 'active' | 'rolled_back';
22
+ readonly generation: number;
23
+ readonly activeEpochId: string | null;
24
+ readonly lastEpochId: string | null;
25
+ readonly activatedAt: string | null;
26
+ readonly rolledBackAt: string | null;
27
+ readonly activationServiceReleaseSha: string | null;
28
+ readonly admissionContractVersion: number | null;
29
+ readonly approvalChecksum: string | null;
30
+ }, context: z.RefinementCtx): void;
31
+ export declare function normalizeActivationSignals(signals: BillingEnforcementActivationSignals): BillingEnforcementActivationSignals;
32
+ export declare function activationEvidenceIsCurrent(approval: BillingEnforcementActivationApproval, checkedAt: string): boolean;
33
+ export declare function hasActivationControlCharacters(value: string): boolean;
34
+ //# sourceMappingURL=enforcement-activation-support.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enforcement-activation-support.d.ts","sourceRoot":"","sources":["../../src/billing/enforcement-activation-support.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EACV,oCAAoC,EACpC,mCAAmC,EACpC,MAAM,6BAA6B,CAAC;AAErC,eAAO,MAAM,kDAAkD;;;;;EAK7D,CAAC;AAEH,eAAO,MAAM,sCAAsC;;;;;;;;;;EAUjD,CAAC;AAEH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE;IACN,QAAQ,CAAC,KAAK,EAAE,eAAe,GAAG,QAAQ,GAAG,aAAa,CAAC;IAC3D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,2BAA2B,EAAE,MAAM,GAAG,IAAI,CAAC;IACpD,QAAQ,CAAC,wBAAwB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjD,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1C,EACD,OAAO,EAAE,CAAC,CAAC,aAAa,GACvB,IAAI,CAkEN;AAED,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,mCAAmC,GAC3C,mCAAmC,CAgBrC;AAED,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,oCAAoC,EAC9C,SAAS,EAAE,MAAM,GAChB,OAAO,CAwBT;AAED,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAKrE"}