@noodleseed/one 0.43.0 → 0.44.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 (157) 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/node_modules/@noodle-borg/agent-kit/package.json +1 -1
  9. package/node_modules/@noodle-borg/protocol/dist/index.d.ts +1 -1
  10. package/node_modules/@noodle-borg/protocol/dist/index.d.ts.map +1 -1
  11. package/node_modules/@noodle-borg/protocol/dist/index.js.map +1 -1
  12. package/node_modules/@noodle-borg/protocol/dist/sdk-server.d.ts +15 -1
  13. package/node_modules/@noodle-borg/protocol/dist/sdk-server.d.ts.map +1 -1
  14. package/node_modules/@noodle-borg/protocol/dist/sdk-server.js +26 -2
  15. package/node_modules/@noodle-borg/protocol/dist/sdk-server.js.map +1 -1
  16. package/node_modules/@noodle-borg/protocol/dist/tool-interaction.d.ts +2 -2
  17. package/node_modules/@noodle-borg/protocol/dist/tool-interaction.d.ts.map +1 -1
  18. package/node_modules/@noodle-borg/runtime/dist/ambient-context.d.ts.map +1 -1
  19. package/node_modules/@noodle-borg/runtime/dist/ambient-context.js +2 -1
  20. package/node_modules/@noodle-borg/runtime/dist/ambient-context.js.map +1 -1
  21. package/node_modules/@noodle-borg/runtime/dist/confirmation.d.ts +4 -4
  22. package/node_modules/@noodle-borg/runtime/dist/confirmation.d.ts.map +1 -1
  23. package/node_modules/@noodle-borg/runtime/dist/confirmation.js +8 -4
  24. package/node_modules/@noodle-borg/runtime/dist/confirmation.js.map +1 -1
  25. package/node_modules/@noodle-borg/runtime/dist/execute.d.ts +13 -11
  26. package/node_modules/@noodle-borg/runtime/dist/execute.d.ts.map +1 -1
  27. package/node_modules/@noodle-borg/runtime/dist/execute.js +18 -57
  28. package/node_modules/@noodle-borg/runtime/dist/execute.js.map +1 -1
  29. package/node_modules/@noodle-borg/runtime/dist/index.d.ts +3 -1
  30. package/node_modules/@noodle-borg/runtime/dist/index.d.ts.map +1 -1
  31. package/node_modules/@noodle-borg/runtime/dist/index.js +2 -1
  32. package/node_modules/@noodle-borg/runtime/dist/index.js.map +1 -1
  33. package/node_modules/@noodle-borg/runtime/dist/interactive.d.ts +3 -3
  34. package/node_modules/@noodle-borg/runtime/dist/interactive.d.ts.map +1 -1
  35. package/node_modules/@noodle-borg/runtime/dist/interactive.js +7 -4
  36. package/node_modules/@noodle-borg/runtime/dist/interactive.js.map +1 -1
  37. package/node_modules/@noodle-borg/runtime/dist/result-meta.d.ts +8 -0
  38. package/node_modules/@noodle-borg/runtime/dist/result-meta.d.ts.map +1 -0
  39. package/node_modules/@noodle-borg/runtime/dist/result-meta.js +46 -0
  40. package/node_modules/@noodle-borg/runtime/dist/result-meta.js.map +1 -0
  41. package/node_modules/@noodle-borg/runtime/dist/result.d.ts +1 -1
  42. package/node_modules/@noodle-borg/runtime/dist/result.d.ts.map +1 -1
  43. package/node_modules/@noodle-borg/runtime/dist/result.js.map +1 -1
  44. package/node_modules/@noodle-borg/runtime/dist/tool-dispatch.d.ts +20 -0
  45. package/node_modules/@noodle-borg/runtime/dist/tool-dispatch.d.ts.map +1 -0
  46. package/node_modules/@noodle-borg/runtime/dist/tool-dispatch.js +35 -0
  47. package/node_modules/@noodle-borg/runtime/dist/tool-dispatch.js.map +1 -0
  48. package/node_modules/@noodle-borg/service/dist/billing/in-memory-usage.d.ts +21 -0
  49. package/node_modules/@noodle-borg/service/dist/billing/in-memory-usage.d.ts.map +1 -0
  50. package/node_modules/@noodle-borg/service/dist/billing/in-memory-usage.js +74 -0
  51. package/node_modules/@noodle-borg/service/dist/billing/in-memory-usage.js.map +1 -0
  52. package/node_modules/@noodle-borg/service/dist/billing/in-memory.d.ts +10 -1
  53. package/node_modules/@noodle-borg/service/dist/billing/in-memory.d.ts.map +1 -1
  54. package/node_modules/@noodle-borg/service/dist/billing/in-memory.js +110 -0
  55. package/node_modules/@noodle-borg/service/dist/billing/in-memory.js.map +1 -1
  56. package/node_modules/@noodle-borg/service/dist/billing/integration.d.ts +13 -0
  57. package/node_modules/@noodle-borg/service/dist/billing/integration.d.ts.map +1 -0
  58. package/node_modules/@noodle-borg/service/dist/billing/integration.js +20 -0
  59. package/node_modules/@noodle-borg/service/dist/billing/integration.js.map +1 -0
  60. package/node_modules/@noodle-borg/service/dist/billing/postgres-migration.d.ts.map +1 -1
  61. package/node_modules/@noodle-borg/service/dist/billing/postgres-migration.js +6 -0
  62. package/node_modules/@noodle-borg/service/dist/billing/postgres-migration.js.map +1 -1
  63. package/node_modules/@noodle-borg/service/dist/billing/postgres-schema.d.ts.map +1 -1
  64. package/node_modules/@noodle-borg/service/dist/billing/postgres-schema.js +66 -0
  65. package/node_modules/@noodle-borg/service/dist/billing/postgres-schema.js.map +1 -1
  66. package/node_modules/@noodle-borg/service/dist/billing/postgres-usage.d.ts +12 -0
  67. package/node_modules/@noodle-borg/service/dist/billing/postgres-usage.d.ts.map +1 -0
  68. package/node_modules/@noodle-borg/service/dist/billing/postgres-usage.js +284 -0
  69. package/node_modules/@noodle-borg/service/dist/billing/postgres-usage.js.map +1 -0
  70. package/node_modules/@noodle-borg/service/dist/billing/production-footprint.d.ts +20 -0
  71. package/node_modules/@noodle-borg/service/dist/billing/production-footprint.d.ts.map +1 -0
  72. package/node_modules/@noodle-borg/service/dist/billing/production-footprint.js +24 -0
  73. package/node_modules/@noodle-borg/service/dist/billing/production-footprint.js.map +1 -0
  74. package/node_modules/@noodle-borg/service/dist/billing/read-contract.d.ts +146 -26
  75. package/node_modules/@noodle-borg/service/dist/billing/read-contract.d.ts.map +1 -1
  76. package/node_modules/@noodle-borg/service/dist/billing/read-contract.js +64 -18
  77. package/node_modules/@noodle-borg/service/dist/billing/read-contract.js.map +1 -1
  78. package/node_modules/@noodle-borg/service/dist/billing/shadow-meter.d.ts +20 -0
  79. package/node_modules/@noodle-borg/service/dist/billing/shadow-meter.d.ts.map +1 -0
  80. package/node_modules/@noodle-borg/service/dist/billing/shadow-meter.js +177 -0
  81. package/node_modules/@noodle-borg/service/dist/billing/shadow-meter.js.map +1 -0
  82. package/node_modules/@noodle-borg/service/dist/billing/usage-store.d.ts +126 -0
  83. package/node_modules/@noodle-borg/service/dist/billing/usage-store.d.ts.map +1 -0
  84. package/node_modules/@noodle-borg/service/dist/billing/usage-store.js +111 -0
  85. package/node_modules/@noodle-borg/service/dist/billing/usage-store.js.map +1 -0
  86. package/node_modules/@noodle-borg/service/dist/billing/usage-window.d.ts +11 -0
  87. package/node_modules/@noodle-borg/service/dist/billing/usage-window.d.ts.map +1 -0
  88. package/node_modules/@noodle-borg/service/dist/billing/usage-window.js +36 -0
  89. package/node_modules/@noodle-borg/service/dist/billing/usage-window.js.map +1 -0
  90. package/node_modules/@noodle-borg/service/dist/index.d.ts +2 -0
  91. package/node_modules/@noodle-borg/service/dist/index.d.ts.map +1 -1
  92. package/node_modules/@noodle-borg/service/dist/index.js +2 -0
  93. package/node_modules/@noodle-borg/service/dist/index.js.map +1 -1
  94. package/node_modules/@noodle-borg/service/dist/main.js +2 -0
  95. package/node_modules/@noodle-borg/service/dist/main.js.map +1 -1
  96. package/node_modules/@noodle-borg/service/dist/mcp-public-routing.d.ts +2 -0
  97. package/node_modules/@noodle-borg/service/dist/mcp-public-routing.d.ts.map +1 -1
  98. package/node_modules/@noodle-borg/service/dist/mcp-public-routing.js +6 -0
  99. package/node_modules/@noodle-borg/service/dist/mcp-public-routing.js.map +1 -1
  100. package/node_modules/@noodle-borg/service/dist/options.d.ts +5 -0
  101. package/node_modules/@noodle-borg/service/dist/options.d.ts.map +1 -1
  102. package/node_modules/@noodle-borg/service/dist/registry-targets.d.ts.map +1 -1
  103. package/node_modules/@noodle-borg/service/dist/registry-targets.js +2 -0
  104. package/node_modules/@noodle-borg/service/dist/registry-targets.js.map +1 -1
  105. package/node_modules/@noodle-borg/service/dist/routes/billing-read.d.ts +4 -0
  106. package/node_modules/@noodle-borg/service/dist/routes/billing-read.d.ts.map +1 -1
  107. package/node_modules/@noodle-borg/service/dist/routes/billing-read.js +111 -10
  108. package/node_modules/@noodle-borg/service/dist/routes/billing-read.js.map +1 -1
  109. package/node_modules/@noodle-borg/service/dist/routes/commercial-dispatch.d.ts +2 -0
  110. package/node_modules/@noodle-borg/service/dist/routes/commercial-dispatch.d.ts.map +1 -1
  111. package/node_modules/@noodle-borg/service/dist/routes/commercial-dispatch.js.map +1 -1
  112. package/node_modules/@noodle-borg/service/dist/serve.d.ts.map +1 -1
  113. package/node_modules/@noodle-borg/service/dist/serve.js +10 -1
  114. package/node_modules/@noodle-borg/service/dist/serve.js.map +1 -1
  115. package/node_modules/@noodle-borg/service/dist/service.d.ts.map +1 -1
  116. package/node_modules/@noodle-borg/service/dist/service.js +7 -13
  117. package/node_modules/@noodle-borg/service/dist/service.js.map +1 -1
  118. package/node_modules/@noodle-borg/service/dist/store/cloudsql-pool.d.ts.map +1 -1
  119. package/node_modules/@noodle-borg/service/dist/store/cloudsql-pool.js +4 -1
  120. package/node_modules/@noodle-borg/service/dist/store/cloudsql-pool.js.map +1 -1
  121. package/node_modules/@noodle-borg/service/dist/store/control-plane.d.ts +2 -0
  122. package/node_modules/@noodle-borg/service/dist/store/control-plane.d.ts.map +1 -1
  123. package/node_modules/@noodle-borg/service/dist/store/control-plane.js +6 -0
  124. package/node_modules/@noodle-borg/service/dist/store/control-plane.js.map +1 -1
  125. package/node_modules/@noodle-borg/service/dist/store/postgres-billing.d.ts +1 -1
  126. package/node_modules/@noodle-borg/service/dist/store/postgres-billing.d.ts.map +1 -1
  127. package/node_modules/@noodle-borg/service/dist/store/postgres-billing.js +3 -2
  128. package/node_modules/@noodle-borg/service/dist/store/postgres-billing.js.map +1 -1
  129. package/node_modules/@noodle-borg/service/dist/store/postgres-rows.d.ts.map +1 -1
  130. package/node_modules/@noodle-borg/service/dist/store/postgres-rows.js +3 -1
  131. package/node_modules/@noodle-borg/service/dist/store/postgres-rows.js.map +1 -1
  132. package/node_modules/@noodle-borg/service/dist/store/postgres-signup.d.ts +9 -2
  133. package/node_modules/@noodle-borg/service/dist/store/postgres-signup.d.ts.map +1 -1
  134. package/node_modules/@noodle-borg/service/dist/store/postgres-signup.js +32 -1
  135. package/node_modules/@noodle-borg/service/dist/store/postgres-signup.js.map +1 -1
  136. package/node_modules/@noodle-borg/service/dist/store/postgres.d.ts +1 -0
  137. package/node_modules/@noodle-borg/service/dist/store/postgres.d.ts.map +1 -1
  138. package/node_modules/@noodle-borg/service/dist/store/postgres.js +6 -6
  139. package/node_modules/@noodle-borg/service/dist/store/postgres.js.map +1 -1
  140. package/node_modules/@noodle-borg/service/dist/store.d.ts +2 -1
  141. package/node_modules/@noodle-borg/service/dist/store.d.ts.map +1 -1
  142. package/node_modules/@noodle-borg/service/dist/store.js.map +1 -1
  143. package/node_modules/@noodle-borg/transport-http/dist/handler.d.ts +7 -0
  144. package/node_modules/@noodle-borg/transport-http/dist/handler.d.ts.map +1 -1
  145. package/node_modules/@noodle-borg/transport-http/dist/handler.js +9 -12
  146. package/node_modules/@noodle-borg/transport-http/dist/handler.js.map +1 -1
  147. package/node_modules/@noodle-borg/transport-http/dist/index.d.ts +1 -0
  148. package/node_modules/@noodle-borg/transport-http/dist/index.d.ts.map +1 -1
  149. package/node_modules/@noodle-borg/transport-http/dist/public-routing.d.ts +3 -0
  150. package/node_modules/@noodle-borg/transport-http/dist/public-routing.d.ts.map +1 -0
  151. package/node_modules/@noodle-borg/transport-http/dist/public-routing.js +13 -0
  152. package/node_modules/@noodle-borg/transport-http/dist/public-routing.js.map +1 -0
  153. package/node_modules/@noodle-borg/transport-http/dist/tool-dispatch.d.ts +27 -0
  154. package/node_modules/@noodle-borg/transport-http/dist/tool-dispatch.d.ts.map +1 -0
  155. package/node_modules/@noodle-borg/transport-http/dist/tool-dispatch.js +35 -0
  156. package/node_modules/@noodle-borg/transport-http/dist/tool-dispatch.js.map +1 -0
  157. package/package.json +1 -1
@@ -7,20 +7,75 @@ export declare const BillingPlanSummarySchema: z.ZodObject<{
7
7
  export declare const BillingEnforcementStateSchema: z.ZodObject<{
8
8
  state: z.ZodLiteral<"legacy_unchanged">;
9
9
  }, z.core.$strict>;
10
- export declare const BillingMeteringSummarySchema: z.ZodObject<{
10
+ export declare const BillingMeteringSummarySchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
11
11
  state: z.ZodLiteral<"not_started">;
12
- }, z.core.$strict>;
13
- export declare const BillingMeteringDetailSchema: z.ZodObject<{
12
+ }, z.core.$strict>, z.ZodObject<{
13
+ state: z.ZodLiteral<"reporting">;
14
+ mode: z.ZodLiteral<"shadow">;
15
+ coverage: z.ZodLiteral<"partial">;
16
+ }, z.core.$strict>, z.ZodObject<{
17
+ state: z.ZodLiteral<"unavailable">;
18
+ }, z.core.$strict>], "state">;
19
+ export declare const BillingAccountMeteringDetailSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
14
20
  state: z.ZodLiteral<"not_started">;
15
21
  usedMcpCalls: z.ZodNull;
16
22
  remainingMcpCalls: z.ZodNull;
17
23
  resetAt: z.ZodNull;
18
- }, z.core.$strict>;
19
- export declare const BillingProductionAppsSchema: z.ZodObject<{
20
- state: z.ZodLiteral<"not_enforced">;
24
+ }, z.core.$strict>, z.ZodObject<{
25
+ remainingMcpCalls: z.ZodNull;
26
+ state: z.ZodLiteral<"reporting">;
27
+ mode: z.ZodLiteral<"shadow">;
28
+ observedCalls: z.ZodNumber;
29
+ coverage: z.ZodLiteral<"partial">;
30
+ observedSince: z.ZodString;
31
+ windowStart: z.ZodString;
32
+ windowEnd: z.ZodString;
33
+ }, z.core.$strict>, z.ZodObject<{
34
+ remainingMcpCalls: z.ZodNull;
35
+ state: z.ZodLiteral<"unavailable">;
36
+ reason: z.ZodEnum<{
37
+ billing_setup_incomplete: "billing_setup_incomplete";
38
+ observation_not_started: "observation_not_started";
39
+ counter_unavailable: "counter_unavailable";
40
+ }>;
41
+ observedCalls: z.ZodNull;
42
+ coverage: z.ZodLiteral<"unavailable">;
43
+ observedSince: z.ZodNullable<z.ZodString>;
44
+ windowStart: z.ZodNullable<z.ZodString>;
45
+ windowEnd: z.ZodNullable<z.ZodString>;
46
+ }, z.core.$strict>], "state">;
47
+ export declare const BillingOrgMeteringDetailSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
48
+ state: z.ZodLiteral<"not_started">;
49
+ }, z.core.$strict>, z.ZodObject<{
50
+ state: z.ZodLiteral<"reporting">;
51
+ mode: z.ZodLiteral<"shadow">;
52
+ observedCalls: z.ZodNumber;
53
+ coverage: z.ZodLiteral<"partial">;
54
+ observedSince: z.ZodString;
55
+ windowStart: z.ZodString;
56
+ windowEnd: z.ZodString;
57
+ }, z.core.$strict>, z.ZodObject<{
58
+ state: z.ZodLiteral<"unavailable">;
59
+ reason: z.ZodEnum<{
60
+ billing_setup_incomplete: "billing_setup_incomplete";
61
+ observation_not_started: "observation_not_started";
62
+ counter_unavailable: "counter_unavailable";
63
+ }>;
64
+ observedCalls: z.ZodNull;
65
+ coverage: z.ZodLiteral<"unavailable">;
66
+ observedSince: z.ZodNullable<z.ZodString>;
67
+ windowStart: z.ZodNullable<z.ZodString>;
68
+ windowEnd: z.ZodNullable<z.ZodString>;
69
+ }, z.core.$strict>], "state">;
70
+ export declare const BillingProductionAppsSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
71
+ state: z.ZodLiteral<"reporting">;
72
+ active: z.ZodNumber;
73
+ limit: z.ZodNullable<z.ZodNumber>;
74
+ }, z.core.$strict>, z.ZodObject<{
75
+ state: z.ZodLiteral<"unavailable">;
21
76
  active: z.ZodNull;
22
77
  limit: z.ZodNullable<z.ZodNumber>;
23
- }, z.core.$strict>;
78
+ }, z.core.$strict>], "state">;
24
79
  export declare const BillingAccountSummarySchema: z.ZodObject<{
25
80
  id: z.ZodString;
26
81
  displayName: z.ZodString;
@@ -44,9 +99,15 @@ export declare const BillingAccountSummarySchema: z.ZodObject<{
44
99
  enforcement: z.ZodObject<{
45
100
  state: z.ZodLiteral<"legacy_unchanged">;
46
101
  }, z.core.$strict>;
47
- metering: z.ZodObject<{
102
+ metering: z.ZodDiscriminatedUnion<[z.ZodObject<{
48
103
  state: z.ZodLiteral<"not_started">;
49
- }, z.core.$strict>;
104
+ }, z.core.$strict>, z.ZodObject<{
105
+ state: z.ZodLiteral<"reporting">;
106
+ mode: z.ZodLiteral<"shadow">;
107
+ coverage: z.ZodLiteral<"partial">;
108
+ }, z.core.$strict>, z.ZodObject<{
109
+ state: z.ZodLiteral<"unavailable">;
110
+ }, z.core.$strict>], "state">;
50
111
  }, z.core.$strict>;
51
112
  export declare const BillingAccountsListResponseSchema: z.ZodObject<{
52
113
  ok: z.ZodLiteral<true>;
@@ -74,9 +135,15 @@ export declare const BillingAccountsListResponseSchema: z.ZodObject<{
74
135
  enforcement: z.ZodObject<{
75
136
  state: z.ZodLiteral<"legacy_unchanged">;
76
137
  }, z.core.$strict>;
77
- metering: z.ZodObject<{
138
+ metering: z.ZodDiscriminatedUnion<[z.ZodObject<{
78
139
  state: z.ZodLiteral<"not_started">;
79
- }, z.core.$strict>;
140
+ }, z.core.$strict>, z.ZodObject<{
141
+ state: z.ZodLiteral<"reporting">;
142
+ mode: z.ZodLiteral<"shadow">;
143
+ coverage: z.ZodLiteral<"partial">;
144
+ }, z.core.$strict>, z.ZodObject<{
145
+ state: z.ZodLiteral<"unavailable">;
146
+ }, z.core.$strict>], "state">;
80
147
  }, z.core.$strict>>;
81
148
  }, z.core.$strict>;
82
149
  }, z.core.$strict>;
@@ -164,9 +231,15 @@ export declare const BillingAccountResponseSchema: z.ZodObject<{
164
231
  enforcement: z.ZodObject<{
165
232
  state: z.ZodLiteral<"legacy_unchanged">;
166
233
  }, z.core.$strict>;
167
- metering: z.ZodObject<{
234
+ metering: z.ZodDiscriminatedUnion<[z.ZodObject<{
168
235
  state: z.ZodLiteral<"not_started">;
169
- }, z.core.$strict>;
236
+ }, z.core.$strict>, z.ZodObject<{
237
+ state: z.ZodLiteral<"reporting">;
238
+ mode: z.ZodLiteral<"shadow">;
239
+ coverage: z.ZodLiteral<"partial">;
240
+ }, z.core.$strict>, z.ZodObject<{
241
+ state: z.ZodLiteral<"unavailable">;
242
+ }, z.core.$strict>], "state">;
170
243
  }, z.core.$strict>;
171
244
  entitlement: z.ZodNullable<z.ZodObject<{
172
245
  snapshotId: z.ZodString;
@@ -204,17 +277,43 @@ export declare const BillingAccountResponseSchema: z.ZodObject<{
204
277
  enforcement: z.ZodObject<{
205
278
  state: z.ZodLiteral<"legacy_unchanged">;
206
279
  }, z.core.$strict>;
207
- metering: z.ZodObject<{
280
+ metering: z.ZodDiscriminatedUnion<[z.ZodObject<{
208
281
  state: z.ZodLiteral<"not_started">;
209
282
  usedMcpCalls: z.ZodNull;
210
283
  remainingMcpCalls: z.ZodNull;
211
284
  resetAt: z.ZodNull;
212
- }, z.core.$strict>;
213
- productionApps: z.ZodObject<{
214
- state: z.ZodLiteral<"not_enforced">;
285
+ }, z.core.$strict>, z.ZodObject<{
286
+ remainingMcpCalls: z.ZodNull;
287
+ state: z.ZodLiteral<"reporting">;
288
+ mode: z.ZodLiteral<"shadow">;
289
+ observedCalls: z.ZodNumber;
290
+ coverage: z.ZodLiteral<"partial">;
291
+ observedSince: z.ZodString;
292
+ windowStart: z.ZodString;
293
+ windowEnd: z.ZodString;
294
+ }, z.core.$strict>, z.ZodObject<{
295
+ remainingMcpCalls: z.ZodNull;
296
+ state: z.ZodLiteral<"unavailable">;
297
+ reason: z.ZodEnum<{
298
+ billing_setup_incomplete: "billing_setup_incomplete";
299
+ observation_not_started: "observation_not_started";
300
+ counter_unavailable: "counter_unavailable";
301
+ }>;
302
+ observedCalls: z.ZodNull;
303
+ coverage: z.ZodLiteral<"unavailable">;
304
+ observedSince: z.ZodNullable<z.ZodString>;
305
+ windowStart: z.ZodNullable<z.ZodString>;
306
+ windowEnd: z.ZodNullable<z.ZodString>;
307
+ }, z.core.$strict>], "state">;
308
+ productionApps: z.ZodDiscriminatedUnion<[z.ZodObject<{
309
+ state: z.ZodLiteral<"reporting">;
310
+ active: z.ZodNumber;
311
+ limit: z.ZodNullable<z.ZodNumber>;
312
+ }, z.core.$strict>, z.ZodObject<{
313
+ state: z.ZodLiteral<"unavailable">;
215
314
  active: z.ZodNull;
216
315
  limit: z.ZodNullable<z.ZodNumber>;
217
- }, z.core.$strict>;
316
+ }, z.core.$strict>], "state">;
218
317
  legacyMigration: z.ZodDiscriminatedUnion<[z.ZodObject<{
219
318
  state: z.ZodLiteral<"not_applicable">;
220
319
  }, z.core.$strict>, z.ZodObject<{
@@ -248,17 +347,38 @@ export declare const OrgBillingResponseSchema: z.ZodObject<{
248
347
  enforcement: z.ZodObject<{
249
348
  state: z.ZodLiteral<"legacy_unchanged">;
250
349
  }, z.core.$strict>;
251
- metering: z.ZodObject<{
350
+ metering: z.ZodDiscriminatedUnion<[z.ZodObject<{
252
351
  state: z.ZodLiteral<"not_started">;
253
- usedMcpCalls: z.ZodNull;
254
- remainingMcpCalls: z.ZodNull;
255
- resetAt: z.ZodNull;
256
- }, z.core.$strict>;
257
- productionApps: z.ZodObject<{
258
- state: z.ZodLiteral<"not_enforced">;
352
+ }, z.core.$strict>, z.ZodObject<{
353
+ state: z.ZodLiteral<"reporting">;
354
+ mode: z.ZodLiteral<"shadow">;
355
+ observedCalls: z.ZodNumber;
356
+ coverage: z.ZodLiteral<"partial">;
357
+ observedSince: z.ZodString;
358
+ windowStart: z.ZodString;
359
+ windowEnd: z.ZodString;
360
+ }, z.core.$strict>, z.ZodObject<{
361
+ state: z.ZodLiteral<"unavailable">;
362
+ reason: z.ZodEnum<{
363
+ billing_setup_incomplete: "billing_setup_incomplete";
364
+ observation_not_started: "observation_not_started";
365
+ counter_unavailable: "counter_unavailable";
366
+ }>;
367
+ observedCalls: z.ZodNull;
368
+ coverage: z.ZodLiteral<"unavailable">;
369
+ observedSince: z.ZodNullable<z.ZodString>;
370
+ windowStart: z.ZodNullable<z.ZodString>;
371
+ windowEnd: z.ZodNullable<z.ZodString>;
372
+ }, z.core.$strict>], "state">;
373
+ productionApps: z.ZodDiscriminatedUnion<[z.ZodObject<{
374
+ state: z.ZodLiteral<"reporting">;
375
+ active: z.ZodNumber;
376
+ limit: z.ZodNullable<z.ZodNumber>;
377
+ }, z.core.$strict>, z.ZodObject<{
378
+ state: z.ZodLiteral<"unavailable">;
259
379
  active: z.ZodNull;
260
380
  limit: z.ZodNullable<z.ZodNumber>;
261
- }, z.core.$strict>;
381
+ }, z.core.$strict>], "state">;
262
382
  }, z.core.$strict>;
263
383
  }, z.core.$strict>;
264
384
  export type BillingAccountSummary = z.infer<typeof BillingAccountSummarySchema>;
@@ -1 +1 @@
1
- {"version":3,"file":"read-contract.d.ts","sourceRoot":"","sources":["../../src/billing/read-contract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,yBAAyB,oGAAsD,CAAC;AAE7F,eAAO,MAAM,wBAAwB;;;kBAK1B,CAAC;AAEZ,eAAO,MAAM,6BAA6B;;kBAE/B,CAAC;AAEZ,eAAO,MAAM,4BAA4B;;kBAAyD,CAAC;AAEnG,eAAO,MAAM,2BAA2B;;;;;kBAO7B,CAAC;AAEZ,eAAO,MAAM,2BAA2B;;;;kBAM7B,CAAC;AAEZ,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;kBAa7B,CAAC;AAEZ,eAAO,MAAM,iCAAiC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAKnC,CAAC;AAEZ,eAAO,MAAM,6BAA6B;;;;;;;oCASxC,CAAC;AAEH,eAAO,MAAM,gCAAgC;;;;;;;;;;;kBAUlC,CAAC;AAEZ,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;kBAQjC,CAAC;AA2BZ,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;6BAGvC,CAAC;AAEH,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAe9B,CAAC;AAEZ,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;kBAe1B,CAAC;AAEZ,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAChF,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iCAAiC,CAAC,CAAC;AAC5F,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAClF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC"}
1
+ {"version":3,"file":"read-contract.d.ts","sourceRoot":"","sources":["../../src/billing/read-contract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,yBAAyB,oGAAsD,CAAC;AAE7F,eAAO,MAAM,wBAAwB;;;kBAK1B,CAAC;AAEZ,eAAO,MAAM,6BAA6B;;kBAE/B,CAAC;AAEZ,eAAO,MAAM,4BAA4B;;;;;;;;6BAUvC,CAAC;AAsBH,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAW7C,CAAC;AAEH,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;6BAIzC,CAAC;AAEH,eAAO,MAAM,2BAA2B;;;;;;;;6BAetC,CAAC;AAEH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAa7B,CAAC;AAEZ,eAAO,MAAM,iCAAiC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAKnC,CAAC;AAEZ,eAAO,MAAM,6BAA6B;;;;;;;oCASxC,CAAC;AAEH,eAAO,MAAM,gCAAgC;;;;;;;;;;;kBAUlC,CAAC;AAEZ,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;kBAQjC,CAAC;AA2BZ,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;6BAGvC,CAAC;AAEH,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAe9B,CAAC;AAEZ,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAe1B,CAAC;AAEZ,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAChF,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iCAAiC,CAAC,CAAC;AAC5F,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAClF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC"}
@@ -10,22 +10,68 @@ export const BillingPlanSummarySchema = z
10
10
  export const BillingEnforcementStateSchema = z
11
11
  .object({ state: z.literal('legacy_unchanged') })
12
12
  .strict();
13
- export const BillingMeteringSummarySchema = z.object({ state: z.literal('not_started') }).strict();
14
- export const BillingMeteringDetailSchema = z
15
- .object({
16
- state: z.literal('not_started'),
17
- usedMcpCalls: z.null(),
18
- remainingMcpCalls: z.null(),
19
- resetAt: z.null(),
20
- })
21
- .strict();
22
- export const BillingProductionAppsSchema = z
23
- .object({
24
- state: z.literal('not_enforced'),
25
- active: z.null(),
26
- limit: z.number().int().nonnegative().nullable(),
27
- })
28
- .strict();
13
+ export const BillingMeteringSummarySchema = z.discriminatedUnion('state', [
14
+ z.object({ state: z.literal('not_started') }).strict(),
15
+ z
16
+ .object({
17
+ state: z.literal('reporting'),
18
+ mode: z.literal('shadow'),
19
+ coverage: z.literal('partial'),
20
+ })
21
+ .strict(),
22
+ z.object({ state: z.literal('unavailable') }).strict(),
23
+ ]);
24
+ const BillingMeteringReportingFields = {
25
+ state: z.literal('reporting'),
26
+ mode: z.literal('shadow'),
27
+ observedCalls: z.number().int().nonnegative(),
28
+ coverage: z.literal('partial'),
29
+ observedSince: z.string(),
30
+ windowStart: z.string(),
31
+ windowEnd: z.string(),
32
+ };
33
+ const BillingMeteringUnavailableFields = {
34
+ state: z.literal('unavailable'),
35
+ reason: z.enum(['billing_setup_incomplete', 'observation_not_started', 'counter_unavailable']),
36
+ observedCalls: z.null(),
37
+ coverage: z.literal('unavailable'),
38
+ observedSince: z.string().nullable(),
39
+ windowStart: z.string().nullable(),
40
+ windowEnd: z.string().nullable(),
41
+ };
42
+ export const BillingAccountMeteringDetailSchema = z.discriminatedUnion('state', [
43
+ z
44
+ .object({
45
+ state: z.literal('not_started'),
46
+ usedMcpCalls: z.null(),
47
+ remainingMcpCalls: z.null(),
48
+ resetAt: z.null(),
49
+ })
50
+ .strict(),
51
+ z.object({ ...BillingMeteringReportingFields, remainingMcpCalls: z.null() }).strict(),
52
+ z.object({ ...BillingMeteringUnavailableFields, remainingMcpCalls: z.null() }).strict(),
53
+ ]);
54
+ export const BillingOrgMeteringDetailSchema = z.discriminatedUnion('state', [
55
+ z.object({ state: z.literal('not_started') }).strict(),
56
+ z.object(BillingMeteringReportingFields).strict(),
57
+ z.object(BillingMeteringUnavailableFields).strict(),
58
+ ]);
59
+ export const BillingProductionAppsSchema = z.discriminatedUnion('state', [
60
+ z
61
+ .object({
62
+ state: z.literal('reporting'),
63
+ active: z.number().int().nonnegative(),
64
+ limit: z.number().int().nonnegative().nullable(),
65
+ })
66
+ .strict(),
67
+ z
68
+ .object({
69
+ state: z.literal('unavailable'),
70
+ active: z.null(),
71
+ limit: z.number().int().nonnegative().nullable(),
72
+ })
73
+ .strict(),
74
+ ]);
29
75
  export const BillingAccountSummarySchema = z
30
76
  .object({
31
77
  id: z.string(),
@@ -112,7 +158,7 @@ export const BillingAccountResponseSchema = z
112
158
  entitlement: BillingEntitlementSnapshotSchema.nullable(),
113
159
  linkedOrganizations: z.array(BillingLinkedOrganizationSchema),
114
160
  enforcement: BillingEnforcementStateSchema,
115
- metering: BillingMeteringDetailSchema,
161
+ metering: BillingAccountMeteringDetailSchema,
116
162
  productionApps: BillingProductionAppsSchema,
117
163
  legacyMigration: BillingLegacyMigrationSchema,
118
164
  })
@@ -129,7 +175,7 @@ export const OrgBillingResponseSchema = z
129
175
  plan: BillingPlanSummarySchema.extend({ effectiveFrom: z.string() }).strict(),
130
176
  entitlements: BillingEntitlementsSchema,
131
177
  enforcement: BillingEnforcementStateSchema,
132
- metering: BillingMeteringDetailSchema,
178
+ metering: BillingOrgMeteringDetailSchema,
133
179
  productionApps: BillingProductionAppsSchema,
134
180
  })
135
181
  .strict(),
@@ -1 +1 @@
1
- {"version":3,"file":"read-contract.js","sourceRoot":"","sources":["../../src/billing/read-contract.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"read-contract.js","sourceRoot":"","sources":["../../src/billing/read-contract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { HostedToolDispatchHook, Logger } from '@noodle-borg/transport-http';
2
+ import type { BillingUsageStore } from './usage-store.js';
3
+ export interface ShadowBillingDispatchOptions {
4
+ readonly store: BillingUsageStore;
5
+ /** Dedicated, stable base64-encoded 32-byte key. Never persisted with usage events. */
6
+ readonly hmacKey: string;
7
+ /** Maximum request-path wait for shadow persistence before the observer detaches fail-open. */
8
+ readonly writeTimeoutMs?: number;
9
+ readonly clock?: () => Date;
10
+ readonly logger: Logger;
11
+ }
12
+ /** Anchor enabled observation before serving; startup remains fail-open if the store races unavailable. */
13
+ export declare function startShadowBillingObservation(options: {
14
+ readonly store: BillingUsageStore;
15
+ readonly startedAt: string;
16
+ readonly logger: Logger;
17
+ }): Promise<void>;
18
+ /** Build the fail-open shadow observer attached at the final hosted tool-dispatch boundary. */
19
+ export declare function createShadowBillingDispatchHook(options: ShadowBillingDispatchOptions): HostedToolDispatchHook;
20
+ //# sourceMappingURL=shadow-meter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shadow-meter.d.ts","sourceRoot":"","sources":["../../src/billing/shadow-meter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,sBAAsB,EACtB,MAAM,EACP,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,iBAAiB,EAA2B,MAAM,kBAAkB,CAAC;AAEnF,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC;IAClC,uFAAuF;IACvF,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,+FAA+F;IAC/F,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAKD,2GAA2G;AAC3G,wBAAsB,6BAA6B,CAAC,OAAO,EAAE;IAC3D,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,GAAG,OAAO,CAAC,IAAI,CAAC,CAchB;AAED,+FAA+F;AAC/F,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,4BAA4B,GACpC,sBAAsB,CAkExB"}
@@ -0,0 +1,177 @@
1
+ import { createHmac } from 'node:crypto';
2
+ const DEFAULT_WRITE_TIMEOUT_MS = 250;
3
+ const FAILURE_COOLDOWN_MS = 5_000;
4
+ /** Anchor enabled observation before serving; startup remains fail-open if the store races unavailable. */
5
+ export async function startShadowBillingObservation(options) {
6
+ const outcome = await settleObservation(() => options.store.startBillingUsageObservation({ startedAt: options.startedAt }), DEFAULT_WRITE_TIMEOUT_MS);
7
+ if (outcome !== 'recorded') {
8
+ try {
9
+ options.logger.warn('billing.usage.shadow_start_failed', {
10
+ failure: outcome,
11
+ });
12
+ }
13
+ catch {
14
+ // Shadow diagnostics must not prevent the service from starting.
15
+ }
16
+ }
17
+ }
18
+ /** Build the fail-open shadow observer attached at the final hosted tool-dispatch boundary. */
19
+ export function createShadowBillingDispatchHook(options) {
20
+ const hmacKey = parseHmacKey(options.hmacKey);
21
+ const clock = options.clock ?? (() => new Date());
22
+ const writeTimeoutMs = validateWriteTimeout(options.writeTimeoutMs ?? DEFAULT_WRITE_TIMEOUT_MS);
23
+ let circuitOpenUntil = 0;
24
+ return async (context) => {
25
+ if (context.signal.aborted)
26
+ return { allow: true };
27
+ if (Date.now() < circuitOpenUntil)
28
+ return { allow: true };
29
+ let input;
30
+ try {
31
+ const semanticFingerprint = digest(hmacKey, {
32
+ version: 1,
33
+ kind: 'invocation_semantics',
34
+ tenant: tenantIdentity(context),
35
+ toolName: context.toolName,
36
+ toolArguments: context.toolArguments,
37
+ });
38
+ const fallbackFingerprint = digest(hmacKey, {
39
+ version: 1,
40
+ kind: 'bounded_retry',
41
+ tenant: tenantIdentity(context),
42
+ callerSubject: context.caller?.subject ?? null,
43
+ client: context.client,
44
+ requestId: context.requestId,
45
+ requestMeta: context.requestMeta ?? null,
46
+ semanticFingerprint,
47
+ });
48
+ const highConfidenceKeyHash = context.sessionId === undefined
49
+ ? undefined
50
+ : digest(hmacKey, {
51
+ version: 1,
52
+ kind: 'mcp_session_request',
53
+ tenant: tenantIdentity(context),
54
+ sessionId: context.sessionId,
55
+ requestId: context.requestId,
56
+ });
57
+ input = {
58
+ mode: 'shadow',
59
+ org: context.org,
60
+ app: context.app,
61
+ environment: context.environment,
62
+ deploymentId: context.deploymentId,
63
+ admittedAt: clock().toISOString(),
64
+ ...(highConfidenceKeyHash !== undefined ? { highConfidenceKeyHash } : {}),
65
+ fallbackFingerprint,
66
+ semanticFingerprint,
67
+ };
68
+ }
69
+ catch {
70
+ warnObservationFailure(options.logger, context, 'observation_failed');
71
+ return { allow: true };
72
+ }
73
+ if (context.signal.aborted)
74
+ return { allow: true };
75
+ const outcome = await settleObservation(() => options.store.recordBillingUsage(input), writeTimeoutMs);
76
+ if (outcome !== 'recorded') {
77
+ circuitOpenUntil = Date.now() + FAILURE_COOLDOWN_MS;
78
+ warnObservationFailure(options.logger, context, outcome);
79
+ }
80
+ return { allow: true };
81
+ };
82
+ }
83
+ async function settleObservation(operation, timeoutMs) {
84
+ let operationPromise;
85
+ try {
86
+ operationPromise = operation();
87
+ }
88
+ catch {
89
+ return 'store_unavailable';
90
+ }
91
+ return new Promise((resolve) => {
92
+ let settled = false;
93
+ const timer = setTimeout(() => {
94
+ if (settled)
95
+ return;
96
+ settled = true;
97
+ resolve('observation_timed_out');
98
+ }, timeoutMs);
99
+ void operationPromise.then(() => {
100
+ if (settled)
101
+ return;
102
+ settled = true;
103
+ clearTimeout(timer);
104
+ resolve('recorded');
105
+ }, () => {
106
+ if (settled)
107
+ return;
108
+ settled = true;
109
+ clearTimeout(timer);
110
+ resolve('store_unavailable');
111
+ });
112
+ });
113
+ }
114
+ function warnObservationFailure(logger, context, failure) {
115
+ try {
116
+ logger.warn('billing.usage.shadow_write_failed', {
117
+ org: context.org,
118
+ app: context.app,
119
+ env: context.environment,
120
+ deploymentId: context.deploymentId,
121
+ failure,
122
+ });
123
+ }
124
+ catch {
125
+ // Shadow diagnostics must not become an admission dependency.
126
+ }
127
+ }
128
+ function validateWriteTimeout(value) {
129
+ if (!Number.isSafeInteger(value) || value < 1 || value > 5_000) {
130
+ throw new Error('billing usage shadow write timeout must be between 1 and 5000 milliseconds');
131
+ }
132
+ return value;
133
+ }
134
+ function tenantIdentity(context) {
135
+ return {
136
+ org: context.org,
137
+ app: context.app,
138
+ environment: context.environment,
139
+ deploymentId: context.deploymentId,
140
+ };
141
+ }
142
+ function parseHmacKey(value) {
143
+ const normalized = value.trim();
144
+ const decoded = Buffer.from(normalized, 'base64');
145
+ if (decoded.length !== 32 || decoded.toString('base64') !== normalized) {
146
+ throw new Error('billing usage HMAC key must be base64-encoded 32 bytes');
147
+ }
148
+ return decoded;
149
+ }
150
+ function digest(key, value) {
151
+ return createHmac('sha256', key).update(canonicalJson(value)).digest('hex');
152
+ }
153
+ function canonicalJson(value) {
154
+ return JSON.stringify(canonicalValue(value));
155
+ }
156
+ function canonicalValue(value) {
157
+ if (value === null || typeof value === 'string' || typeof value === 'boolean')
158
+ return value;
159
+ if (typeof value === 'number') {
160
+ if (!Number.isFinite(value))
161
+ throw new Error('billing usage identity contains a non-finite number');
162
+ return value;
163
+ }
164
+ if (Array.isArray(value))
165
+ return value.map(canonicalValue);
166
+ if (typeof value === 'object') {
167
+ const result = {};
168
+ for (const key of Object.keys(value).sort()) {
169
+ const child = value[key];
170
+ if (child !== undefined)
171
+ result[key] = canonicalValue(child);
172
+ }
173
+ return result;
174
+ }
175
+ throw new Error('billing usage identity must contain JSON-compatible values');
176
+ }
177
+ //# sourceMappingURL=shadow-meter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shadow-meter.js","sourceRoot":"","sources":["../../src/billing/shadow-meter.ts"],"names":[],"mappings":"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"}