@arnaudjnn/billing-tools 0.63.2 → 0.64.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 (62) hide show
  1. package/dist/allowance.d.ts +20 -0
  2. package/dist/allowance.d.ts.map +1 -1
  3. package/dist/allowance.js +30 -5
  4. package/dist/allowance.js.map +1 -1
  5. package/dist/auth.d.ts +48 -0
  6. package/dist/auth.d.ts.map +1 -1
  7. package/dist/auth.js +53 -2
  8. package/dist/auth.js.map +1 -1
  9. package/dist/billing.d.ts +59 -3
  10. package/dist/billing.d.ts.map +1 -1
  11. package/dist/billing.js +73 -12
  12. package/dist/billing.js.map +1 -1
  13. package/dist/cli/commands.d.ts.map +1 -1
  14. package/dist/cli/commands.js +162 -1
  15. package/dist/cli/commands.js.map +1 -1
  16. package/dist/create-billing.d.ts +1 -1
  17. package/dist/doctor.d.ts +6 -1
  18. package/dist/doctor.d.ts.map +1 -1
  19. package/dist/doctor.js +66 -1
  20. package/dist/doctor.js.map +1 -1
  21. package/dist/index.d.ts +5 -4
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +7 -4
  24. package/dist/index.js.map +1 -1
  25. package/dist/metering.js +2 -2
  26. package/dist/metering.js.map +1 -1
  27. package/dist/plan-model.d.ts +11 -1
  28. package/dist/plan-model.d.ts.map +1 -1
  29. package/dist/plan-model.js +3 -2
  30. package/dist/plan-model.js.map +1 -1
  31. package/dist/subscription.d.ts +51 -17
  32. package/dist/subscription.d.ts.map +1 -1
  33. package/dist/subscription.js +153 -43
  34. package/dist/subscription.js.map +1 -1
  35. package/dist/tools/billing.d.ts +16 -1
  36. package/dist/tools/billing.d.ts.map +1 -1
  37. package/dist/tools/billing.js +7 -2
  38. package/dist/tools/billing.js.map +1 -1
  39. package/dist/tools/management.d.ts.map +1 -1
  40. package/dist/tools/management.js +92 -17
  41. package/dist/tools/management.js.map +1 -1
  42. package/dist/tools/profile.d.ts +4 -0
  43. package/dist/tools/profile.d.ts.map +1 -0
  44. package/dist/tools/profile.js +171 -0
  45. package/dist/tools/profile.js.map +1 -0
  46. package/dist/tools/register.d.ts +17 -1
  47. package/dist/tools/register.d.ts.map +1 -1
  48. package/dist/tools/register.js +28 -3
  49. package/dist/tools/register.js.map +1 -1
  50. package/dist/tools/subscription.d.ts +14 -0
  51. package/dist/tools/subscription.d.ts.map +1 -0
  52. package/dist/tools/subscription.js +167 -0
  53. package/dist/tools/subscription.js.map +1 -0
  54. package/dist/topup.d.ts +83 -1
  55. package/dist/topup.d.ts.map +1 -1
  56. package/dist/topup.js +107 -2
  57. package/dist/topup.js.map +1 -1
  58. package/dist/types.d.ts +18 -1
  59. package/dist/types.d.ts.map +1 -1
  60. package/dist/types.js +1 -0
  61. package/dist/types.js.map +1 -1
  62. package/package.json +3 -2
@@ -70,6 +70,26 @@ export interface AllowanceInput {
70
70
  * hand out twelve packages. The calendar month remains the fallback for an org
71
71
  * with no subscription, which is what this library always did.
72
72
  */
73
+ /**
74
+ * The cycle the meter is measuring right now — the ONE definition of "this
75
+ * cycle" in the library.
76
+ *
77
+ * It is exported because anything that files something against a cycle has to
78
+ * agree with the thing that reads it back. A top-up grant stored under a key the
79
+ * meter never looks up is not a smaller grant, it is no grant at all, and it
80
+ * fails silently: the approval succeeds, the balance never moves. That is
81
+ * exactly what happened while `request_top_up` computed its own calendar month
82
+ * and the meter used the subscription period.
83
+ */
84
+ export declare function currentCycle(adapter: BillingAdapter, input: {
85
+ orgId: string;
86
+ plans?: PlanCatalog;
87
+ plan?: string | null;
88
+ now?: number;
89
+ }): Promise<CycleWindow>;
90
+ /** The calendar-month key this library used before the window came from the
91
+ * subscription. Read-only fallback, so grants filed under it still apply. */
92
+ export declare function legacyCycleKey(now?: number): string;
73
93
  export declare function resolveAllowance(adapter: BillingAdapter, config: ResolvedConfig, input: AllowanceInput): Promise<AllowanceState>;
74
94
  export type DenialReason = "rate_limit_reached" | "pool_exhausted" | "seat_allowance_reached" | "insufficient_balance";
75
95
  export interface FundingDecision {
@@ -1 +1 @@
1
- {"version":3,"file":"allowance.d.ts","sourceRoot":"","sources":["../src/allowance.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"allowance.d.ts","sourceRoot":"","sources":["../src/allowance.ts"],"names":[],"mappings":"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"}
package/dist/allowance.js CHANGED
@@ -11,6 +11,28 @@ import { stripeBalanceUsageLedger } from "./usage-ledger.js";
11
11
  * hand out twelve packages. The calendar month remains the fallback for an org
12
12
  * with no subscription, which is what this library always did.
13
13
  */
14
+ /**
15
+ * The cycle the meter is measuring right now — the ONE definition of "this
16
+ * cycle" in the library.
17
+ *
18
+ * It is exported because anything that files something against a cycle has to
19
+ * agree with the thing that reads it back. A top-up grant stored under a key the
20
+ * meter never looks up is not a smaller grant, it is no grant at all, and it
21
+ * fails silently: the approval succeeds, the balance never moves. That is
22
+ * exactly what happened while `request_top_up` computed its own calendar month
23
+ * and the meter used the subscription period.
24
+ */
25
+ export async function currentCycle(adapter, input) {
26
+ const model = planModel(input.plans ?? {}, input.plan ?? null);
27
+ const now = input.now ?? Date.now();
28
+ return cycleWindowFor(model, await subscriptionPeriod(adapter, input.orgId, model), now);
29
+ }
30
+ /** The calendar-month key this library used before the window came from the
31
+ * subscription. Read-only fallback, so grants filed under it still apply. */
32
+ export function legacyCycleKey(now = Date.now()) {
33
+ const d = new Date(now);
34
+ return `${d.getUTCFullYear()}-${String(d.getUTCMonth() + 1).padStart(2, "0")}`;
35
+ }
14
36
  export async function resolveAllowance(adapter, config, input) {
15
37
  const model = planModel(input.plans, input.plan ?? null);
16
38
  const now = input.now ?? Date.now();
@@ -70,11 +92,14 @@ export async function resolveAllowance(adapter, config, input) {
70
92
  ? { callerKind: "api" }
71
93
  : { callerKind: "user", callerId: input.caller?.id },
72
94
  }),
73
- // Top-up grants raise a member's pack for the cycle, and are keyed by the
74
- // same cycle identity the window produces, so the two can't drift.
95
+ // Top-up grants raise a member's pack for the cycle, keyed by the cycle
96
+ // identity `currentCycle` produces the same one the approving tool writes,
97
+ // which is now guaranteed by both going through that function. The legacy
98
+ // calendar key is read as a fallback so grants approved before the two
99
+ // agreed still apply instead of vanishing.
75
100
  packSize == null || input.caller?.kind !== "user" || !input.caller.id
76
101
  ? Promise.resolve(0)
77
- : extraAllowance(adapter, input.orgId, input.caller.id, cycle.key),
102
+ : extraAllowance(adapter, input.orgId, input.caller.id, cycle.key, legacyCycleKey(now)),
78
103
  Promise.all(limitReads),
79
104
  ]);
80
105
  return {
@@ -141,7 +166,7 @@ export function fundingFor(state, model, cost, caller) {
141
166
  // protected is the product, not the customer's money. The tightest window that
142
167
  // refuses is the one reported, so the message names a week rather than a month
143
168
  // when the week is what ran out.
144
- for (const limit of state.limits) {
169
+ for (const limit of state.limits ?? []) {
145
170
  if (limit.remaining < cost) {
146
171
  return { ok: false, source: null, reason: "rate_limit_reached", limit };
147
172
  }
@@ -177,7 +202,7 @@ const WINDOW_NAMES = {
177
202
  export function describeDenial(reason, state, limit) {
178
203
  switch (reason) {
179
204
  case "rate_limit_reached": {
180
- const l = limit ?? state.limits.find((x) => x.remaining <= 0);
205
+ const l = limit ?? (state.limits ?? []).find((x) => x.remaining <= 0);
181
206
  const name = l?.label ?? (l ? WINDOW_NAMES[l.every] : "window");
182
207
  const resets = l?.window.end ? ` Resets ${new Date(l.window.end).toISOString()}.` : "";
183
208
  return `Usage limit reached for this ${name} (${l?.size ?? 0}).${resets}`;
@@ -1 +1 @@
1
- {"version":3,"file":"allowance.js","sourceRoot":"","sources":["../src/allowance.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"allowance.js","sourceRoot":"","sources":["../src/allowance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAErE,OAAO,EACL,cAAc,EACd,eAAe,EACf,UAAU,EACV,SAAS,EACT,UAAU,EACV,YAAY,EACZ,aAAa,GAKd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,EAAE,wBAAwB,EAAwC,MAAM,mBAAmB,CAAC;AAkEnG;;;;;;;;GAQG;AACH;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,OAAuB,EACvB,KAAiF;IAEjF,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;IAC/D,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;IACpC,OAAO,cAAc,CAAC,KAAK,EAAE,MAAM,kBAAkB,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;AAC3F,CAAC;AAED;8EAC8E;AAC9E,MAAM,UAAU,cAAc,CAAC,MAAc,IAAI,CAAC,GAAG,EAAE;IACrD,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;IACxB,OAAO,GAAG,CAAC,CAAC,cAAc,EAAE,IAAI,MAAM,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;AACjF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAAuB,EACvB,MAAsB,EACtB,KAAqB;IAErB,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;IACzD,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;IACpC,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,IAAI,CAAC,MAAM,oBAAoB,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1F,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACrE,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,wBAAwB,EAAE,CAAC;IAE1D,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IAC5F,CAAC;IAED,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IACnC,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAE3D,6EAA6E;IAC7E,+EAA+E;IAC/E,iFAAiF;IACjF,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACrD,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC1C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC;QACnC,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QACtD,OAAO,MAAM;aACV,KAAK,CAAC;YACL,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,UAAU;YACV,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,SAAS;YAC5B,MAAM,EACJ,KAAK,KAAK,QAAQ;gBAChB,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,KAAK;oBAC5B,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE;oBACvB,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE;gBACtD,CAAC,CAAC,SAAS;SAChB,CAAC;aACD,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACf,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,KAAK;YACL,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI;YAC1B,IAAI,EAAE,KAAK,CAAC,MAAM;YAClB,IAAI;YACJ,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;YAC3C,MAAM;SACP,CAAC,CAAC,CAAC;IACR,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACpE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC;QACpF,QAAQ,IAAI,IAAI;YACd,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;YACpB,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,SAAS,EAAE,CAAC;QACrG,QAAQ,IAAI,IAAI;YACd,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;YACpB,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;gBACX,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,UAAU;gBACV,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,SAAS;gBAC3B,mEAAmE;gBACnE,sEAAsE;gBACtE,MAAM,EACJ,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,KAAK;oBAC1B,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE;oBACvB,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE;aACzD,CAAC;QACN,wEAAwE;QACxE,6EAA6E;QAC7E,0EAA0E;QAC1E,uEAAuE;QACvE,2CAA2C;QAC3C,QAAQ,IAAI,IAAI,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;YACnE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;YACpB,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC;QACzF,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;KACxB,CAAC,CAAC;IAEH,OAAO;QACL,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,IAAI;QACxB,KAAK;QACL,MAAM;QACN,IAAI,EACF,QAAQ,IAAI,IAAI;YACd,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC,EAAE;QACrF,IAAI,EACF,QAAQ,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ;YACzC,CAAC,CAAC,IAAI;YACN,CAAC,CAAC;gBACE,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ;gBAC/B,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,QAAQ;gBACd,KAAK;gBACL,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,QAAQ,CAAC;aACpD;QACP,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC;KAC5B,CAAC;AACJ,CAAC;AAED;8CAC8C;AAC9C,KAAK,UAAU,kBAAkB,CAC/B,OAAuB,EACvB,KAAa,EACb,KAAuB;IAEvB,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,4EAA4E;IAC5E,0DAA0D;IAC1D,MAAM,WAAW,GACf,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC;IACpF,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAC9B,IAAI,CAAC,OAAO,CAAC,eAAe;QAAE,OAAO,IAAI,CAAC;IAC1C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACjD,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,WAAW,IAAI,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,SAAS,IAAI,IAAI,EAAE,CAAC;IACxE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAgBD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,UAAU,CACxB,KAAqB,EACrB,KAAuB,EACvB,IAAY,EACZ,MAAoD;IAEpD,IAAI,IAAI,IAAI,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAEjD,6EAA6E;IAC7E,gFAAgF;IAChF,2EAA2E;IAC3E,+EAA+E;IAC/E,+EAA+E;IAC/E,iCAAiC;IACjC,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;QACvC,IAAI,KAAK,CAAC,SAAS,GAAG,IAAI,EAAE,CAAC;YAC3B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC;QAC1E,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QACf,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI;YAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QACtE,IAAI,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,OAAO,EAAE,CAAC;YAC/C,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;QAC/D,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QACf,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI;YAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QACtE,IAAI,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,OAAO,EAAE,CAAC;YAC/C,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,wBAAwB,EAAE,CAAC;QACvE,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAChE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC;AACrE,CAAC;AAED;gEACgE;AAChE,MAAM,YAAY,GAA0B;IAC1C,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,eAAe;CACvB,CAAC;AAEF,uDAAuD;AACvD,MAAM,UAAU,cAAc,CAC5B,MAAoB,EACpB,KAAqB,EACrB,KAAkB;IAElB,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,oBAAoB,CAAC,CAAC,CAAC;YAC1B,MAAM,CAAC,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC;YACtE,MAAM,IAAI,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YAChE,MAAM,MAAM,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACvF,OAAO,gCAAgC,IAAI,KAAK,CAAC,EAAE,IAAI,IAAI,CAAC,KAAK,MAAM,EAAE,CAAC;QAC5E,CAAC;QACD,KAAK,gBAAgB;YACnB,OAAO,0CAA0C,KAAK,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,6CAA6C,CAAC;QACtH,KAAK,wBAAwB;YAC3B,OAAO,wFAAwF,CAAC;QAClG,KAAK,sBAAsB;YACzB,OAAO,gCAAgC,KAAK,CAAC,MAAM,4BAA4B,CAAC;IACpF,CAAC;AACH,CAAC"}
package/dist/auth.d.ts CHANGED
@@ -1,16 +1,64 @@
1
1
  import { AsyncLocalStorage } from "node:async_hooks";
2
2
  import type { BillingAdapter, ResolvedConfig, ToolErrorResult } from "./types.js";
3
+ /**
4
+ * Who is making this call, when that is known.
5
+ *
6
+ * An org API key identifies an ORG, not a person — it is the credential a
7
+ * headless agent holds, and there is no user behind it. A session-backed caller
8
+ * (the app's own server actions, an OAuth token minted for a user) does know,
9
+ * and passing it here is what lets the admin-only tools tell an owner from a
10
+ * member. Absent, the caller is treated as org-scoped, which is what every
11
+ * caller was before this existed.
12
+ */
13
+ export interface Principal {
14
+ /** The user id the adapter's `isAdmin` understands (a WorkOS user id). */
15
+ userId: string;
16
+ /** Pre-resolved role, when the caller already knows it — skips the lookup. */
17
+ isAdmin?: boolean;
18
+ }
3
19
  interface AuthStore {
4
20
  authHeader: string | null;
5
21
  orgId?: string;
22
+ principal?: Principal;
6
23
  }
7
24
  export declare const authContext: AsyncLocalStorage<AuthStore>;
8
25
  export declare function runWithAuth<T>(header: string | null, fn: () => T): T;
9
26
  export declare function runWithResolvedOrg<T>(header: string | null, orgId: string, fn: () => T): T;
27
+ /** Run with a known caller, so admin-only tools can check their role. Use this
28
+ * from a session-backed surface (a server action, an OAuth token carrying a
29
+ * user). The org may be pre-resolved or left to the API key. */
30
+ export declare function runWithPrincipal<T>(ctx: {
31
+ authHeader?: string | null;
32
+ orgId?: string;
33
+ principal: Principal;
34
+ }, fn: () => T): T;
35
+ /** The caller, if this surface established one. */
36
+ export declare function currentPrincipal(): Principal | null;
10
37
  export declare function enforceAccess(adapter: BillingAdapter): Promise<{
11
38
  authorized: true;
12
39
  orgId: string;
13
40
  } | ToolErrorResult>;
41
+ /**
42
+ * `enforceAccess`, plus a role check when the surface knows who is calling.
43
+ *
44
+ * The rule, and why it is shaped like this: an ORG API KEY has no user behind
45
+ * it, so there is no role to check and it stays owner-level — that is what the
46
+ * credential means, and it is what every caller got before this function
47
+ * existed, so adding the check breaks nobody. A caller that DOES identify a user
48
+ * (a server action, an OAuth token for a person) gets checked against the
49
+ * adapter, which is what stops a member from approving their own top-up or
50
+ * moving themselves onto a premium seat through the API while the app's own UI
51
+ * refuses them.
52
+ *
53
+ * An adapter with no `isAdmin` cannot answer, so the call is allowed rather than
54
+ * refused: silently locking out every management tool would be a worse failure
55
+ * than the one being prevented.
56
+ */
57
+ export declare function enforceAdmin(adapter: BillingAdapter, action: string): Promise<{
58
+ authorized: true;
59
+ orgId: string;
60
+ principal: Principal | null;
61
+ } | ToolErrorResult>;
14
62
  export declare function isInternalOrg(adapter: BillingAdapter, orgId: string, internalDomains: string[]): Promise<boolean>;
15
63
  export declare function enforceTokens(adapter: BillingAdapter, config: ResolvedConfig, orgId: string, toolName: string, cost: number): Promise<ToolErrorResult | null>;
16
64
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AASlF,UAAU,SAAS;IACjB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAG1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,WAAW,8BAAqC,CAAC;AAE9D,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAEpE;AAGD,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAE1F;AAKD,wBAAsB,aAAa,CACjC,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC;IAAE,UAAU,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,eAAe,CAAC,CAyBhE;AAED,wBAAsB,aAAa,CACjC,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,MAAM,EACb,eAAe,EAAE,MAAM,EAAE,GACxB,OAAO,CAAC,OAAO,CAAC,CAKlB;AAKD,wBAAsB,aAAa,CACjC,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CA2BjC"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AASlF;;;;;;;;;GASG;AACH,MAAM,WAAW,SAAS;IACxB,0EAA0E;IAC1E,MAAM,EAAE,MAAM,CAAC;IACf,8EAA8E;IAC9E,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,UAAU,SAAS;IACjB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAG1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,eAAO,MAAM,WAAW,8BAAqC,CAAC;AAE9D,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAEpE;AAGD,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAE1F;AAED;;iEAEiE;AACjE,wBAAgB,gBAAgB,CAAC,CAAC,EAChC,GAAG,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,SAAS,CAAA;CAAE,EACzE,EAAE,EAAE,MAAM,CAAC,GACV,CAAC,CAKH;AAED,mDAAmD;AACnD,wBAAgB,gBAAgB,IAAI,SAAS,GAAG,IAAI,CAEnD;AAKD,wBAAsB,aAAa,CACjC,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC;IAAE,UAAU,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,eAAe,CAAC,CAyBhE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;IAAE,UAAU,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAA;CAAE,GAAG,eAAe,CAAC,CAsB7F;AAED,wBAAsB,aAAa,CACjC,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,MAAM,EACb,eAAe,EAAE,MAAM,EAAE,GACxB,OAAO,CAAC,OAAO,CAAC,CAKlB;AAKD,wBAAsB,aAAa,CACjC,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CA2BjC"}
package/dist/auth.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { AsyncLocalStorage } from "node:async_hooks";
2
- import { getBillingCustomerId, getTokenBalance, deductTokens, tryAutoReload, stripeConfigured, } from "./billing.js";
2
+ import { getBillingCustomerId, getTokenBalance, deductTokens, autoReloadFor, stripeConfigured, } from "./billing.js";
3
3
  export const authContext = new AsyncLocalStorage();
4
4
  export function runWithAuth(header, fn) {
5
5
  return authContext.run({ authHeader: header }, fn);
@@ -8,6 +8,16 @@ export function runWithAuth(header, fn) {
8
8
  export function runWithResolvedOrg(header, orgId, fn) {
9
9
  return authContext.run({ authHeader: header, orgId }, fn);
10
10
  }
11
+ /** Run with a known caller, so admin-only tools can check their role. Use this
12
+ * from a session-backed surface (a server action, an OAuth token carrying a
13
+ * user). The org may be pre-resolved or left to the API key. */
14
+ export function runWithPrincipal(ctx, fn) {
15
+ return authContext.run({ authHeader: ctx.authHeader ?? null, orgId: ctx.orgId, principal: ctx.principal }, fn);
16
+ }
17
+ /** The caller, if this surface established one. */
18
+ export function currentPrincipal() {
19
+ return authContext.getStore()?.principal ?? null;
20
+ }
11
21
  // Resolve the caller's org from the Bearer API key (via the adapter). Returns
12
22
  // the org id or a parseable 401 envelope (REST/MCP layers sniff "Unauthorized
13
23
  // (401)" to map to HTTP 401 + WWW-Authenticate).
@@ -37,6 +47,47 @@ export async function enforceAccess(adapter) {
37
47
  }
38
48
  return { authorized: true, orgId: resolved.orgId };
39
49
  }
50
+ /**
51
+ * `enforceAccess`, plus a role check when the surface knows who is calling.
52
+ *
53
+ * The rule, and why it is shaped like this: an ORG API KEY has no user behind
54
+ * it, so there is no role to check and it stays owner-level — that is what the
55
+ * credential means, and it is what every caller got before this function
56
+ * existed, so adding the check breaks nobody. A caller that DOES identify a user
57
+ * (a server action, an OAuth token for a person) gets checked against the
58
+ * adapter, which is what stops a member from approving their own top-up or
59
+ * moving themselves onto a premium seat through the API while the app's own UI
60
+ * refuses them.
61
+ *
62
+ * An adapter with no `isAdmin` cannot answer, so the call is allowed rather than
63
+ * refused: silently locking out every management tool would be a worse failure
64
+ * than the one being prevented.
65
+ */
66
+ export async function enforceAdmin(adapter, action) {
67
+ const auth = await enforceAccess(adapter);
68
+ if ("isError" in auth)
69
+ return auth;
70
+ const principal = currentPrincipal();
71
+ if (!principal)
72
+ return { authorized: true, orgId: auth.orgId, principal: null };
73
+ if (principal.isAdmin === true)
74
+ return { authorized: true, orgId: auth.orgId, principal };
75
+ if (!adapter.isAdmin)
76
+ return { authorized: true, orgId: auth.orgId, principal };
77
+ const ok = await adapter.isAdmin(auth.orgId, principal.userId);
78
+ if (!ok) {
79
+ return {
80
+ isError: true,
81
+ content: [
82
+ {
83
+ type: "text",
84
+ text: `Forbidden (403): ${action} requires an owner or admin of this workspace.`,
85
+ },
86
+ ],
87
+ };
88
+ }
89
+ return { authorized: true, orgId: auth.orgId, principal };
90
+ }
40
91
  export async function isInternalOrg(adapter, orgId, internalDomains) {
41
92
  if (internalDomains.length === 0)
42
93
  return false;
@@ -74,7 +125,7 @@ export async function enforceTokens(adapter, config, orgId, toolName, cost) {
74
125
  };
75
126
  }
76
127
  await deductTokens(customerId, toolName, cost, config.currency);
77
- tryAutoReload(customerId, config.currency).catch(() => { });
128
+ autoReloadFor(customerId, config).catch(() => { });
78
129
  return null;
79
130
  }
80
131
  //# sourceMappingURL=auth.js.map
package/dist/auth.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
package/dist/billing.d.ts CHANGED
@@ -1,7 +1,15 @@
1
1
  import Stripe from "stripe";
2
- import type { BillingAdapter, ResolvedConfig } from "./types.js";
2
+ import type { BillingAdapter, BillingConfig, ResolvedConfig } from "./types.js";
3
3
  export declare function getStripe(): Stripe;
4
4
  export declare function stripeConfigured(): boolean;
5
+ /**
6
+ * Replace the memoised client. TESTS ONLY.
7
+ *
8
+ * The money paths are worth asserting without a network, and the client is a
9
+ * module-local by design (one per process, built lazily). This is the seam that
10
+ * makes those assertions possible; nothing in the library calls it.
11
+ */
12
+ export declare function __setStripeForTests(client: unknown): void;
5
13
  export interface StripePrice {
6
14
  id: string;
7
15
  productId: string | null;
@@ -75,7 +83,27 @@ export declare function creditTokens(stripeCustomerId: string, amount: number, d
75
83
  /** Pass a stable key (e.g. the source invoice/session id) so replayed events
76
84
  * — a re-delivered webhook, an overlapping poll — credit exactly once. */
77
85
  idempotencyKey?: string): Promise<void>;
78
- export declare function createTokenCheckoutSession(stripeCustomerId: string, orgId: string, amountMajor: number, config: ResolvedConfig): Promise<string>;
86
+ /**
87
+ * How a top-up is taxed and where it returns.
88
+ *
89
+ * Tax is an OPTION rather than a default because only the app knows where it is
90
+ * established and what the customer's place of supply is — the same reason the
91
+ * seat checkout takes `taxRates`. What is NOT acceptable is the previous
92
+ * behaviour: a seller charging 22% IVA on its seats and 0% on a top-up bought
93
+ * through the same account, on an invoice that states neither. `checkBillingSetup`
94
+ * warns when a taxed account sells untaxed top-ups.
95
+ */
96
+ export interface TopUpCheckoutOptions {
97
+ /** Manual Stripe TaxRate ids, as `taxRatesFor` returns. */
98
+ taxRates?: string[];
99
+ /** Use Stripe Tax instead. Ignored when `taxRates` is given — Stripe rejects both. */
100
+ automaticTax?: boolean;
101
+ /** Defaults to `${baseUrl}/billing/success?tokens=…`. */
102
+ successUrl?: string;
103
+ /** Defaults to `${baseUrl}/billing/cancel`. */
104
+ cancelUrl?: string;
105
+ }
106
+ export declare function createTokenCheckoutSession(stripeCustomerId: string, orgId: string, amountMajor: number, config: ResolvedConfig, opts?: TopUpCheckoutOptions): Promise<string>;
79
107
  /** A Stripe Billing Portal session URL — the no-code self-serve surface where a
80
108
  * customer manages their subscription (upgrade/downgrade/cancel), updates the
81
109
  * payment method (fixes a failing card), and views invoices. */
@@ -86,7 +114,35 @@ export declare function getAutoReloadSettings(stripeCustomerId: string): Promise
86
114
  reload_to: number;
87
115
  } | null>;
88
116
  export declare function setAutoReloadSettings(stripeCustomerId: string, threshold: number, reloadTo: number, enabled: boolean): Promise<void>;
89
- export declare function tryAutoReload(stripeCustomerId: string, currency: string): Promise<void>;
117
+ /**
118
+ * Recharge a customer who has dropped to their auto-reload threshold.
119
+ *
120
+ * Two properties this must have, both learned the hard way:
121
+ *
122
+ * **It bills as an INVOICE, not a bare charge.** A PaymentIntent produces a
123
+ * receipt with no invoice number and no tax line. That is not a valid sales
124
+ * document for a business customer (an Italian buyer needs a fattura), and it
125
+ * meant the one purchase a customer never explicitly confirms was also the one
126
+ * with no paperwork. An invoice also carries the same tax treatment as every
127
+ * other line the account bills.
128
+ *
129
+ * **It is idempotent.** This is fired and forgotten from the meter on every
130
+ * metered call and from the auth path, so N concurrent calls all observe the
131
+ * same low balance and all used to charge. The key below collapses them: Stripe
132
+ * returns the first invoice for every duplicate within its 24h window, so the
133
+ * customer is charged once no matter how many callers raced.
134
+ */
135
+ /** Fire-and-forget auto-reload with the deployment's tax settings applied.
136
+ * Both trigger points (the meter and the auth gate) go through this, so a
137
+ * reload can't be taxed on one path and untaxed on the other. */
138
+ export declare function autoReloadFor(stripeCustomerId: string, config: {
139
+ currency: string;
140
+ tax?: BillingConfig["tax"];
141
+ }): Promise<void>;
142
+ export declare function tryAutoReload(stripeCustomerId: string, currency: string, opts?: {
143
+ taxRates?: string[];
144
+ automaticTax?: boolean;
145
+ }): Promise<void>;
90
146
  export interface InvoiceEntry {
91
147
  id: string;
92
148
  /** `purchase` = a Stripe invoice; `auto_reload` = a bare off-session charge. */
@@ -1 +1 @@
1
- {"version":3,"file":"billing.d.ts","sourceRoot":"","sources":["../src/billing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"billing.d.ts","sourceRoot":"","sources":["../src/billing.ts"],"names":[],"mappings":"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"}
package/dist/billing.js CHANGED
@@ -12,6 +12,16 @@ export function getStripe() {
12
12
  export function stripeConfigured() {
13
13
  return !!process.env.STRIPE_SECRET_KEY;
14
14
  }
15
+ /**
16
+ * Replace the memoised client. TESTS ONLY.
17
+ *
18
+ * The money paths are worth asserting without a network, and the client is a
19
+ * module-local by design (one per process, built lazily). This is the seam that
20
+ * makes those assertions possible; nothing in the library calls it.
21
+ */
22
+ export function __setStripeForTests(client) {
23
+ _stripe = client;
24
+ }
15
25
  function toStripePrice(p) {
16
26
  const product = typeof p.product === "object" && p.product && !("deleted" in p.product)
17
27
  ? p.product
@@ -216,9 +226,10 @@ idempotencyKey) {
216
226
  description,
217
227
  }, idempotencyKey ? { idempotencyKey } : undefined);
218
228
  }
219
- export async function createTokenCheckoutSession(stripeCustomerId, orgId, amountMajor, config) {
229
+ export async function createTokenCheckoutSession(stripeCustomerId, orgId, amountMajor, config, opts = {}) {
220
230
  const amountMinor = Math.round(amountMajor * 100);
221
231
  const tokens = amountMinor; // 1 token = 1 minor unit
232
+ const taxRates = opts.taxRates?.length ? opts.taxRates : null;
222
233
  const session = await getStripe().checkout.sessions.create({
223
234
  customer: stripeCustomerId,
224
235
  mode: "payment",
@@ -235,16 +246,20 @@ export async function createTokenCheckoutSession(stripeCustomerId, orgId, amount
235
246
  unit_amount: amountMinor,
236
247
  },
237
248
  quantity: 1,
249
+ ...(taxRates ? { tax_rates: taxRates } : {}),
238
250
  },
239
251
  ],
252
+ // Manual rates and automatic tax are mutually exclusive in Stripe: passing
253
+ // both fails the request outright.
254
+ ...(!taxRates && opts.automaticTax ? { automatic_tax: { enabled: true } } : {}),
240
255
  invoice_creation: { enabled: true },
241
256
  payment_intent_data: {
242
257
  setup_future_usage: "off_session",
243
258
  metadata: { org_id: orgId, tokens: String(tokens) },
244
259
  },
245
260
  metadata: { org_id: orgId, tokens: String(tokens) },
246
- success_url: `${config.baseUrl}/billing/success?tokens=${tokens}`,
247
- cancel_url: `${config.baseUrl}/billing/cancel`,
261
+ success_url: opts.successUrl ?? `${config.baseUrl}/billing/success?tokens=${tokens}`,
262
+ cancel_url: opts.cancelUrl ?? `${config.baseUrl}/billing/cancel`,
248
263
  });
249
264
  return session.url;
250
265
  }
@@ -280,7 +295,35 @@ export async function setAutoReloadSettings(stripeCustomerId, threshold, reloadT
280
295
  },
281
296
  });
282
297
  }
283
- export async function tryAutoReload(stripeCustomerId, currency) {
298
+ /**
299
+ * Recharge a customer who has dropped to their auto-reload threshold.
300
+ *
301
+ * Two properties this must have, both learned the hard way:
302
+ *
303
+ * **It bills as an INVOICE, not a bare charge.** A PaymentIntent produces a
304
+ * receipt with no invoice number and no tax line. That is not a valid sales
305
+ * document for a business customer (an Italian buyer needs a fattura), and it
306
+ * meant the one purchase a customer never explicitly confirms was also the one
307
+ * with no paperwork. An invoice also carries the same tax treatment as every
308
+ * other line the account bills.
309
+ *
310
+ * **It is idempotent.** This is fired and forgotten from the meter on every
311
+ * metered call and from the auth path, so N concurrent calls all observe the
312
+ * same low balance and all used to charge. The key below collapses them: Stripe
313
+ * returns the first invoice for every duplicate within its 24h window, so the
314
+ * customer is charged once no matter how many callers raced.
315
+ */
316
+ /** Fire-and-forget auto-reload with the deployment's tax settings applied.
317
+ * Both trigger points (the meter and the auth gate) go through this, so a
318
+ * reload can't be taxed on one path and untaxed on the other. */
319
+ export async function autoReloadFor(stripeCustomerId, config) {
320
+ const rates = config.tax?.rates ? await config.tax.rates(stripeCustomerId) : undefined;
321
+ await tryAutoReload(stripeCustomerId, config.currency, {
322
+ taxRates: rates,
323
+ automaticTax: config.tax?.automatic,
324
+ });
325
+ }
326
+ export async function tryAutoReload(stripeCustomerId, currency, opts = {}) {
284
327
  const settings = await getAutoReloadSettings(stripeCustomerId);
285
328
  if (!settings || !settings.enabled)
286
329
  return;
@@ -298,19 +341,37 @@ export async function tryAutoReload(stripeCustomerId, currency) {
298
341
  });
299
342
  if (pms.data.length === 0)
300
343
  return;
344
+ // Stable across concurrent triggers: same customer, same target, same hour.
345
+ // Not the exact balance — two racing callers can read balances a token apart
346
+ // and would then key differently, which is precisely the double charge.
347
+ const slot = new Date().toISOString().slice(0, 13);
348
+ const key = `autoreload:${stripeCustomerId}:${settings.reload_to}:${slot}`;
349
+ const taxRates = opts.taxRates?.length ? opts.taxRates : null;
301
350
  try {
302
- const pi = await stripe.paymentIntents.create({
303
- amount: tokensNeeded,
351
+ await stripe.invoiceItems.create({
352
+ customer: stripeCustomerId,
304
353
  currency,
354
+ amount: tokensNeeded,
355
+ description: `Auto-reload: ${tokensNeeded} tokens`,
356
+ ...(taxRates ? { tax_rates: taxRates } : {}),
357
+ }, { idempotencyKey: `${key}:item` });
358
+ const invoice = await stripe.invoices.create({
305
359
  customer: stripeCustomerId,
306
- payment_method: pms.data[0].id,
307
- off_session: true,
308
- confirm: true,
360
+ currency,
361
+ collection_method: "charge_automatically",
362
+ default_payment_method: pms.data[0].id,
363
+ auto_advance: false,
309
364
  description: `Auto-reload: ${tokensNeeded} tokens`,
365
+ ...(!taxRates && opts.automaticTax ? { automatic_tax: { enabled: true } } : {}),
310
366
  metadata: { auto_reload: "true", tokens: String(tokensNeeded) },
311
- });
312
- if (pi.status === "succeeded") {
313
- await creditTokens(stripeCustomerId, tokensNeeded, `Auto-reload: ${tokensNeeded} tokens`, currency);
367
+ }, { idempotencyKey: `${key}:invoice` });
368
+ if (!invoice.id)
369
+ return;
370
+ const paid = await stripe.invoices.pay(invoice.id, { off_session: true });
371
+ if (paid.status === "paid") {
372
+ // Same key: a retry that finds the invoice already paid must not credit
373
+ // a second time.
374
+ await creditTokens(stripeCustomerId, tokensNeeded, `Auto-reload: ${tokensNeeded} tokens`, currency, `credit:${key}`);
314
375
  }
315
376
  }
316
377
  catch {
@@ -1 +1 @@
1
- {"version":3,"file":"billing.js","sourceRoot":"","sources":["../src/billing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"billing.js","sourceRoot":"","sources":["../src/billing.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EACL,KAAK,UAAU,EAMhB,MAAM,aAAa,CAAC;AAyBrB,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,QAkIzE"}
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EACL,KAAK,UAAU,EAMhB,MAAM,aAAa,CAAC;AAyBrB,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,QAoIzE"}