@arnaudjnn/billing-tools 22.2.1 → 23.1.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.
@@ -162,7 +162,10 @@ export async function requestPlanChange(adapter, orgId, input) {
162
162
  const list = await read(adapter, orgId);
163
163
  // One open ask per member, for the same reason the top-up has one: the button that files it
164
164
  // cannot choose anything, so pressing it twice would queue the same sentence twice.
165
- const open = list.find((r) => r.memberId === input.memberId && r.status === "pending");
165
+ // An ask that is waiting on a PRICE is open too. `pending` is "nobody has looked at it";
166
+ // `quoted` is "an operator answered and the admin has not accepted yet" — and filing a
167
+ // second ask in either state queues the same conversation twice.
168
+ const open = list.find((r) => r.memberId === input.memberId && (r.status === "pending" || r.status === "quoted"));
166
169
  if (open && !isSatisfied(open, input.plans, currentPlan)) {
167
170
  return { ok: false, reason: "already_pending", pending: open, plan: open.plan };
168
171
  }
@@ -174,6 +177,8 @@ export async function requestPlanChange(adapter, orgId, input) {
174
177
  status: "pending",
175
178
  createdAt: new Date(input.now ?? Date.now()).toISOString(),
176
179
  ...(input.note ? { note: input.note.slice(0, 140) } : {}),
180
+ ...(input.seats ? { seats: Math.round(input.seats) } : {}),
181
+ ...(input.contact ? { contact: input.contact } : {}),
177
182
  };
178
183
  if (!(await write(adapter, orgId, [...list.filter((r) => r.id !== request.id), request]))) {
179
184
  return { ok: false, reason: "queue_full" };
@@ -181,6 +186,62 @@ export async function requestPlanChange(adapter, orgId, input) {
181
186
  notifyRequested(input.notify, orgId, request);
182
187
  return { ok: true, id: request.id, plan: target };
183
188
  }
189
+ /**
190
+ * Price an open ask — the operator's half, and the only place a per-credit rate is set.
191
+ *
192
+ * Per CREDIT rather than a total, because that is what a negotiation is actually about:
193
+ * "we can do 0.7¢" survives the customer changing how much they want, and a total does not.
194
+ * The total is arithmetic and is computed here, so the number the customer accepts and the
195
+ * number they are charged cannot drift.
196
+ */
197
+ export async function quotePlanRequest(adapter, orgId, input) {
198
+ if (!Number.isFinite(input.credits) ||
199
+ input.credits <= 0 ||
200
+ !Number.isFinite(input.unitPriceMinor) ||
201
+ input.unitPriceMinor <= 0) {
202
+ return { ok: false, reason: "invalid_amount" };
203
+ }
204
+ const list = await read(adapter, orgId);
205
+ const found = list.find((r) => r.id === input.requestId && (r.status === "pending" || r.status === "quoted"));
206
+ if (!found)
207
+ return { ok: false, reason: "not_found" };
208
+ const updated = {
209
+ ...found,
210
+ // Re-quoting an already-quoted ask is a NEW price on the same conversation, not a second
211
+ // request: a negotiation that goes back and forth is the normal case.
212
+ status: "quoted",
213
+ quote: {
214
+ credits: Math.round(input.credits),
215
+ unitPriceMinor: input.unitPriceMinor,
216
+ totalMinor: Math.round(input.credits * input.unitPriceMinor),
217
+ ...(input.validUntil ? { validUntil: input.validUntil } : {}),
218
+ ...(input.note ? { note: input.note.slice(0, 280) } : {}),
219
+ at: new Date(input.now ?? Date.now()).toISOString(),
220
+ },
221
+ };
222
+ if (!(await write(adapter, orgId, list.map((r) => (r.id === updated.id ? updated : r))))) {
223
+ return { ok: false, reason: "queue_full" };
224
+ }
225
+ input.notify?.({
226
+ id: `quote-sent:${updated.id}:${updated.quote.at}`,
227
+ type: "quote.resolved",
228
+ orgId,
229
+ to: [],
230
+ audience: { kind: "member", memberId: updated.memberId },
231
+ data: { quoteId: updated.id, member: { id: updated.memberId, email: null }, quote: updated },
232
+ });
233
+ return { ok: true, request: updated };
234
+ }
235
+ /** Mark a quoted ask as accepted, once the money half has been arranged. */
236
+ export async function markPlanQuoteAccepted(adapter, orgId, input) {
237
+ const list = await read(adapter, orgId);
238
+ const found = list.find((r) => r.id === input.requestId && r.status === "quoted");
239
+ if (!found)
240
+ return null;
241
+ const updated = { ...found, status: "done", accepted: input.accepted };
242
+ await write(adapter, orgId, list.map((r) => (r.id === updated.id ? updated : r)));
243
+ return updated;
244
+ }
184
245
  /** The rung nobody's money can climb alone: the admins are the only ones who can answer. */
185
246
  function notifyRequested(notify, orgId, request) {
186
247
  notify?.({
@@ -1 +1 @@
1
- {"version":3,"file":"plan-request.js","sourceRoot":"","sources":["../src/plan-request.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plan-request.js","sourceRoot":"","sources":["../src/plan-request.ts"],"names":[],"mappings":"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"}
@@ -5,13 +5,11 @@ export interface QuoteToolOptions {
5
5
  config: ResolvedConfig;
6
6
  notify?: Notify;
7
7
  /**
8
- * Register the OPERATOR half (`sell_credits`, `resolve_credit_quote`). Default true.
8
+ * Register the OPERATOR half (`quote_plan_change`, `sell_credits`). Default true.
9
9
  *
10
- * `false` builds the customer's tool set: the two are still enforced by
11
- * `enforceOperator` wherever they exist, so this is not a security boundary it is an
12
- * honesty one. A customer's tool list advertising "sell a workspace credits at a
13
- * negotiated price" describes a capability they will never have, and an agent reading
14
- * that list will try it.
10
+ * `false` builds the customer's tool set. Not a security boundary `enforceOperator` is,
11
+ * wherever these exist but a list that offers "price somebody else's workspace" to
12
+ * somebody who can never do it is a list that sends agents at a 403.
15
13
  */
16
14
  operatorTools?: boolean;
17
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"quotes.d.ts","sourceRoot":"","sources":["../../src/tools/quotes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAUpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAalE,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;;;;OAQG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,gBAAgB,QA2OpG"}
1
+ {"version":3,"file":"quotes.d.ts","sourceRoot":"","sources":["../../src/tools/quotes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AA+ClE,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,gBAAgB,QAyJpG"}
@@ -1,127 +1,173 @@
1
1
  import { z } from "zod";
2
- import { currentPrincipal, enforceAccess, enforceAdmin, enforceOperator } from "../auth.js";
2
+ import { enforceAdmin, enforceOperator } from "../auth.js";
3
3
  import { getBillingCustomerId, sellCredits } from "../billing.js";
4
- import { answerCreditQuote, listCreditQuotes, requestCreditQuote, } from "../credit-quotes.js";
5
- // The commercial conversation, as three tools.
4
+ import { listPlanRequests, markPlanQuoteAccepted, quotePlanRequest } from "../plan-request.js";
5
+ // Custom pricing, in the taxonomy that already existed.
6
6
  //
7
- // A plan marked `sale: "quote"` renders "contact us" and refuses every checkout and until
8
- // now that was the end of it: no record of who asked, nothing to answer with, and no credit
9
- // sale anywhere that could carry a negotiated price. These are the two halves of that
10
- // conversation plus the reading in between, and they are deliberately gated by two different
11
- // authorities: an ADMIN of the workspace asks, an OPERATOR of the deployment answers.
7
+ // This was briefly its own family`request_credit_quote`, `list_credit_quotes`,
8
+ // `resolve_credit_quote`, over a store of its own and that was the mistake. Asking to move
9
+ // to a plan you cannot buy self-serve is the SAME act as asking to move to one you can:
10
+ // `request_plan_change` already means "I want to move up", already keeps one open ask per
11
+ // member, and already tells the people who can answer. A quote-only plan does not need
12
+ // another verb; it needs the answer to be able to carry a price.
13
+ //
14
+ // So the record grew (`seats`, `contact`, `quote`, `accepted` on `PlanRequest`) and what is
15
+ // left here is the two halves the existing tools did not have:
16
+ //
17
+ // • `quote_plan_change` — OPERATOR: a quantity, and a price PER CREDIT.
18
+ // • `accept_plan_quote` — ADMIN: takes it, and pays it.
19
+ //
20
+ // Plus `sell_credits`: the same sale with no request behind it, for a conversation that
21
+ // started on a call.
12
22
  const json = (data) => ({ content: [{ type: "text", text: JSON.stringify(data) }] });
13
23
  const err = (text) => ({ isError: true, content: [{ type: "text", text }] });
24
+ /** What a charge did, in the shape a tool answers with — `sellCredits` returns one of two. */
25
+ function saleResult(sale, credits) {
26
+ if (sale.status === "charged") {
27
+ return {
28
+ status: "charged",
29
+ invoice_id: sale.invoiceId,
30
+ invoice_url: sale.hostedInvoiceUrl,
31
+ credits_on_payment: credits,
32
+ };
33
+ }
34
+ if (sale.status === "invoiced") {
35
+ return {
36
+ status: "invoiced",
37
+ invoice_id: sale.invoiceId,
38
+ invoice_url: sale.hostedInvoiceUrl,
39
+ due_at: sale.dueAt,
40
+ emailed: sale.emailed,
41
+ // Said plainly, because "invoiced" reads like "done".
42
+ credits_on_payment: credits,
43
+ };
44
+ }
45
+ return { status: "refused", reason: sale.reason, message: sale.message };
46
+ }
14
47
  export function registerQuoteTools(server, adapter, opts) {
15
- // Both halves need somewhere to keep the record. An adapter with no org metadata cannot
16
- // hold a quote, and a tool that could only ever answer "not supported" is the false
17
- // advertisement this library keeps deleting.
48
+ // The ask and its answer both live in org metadata. An adapter that cannot hold one gets
49
+ // neither tool, rather than a pair that could only ever answer "not supported".
18
50
  if (!adapter.getOrgMetadata || !adapter.setOrgMetadata)
19
51
  return;
20
- server.tool("request_credit_quote", `Ask for a price on a volume of credits this plan does not sell self-serve (an Enterprise
21
- deal). Say either how many credits you want, or the volume you expect in your own terms
22
- "20000 searches per month" is a better answer than a credit figure you had to work out.
23
- A budget is optional and helps: it tells us whether you need a discount or simply a big
24
- order. One open quote per workspace.`, {
25
- credits: z.number().int().positive().optional().describe("Credits wanted, if you think in credits"),
26
- volume_amount: z.number().positive().optional().describe('Your own unit, e.g. 20000 for "20000 searches"'),
27
- volume_unit: z.string().max(40).optional().describe('What those are: "searches", "documents", …'),
28
- volume_per: z.enum(["month", "year"]).optional().default("month"),
29
- term: z.enum(["one_off", "monthly", "annual"]).default("one_off").describe("One purchase, or a commitment"),
30
- seats: z.number().int().positive().optional().describe("How many people will use it"),
31
- budget: z.number().positive().optional().describe("What you expect to pay, in whole currency units"),
32
- needed_by: z.string().optional().describe("ISO date you need it live by"),
33
- payment_method: z.enum(["invoice", "card"]).default("invoice"),
34
- purchase_order: z.string().max(30).optional().describe("Your PO number, if procurement needs one on the invoice"),
35
- note: z.string().max(280).optional().describe("What you are doing with it"),
36
- first_name: z.string().max(80).optional(),
37
- last_name: z.string().max(80).optional(),
38
- work_email: z
39
- .string()
40
- .email()
41
- .optional()
42
- .describe("Address on the company's own domain — who we answer, and where"),
52
+ server.tool("accept_plan_quote", `Accept the price an operator quoted for a plan change (workspace admins). Charges the
53
+ card on file if there is one, otherwise emails a payable invoice either way the credits
54
+ land when the invoice is PAID. Nothing is charged until this is called.`, {
55
+ request_id: z.string().describe("The quoted request"),
56
+ purchase_order: z.string().max(30).optional().describe("Your PO number, printed on the invoice"),
57
+ days_until_due: z.number().int().positive().optional().describe("Net terms when it is invoiced. Default 30"),
43
58
  }, async (a) => {
44
- // An admin, because a quote commits the workspace to a conversation about money — and
45
- // because the answer arrives as an invoice addressed to it.
46
- const auth = await enforceAdmin(adapter, "requesting a credit quote");
59
+ // An ADMIN, because accepting is agreeing to be charged.
60
+ const auth = await enforceAdmin(adapter, "accepting a quote");
47
61
  if ("isError" in auth)
48
62
  return auth;
49
- const res = await requestCreditQuote(adapter, auth.orgId, {
50
- memberId: currentPrincipal()?.userId ?? auth.orgId,
51
- notify: opts.notify,
52
- term: a.term,
53
- paymentMethod: a.payment_method,
54
- ...(a.credits ? { credits: a.credits } : {}),
55
- ...(a.volume_amount
56
- ? { volume: { amount: a.volume_amount, unit: a.volume_unit ?? "units", per: a.volume_per } }
57
- : {}),
58
- ...(a.seats ? { seats: a.seats } : {}),
59
- // Minor units on the record, because that is what the answer is priced in.
60
- ...(a.budget ? { budgetMinor: Math.round(a.budget * 100) } : {}),
61
- ...(a.needed_by ? { neededBy: a.needed_by } : {}),
63
+ const open = (await listPlanRequests(adapter, auth.orgId)).find((r) => r.id === a.request_id && r.status === "quoted");
64
+ if (!open?.quote)
65
+ return err("No quoted request with that id.");
66
+ // A price with an expiry that has passed is not a price. Re-quoting is one operator
67
+ // call; charging somebody last month's rate is a refund and an apology.
68
+ if (open.quote.validUntil && Date.parse(open.quote.validUntil) < Date.now()) {
69
+ return err("That price has expired. Ask for a new one and we will re-quote it.");
70
+ }
71
+ const customerId = await getBillingCustomerId(adapter, auth.orgId);
72
+ if (!customerId)
73
+ return err("This workspace has no billing account.");
74
+ const sale = await sellCredits(customerId, auth.orgId, opts.config, {
75
+ credits: open.quote.credits,
76
+ amountMinor: open.quote.totalMinor,
77
+ description: `${open.quote.credits.toLocaleString("en-US")} credits`,
78
+ ...(a.days_until_due ? { daysUntilDue: a.days_until_due } : {}),
62
79
  ...(a.purchase_order ? { purchaseOrder: a.purchase_order } : {}),
80
+ // The REQUEST id is the idempotency key: accepting twice reuses the invoice rather
81
+ // than billing a second time.
82
+ idempotencyKey: `quote:${open.id}`,
83
+ });
84
+ if (sale.status === "refused")
85
+ return err(sale.message);
86
+ await markPlanQuoteAccepted(adapter, auth.orgId, {
87
+ requestId: open.id,
88
+ accepted: {
89
+ at: new Date().toISOString(),
90
+ method: sale.status === "charged" ? "saved_card" : "invoice",
91
+ invoiceId: sale.invoiceId,
92
+ ...(sale.hostedInvoiceUrl ? { invoiceUrl: sale.hostedInvoiceUrl } : {}),
93
+ },
94
+ });
95
+ return json(saleResult(sale, open.quote.credits));
96
+ });
97
+ if (opts.operatorTools === false)
98
+ return;
99
+ server.tool("quote_plan_change", `Price an open plan-change request (platform operators only). Give a credit quantity and
100
+ a price PER CREDIT — the total is computed here, so the figure a customer accepts and the
101
+ figure they are charged cannot drift. Charges nothing: they accept with accept_plan_quote.`, {
102
+ workspace_id: z.string().describe("The workspace whose request this is"),
103
+ request_id: z.string(),
104
+ credits: z.number().int().positive().describe("How many credits the deal is for"),
105
+ price_per_credit: z
106
+ .number()
107
+ .positive()
108
+ .describe("Minor units per credit — 0.7 is 0.7 cents. Fractions are allowed"),
109
+ valid_until: z.string().optional().describe("ISO date the price expires"),
110
+ note: z.string().max(280).optional(),
111
+ }, async (a) => {
112
+ // Cross-org by design, which is exactly why this gate fails closed.
113
+ const operator = enforceOperator("quoting a plan change");
114
+ if ("isError" in operator)
115
+ return operator;
116
+ const res = await quotePlanRequest(adapter, a.workspace_id, {
117
+ requestId: a.request_id,
118
+ credits: a.credits,
119
+ unitPriceMinor: a.price_per_credit,
120
+ notify: opts.notify,
121
+ ...(a.valid_until ? { validUntil: a.valid_until } : {}),
63
122
  ...(a.note ? { note: a.note } : {}),
64
- ...(a.work_email
65
- ? {
66
- contact: {
67
- firstName: a.first_name ?? "",
68
- lastName: a.last_name ?? "",
69
- email: a.work_email,
70
- },
71
- }
72
- : {}),
73
123
  });
74
124
  if (!res.ok) {
75
- if (res.reason === "already_pending") {
76
- return json({ status: "already_pending", quote: res.pending });
77
- }
78
- return err(res.reason === "nothing_asked"
79
- ? "Say something to go on: `credits`, `volume_amount`, `seats`, or a `work_email` to answer."
80
- : "This workspace's quote history is full. Ask an operator to settle the open one first.");
125
+ return err(res.reason === "not_found"
126
+ ? "No open request with that id in that workspace."
127
+ : res.reason === "invalid_amount"
128
+ ? "Both `credits` and `price_per_credit` must be positive."
129
+ : "That workspace's request queue is full.");
81
130
  }
82
- return json({ status: "requested", quote: res.quote });
83
- });
84
- server.tool("list_credit_quotes", "List this workspace's credit quotes — what was asked for, and what was answered.", {}, async () => {
85
- // A READ, member-visible: what the workspace asked for is not privileged information
86
- // to somebody in it.
87
- const auth = await enforceAccess(adapter);
88
- if ("isError" in auth)
89
- return auth;
90
- return json({ quotes: await listCreditQuotes(adapter, auth.orgId) });
131
+ return json({
132
+ status: "quoted",
133
+ request: res.request,
134
+ total_minor: res.request.quote.totalMinor,
135
+ currency: opts.config.currency,
136
+ });
91
137
  });
92
- if (opts.operatorTools === false)
93
- return;
94
- server.tool("sell_credits", `Sell a workspace credits at a NEGOTIATED price (platform operators only). Raises a
95
- Stripe invoice for \`amount\` and grants \`credits\` when it is paid the two are
96
- deliberately independent, which is the whole point: every other path here prices credits at
97
- the list rate. Needs no quote on file, so an operator can price a conversation that started
98
- anywhere.`, {
138
+ server.tool("sell_credits", `Sell a workspace credits at a negotiated price, with no request on file (platform
139
+ operators only). Charges the card on file if there is one, otherwise emails an invoice;
140
+ credits land when it is PAID. For a deal that started on a call rather than in the app,
141
+ where making the customer file a request so we can answer it is theatre.`, {
99
142
  workspace_id: z.string().describe("Whose wallet the credits land in when it is paid"),
100
143
  credits: z.number().int().positive().describe("What they get"),
101
144
  amount: z.number().positive().describe("What they pay, in whole currency units"),
102
145
  description: z.string().max(120).optional().describe("What the invoice line says"),
103
146
  days_until_due: z.number().int().positive().optional().describe("Net terms. Default 30"),
104
147
  purchase_order: z.string().max(30).optional().describe("Their PO, printed on the invoice"),
148
+ method: z
149
+ .enum(["auto", "saved_card", "invoice"])
150
+ .optional()
151
+ .describe("Default auto: the card on file, else an emailed invoice"),
105
152
  reference: z
106
153
  .string()
107
154
  .max(60)
108
155
  .optional()
109
156
  .describe("Your own idempotency key — the same one reuses the invoice rather than raising a second"),
110
157
  }, async (a) => {
111
- // Cross-org by design: the argument names a workspace that is not the caller's, which
112
- // is exactly why this is the one gate in the library that fails closed.
113
158
  const operator = enforceOperator("selling credits");
114
159
  if ("isError" in operator)
115
160
  return operator;
116
161
  const customerId = await getBillingCustomerId(adapter, a.workspace_id);
117
162
  if (!customerId)
118
163
  return err("That workspace has no billing account.");
119
- // Tax is resolved from `config.tax` inside, like every other charge on the account:
120
- // a negotiated invoice is still a real invoice, and it carries the same rate and the
121
- // same mandatory mention as one raised by `buy_credits`.
164
+ // Tax is resolved from `config.tax` inside, like every other charge on the account: a
165
+ // negotiated invoice is still a real invoice, and carries the same rate and the same
166
+ // mandatory mention as one raised by `buy_credits`.
122
167
  const sale = await sellCredits(customerId, a.workspace_id, opts.config, {
123
168
  credits: a.credits,
124
169
  amountMinor: Math.round(a.amount * 100),
170
+ ...(a.method ? { method: a.method } : {}),
125
171
  ...(a.description ? { description: a.description } : {}),
126
172
  ...(a.days_until_due ? { daysUntilDue: a.days_until_due } : {}),
127
173
  ...(a.purchase_order ? { purchaseOrder: a.purchase_order } : {}),
@@ -129,94 +175,7 @@ anywhere.`, {
129
175
  });
130
176
  if (sale.status === "refused")
131
177
  return err(sale.message);
132
- return json({
133
- status: "invoiced",
134
- invoice_id: sale.invoiceId,
135
- invoice_url: sale.hostedInvoiceUrl,
136
- due_at: sale.dueAt,
137
- emailed: sale.emailed,
138
- // Said plainly, because an operator reading "sold" would reasonably assume the
139
- // credits are already there. They are not: the invoice.paid branch grants them.
140
- credits_on_payment: a.credits,
141
- });
142
- });
143
- server.tool("resolve_credit_quote", `Answer a credit quote (platform operators only). Approving raises a Stripe invoice for
144
- \`amount\` and grants \`credits\` when it is PAID — the two are deliberately independent, which
145
- is what makes a negotiated price possible. Denying records the decision and charges nothing.`, {
146
- workspace_id: z.string().describe("The workspace whose quote this is"),
147
- quote_id: z.string(),
148
- outcome: z.enum(["approved", "denied"]).default("approved"),
149
- credits: z.number().int().positive().optional().describe("What they get. Required to approve"),
150
- amount: z.number().positive().optional().describe("What they pay, in whole currency units. Required to approve"),
151
- valid_until: z.string().optional().describe("ISO date the price expires"),
152
- days_until_due: z.number().int().positive().optional().describe("Net terms on the invoice. Default 30"),
153
- note: z.string().max(280).optional(),
154
- }, async (a) => {
155
- // FAILS CLOSED, unlike every other gate here: this one stands between a customer and
156
- // their own discount.
157
- const operator = enforceOperator("resolving a credit quote");
158
- if ("isError" in operator)
159
- return operator;
160
- if (a.outcome === "denied") {
161
- const res = await answerCreditQuote(adapter, a.workspace_id, {
162
- quoteId: a.quote_id,
163
- outcome: "denied",
164
- notify: opts.notify,
165
- ...(a.note ? { answer: { credits: 0, amountMinor: 0, currency: opts.config.currency, note: a.note } } : {}),
166
- });
167
- return res.ok ? json({ status: "denied", quote: res.quote }) : err("No open quote with that id.");
168
- }
169
- if (!a.credits || !a.amount) {
170
- return err("Approving needs both `credits` (what they get) and `amount` (what they pay).");
171
- }
172
- const customerId = await getBillingCustomerId(adapter, a.workspace_id);
173
- if (!customerId)
174
- return err("That workspace has no billing account.");
175
- const quotes = await listCreditQuotes(adapter, a.workspace_id);
176
- const open = quotes.find((q) => q.id === a.quote_id && q.status === "pending");
177
- if (!open)
178
- return err("No open quote with that id.");
179
- // The INVOICE first, then the record. A record saying "approved" with no invoice
180
- // behind it is a promise nobody can collect on; an invoice with no record is a bill
181
- // the customer can still pay, and the next approval is refused as a duplicate by
182
- // Stripe's idempotency key rather than billing them twice.
183
- // `config` carries the currency AND the tax declaration, so the negotiated invoice is
184
- // taxed by whatever decided every other charge on this account.
185
- const sale = await sellCredits(customerId, a.workspace_id, opts.config, {
186
- credits: a.credits,
187
- amountMinor: Math.round(a.amount * 100),
188
- description: `${a.credits.toLocaleString("en-US")} credits`,
189
- ...(a.days_until_due ? { daysUntilDue: a.days_until_due } : {}),
190
- ...(open.purchaseOrder ? { purchaseOrder: open.purchaseOrder } : {}),
191
- idempotencyKey: `quote:${a.quote_id}`,
192
- });
193
- if (sale.status === "refused")
194
- return err(sale.message);
195
- const res = await answerCreditQuote(adapter, a.workspace_id, {
196
- quoteId: a.quote_id,
197
- outcome: "approved",
198
- notify: opts.notify,
199
- answer: {
200
- credits: a.credits,
201
- amountMinor: Math.round(a.amount * 100),
202
- currency: opts.config.currency,
203
- invoiceId: sale.invoiceId,
204
- ...(sale.hostedInvoiceUrl ? { invoiceUrl: sale.hostedInvoiceUrl } : {}),
205
- ...(a.valid_until ? { validUntil: a.valid_until } : {}),
206
- ...(a.note ? { note: a.note } : {}),
207
- },
208
- });
209
- return json({
210
- status: "approved",
211
- invoice_url: sale.hostedInvoiceUrl,
212
- invoice_id: sale.invoiceId,
213
- due_at: sale.dueAt,
214
- emailed: sale.emailed,
215
- // The credits land when the invoice is PAID, through the same branch every other
216
- // invoice goes through. Said plainly, because "approved" reads like "granted".
217
- credits_on_payment: a.credits,
218
- quote: res.ok ? res.quote : null,
219
- });
178
+ return json(saleResult(sale, a.credits));
220
179
  });
221
180
  }
222
181
  //# sourceMappingURL=quotes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"quotes.js","sourceRoot":"","sources":["../../src/tools/quotes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"quotes.js","sourceRoot":"","sources":["../../src/tools/quotes.ts"],"names":[],"mappings":"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"}
@@ -85,6 +85,6 @@ export declare function registerBillingTools(server: McpServer, opts: RegisterBi
85
85
  * actually refuses them is `enforceOperator`, at call time, and it does not care whether
86
86
  * they were advertised.
87
87
  */
88
- export declare const OPERATOR_TOOL_NAMES: readonly ["resolve_credit_quote", "sell_credits"];
89
- export declare const BILLING_TOOL_NAMES: readonly ["get_api_key", "list_api_keys", "create_api_key", "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", "list_members", "invite_member", "list_invitations", "revoke_invitation", "change_member_role", "remove_member", "rename_workspace", "close_workspace", "get_usage", "get_usage_limits", "get_org_usage", "list_seats", "assign_seat_type", "list_top_up_requests", "request_top_up", "approve_top_up", "grant_top_up", "deny_top_up", "request_credit_quote", "list_credit_quotes", "resolve_credit_quote", "sell_credits", "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", "request_plan_change", "request_seat_change", "resolve_plan_request"];
88
+ export declare const OPERATOR_TOOL_NAMES: readonly ["quote_plan_change", "sell_credits"];
89
+ export declare const BILLING_TOOL_NAMES: readonly ["get_api_key", "list_api_keys", "create_api_key", "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", "list_members", "invite_member", "list_invitations", "revoke_invitation", "change_member_role", "remove_member", "rename_workspace", "close_workspace", "get_usage", "get_usage_limits", "get_org_usage", "list_seats", "assign_seat_type", "list_top_up_requests", "request_top_up", "approve_top_up", "grant_top_up", "deny_top_up", "accept_plan_quote", "quote_plan_change", "sell_credits", "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", "request_plan_change", "request_seat_change", "resolve_plan_request"];
90
90
  //# 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;AAE/E,OAAO,EAA+C,KAAK,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGnG,OAAO,EAA6B,KAAK,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5F,OAAO,EAA2C,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AACxF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACxD,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;IACzC;;;;;OAKG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAID,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,2BAA2B,QA6DxF;AA0DD;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,mDAAoD,CAAC;AAErF,eAAO,MAAM,kBAAkB,s9BAwErB,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;AAE/E,OAAO,EAA+C,KAAK,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGnG,OAAO,EAA6B,KAAK,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5F,OAAO,EAA2C,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AACxF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACxD,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;IACzC;;;;;OAKG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAID,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,2BAA2B,QA6DxF;AA0DD;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,gDAAiD,CAAC;AAElF,eAAO,MAAM,kBAAkB,07BAwErB,CAAC"}
@@ -149,7 +149,7 @@ function registerPlanTools(server, plans, defaultPlan, currency) {
149
149
  * actually refuses them is `enforceOperator`, at call time, and it does not care whether
150
150
  * they were advertised.
151
151
  */
152
- export const OPERATOR_TOOL_NAMES = ["resolve_credit_quote", "sell_credits"];
152
+ export const OPERATOR_TOOL_NAMES = ["quote_plan_change", "sell_credits"];
153
153
  export const BILLING_TOOL_NAMES = [
154
154
  "get_api_key",
155
155
  "list_api_keys",
@@ -199,12 +199,12 @@ export const BILLING_TOOL_NAMES = [
199
199
  "approve_top_up",
200
200
  "grant_top_up",
201
201
  "deny_top_up",
202
- // The commercial conversation (registerQuoteTools). `sale: "quote"` used to render a
203
- // "contact us" button and end there; these carry the ask to somebody who can answer it,
204
- // and `resolve_credit_quote` is the only OPERATOR-gated tool in the library.
205
- "request_credit_quote",
206
- "list_credit_quotes",
207
- "resolve_credit_quote",
202
+ // Custom pricing (registerQuoteTools). The ASK is `request_plan_change` above asking to
203
+ // move to a plan you cannot buy self-serve is the same act as asking to move to one you
204
+ // can so what is here is only the answer, its acceptance, and the sale that needs no
205
+ // request behind it.
206
+ "accept_plan_quote",
207
+ "quote_plan_change",
208
208
  "sell_credits",
209
209
  // The billing account itself (registerProfileTools).
210
210
  "get_billing_profile",