@noodleseed/one 0.43.0 → 0.45.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 (195) hide show
  1. package/dist/commands/billing-read-ops.d.ts.map +1 -1
  2. package/dist/commands/billing-read-ops.js +11 -10
  3. package/dist/commands/billing-read-ops.js.map +1 -1
  4. package/dist/commands/billing-read-view.d.ts +50 -0
  5. package/dist/commands/billing-read-view.d.ts.map +1 -0
  6. package/dist/commands/billing-read-view.js +69 -0
  7. package/dist/commands/billing-read-view.js.map +1 -0
  8. package/dist/commands/widget-quality-audit.d.ts +1 -1
  9. package/dist/commands/widget-quality-audit.d.ts.map +1 -1
  10. package/dist/commands/widget-quality-audit.js +11 -4
  11. package/dist/commands/widget-quality-audit.js.map +1 -1
  12. package/node_modules/@noodle-borg/agent-kit/dist/curated/error-fixes.d.ts.map +1 -1
  13. package/node_modules/@noodle-borg/agent-kit/dist/curated/error-fixes.js +2 -0
  14. package/node_modules/@noodle-borg/agent-kit/dist/curated/error-fixes.js.map +1 -1
  15. package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js +1 -1
  16. package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js.map +1 -1
  17. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.d.ts.map +1 -1
  18. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js +2 -0
  19. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js.map +1 -1
  20. package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-refs.d.ts.map +1 -1
  21. package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-refs.js +2 -0
  22. package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-refs.js.map +1 -1
  23. package/node_modules/@noodle-borg/agent-kit/package.json +1 -1
  24. package/node_modules/@noodle-borg/compiler/dist/compile.d.ts.map +1 -1
  25. package/node_modules/@noodle-borg/compiler/dist/compile.js +2 -1
  26. package/node_modules/@noodle-borg/compiler/dist/compile.js.map +1 -1
  27. package/node_modules/@noodle-borg/compiler/dist/errors.d.ts +1 -1
  28. package/node_modules/@noodle-borg/compiler/dist/errors.d.ts.map +1 -1
  29. package/node_modules/@noodle-borg/compiler/dist/index.d.ts +1 -0
  30. package/node_modules/@noodle-borg/compiler/dist/index.d.ts.map +1 -1
  31. package/node_modules/@noodle-borg/compiler/dist/index.js +1 -0
  32. package/node_modules/@noodle-borg/compiler/dist/index.js.map +1 -1
  33. package/node_modules/@noodle-borg/compiler/dist/manifest/schema.d.ts.map +1 -1
  34. package/node_modules/@noodle-borg/compiler/dist/manifest/schema.js +5 -5
  35. package/node_modules/@noodle-borg/compiler/dist/manifest/schema.js.map +1 -1
  36. package/node_modules/@noodle-borg/compiler/dist/widget-limits.d.ts +10 -0
  37. package/node_modules/@noodle-borg/compiler/dist/widget-limits.d.ts.map +1 -0
  38. package/node_modules/@noodle-borg/compiler/dist/widget-limits.js +12 -0
  39. package/node_modules/@noodle-borg/compiler/dist/widget-limits.js.map +1 -0
  40. package/node_modules/@noodle-borg/compiler/dist/widget-size-validation.d.ts +5 -0
  41. package/node_modules/@noodle-borg/compiler/dist/widget-size-validation.d.ts.map +1 -0
  42. package/node_modules/@noodle-borg/compiler/dist/widget-size-validation.js +40 -0
  43. package/node_modules/@noodle-borg/compiler/dist/widget-size-validation.js.map +1 -0
  44. package/node_modules/@noodle-borg/compiler/dist/zod-issue.d.ts.map +1 -1
  45. package/node_modules/@noodle-borg/compiler/dist/zod-issue.js +3 -0
  46. package/node_modules/@noodle-borg/compiler/dist/zod-issue.js.map +1 -1
  47. package/node_modules/@noodle-borg/protocol/dist/index.d.ts +1 -1
  48. package/node_modules/@noodle-borg/protocol/dist/index.d.ts.map +1 -1
  49. package/node_modules/@noodle-borg/protocol/dist/index.js.map +1 -1
  50. package/node_modules/@noodle-borg/protocol/dist/sdk-server.d.ts +15 -1
  51. package/node_modules/@noodle-borg/protocol/dist/sdk-server.d.ts.map +1 -1
  52. package/node_modules/@noodle-borg/protocol/dist/sdk-server.js +26 -2
  53. package/node_modules/@noodle-borg/protocol/dist/sdk-server.js.map +1 -1
  54. package/node_modules/@noodle-borg/protocol/dist/tool-interaction.d.ts +2 -2
  55. package/node_modules/@noodle-borg/protocol/dist/tool-interaction.d.ts.map +1 -1
  56. package/node_modules/@noodle-borg/runtime/dist/ambient-context.d.ts.map +1 -1
  57. package/node_modules/@noodle-borg/runtime/dist/ambient-context.js +2 -1
  58. package/node_modules/@noodle-borg/runtime/dist/ambient-context.js.map +1 -1
  59. package/node_modules/@noodle-borg/runtime/dist/confirmation.d.ts +4 -4
  60. package/node_modules/@noodle-borg/runtime/dist/confirmation.d.ts.map +1 -1
  61. package/node_modules/@noodle-borg/runtime/dist/confirmation.js +8 -4
  62. package/node_modules/@noodle-borg/runtime/dist/confirmation.js.map +1 -1
  63. package/node_modules/@noodle-borg/runtime/dist/execute.d.ts +13 -11
  64. package/node_modules/@noodle-borg/runtime/dist/execute.d.ts.map +1 -1
  65. package/node_modules/@noodle-borg/runtime/dist/execute.js +18 -57
  66. package/node_modules/@noodle-borg/runtime/dist/execute.js.map +1 -1
  67. package/node_modules/@noodle-borg/runtime/dist/index.d.ts +3 -1
  68. package/node_modules/@noodle-borg/runtime/dist/index.d.ts.map +1 -1
  69. package/node_modules/@noodle-borg/runtime/dist/index.js +2 -1
  70. package/node_modules/@noodle-borg/runtime/dist/index.js.map +1 -1
  71. package/node_modules/@noodle-borg/runtime/dist/interactive.d.ts +3 -3
  72. package/node_modules/@noodle-borg/runtime/dist/interactive.d.ts.map +1 -1
  73. package/node_modules/@noodle-borg/runtime/dist/interactive.js +7 -4
  74. package/node_modules/@noodle-borg/runtime/dist/interactive.js.map +1 -1
  75. package/node_modules/@noodle-borg/runtime/dist/result-meta.d.ts +8 -0
  76. package/node_modules/@noodle-borg/runtime/dist/result-meta.d.ts.map +1 -0
  77. package/node_modules/@noodle-borg/runtime/dist/result-meta.js +46 -0
  78. package/node_modules/@noodle-borg/runtime/dist/result-meta.js.map +1 -0
  79. package/node_modules/@noodle-borg/runtime/dist/result.d.ts +1 -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 +20 -0
  83. package/node_modules/@noodle-borg/runtime/dist/tool-dispatch.d.ts.map +1 -0
  84. package/node_modules/@noodle-borg/runtime/dist/tool-dispatch.js +35 -0
  85. package/node_modules/@noodle-borg/runtime/dist/tool-dispatch.js.map +1 -0
  86. package/node_modules/@noodle-borg/service/dist/billing/in-memory-usage.d.ts +21 -0
  87. package/node_modules/@noodle-borg/service/dist/billing/in-memory-usage.d.ts.map +1 -0
  88. package/node_modules/@noodle-borg/service/dist/billing/in-memory-usage.js +74 -0
  89. package/node_modules/@noodle-borg/service/dist/billing/in-memory-usage.js.map +1 -0
  90. package/node_modules/@noodle-borg/service/dist/billing/in-memory.d.ts +10 -1
  91. package/node_modules/@noodle-borg/service/dist/billing/in-memory.d.ts.map +1 -1
  92. package/node_modules/@noodle-borg/service/dist/billing/in-memory.js +110 -0
  93. package/node_modules/@noodle-borg/service/dist/billing/in-memory.js.map +1 -1
  94. package/node_modules/@noodle-borg/service/dist/billing/integration.d.ts +13 -0
  95. package/node_modules/@noodle-borg/service/dist/billing/integration.d.ts.map +1 -0
  96. package/node_modules/@noodle-borg/service/dist/billing/integration.js +20 -0
  97. package/node_modules/@noodle-borg/service/dist/billing/integration.js.map +1 -0
  98. package/node_modules/@noodle-borg/service/dist/billing/postgres-migration.d.ts.map +1 -1
  99. package/node_modules/@noodle-borg/service/dist/billing/postgres-migration.js +6 -0
  100. package/node_modules/@noodle-borg/service/dist/billing/postgres-migration.js.map +1 -1
  101. package/node_modules/@noodle-borg/service/dist/billing/postgres-schema.d.ts.map +1 -1
  102. package/node_modules/@noodle-borg/service/dist/billing/postgres-schema.js +66 -0
  103. package/node_modules/@noodle-borg/service/dist/billing/postgres-schema.js.map +1 -1
  104. package/node_modules/@noodle-borg/service/dist/billing/postgres-usage.d.ts +12 -0
  105. package/node_modules/@noodle-borg/service/dist/billing/postgres-usage.d.ts.map +1 -0
  106. package/node_modules/@noodle-borg/service/dist/billing/postgres-usage.js +284 -0
  107. package/node_modules/@noodle-borg/service/dist/billing/postgres-usage.js.map +1 -0
  108. package/node_modules/@noodle-borg/service/dist/billing/production-footprint.d.ts +20 -0
  109. package/node_modules/@noodle-borg/service/dist/billing/production-footprint.d.ts.map +1 -0
  110. package/node_modules/@noodle-borg/service/dist/billing/production-footprint.js +24 -0
  111. package/node_modules/@noodle-borg/service/dist/billing/production-footprint.js.map +1 -0
  112. package/node_modules/@noodle-borg/service/dist/billing/read-contract.d.ts +146 -26
  113. package/node_modules/@noodle-borg/service/dist/billing/read-contract.d.ts.map +1 -1
  114. package/node_modules/@noodle-borg/service/dist/billing/read-contract.js +64 -18
  115. package/node_modules/@noodle-borg/service/dist/billing/read-contract.js.map +1 -1
  116. package/node_modules/@noodle-borg/service/dist/billing/shadow-meter.d.ts +20 -0
  117. package/node_modules/@noodle-borg/service/dist/billing/shadow-meter.d.ts.map +1 -0
  118. package/node_modules/@noodle-borg/service/dist/billing/shadow-meter.js +177 -0
  119. package/node_modules/@noodle-borg/service/dist/billing/shadow-meter.js.map +1 -0
  120. package/node_modules/@noodle-borg/service/dist/billing/usage-store.d.ts +126 -0
  121. package/node_modules/@noodle-borg/service/dist/billing/usage-store.d.ts.map +1 -0
  122. package/node_modules/@noodle-borg/service/dist/billing/usage-store.js +111 -0
  123. package/node_modules/@noodle-borg/service/dist/billing/usage-store.js.map +1 -0
  124. package/node_modules/@noodle-borg/service/dist/billing/usage-window.d.ts +11 -0
  125. package/node_modules/@noodle-borg/service/dist/billing/usage-window.d.ts.map +1 -0
  126. package/node_modules/@noodle-borg/service/dist/billing/usage-window.js +36 -0
  127. package/node_modules/@noodle-borg/service/dist/billing/usage-window.js.map +1 -0
  128. package/node_modules/@noodle-borg/service/dist/index.d.ts +2 -0
  129. package/node_modules/@noodle-borg/service/dist/index.d.ts.map +1 -1
  130. package/node_modules/@noodle-borg/service/dist/index.js +2 -0
  131. package/node_modules/@noodle-borg/service/dist/index.js.map +1 -1
  132. package/node_modules/@noodle-borg/service/dist/main.js +2 -0
  133. package/node_modules/@noodle-borg/service/dist/main.js.map +1 -1
  134. package/node_modules/@noodle-borg/service/dist/mcp-public-routing.d.ts +2 -0
  135. package/node_modules/@noodle-borg/service/dist/mcp-public-routing.d.ts.map +1 -1
  136. package/node_modules/@noodle-borg/service/dist/mcp-public-routing.js +6 -0
  137. package/node_modules/@noodle-borg/service/dist/mcp-public-routing.js.map +1 -1
  138. package/node_modules/@noodle-borg/service/dist/options.d.ts +8 -1
  139. package/node_modules/@noodle-borg/service/dist/options.d.ts.map +1 -1
  140. package/node_modules/@noodle-borg/service/dist/registry-targets.d.ts.map +1 -1
  141. package/node_modules/@noodle-borg/service/dist/registry-targets.js +2 -0
  142. package/node_modules/@noodle-borg/service/dist/registry-targets.js.map +1 -1
  143. package/node_modules/@noodle-borg/service/dist/routes/billing-read.d.ts +4 -0
  144. package/node_modules/@noodle-borg/service/dist/routes/billing-read.d.ts.map +1 -1
  145. package/node_modules/@noodle-borg/service/dist/routes/billing-read.js +111 -10
  146. package/node_modules/@noodle-borg/service/dist/routes/billing-read.js.map +1 -1
  147. package/node_modules/@noodle-borg/service/dist/routes/commercial-dispatch.d.ts +2 -0
  148. package/node_modules/@noodle-borg/service/dist/routes/commercial-dispatch.d.ts.map +1 -1
  149. package/node_modules/@noodle-borg/service/dist/routes/commercial-dispatch.js.map +1 -1
  150. package/node_modules/@noodle-borg/service/dist/serve.d.ts.map +1 -1
  151. package/node_modules/@noodle-borg/service/dist/serve.js +10 -1
  152. package/node_modules/@noodle-borg/service/dist/serve.js.map +1 -1
  153. package/node_modules/@noodle-borg/service/dist/service.d.ts.map +1 -1
  154. package/node_modules/@noodle-borg/service/dist/service.js +10 -14
  155. package/node_modules/@noodle-borg/service/dist/service.js.map +1 -1
  156. package/node_modules/@noodle-borg/service/dist/store/cloudsql-pool.d.ts.map +1 -1
  157. package/node_modules/@noodle-borg/service/dist/store/cloudsql-pool.js +4 -1
  158. package/node_modules/@noodle-borg/service/dist/store/cloudsql-pool.js.map +1 -1
  159. package/node_modules/@noodle-borg/service/dist/store/control-plane.d.ts +2 -0
  160. package/node_modules/@noodle-borg/service/dist/store/control-plane.d.ts.map +1 -1
  161. package/node_modules/@noodle-borg/service/dist/store/control-plane.js +6 -0
  162. package/node_modules/@noodle-borg/service/dist/store/control-plane.js.map +1 -1
  163. package/node_modules/@noodle-borg/service/dist/store/postgres-billing.d.ts +1 -1
  164. package/node_modules/@noodle-borg/service/dist/store/postgres-billing.d.ts.map +1 -1
  165. package/node_modules/@noodle-borg/service/dist/store/postgres-billing.js +3 -2
  166. package/node_modules/@noodle-borg/service/dist/store/postgres-billing.js.map +1 -1
  167. package/node_modules/@noodle-borg/service/dist/store/postgres-rows.d.ts.map +1 -1
  168. package/node_modules/@noodle-borg/service/dist/store/postgres-rows.js +3 -1
  169. package/node_modules/@noodle-borg/service/dist/store/postgres-rows.js.map +1 -1
  170. package/node_modules/@noodle-borg/service/dist/store/postgres-signup.d.ts +9 -2
  171. package/node_modules/@noodle-borg/service/dist/store/postgres-signup.d.ts.map +1 -1
  172. package/node_modules/@noodle-borg/service/dist/store/postgres-signup.js +32 -1
  173. package/node_modules/@noodle-borg/service/dist/store/postgres-signup.js.map +1 -1
  174. package/node_modules/@noodle-borg/service/dist/store/postgres.d.ts +1 -0
  175. package/node_modules/@noodle-borg/service/dist/store/postgres.d.ts.map +1 -1
  176. package/node_modules/@noodle-borg/service/dist/store/postgres.js +6 -6
  177. package/node_modules/@noodle-borg/service/dist/store/postgres.js.map +1 -1
  178. package/node_modules/@noodle-borg/service/dist/store.d.ts +2 -1
  179. package/node_modules/@noodle-borg/service/dist/store.d.ts.map +1 -1
  180. package/node_modules/@noodle-borg/service/dist/store.js.map +1 -1
  181. package/node_modules/@noodle-borg/transport-http/dist/handler.d.ts +7 -0
  182. package/node_modules/@noodle-borg/transport-http/dist/handler.d.ts.map +1 -1
  183. package/node_modules/@noodle-borg/transport-http/dist/handler.js +9 -12
  184. package/node_modules/@noodle-borg/transport-http/dist/handler.js.map +1 -1
  185. package/node_modules/@noodle-borg/transport-http/dist/index.d.ts +1 -0
  186. package/node_modules/@noodle-borg/transport-http/dist/index.d.ts.map +1 -1
  187. package/node_modules/@noodle-borg/transport-http/dist/public-routing.d.ts +3 -0
  188. package/node_modules/@noodle-borg/transport-http/dist/public-routing.d.ts.map +1 -0
  189. package/node_modules/@noodle-borg/transport-http/dist/public-routing.js +13 -0
  190. package/node_modules/@noodle-borg/transport-http/dist/public-routing.js.map +1 -0
  191. package/node_modules/@noodle-borg/transport-http/dist/tool-dispatch.d.ts +27 -0
  192. package/node_modules/@noodle-borg/transport-http/dist/tool-dispatch.d.ts.map +1 -0
  193. package/node_modules/@noodle-borg/transport-http/dist/tool-dispatch.js +35 -0
  194. package/node_modules/@noodle-borg/transport-http/dist/tool-dispatch.js.map +1 -0
  195. package/package.json +1 -1
@@ -7,9 +7,10 @@ export { executePreparedTool, prepareToolForConfirmation, resumeToolPreparation,
7
7
  export { InMemoryConnector, InMemoryConnectorRegistry, } from './connector/in-memory.js';
8
8
  export { ConnectorInvocationError } from './connector/types.js';
9
9
  export { ExpressionEvalError, evaluateCondition, evaluateValue, } from './eval/evaluate.js';
10
- export { executePrompt, executeResource, executeTool, splitResultMeta, } from './execute.js';
10
+ export { executePrompt, executeResource, executeTool, } from './execute.js';
11
11
  export { executeToolInteractive, resumeTool } from './interactive.js';
12
12
  export { AllowAllPolicy } from './policy/allow-all.js';
13
13
  export { isConfirmationRequired, isInputRequired, isInputRequiredForConfirmation, } from './result.js';
14
+ export { splitResultMeta } from './result-meta.js';
14
15
  export { assertNoSecretValue, assertSchemaValue, COMPLETE_STATE_OPERATION, createStateConnector, InMemoryStateHandleStore, PATCH_STATE_OPERATION, READ_STATE_OPERATION, STATE_CONNECTOR_ID, STATE_CONNECTOR_VERSION, STATE_OPERATION_SIGNATURES, StateConnector, } from './state-handles.js';
15
16
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAKL,SAAS,EACT,kBAAkB,EAElB,uBAAuB,GAExB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAGL,0BAA0B,GAK3B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,iBAAiB,EACjB,yBAAyB,GAG1B,MAAM,0BAA0B,CAAC;AAWlC,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAEL,mBAAmB,EAEnB,iBAAiB,EACjB,aAAa,GACd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAEL,aAAa,EACb,eAAe,EACf,WAAW,EACX,eAAe,GAChB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,sBAAsB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAMtE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,EAUL,sBAAsB,EACtB,eAAe,EACf,8BAA8B,GAK/B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,wBAAwB,EACxB,oBAAoB,EACpB,wBAAwB,EACxB,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,uBAAuB,EACvB,0BAA0B,EAC1B,cAAc,GAMf,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAKL,SAAS,EACT,kBAAkB,EAElB,uBAAuB,GAExB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAGL,0BAA0B,GAK3B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,iBAAiB,EACjB,yBAAyB,GAG1B,MAAM,0BAA0B,CAAC;AAWlC,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAEL,mBAAmB,EAEnB,iBAAiB,EACjB,aAAa,GACd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAGL,aAAa,EACb,eAAe,EACf,WAAW,GACZ,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,sBAAsB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAMtE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,EAUL,sBAAsB,EACtB,eAAe,EACf,8BAA8B,GAK/B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,wBAAwB,EACxB,oBAAoB,EACpB,wBAAwB,EACxB,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,uBAAuB,EACvB,0BAA0B,EAC1B,cAAc,GAMf,MAAM,oBAAoB,CAAC"}
@@ -1,8 +1,8 @@
1
1
  import type { RuntimeArtifact } from '@noodle-borg/compiler';
2
- import { type ExecuteDeps } from './execute.js';
2
+ import { type ExecuteToolDeps } from './execute.js';
3
3
  import type { ElicitationResponse, InteractiveExecutionResult, ToolContinuation } from './result.js';
4
4
  /** Execute a tool until it completes, fails, or reaches an `elicit` step. */
5
- export declare function executeToolInteractive(artifact: RuntimeArtifact, toolName: string, input: unknown, deps: ExecuteDeps): Promise<InteractiveExecutionResult>;
5
+ export declare function executeToolInteractive(artifact: RuntimeArtifact, toolName: string, input: unknown, deps: ExecuteToolDeps): Promise<InteractiveExecutionResult>;
6
6
  /** Resume one server-held continuation with the user's reviewed response. */
7
- export declare function resumeTool(artifact: RuntimeArtifact, continuation: ToolContinuation, response: ElicitationResponse, deps: ExecuteDeps): Promise<InteractiveExecutionResult>;
7
+ export declare function resumeTool(artifact: RuntimeArtifact, continuation: ToolContinuation, response: ElicitationResponse, deps: ExecuteToolDeps): Promise<InteractiveExecutionResult>;
8
8
  //# sourceMappingURL=interactive.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"interactive.d.ts","sourceRoot":"","sources":["../src/interactive.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAsB,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGjF,OAAO,EAGL,KAAK,WAAW,EAOjB,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EACV,mBAAmB,EAGnB,0BAA0B,EAC1B,gBAAgB,EACjB,MAAM,aAAa,CAAC;AAIrB,6EAA6E;AAC7E,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,eAAe,EACzB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC,0BAA0B,CAAC,CAarC;AAED,6EAA6E;AAC7E,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,eAAe,EACzB,YAAY,EAAE,gBAAgB,EAC9B,QAAQ,EAAE,mBAAmB,EAC7B,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC,0BAA0B,CAAC,CAgCrC"}
1
+ {"version":3,"file":"interactive.d.ts","sourceRoot":"","sources":["../src/interactive.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAsB,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGjF,OAAO,EAEL,KAAK,eAAe,EAMrB,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EACV,mBAAmB,EAGnB,0BAA0B,EAC1B,gBAAgB,EACjB,MAAM,aAAa,CAAC;AAMrB,6EAA6E;AAC7E,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,eAAe,EACzB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,0BAA0B,CAAC,CAerC;AAED,6EAA6E;AAC7E,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,eAAe,EACzB,YAAY,EAAE,gBAAgB,EAC9B,QAAQ,EAAE,mBAAmB,EAC7B,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,0BAA0B,CAAC,CAgCrC"}
@@ -1,7 +1,9 @@
1
1
  import { validateElicitationContent } from './elicitation-response.js';
2
2
  import { ExpressionEvalError, evaluateCondition } from './eval/evaluate.js';
3
- import { attachResultMeta, createHost, evalExprMap, resolveEnv, runFulfilment, runOperation, scopeFor, splitResultMeta, } from './execute.js';
3
+ import { createHost, evalExprMap, resolveEnv, runFulfilment, runOperation, scopeFor, } from './execute.js';
4
4
  import { AllowAllPolicy } from './policy/allow-all.js';
5
+ import { attachResultMeta, splitResultMeta } from './result-meta.js';
6
+ import { latchToolDispatchAdmission } from './tool-dispatch.js';
5
7
  /** Execute a tool until it completes, fails, or reaches an `elicit` step. */
6
8
  export async function executeToolInteractive(artifact, toolName, input, deps) {
7
9
  if (artifact.resolution !== 'resolved') {
@@ -11,7 +13,7 @@ export async function executeToolInteractive(artifact, toolName, input, deps) {
11
13
  if (!tool)
12
14
  return interactiveFail('unknown_tool', `no tool named "${toolName}"`);
13
15
  if (tool.fulfilment.kind !== 'flow' || !tool.fulfilment.steps.some((s) => s.kind === 'elicit')) {
14
- return toInteractive(await runFulfilment(tool.fulfilment, input, toolName, deps));
16
+ return toInteractive(await runFulfilment(tool.fulfilment, input, toolName, deps, deps.beforeDispatch));
15
17
  }
16
18
  const invalid = invalidInteractiveFlow(tool.fulfilment);
17
19
  if (invalid)
@@ -44,7 +46,8 @@ export async function resumeTool(artifact, continuation, response, deps) {
44
46
  }
45
47
  async function runInteractiveFlow(artifact, toolName, flow, input, startIndex, steps, resultMetas, env, deps) {
46
48
  const policy = deps.policy ?? new AllowAllPolicy();
47
- const host = createHost(toolName, deps, policy, env, []);
49
+ const dispatchAdmission = latchToolDispatchAdmission(deps.beforeDispatch, deps.signal);
50
+ const host = createHost(toolName, deps, policy, env, [], dispatchAdmission);
48
51
  try {
49
52
  for (let index = startIndex; index < flow.steps.length; index += 1) {
50
53
  const step = flow.steps[index];
@@ -79,7 +82,7 @@ async function runInteractiveFlow(artifact, toolName, flow, input, startIndex, s
79
82
  steps[step.id] = evalExprMap(step.value, scope, `steps.${step.id}`);
80
83
  continue;
81
84
  }
82
- const result = await runOperation(step.operationRef, step.args, scope, toolName, deps, policy, host, env, `steps.${step.id}.args`, `steps.${step.id}.output`);
85
+ const result = await runOperation(step.operationRef, step.args, scope, toolName, deps, policy, host, env, `steps.${step.id}.args`, `steps.${step.id}.output`, undefined, dispatchAdmission);
83
86
  if (!result.ok)
84
87
  return { status: 'failed', error: result.error };
85
88
  const split = splitResultMeta(result.output);
@@ -1 +1 @@
1
- {"version":3,"file":"interactive.js","sourceRoot":"","sources":["../src/interactive.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interactive.js","sourceRoot":"","sources":["../src/interactive.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /** @internal Shared with suspension-aware execution and surface adapters. */
2
+ export declare function splitResultMeta(output: unknown): {
3
+ readonly visible: unknown;
4
+ readonly meta?: Record<string, unknown>;
5
+ };
6
+ /** @internal Shared with the suspension-aware flow executor. */
7
+ export declare function attachResultMeta(output: Record<string, unknown>, metas: readonly Record<string, unknown>[]): Record<string, unknown>;
8
+ //# sourceMappingURL=result-meta.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"result-meta.d.ts","sourceRoot":"","sources":["../src/result-meta.ts"],"names":[],"mappings":"AAEA,6EAA6E;AAC7E,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,GAAG;IAChD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACzC,CAeA;AAED,gEAAgE;AAChE,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,KAAK,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GACxC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMzB"}
@@ -0,0 +1,46 @@
1
+ const RESULT_META_KEY = '__noodleResultMeta';
2
+ /** @internal Shared with suspension-aware execution and surface adapters. */
3
+ export function splitResultMeta(output) {
4
+ if (output === null || typeof output !== 'object' || Array.isArray(output)) {
5
+ return { visible: output };
6
+ }
7
+ const record = output;
8
+ if (!Object.hasOwn(record, RESULT_META_KEY))
9
+ return { visible: output };
10
+ const rawMeta = record[RESULT_META_KEY];
11
+ const visible = Object.create(null);
12
+ for (const [key, value] of Object.entries(record)) {
13
+ if (key !== RESULT_META_KEY)
14
+ visible[key] = value;
15
+ }
16
+ return {
17
+ visible,
18
+ ...(isPlainRecord(rawMeta) ? { meta: rawMeta } : {}),
19
+ };
20
+ }
21
+ /** @internal Shared with the suspension-aware flow executor. */
22
+ export function attachResultMeta(output, metas) {
23
+ if (metas.length === 0)
24
+ return output;
25
+ const merged = {};
26
+ for (const meta of metas)
27
+ mergeRecords(merged, meta);
28
+ if (Object.keys(merged).length === 0)
29
+ return output;
30
+ return { ...output, [RESULT_META_KEY]: merged };
31
+ }
32
+ function mergeRecords(target, source) {
33
+ for (const [key, value] of Object.entries(source)) {
34
+ const existing = target[key];
35
+ if (isPlainRecord(existing) && isPlainRecord(value)) {
36
+ mergeRecords(existing, value);
37
+ }
38
+ else {
39
+ target[key] = value;
40
+ }
41
+ }
42
+ }
43
+ function isPlainRecord(value) {
44
+ return value !== null && typeof value === 'object' && !Array.isArray(value);
45
+ }
46
+ //# sourceMappingURL=result-meta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"result-meta.js","sourceRoot":"","sources":["../src/result-meta.ts"],"names":[],"mappings":"AAAA,MAAM,eAAe,GAAG,oBAAoB,CAAC;AAE7C,6EAA6E;AAC7E,MAAM,UAAU,eAAe,CAAC,MAAe;IAI7C,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3E,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAC7B,CAAC;IACD,MAAM,MAAM,GAAG,MAAiC,CAAC;IACjD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IACxE,MAAM,OAAO,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;IACxC,MAAM,OAAO,GAA4B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7D,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,IAAI,GAAG,KAAK,eAAe;YAAE,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACpD,CAAC;IACD,OAAO;QACL,OAAO;QACP,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACrD,CAAC;AACJ,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,gBAAgB,CAC9B,MAA+B,EAC/B,KAAyC;IAEzC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IACtC,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,KAAK,MAAM,IAAI,IAAI,KAAK;QAAE,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACrD,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IACpD,OAAO,EAAE,GAAG,MAAM,EAAE,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;AAClD,CAAC;AAED,SAAS,YAAY,CAAC,MAA+B,EAAE,MAA+B;IACpF,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,aAAa,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YACpD,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACtB,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,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' | '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' | '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 {
@@ -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":"AAoKA,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":"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"}
@@ -0,0 +1,20 @@
1
+ /** Safe, argument-free context exposed at the exact boundary where a tool first dispatches. */
2
+ export interface ToolDispatchContext {
3
+ readonly toolName: string;
4
+ }
5
+ /** A dispatch hook must explicitly admit or deny the request before any connector effect begins. */
6
+ export type ToolDispatchDecision = {
7
+ readonly allow: true;
8
+ } | {
9
+ readonly allow: false;
10
+ /** Safe to surface; must not contain request data. */
11
+ readonly reason: string;
12
+ };
13
+ /** Called at each connector boundary; request adapters may wrap it to admit one logical call once. */
14
+ export type ToolDispatchHook = (context: ToolDispatchContext) => ToolDispatchDecision | Promise<ToolDispatchDecision>;
15
+ /** Latch cancellation and admission once for every logical protocol operation. */
16
+ export declare function latchToolDispatchAdmission(hook: ToolDispatchHook | undefined, signal: AbortSignal | undefined): ToolDispatchHook | undefined;
17
+ /** Apply a hook as a fail-closed runtime admission decision without exposing implementation errors. */
18
+ export declare function admitToolDispatch(hook: ToolDispatchHook | undefined, context: ToolDispatchContext): Promise<ExecutionError | null>;
19
+ import type { ExecutionError } from './result.js';
20
+ //# sourceMappingURL=tool-dispatch.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,35 @@
1
+ class ToolDispatchCancelled extends Error {
2
+ }
3
+ /** Latch cancellation and admission once for every logical protocol operation. */
4
+ export function latchToolDispatchAdmission(hook, signal) {
5
+ if (hook === undefined && signal === undefined)
6
+ return undefined;
7
+ let pending;
8
+ return (context) => {
9
+ pending ??= Promise.resolve().then(() => {
10
+ if (signal?.aborted)
11
+ throw new ToolDispatchCancelled();
12
+ return hook?.(context) ?? { allow: true };
13
+ });
14
+ return pending;
15
+ };
16
+ }
17
+ /** Apply a hook as a fail-closed runtime admission decision without exposing implementation errors. */
18
+ export async function admitToolDispatch(hook, context) {
19
+ if (hook === undefined)
20
+ return null;
21
+ try {
22
+ const decision = await hook(context);
23
+ return decision.allow ? null : { code: 'dispatch_denied', message: decision.reason };
24
+ }
25
+ catch (error) {
26
+ if (error instanceof ToolDispatchCancelled) {
27
+ return {
28
+ code: 'execution_cancelled',
29
+ message: 'tool execution was cancelled before connector dispatch',
30
+ };
31
+ }
32
+ return { code: 'execution_admission_error', message: 'tool execution admission failed' };
33
+ }
34
+ }
35
+ //# sourceMappingURL=tool-dispatch.js.map
@@ -0,0 +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"}
@@ -0,0 +1,21 @@
1
+ import type { BillingUsageAttribution, BillingUsageReceipt, NormalizedRecordBillingUsageInput } from './usage-store.js';
2
+ /** Internal compact-event + aggregate ledger used by the in-memory billing-account adapter. */
3
+ export declare class InMemoryBillingUsageLedger {
4
+ #private;
5
+ record(input: {
6
+ readonly usage: NormalizedRecordBillingUsageInput;
7
+ readonly recordedAt: string;
8
+ readonly retryWindowMs: number;
9
+ readonly resolveAttribution: () => BillingUsageAttribution;
10
+ }): BillingUsageReceipt;
11
+ accountCount(input: {
12
+ readonly billingAccountId: string;
13
+ readonly windowStart: string;
14
+ }): number;
15
+ organizationCount(input: {
16
+ readonly billingAccountId: string;
17
+ readonly org: string;
18
+ readonly windowStart: string;
19
+ }): number;
20
+ }
21
+ //# sourceMappingURL=in-memory-usage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"in-memory-usage.d.ts","sourceRoot":"","sources":["../../src/billing/in-memory-usage.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,uBAAuB,EACvB,mBAAmB,EACnB,iCAAiC,EAClC,MAAM,kBAAkB,CAAC;AAY1B,+FAA+F;AAC/F,qBAAa,0BAA0B;;IAMrC,MAAM,CAAC,KAAK,EAAE;QACZ,QAAQ,CAAC,KAAK,EAAE,iCAAiC,CAAC;QAClD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;QAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;QAC/B,QAAQ,CAAC,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;KAC5D,GAAG,mBAAmB;IAiDvB,YAAY,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;IAIhG,iBAAiB,CAAC,KAAK,EAAE;QACvB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;QAClC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;KAC9B,GAAG,MAAM;CAOX"}
@@ -0,0 +1,74 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ import { BillingUsageIdempotencyConflictError } from './usage-store.js';
3
+ /** Internal compact-event + aggregate ledger used by the in-memory billing-account adapter. */
4
+ export class InMemoryBillingUsageLedger {
5
+ #eventsByHighConfidenceKey = new Map();
6
+ #eventsByFallbackKey = new Map();
7
+ #accountCounts = new Map();
8
+ #organizationCounts = new Map();
9
+ record(input) {
10
+ const exact = input.usage.highConfidenceKeyHash === undefined
11
+ ? undefined
12
+ : this.#eventsByHighConfidenceKey.get(input.usage.highConfidenceKeyHash);
13
+ if (exact !== undefined) {
14
+ if (exact.semanticFingerprint !== input.usage.semanticFingerprint) {
15
+ throw new BillingUsageIdempotencyConflictError();
16
+ }
17
+ return receipt(exact, 'duplicate', 'high_confidence_key');
18
+ }
19
+ if (input.usage.highConfidenceKeyHash === undefined) {
20
+ const recordedAtMs = Date.parse(input.recordedAt);
21
+ const fallbackCutoff = recordedAtMs - input.retryWindowMs;
22
+ const boundedDuplicate = this.#eventsByFallbackKey.get(fallbackKey(input.usage.fallbackFingerprint, input.usage.semanticFingerprint));
23
+ if (boundedDuplicate !== undefined &&
24
+ Date.parse(boundedDuplicate.recordedAt) >= fallbackCutoff &&
25
+ Date.parse(boundedDuplicate.recordedAt) <= recordedAtMs + input.retryWindowMs) {
26
+ return receipt(boundedDuplicate, 'duplicate', 'bounded_fallback');
27
+ }
28
+ }
29
+ const event = {
30
+ eventId: `bue_${randomUUID()}`,
31
+ recordedAt: input.recordedAt,
32
+ ...(input.usage.highConfidenceKeyHash !== undefined
33
+ ? { highConfidenceKeyHash: input.usage.highConfidenceKeyHash }
34
+ : {}),
35
+ fallbackFingerprint: input.usage.fallbackFingerprint,
36
+ semanticFingerprint: input.usage.semanticFingerprint,
37
+ attribution: input.resolveAttribution(),
38
+ };
39
+ this.#eventsByFallbackKey.set(fallbackKey(event.fallbackFingerprint, event.semanticFingerprint), event);
40
+ if (event.highConfidenceKeyHash !== undefined) {
41
+ this.#eventsByHighConfidenceKey.set(event.highConfidenceKeyHash, event);
42
+ }
43
+ increment(this.#accountCounts, accountAggregateKey(event.attribution));
44
+ increment(this.#organizationCounts, organizationAggregateKey(event.attribution));
45
+ return receipt(event, 'recorded', null);
46
+ }
47
+ accountCount(input) {
48
+ return this.#accountCounts.get(`${input.billingAccountId}\u0000${input.windowStart}`) ?? 0;
49
+ }
50
+ organizationCount(input) {
51
+ return (this.#organizationCounts.get(`${input.billingAccountId}\u0000${input.org}\u0000${input.windowStart}`) ?? 0);
52
+ }
53
+ }
54
+ function fallbackKey(fingerprint, semanticFingerprint) {
55
+ return `${fingerprint}\u0000${semanticFingerprint}`;
56
+ }
57
+ function accountAggregateKey(attribution) {
58
+ return `${attribution.billingAccountId}\u0000${attribution.windowStart}`;
59
+ }
60
+ function organizationAggregateKey(attribution) {
61
+ return `${attribution.billingAccountId}\u0000${attribution.org}\u0000${attribution.windowStart}`;
62
+ }
63
+ function increment(counts, key) {
64
+ counts.set(key, (counts.get(key) ?? 0) + 1);
65
+ }
66
+ function receipt(event, outcome, deduplicatedBy) {
67
+ return {
68
+ eventId: event.eventId,
69
+ outcome,
70
+ deduplicatedBy,
71
+ attribution: event.attribution,
72
+ };
73
+ }
74
+ //# sourceMappingURL=in-memory-usage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"in-memory-usage.js","sourceRoot":"","sources":["../../src/billing/in-memory-usage.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,14 @@
1
1
  import { type BillingAccountMemberRecord, type BillingAccountRecord, type BillingIdentityRef, type EntitlementSnapshotRecord, type OrgBillingLinkRecord, type PlanVersionRecord } from './model.js';
2
2
  import type { BillingAccountStore, EnsureDefaultBillingAccountInput, EnsureOrgBillingLinkInput, LegacyBillingAccountPreparationRecord } from './store.js';
3
- export declare abstract class InMemoryBillingAccountStore implements BillingAccountStore {
3
+ import type { BillingUsageRead, BillingUsageReceipt, BillingUsageStore, GetBillingAccountUsageInput, GetOrganizationBillingUsageInput, RecordBillingUsageInput } from './usage-store.js';
4
+ export declare abstract class InMemoryBillingAccountStore implements BillingAccountStore, BillingUsageStore {
4
5
  #private;
5
6
  protected constructor(options: {
6
7
  readonly now?: () => Date;
7
8
  readonly orgExists: (org: string) => boolean;
8
9
  readonly isOrgOwner: (org: string, subject: string) => boolean;
10
+ readonly billingUsageRetryWindowMs?: number;
11
+ readonly billingUsageObservedSince?: string;
9
12
  });
10
13
  /** Commit the in-memory default-account + initial org-link tuple without an async visibility gap. */
11
14
  protected ensureDefaultAccountAndOrgLinkAtomic(input: {
@@ -31,5 +34,11 @@ export declare abstract class InMemoryBillingAccountStore implements BillingAcco
31
34
  getOrgBillingLink(org: string): Promise<OrgBillingLinkRecord | undefined>;
32
35
  listOrgBillingLinksForAccount(id: string): Promise<readonly OrgBillingLinkRecord[]>;
33
36
  getLegacyBillingMigrationPreparationForAccount(id: string): Promise<LegacyBillingAccountPreparationRecord | undefined>;
37
+ startBillingUsageObservation(input: {
38
+ readonly startedAt: string;
39
+ }): Promise<string>;
40
+ recordBillingUsage(input: RecordBillingUsageInput): Promise<BillingUsageReceipt>;
41
+ getBillingAccountUsage(input: GetBillingAccountUsageInput): Promise<BillingUsageRead>;
42
+ getOrganizationBillingUsage(input: GetOrganizationBillingUsageInput): Promise<BillingUsageRead>;
34
43
  }
35
44
  //# sourceMappingURL=in-memory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"in-memory.d.ts","sourceRoot":"","sources":["../../src/billing/in-memory.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,0BAA0B,EAC/B,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EAIvB,KAAK,yBAAyB,EAK9B,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EAGvB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EACV,mBAAmB,EACnB,gCAAgC,EAChC,yBAAyB,EACzB,qCAAqC,EACtC,MAAM,YAAY,CAAC;AAEpB,8BAAsB,2BAA4B,YAAW,mBAAmB;;IAW9E,SAAS,aAAa,OAAO,EAAE;QAC7B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;QAC1B,QAAQ,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;QAC7C,QAAQ,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;KAChE;IAMD,qGAAqG;IACrG,SAAS,CAAC,oCAAoC,CAC5C,KAAK,EAAE;QACL,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,KAAK,EAAE;YACd,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;YACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;YACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;SACxB,CAAC;QACF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;KACzB,EACD,SAAS,EAAE,MAAM,GAChB,IAAI;IAuCD,2BAA2B,CAC/B,KAAK,EAAE,gCAAgC,GACtC,OAAO,CAAC,oBAAoB,CAAC;IA6ChC,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC;IAIxE,wBAAwB,CACtB,QAAQ,EAAE,kBAAkB,GAC3B,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC;IAK5C,6BAA6B,CAC3B,QAAQ,EAAE,kBAAkB,GAC3B,OAAO,CAAC,SAAS,0BAA0B,EAAE,CAAC;IAiBjD,yBAAyB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,0BAA0B,EAAE,CAAC;IAc/E,0BAA0B,CAC9B,KAAK,EAAE,kBAAkB,GAAG;QAAE,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,GAChE,OAAO,CAAC,OAAO,CAAC;IAoBnB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC;IAIlE,4BAA4B,CAC1B,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,yBAAyB,GAAG,SAAS,CAAC;IAM3C,oBAAoB,CAAC,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IA0D3F,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC;IAIzE,6BAA6B,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,oBAAoB,EAAE,CAAC;IASnF,8CAA8C,CAC5C,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,qCAAqC,GAAG,SAAS,CAAC;CAI9D"}
1
+ {"version":3,"file":"in-memory.d.ts","sourceRoot":"","sources":["../../src/billing/in-memory.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,8 @@
1
1
  import { validateSlug } from '../store/validate.js';
2
+ import { InMemoryBillingUsageLedger } from './in-memory-usage.js';
2
3
  import { billingIdentityKey, billingMemberKey, createDefaultFreeBillingRecords, FREE_PLAN_VERSION, GOOGLE_CONTROL_PLANE_ISSUER, normalizeBillingEmail, normalizeBillingIdentity, validateBillingAccountId, validateBillingLinkReason, } from './model.js';
4
+ import { billingAccountUsageScope, buildBillingUsageRead, DEFAULT_BILLING_USAGE_RETRY_WINDOW_MS, normalizeBillingUsageReadInput, normalizeRecordBillingUsageInput, organizationUsageScope, validateBillingUsageRetryWindowMs, } from './usage-store.js';
5
+ import { normalizeBillingUsageInstant, resolveUtcMonthlyUsageWindow } from './usage-window.js';
3
6
  export class InMemoryBillingAccountStore {
4
7
  #accounts = new Map();
5
8
  #defaults = new Map();
@@ -7,6 +10,9 @@ export class InMemoryBillingAccountStore {
7
10
  #snapshots = new Map();
8
11
  #activeSnapshots = new Map();
9
12
  #orgLinks = new Map();
13
+ #usage = new InMemoryBillingUsageLedger();
14
+ #billingUsageRetryWindowMs;
15
+ #billingUsageObservedSince;
10
16
  #now;
11
17
  #orgExists;
12
18
  #isOrgOwner;
@@ -14,6 +20,11 @@ export class InMemoryBillingAccountStore {
14
20
  this.#now = options.now ?? (() => new Date());
15
21
  this.#orgExists = options.orgExists;
16
22
  this.#isOrgOwner = options.isOrgOwner;
23
+ this.#billingUsageRetryWindowMs = validateBillingUsageRetryWindowMs(options.billingUsageRetryWindowMs ?? DEFAULT_BILLING_USAGE_RETRY_WINDOW_MS);
24
+ this.#billingUsageObservedSince =
25
+ options.billingUsageObservedSince === undefined
26
+ ? undefined
27
+ : normalizeBillingUsageInstant('billing usage observed since', options.billingUsageObservedSince);
17
28
  }
18
29
  /** Commit the in-memory default-account + initial org-link tuple without an async visibility gap. */
19
30
  ensureDefaultAccountAndOrgLinkAtomic(input, createdAt) {
@@ -194,6 +205,105 @@ export class InMemoryBillingAccountStore {
194
205
  validateBillingAccountId(id);
195
206
  return Promise.resolve(undefined);
196
207
  }
208
+ startBillingUsageObservation(input) {
209
+ return Promise.resolve(this.#ensureBillingUsageObservationStarted(input.startedAt));
210
+ }
211
+ async recordBillingUsage(input) {
212
+ const usage = normalizeRecordBillingUsageInput(input);
213
+ const recordedAt = normalizeBillingUsageInstant('billing usage recorded at', this.#now().toISOString());
214
+ this.#ensureBillingUsageObservationStarted(recordedAt);
215
+ return this.#usage.record({
216
+ usage,
217
+ recordedAt,
218
+ retryWindowMs: this.#billingUsageRetryWindowMs,
219
+ resolveAttribution: () => {
220
+ const link = this.#orgLinks.get(usage.org);
221
+ const snapshotId = link === undefined ? undefined : this.#activeSnapshots.get(link.billingAccountId);
222
+ const snapshot = snapshotId === undefined ? undefined : this.#snapshots.get(snapshotId);
223
+ if (link === undefined || snapshot?.verificationStatus !== 'verified') {
224
+ throw new Error('billing setup is incomplete for organization');
225
+ }
226
+ const window = resolveUtcMonthlyUsageWindow(snapshot.monthlyUsageAnchor, usage.admittedAt);
227
+ return {
228
+ billingAccountId: link.billingAccountId,
229
+ org: usage.org,
230
+ app: usage.app,
231
+ environment: usage.environment,
232
+ deploymentId: usage.deploymentId,
233
+ linkVersion: link.version,
234
+ snapshotId: snapshot.id,
235
+ snapshotVersion: snapshot.version,
236
+ admittedAt: usage.admittedAt,
237
+ windowStart: window.start,
238
+ windowEnd: window.end,
239
+ };
240
+ },
241
+ });
242
+ }
243
+ getBillingAccountUsage(input) {
244
+ const scope = billingAccountUsageScope(input.billingAccountId);
245
+ const read = normalizeBillingUsageReadInput({
246
+ at: input.at,
247
+ observedSince: this.#billingUsageObservationStart(),
248
+ });
249
+ const snapshotId = this.#activeSnapshots.get(scope.billingAccountId);
250
+ const snapshot = snapshotId === undefined ? undefined : this.#snapshots.get(snapshotId);
251
+ if (snapshot?.verificationStatus !== 'verified') {
252
+ return Promise.resolve(buildBillingUsageRead({
253
+ scope,
254
+ monthlyUsageAnchor: undefined,
255
+ ...read,
256
+ }));
257
+ }
258
+ const window = resolveUtcMonthlyUsageWindow(snapshot.monthlyUsageAnchor, read.at);
259
+ return Promise.resolve(buildBillingUsageRead({
260
+ scope,
261
+ monthlyUsageAnchor: snapshot.monthlyUsageAnchor,
262
+ ...read,
263
+ observedCalls: this.#usage.accountCount({
264
+ billingAccountId: scope.billingAccountId,
265
+ windowStart: window.start,
266
+ }),
267
+ }));
268
+ }
269
+ getOrganizationBillingUsage(input) {
270
+ const scope = organizationUsageScope(input.org);
271
+ const read = normalizeBillingUsageReadInput({
272
+ at: input.at,
273
+ observedSince: this.#billingUsageObservationStart(),
274
+ });
275
+ const link = this.#orgLinks.get(scope.org);
276
+ const snapshotId = link === undefined ? undefined : this.#activeSnapshots.get(link.billingAccountId);
277
+ const snapshot = snapshotId === undefined ? undefined : this.#snapshots.get(snapshotId);
278
+ if (link === undefined || snapshot?.verificationStatus !== 'verified') {
279
+ return Promise.resolve(buildBillingUsageRead({
280
+ scope,
281
+ monthlyUsageAnchor: undefined,
282
+ ...read,
283
+ }));
284
+ }
285
+ const window = resolveUtcMonthlyUsageWindow(snapshot.monthlyUsageAnchor, read.at);
286
+ return Promise.resolve(buildBillingUsageRead({
287
+ scope,
288
+ monthlyUsageAnchor: snapshot.monthlyUsageAnchor,
289
+ ...read,
290
+ observedCalls: this.#usage.organizationCount({
291
+ billingAccountId: link.billingAccountId,
292
+ org: scope.org,
293
+ windowStart: window.start,
294
+ }),
295
+ }));
296
+ }
297
+ #ensureBillingUsageObservationStarted(at = this.#now().toISOString()) {
298
+ this.#billingUsageObservedSince ??= normalizeBillingUsageInstant('billing usage observed since', at);
299
+ return this.#billingUsageObservedSince;
300
+ }
301
+ #billingUsageObservationStart() {
302
+ if (this.#billingUsageObservedSince === undefined) {
303
+ throw new Error('billing usage observation has not started');
304
+ }
305
+ return this.#billingUsageObservedSince;
306
+ }
197
307
  }
198
308
  function restoreMap(target, source) {
199
309
  target.clear();