@arnaudjnn/billing-tools 2.19.0 → 3.0.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.
- package/README.md +1 -1
- package/dist/adapters/workos-org.d.ts +23 -0
- package/dist/adapters/workos-org.d.ts.map +1 -1
- package/dist/adapters/workos-org.js +4 -2
- package/dist/adapters/workos-org.js.map +1 -1
- package/dist/bound-api.d.ts +173 -0
- package/dist/bound-api.d.ts.map +1 -0
- package/dist/bound-api.js +152 -0
- package/dist/bound-api.js.map +1 -0
- package/dist/cli/commands.js +25 -0
- package/dist/cli/commands.js.map +1 -1
- package/dist/create-billing.d.ts +128 -41
- package/dist/create-billing.d.ts.map +1 -1
- package/dist/create-billing.js +24 -14
- package/dist/create-billing.js.map +1 -1
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +7 -0
- package/dist/doctor.js.map +1 -1
- package/dist/entries/agent-auth.d.ts +5 -0
- package/dist/entries/agent-auth.d.ts.map +1 -0
- package/dist/entries/agent-auth.js +17 -0
- package/dist/entries/agent-auth.js.map +1 -0
- package/dist/entries/plans.d.ts +4 -0
- package/dist/entries/plans.d.ts.map +1 -0
- package/dist/entries/plans.js +36 -0
- package/dist/entries/plans.js.map +1 -0
- package/dist/entries/routes.d.ts +5 -0
- package/dist/entries/routes.d.ts.map +1 -0
- package/dist/entries/routes.js +17 -0
- package/dist/entries/routes.js.map +1 -0
- package/dist/entries/tools.d.ts +6 -0
- package/dist/entries/tools.d.ts.map +1 -0
- package/dist/entries/tools.js +20 -0
- package/dist/entries/tools.js.map +1 -0
- package/dist/index.d.ts +6 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +38 -15
- package/dist/index.js.map +1 -1
- package/dist/metering.d.ts +4 -3
- package/dist/metering.d.ts.map +1 -1
- package/dist/metering.js.map +1 -1
- package/dist/plan-model.d.ts +58 -3
- package/dist/plan-model.d.ts.map +1 -1
- package/dist/plan-model.js +61 -4
- package/dist/plan-model.js.map +1 -1
- package/dist/plans.d.ts +2 -2
- package/dist/plans.d.ts.map +1 -1
- package/dist/plans.js +1 -1
- package/dist/plans.js.map +1 -1
- package/dist/tools/billing.d.ts +2 -1
- package/dist/tools/billing.d.ts.map +1 -1
- package/dist/tools/billing.js +185 -64
- package/dist/tools/billing.js.map +1 -1
- package/dist/tools/management.d.ts +2 -1
- package/dist/tools/management.d.ts.map +1 -1
- package/dist/tools/management.js +210 -187
- package/dist/tools/management.js.map +1 -1
- package/dist/tools/register.d.ts +13 -1
- package/dist/tools/register.d.ts.map +1 -1
- package/dist/tools/register.js +28 -6
- package/dist/tools/register.js.map +1 -1
- package/dist/tools/subscription.d.ts +2 -1
- package/dist/tools/subscription.d.ts.map +1 -1
- package/dist/tools/subscription.js +115 -108
- package/dist/tools/subscription.js.map +1 -1
- package/dist/usage-ledger.d.ts +15 -37
- package/dist/usage-ledger.d.ts.map +1 -1
- package/dist/usage-ledger.js +24 -119
- package/dist/usage-ledger.js.map +1 -1
- package/dist/usage-scopes.d.ts +55 -0
- package/dist/usage-scopes.d.ts.map +1 -0
- package/dist/usage-scopes.js +284 -0
- package/dist/usage-scopes.js.map +1 -0
- package/dist/util/clearout.d.ts.map +1 -1
- package/dist/util/clearout.js +15 -3
- package/dist/util/clearout.js.map +1 -1
- package/package.json +21 -1
- package/dist/usage-counters.d.ts +0 -104
- package/dist/usage-counters.d.ts.map +0 -1
- package/dist/usage-counters.js +0 -214
- package/dist/usage-counters.js.map +0 -1
package/dist/tools/management.js
CHANGED
|
@@ -5,6 +5,7 @@ import { requestTopUp, listTopUpRequests, approveTopUp, denyTopUp, grantExtraAll
|
|
|
5
5
|
import { currentCycle } from "../allowance.js";
|
|
6
6
|
import { assignSeatType, listSeatAssignments } from "../seats.js";
|
|
7
7
|
import { normalizePlans } from "../plans.js";
|
|
8
|
+
import { ALL_TOOL_CAPABILITIES } from "../plan-model.js";
|
|
8
9
|
import { usageSummary } from "../usage.js";
|
|
9
10
|
function json(obj) {
|
|
10
11
|
return { content: [{ type: "text", text: JSON.stringify(obj, null, 2) }] };
|
|
@@ -19,7 +20,12 @@ function err(text) {
|
|
|
19
20
|
// user-seat top-up request/approval flow. All ORG-SCOPED (auth = the org's key /
|
|
20
21
|
// session). Seat + top-up tools require the adapter's metadata methods; when they
|
|
21
22
|
// are absent (an adapter without an org-metadata store) only get_usage registers.
|
|
22
|
-
|
|
23
|
+
//
|
|
24
|
+
// Two independent gates, and both have to pass. `caps` says whether the plan
|
|
25
|
+
// CATALOGUE can ever need the group (seats to assign, requests to approve); the
|
|
26
|
+
// metadata check below says whether this adapter can STORE the answer. Neither
|
|
27
|
+
// implies the other, which is why they are not merged.
|
|
28
|
+
export function registerManagementTools(server, adapter, config, opts = {}, caps = ALL_TOOL_CAPABILITIES) {
|
|
23
29
|
// Every tool here that names a cycle resolves it the same way the meter does,
|
|
24
30
|
// including the plan lookup — a pooled or annual plan's cycle is its
|
|
25
31
|
// subscription period, and guessing it from the calendar silently misfiles.
|
|
@@ -55,207 +61,224 @@ number of days instead of the calendar month.`, {
|
|
|
55
61
|
const usage = await usageSince(cid, since, filter);
|
|
56
62
|
return json({ usage, since, cycle: cycle.key, filter: filter ?? null });
|
|
57
63
|
});
|
|
58
|
-
//
|
|
59
|
-
//
|
|
60
|
-
//
|
|
61
|
-
|
|
62
|
-
|
|
64
|
+
// Only where a plan HAS a window to report: an included cap, or a rate limit.
|
|
65
|
+
// `get_usage` above stays unconditional — it is the historical spend read, and
|
|
66
|
+
// that question is answerable on any catalogue.
|
|
67
|
+
if (caps.usage) {
|
|
68
|
+
// What an agent needs BEFORE it spends: every window that applies, how much of
|
|
69
|
+
// each is gone, and when each resets. Without this a caller can only discover a
|
|
70
|
+
// limit by being refused by it, which is a poor way to pace a long run — the
|
|
71
|
+
// `resets_at` on each window is what lets an agent wait instead of retrying.
|
|
72
|
+
server.tool("get_usage_limits", `Get every usage limit that applies to you right now (per hour/day/week/month and
|
|
63
73
|
per billing cycle), how much of each is used, and when each resets.`, {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
74
|
+
caller_kind: z
|
|
75
|
+
.enum(["user", "api"])
|
|
76
|
+
.optional()
|
|
77
|
+
.describe("Whose limits to report. Defaults to `api` — a tool call is an API caller"),
|
|
78
|
+
caller_id: z.string().optional().describe("Member or API-key id, for per-caller windows"),
|
|
79
|
+
}, async ({ caller_kind, caller_id }) => {
|
|
80
|
+
const auth = await enforceAccess(adapter);
|
|
81
|
+
if ("isError" in auth)
|
|
82
|
+
return auth;
|
|
83
|
+
if (!stripeConfigured())
|
|
84
|
+
return err("Billing is not configured (STRIPE_SECRET_KEY unset).");
|
|
85
|
+
if (!opts.plans)
|
|
86
|
+
return json({ limits: [], note: "No plans configured." });
|
|
87
|
+
const plan = opts.resolvePlan
|
|
88
|
+
? await opts.resolvePlan(auth.orgId)
|
|
89
|
+
: ((await adapter.getSubscription?.(auth.orgId))?.plan ?? null);
|
|
90
|
+
const summary = await usageSummary(adapter, config, {
|
|
91
|
+
orgId: auth.orgId,
|
|
92
|
+
plans: opts.plans,
|
|
93
|
+
plan,
|
|
94
|
+
caller: { kind: caller_kind ?? "api", id: caller_id ?? auth.orgId },
|
|
95
|
+
});
|
|
96
|
+
// Flattened for a reader: one array of windows, whether a window came from
|
|
97
|
+
// a rate limit, the pool or the seat pack. `remaining` is what decides
|
|
98
|
+
// whether to make the next call; `resets_at` is what decides when to retry.
|
|
99
|
+
const windows = [
|
|
100
|
+
...summary.windows.map((w) => ({ kind: "rate_limit", ...w })),
|
|
101
|
+
...(summary.pool ? [{ kind: "included_pool", ...summary.pool }] : []),
|
|
102
|
+
...(summary.pack ? [{ kind: "seat_pack", ...summary.pack }] : []),
|
|
103
|
+
].map((w) => ({
|
|
104
|
+
kind: w.kind,
|
|
105
|
+
every: w.every,
|
|
106
|
+
scope: w.scope,
|
|
107
|
+
label: w.label,
|
|
108
|
+
limit: w.size,
|
|
109
|
+
used: w.used,
|
|
110
|
+
remaining: w.remaining,
|
|
111
|
+
percent_used: w.percent,
|
|
112
|
+
resets_at: w.resetsAt ? new Date(w.resetsAt).toISOString() : null,
|
|
113
|
+
}));
|
|
114
|
+
return json({
|
|
115
|
+
plan: summary.plan,
|
|
116
|
+
windows,
|
|
117
|
+
wallet_balance: summary.wallet,
|
|
118
|
+
cycle: { start: new Date(summary.cycle.start).toISOString(), key: summary.cycle.key },
|
|
119
|
+
checked_at: new Date(summary.at).toISOString(),
|
|
120
|
+
});
|
|
110
121
|
});
|
|
111
|
-
}
|
|
122
|
+
}
|
|
112
123
|
// The rest need an org-metadata store on the adapter.
|
|
113
124
|
if (!adapter.getOrgMetadata || !adapter.setOrgMetadata)
|
|
114
125
|
return;
|
|
115
|
-
//
|
|
116
|
-
//
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
126
|
+
// Seats are assignable only where a plan sells them. On a flat or free
|
|
127
|
+
// catalogue `list_seats` answered `seat_types: []` and `assign_seat_type`
|
|
128
|
+
// refused everything with "(none configured)" — two tools whose only possible
|
|
129
|
+
// reply was that they do not apply here.
|
|
130
|
+
if (caps.seats) {
|
|
131
|
+
// Union of seat-type keys across all plans, for validating assign_seat_type.
|
|
132
|
+
// Through the model, so it works whichever shape the config is written in.
|
|
133
|
+
const knownSeatTypes = new Set();
|
|
134
|
+
for (const model of normalizePlans(opts.plans ?? {})) {
|
|
135
|
+
for (const seat of model.seatTypes)
|
|
136
|
+
knownSeatTypes.add(seat.key);
|
|
137
|
+
}
|
|
138
|
+
server.tool("list_seats", `List the workspace's per-member seat-type assignments. Members without an entry
|
|
123
139
|
draw the default seat.`, {}, async () => {
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
140
|
+
const auth = await enforceAccess(adapter);
|
|
141
|
+
if ("isError" in auth)
|
|
142
|
+
return auth;
|
|
143
|
+
return json({
|
|
144
|
+
assignments: await listSeatAssignments(adapter, auth.orgId),
|
|
145
|
+
seat_types: [...knownSeatTypes],
|
|
146
|
+
});
|
|
130
147
|
});
|
|
131
|
-
|
|
132
|
-
server.tool("assign_seat_type", `Assign a workspace member to a seat type (e.g. standard, premium). The member's
|
|
148
|
+
server.tool("assign_seat_type", `Assign a workspace member to a seat type (e.g. standard, premium). The member's
|
|
133
149
|
usage then draws that seat's per-cycle credit pack. Pass an empty seat_type to clear
|
|
134
150
|
the assignment (back to the default seat).`, {
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
+
member_id: z.string().describe("The member's user id"),
|
|
152
|
+
seat_type: z.string().optional().describe("Seat type key, or empty to clear"),
|
|
153
|
+
}, async ({ member_id, seat_type }) => {
|
|
154
|
+
// Who sits on which seat decides who spends what, so it is an admin action
|
|
155
|
+
// wherever the caller is a known person.
|
|
156
|
+
const auth = await enforceAdmin(adapter, "assign_seat_type");
|
|
157
|
+
if ("isError" in auth)
|
|
158
|
+
return auth;
|
|
159
|
+
const st = seat_type && seat_type.length ? seat_type : null;
|
|
160
|
+
if (st && knownSeatTypes.size && !knownSeatTypes.has(st)) {
|
|
161
|
+
return err(`Unknown seat type "${st}". Known: ${[...knownSeatTypes].join(", ") || "(none configured)"}.`);
|
|
162
|
+
}
|
|
163
|
+
await assignSeatType(adapter, auth.orgId, member_id, st);
|
|
164
|
+
return json({ status: "ok", member_id, seat_type: st });
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
// The top-up flow exists only where a plan lets a member ask for extra
|
|
168
|
+
// allowance (`replenish.request`). Without it there is nothing to grant: the
|
|
169
|
+
// request landed in org metadata, the approval raised a pack the plan does not
|
|
170
|
+
// have, and the owner was asked to rubber-stamp a no-op.
|
|
171
|
+
if (caps.request) {
|
|
172
|
+
server.tool("list_top_up_requests", `List the workspace's credit top-up requests (pending and handled) — the extra
|
|
151
173
|
allowance members have asked the owner to grant this cycle.`, {}, async () => {
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
174
|
+
const auth = await enforceAccess(adapter);
|
|
175
|
+
if ("isError" in auth)
|
|
176
|
+
return auth;
|
|
177
|
+
return json({ requests: await listTopUpRequests(adapter, auth.orgId) });
|
|
178
|
+
});
|
|
179
|
+
server.tool("request_top_up", `Request extra credits for a member's seat this cycle (the owner approves with
|
|
158
180
|
approve_top_up). Use when a user seat has hit its per-cycle pack.`, {
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
181
|
+
member_id: z.string().describe("The member the extra allowance is for"),
|
|
182
|
+
amount: z.number().int().min(1).describe("Extra credits requested (e.g. 25% of the seat pack)"),
|
|
183
|
+
cycle: z
|
|
184
|
+
.string()
|
|
185
|
+
.optional()
|
|
186
|
+
.describe("Cycle key the grant applies to. Defaults to the current billing cycle — pass one only to backfill"),
|
|
187
|
+
}, async ({ member_id, amount, cycle }) => {
|
|
188
|
+
const auth = await enforceAccess(adapter);
|
|
189
|
+
if ("isError" in auth)
|
|
190
|
+
return auth;
|
|
191
|
+
// Requesting is not an admin action — asking is the whole point. But a
|
|
192
|
+
// known non-admin caller may only ask for THEMSELVES: `member_id` arrives
|
|
193
|
+
// from the caller, and an unchecked one lets a member queue a grant against
|
|
194
|
+
// anyone's seat, which an owner approving in bulk would rubber-stamp.
|
|
195
|
+
const principal = currentPrincipal();
|
|
196
|
+
if (principal && member_id !== principal.userId) {
|
|
197
|
+
const admin = principal.isAdmin ?? (await adapter.isAdmin?.(auth.orgId, principal.userId)) ?? true;
|
|
198
|
+
if (!admin)
|
|
199
|
+
return err("Forbidden (403): you can only request a top-up for yourself.");
|
|
200
|
+
}
|
|
201
|
+
const id = crypto.randomUUID();
|
|
202
|
+
const c = cycle ?? (await cycleFor(auth.orgId)).key;
|
|
203
|
+
await requestTopUp(adapter, auth.orgId, {
|
|
204
|
+
id,
|
|
205
|
+
memberId: member_id,
|
|
206
|
+
amount,
|
|
207
|
+
cycle: c,
|
|
208
|
+
createdAt: new Date().toISOString(),
|
|
209
|
+
});
|
|
210
|
+
return json({ status: "requested", id, member_id, amount, cycle: c });
|
|
187
211
|
});
|
|
188
|
-
|
|
189
|
-
});
|
|
190
|
-
server.tool("approve_top_up", `Approve a pending top-up request → grants the requested extra credits to that
|
|
212
|
+
server.tool("approve_top_up", `Approve a pending top-up request → grants the requested extra credits to that
|
|
191
213
|
member for the cycle (added on top of their seat pack by the meter).`, { request_id: z.string().describe("The request id from list_top_up_requests") }, async ({ request_id }) => {
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
214
|
+
const auth = await enforceAdmin(adapter, "approve_top_up");
|
|
215
|
+
if ("isError" in auth)
|
|
216
|
+
return auth;
|
|
217
|
+
const r = await approveTopUp(adapter, auth.orgId, request_id);
|
|
218
|
+
if (!r.ok)
|
|
219
|
+
return err(`Request not found or already handled: ${request_id}`);
|
|
220
|
+
return json({ status: "approved", request_id });
|
|
221
|
+
});
|
|
222
|
+
server.tool("grant_top_up", `Grant a member extra allowance for the current cycle WITHOUT waiting for them to
|
|
201
223
|
request it, as a percentage of their own seat pack (default 25%). Admin action.`, {
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
224
|
+
member_id: z.string().describe("WorkOS user id of the member to top up"),
|
|
225
|
+
percent: z
|
|
226
|
+
.number()
|
|
227
|
+
.min(1)
|
|
228
|
+
.max(1000)
|
|
229
|
+
.optional()
|
|
230
|
+
.default(25)
|
|
231
|
+
.describe("Percentage of the member's seat pack to add (25 = +25%)"),
|
|
232
|
+
credits: z
|
|
233
|
+
.number()
|
|
234
|
+
.int()
|
|
235
|
+
.min(1)
|
|
236
|
+
.optional()
|
|
237
|
+
.describe("Absolute credits instead of a percentage"),
|
|
238
|
+
}, async ({ member_id, percent, credits }) => {
|
|
239
|
+
// Guarded like approve_top_up, and more so: this hands out allowance with
|
|
240
|
+
// no request behind it, so leaving it open while approval is checked would
|
|
241
|
+
// let a member simply grant themselves what they would have had to ask for.
|
|
242
|
+
const auth = await enforceAdmin(adapter, "grant_top_up");
|
|
243
|
+
if ("isError" in auth)
|
|
244
|
+
return auth;
|
|
245
|
+
if (!opts.plans)
|
|
246
|
+
return err("No plans configured.");
|
|
247
|
+
const plan = opts.resolvePlan
|
|
248
|
+
? await opts.resolvePlan(auth.orgId)
|
|
249
|
+
: ((await adapter.getSubscription?.(auth.orgId))?.plan ?? null);
|
|
250
|
+
const res = await grantExtraAllowance(adapter, {
|
|
251
|
+
orgId: auth.orgId,
|
|
252
|
+
plans: opts.plans,
|
|
253
|
+
plan,
|
|
254
|
+
memberId: member_id,
|
|
255
|
+
// An explicit credit figure wins; otherwise the percentage (default 25).
|
|
256
|
+
...(credits != null ? { amount: credits } : { percent }),
|
|
257
|
+
});
|
|
258
|
+
if (!res.ok) {
|
|
259
|
+
return err(res.reason === "not_capped"
|
|
260
|
+
? "This plan has no per-seat packs, so extra allowance cannot be granted. " +
|
|
261
|
+
"Its limits are workspace-wide (see get_usage_limits)."
|
|
262
|
+
: "Invalid amount.");
|
|
263
|
+
}
|
|
264
|
+
return json({
|
|
265
|
+
status: "granted",
|
|
266
|
+
member_id,
|
|
267
|
+
granted: res.granted,
|
|
268
|
+
seat_pack: res.packSize,
|
|
269
|
+
total_extra_this_cycle: res.total,
|
|
270
|
+
cycle: res.cycle,
|
|
271
|
+
});
|
|
235
272
|
});
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
status: "
|
|
244
|
-
member_id,
|
|
245
|
-
granted: res.granted,
|
|
246
|
-
seat_pack: res.packSize,
|
|
247
|
-
total_extra_this_cycle: res.total,
|
|
248
|
-
cycle: res.cycle,
|
|
273
|
+
server.tool("deny_top_up", `Deny a pending top-up request.`, { request_id: z.string().describe("The request id from list_top_up_requests") }, async ({ request_id }) => {
|
|
274
|
+
const auth = await enforceAdmin(adapter, "deny_top_up");
|
|
275
|
+
if ("isError" in auth)
|
|
276
|
+
return auth;
|
|
277
|
+
const r = await denyTopUp(adapter, auth.orgId, request_id);
|
|
278
|
+
if (!r.ok)
|
|
279
|
+
return err(`Request not found or already handled: ${request_id}`);
|
|
280
|
+
return json({ status: "denied", request_id });
|
|
249
281
|
});
|
|
250
|
-
}
|
|
251
|
-
server.tool("deny_top_up", `Deny a pending top-up request.`, { request_id: z.string().describe("The request id from list_top_up_requests") }, async ({ request_id }) => {
|
|
252
|
-
const auth = await enforceAdmin(adapter, "deny_top_up");
|
|
253
|
-
if ("isError" in auth)
|
|
254
|
-
return auth;
|
|
255
|
-
const r = await denyTopUp(adapter, auth.orgId, request_id);
|
|
256
|
-
if (!r.ok)
|
|
257
|
-
return err(`Request not found or already handled: ${request_id}`);
|
|
258
|
-
return json({ status: "denied", request_id });
|
|
259
|
-
});
|
|
282
|
+
}
|
|
260
283
|
}
|
|
261
284
|
//# sourceMappingURL=management.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"management.js","sourceRoot":"","sources":["../../src/tools/management.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"management.js","sourceRoot":"","sources":["../../src/tools/management.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/register.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import type { BillingAdapter, BillingConfig } from "../types.js";
|
|
|
3
3
|
import { type TopUpToolOptions } from "./billing.js";
|
|
4
4
|
import { type SubscriptionToolOptions } from "./subscription.js";
|
|
5
5
|
import { type PlanCatalog } from "../plans.js";
|
|
6
|
+
import { type ToolCapabilities } from "../plan-model.js";
|
|
6
7
|
export declare function installInputLogging(server: McpServer): void;
|
|
7
8
|
export interface RegisterBillingToolsOptions {
|
|
8
9
|
adapter: BillingAdapter;
|
|
@@ -30,7 +31,18 @@ export interface RegisterBillingToolsOptions {
|
|
|
30
31
|
/** Tax and return URLs for `buy_credits`. Supply `taxRates` on any account that
|
|
31
32
|
* charges tax on its subscriptions: without it a top-up invoices at 0%. */
|
|
32
33
|
topUp?: TopUpToolOptions;
|
|
34
|
+
/**
|
|
35
|
+
* Per-group overrides for the surface derived from `plans`.
|
|
36
|
+
*
|
|
37
|
+
* The derivation is the default because the catalogue already declares every
|
|
38
|
+
* precondition (see `toolCapabilities`), and a tool no plan can satisfy is a
|
|
39
|
+
* false advertisement rather than merely wasted context. This is the escape
|
|
40
|
+
* hatch for the one case the catalogue cannot express: a group the app wants
|
|
41
|
+
* registered for a plan it has not shipped yet, or one it wants withheld
|
|
42
|
+
* because its own UI owns the flow. An explicit value always wins.
|
|
43
|
+
*/
|
|
44
|
+
capabilities?: Partial<ToolCapabilities>;
|
|
33
45
|
}
|
|
34
46
|
export declare function registerBillingTools(server: McpServer, opts: RegisterBillingToolsOptions): void;
|
|
35
|
-
export declare const BILLING_TOOL_NAMES: readonly ["get_api_key", "list_api_keys", "revoke_api_key", "get_credit_balance", "buy_credits", "preview_credit_purchase", "set_auto_reload", "get_billing_portal", "list_invoices", "view_invoice", "download_invoice", "get_usage", "get_usage_limits", "list_seats", "assign_seat_type", "list_top_up_requests", "request_top_up", "approve_top_up", "grant_top_up", "deny_top_up", "get_billing_profile", "set_billing_profile", "set_tax_id", "list_payment_methods", "set_default_payment_method", "remove_payment_method", "get_plan", "preview_plan_change", "change_plan", "cancel_plan"];
|
|
47
|
+
export declare const BILLING_TOOL_NAMES: readonly ["get_api_key", "list_api_keys", "revoke_api_key", "get_credit_balance", "buy_credits", "preview_credit_purchase", "set_auto_reload", "get_spend_controls", "set_spend_controls", "get_billing_portal", "list_invoices", "view_invoice", "download_invoice", "list_plans", "get_usage", "get_usage_limits", "list_seats", "assign_seat_type", "list_top_up_requests", "request_top_up", "approve_top_up", "grant_top_up", "deny_top_up", "get_billing_profile", "set_billing_profile", "set_tax_id", "list_payment_methods", "set_default_payment_method", "remove_payment_method", "get_plan", "preview_plan_change", "change_plan", "cancel_plan"];
|
|
36
48
|
//# sourceMappingURL=register.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/tools/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjE,OAAO,EAA4B,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAG/E,OAAO,EAA6B,KAAK,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5F,OAAO,EAA2C,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/tools/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjE,OAAO,EAA4B,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAG/E,OAAO,EAA6B,KAAK,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5F,OAAO,EAA2C,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AACxF,OAAO,EAGL,KAAK,gBAAgB,EACtB,MAAM,kBAAkB,CAAC;AAyB1B,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,QAkBpD;AAED,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,cAAc,CAAC;IACxB,MAAM,EAAE,aAAa,CAAC;IACtB,uFAAuF;IACvF,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,uEAAuE;IACvE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;+EAC2E;IAC3E,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;sEAEkE;IAClE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACxD;2DACuD;IACvD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;uCAEmC;IACnC,iBAAiB,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC;IACrE;gFAC4E;IAC5E,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;CAC1C;AAID,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,2BAA2B,QAkCxF;AA0DD,eAAO,MAAM,kBAAkB,+nBA4CrB,CAAC"}
|
package/dist/tools/register.js
CHANGED
|
@@ -5,6 +5,7 @@ import { registerManagementTools } from "./management.js";
|
|
|
5
5
|
import { registerProfileTools } from "./profile.js";
|
|
6
6
|
import { registerSubscriptionTools } from "./subscription.js";
|
|
7
7
|
import { ensurePlans, normalizePlans, poolSizeOf } from "../plans.js";
|
|
8
|
+
import { ALL_TOOL_CAPABILITIES, toolCapabilities, } from "../plan-model.js";
|
|
8
9
|
// Keys whose values must never hit the logs (magic-auth codes, API keys, etc.).
|
|
9
10
|
const SENSITIVE_KEY_RE = /cookie|token|secret|password|passwd|authorization|api[_-]?key|session|credential|code/i;
|
|
10
11
|
function redactForLog(value, depth = 0) {
|
|
@@ -53,19 +54,30 @@ export function registerBillingTools(server, opts) {
|
|
|
53
54
|
const config = resolveConfig(opts.config);
|
|
54
55
|
if (opts.installLogging !== false)
|
|
55
56
|
installInputLogging(server);
|
|
57
|
+
// No catalogue means no declaration to read, so every group registers — which is
|
|
58
|
+
// what every consumer got before this derivation existed, and what an app with
|
|
59
|
+
// no plans (pure pay-as-you-go) still wants. `undefined` is "the caller did not
|
|
60
|
+
// say", never "nothing applies"; the same distinction `checkPlansConfig` draws
|
|
61
|
+
// for its `usageLedger` option, and for the same reason: inventing a `false`
|
|
62
|
+
// here would silently delete tools from a working deployment.
|
|
63
|
+
const caps = {
|
|
64
|
+
...(opts.plans ? toolCapabilities(opts.plans) : ALL_TOOL_CAPABILITIES),
|
|
65
|
+
...opts.capabilities,
|
|
66
|
+
};
|
|
56
67
|
registerKeyTools(server, opts.adapter, config);
|
|
57
|
-
registerBillingOnlyTools(server, opts.adapter, config, opts.toolCosts ?? {}, opts.topUp ?? {});
|
|
58
|
-
registerManagementTools(server, opts.adapter, config, {
|
|
59
|
-
plans: opts.plans,
|
|
60
|
-
resolvePlan: opts.resolvePlan,
|
|
61
|
-
});
|
|
68
|
+
registerBillingOnlyTools(server, opts.adapter, config, opts.toolCosts ?? {}, opts.topUp ?? {}, caps);
|
|
69
|
+
registerManagementTools(server, opts.adapter, config, { plans: opts.plans, resolvePlan: opts.resolvePlan }, caps);
|
|
62
70
|
if (opts.profileTools !== false)
|
|
63
71
|
registerProfileTools(server, opts.adapter);
|
|
64
72
|
if (opts.plans) {
|
|
73
|
+
// `list_plans` and `get_plan` are READS and always register: "what is on offer"
|
|
74
|
+
// and "what am I on" are answerable on any catalogue, including one that is
|
|
75
|
+
// entirely quote-only. Only the four tools that CHANGE a subscription need a
|
|
76
|
+
// plan a customer can actually move to without a salesperson.
|
|
65
77
|
registerPlanTools(server, opts.plans, opts.defaultPlan, config.currency);
|
|
66
78
|
if (opts.subscriptionTools !== false) {
|
|
67
79
|
const sub = typeof opts.subscriptionTools === "object" ? opts.subscriptionTools : {};
|
|
68
|
-
registerSubscriptionTools(server, opts.adapter, config, { ...sub, plans: opts.plans });
|
|
80
|
+
registerSubscriptionTools(server, opts.adapter, config, { ...sub, plans: opts.plans }, caps);
|
|
69
81
|
}
|
|
70
82
|
}
|
|
71
83
|
}
|
|
@@ -119,10 +131,20 @@ export const BILLING_TOOL_NAMES = [
|
|
|
119
131
|
"buy_credits",
|
|
120
132
|
"preview_credit_purchase",
|
|
121
133
|
"set_auto_reload",
|
|
134
|
+
// The customer's own monthly ceiling. Ungated: it funds nothing and only refuses,
|
|
135
|
+
// so it needs no plan — and it was UI-only until this audit, which is the parity
|
|
136
|
+
// rule's own failure mode.
|
|
137
|
+
"get_spend_controls",
|
|
138
|
+
"set_spend_controls",
|
|
122
139
|
"get_billing_portal",
|
|
123
140
|
"list_invoices",
|
|
124
141
|
"view_invoice",
|
|
125
142
|
"download_invoice",
|
|
143
|
+
// The catalogue read (registerPlanTools). It was registered but NOT advertised
|
|
144
|
+
// here — exactly the drift the list exists to prevent, and invisible because the
|
|
145
|
+
// surface test only checked that everything advertised was registered. It now
|
|
146
|
+
// checks both directions.
|
|
147
|
+
"list_plans",
|
|
126
148
|
// Workspace-management tools (registerManagementTools).
|
|
127
149
|
"get_usage",
|
|
128
150
|
"get_usage_limits",
|