@arnaudjnn/billing-tools 0.15.0 → 0.16.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 CHANGED
@@ -31,6 +31,7 @@
31
31
  - [How it works](#how-it-works)
32
32
  - [Agent auth (auth.md)](#agent-auth-authmd)
33
33
  - [Machine payments (MPP)](#machine-payments-mpp)
34
+ - [MCP OAuth proxy (dynamic clients)](#mcp-oauth-proxy-dynamic-clients)
34
35
  - [CLI](#cli)
35
36
  - [Configuration](#configuration)
36
37
  - [Roadmap](#roadmap)
@@ -209,6 +210,42 @@ if (gate instanceof Response) return gate; // 402 + WWW-Authenticate: Payment
209
210
 
210
211
  The 402 challenge + credential parsing ship ready and are offline-testable. Actual settlement (card via shared payment tokens, or crypto/USDC) is injected via a `settle` function once your Stripe account is enabled for machine payments; until then the gate returns a clean "settlement not enabled" 402 (never a crash). `createPaymentMd()` serves an agent-facing `/payment.md`.
211
212
 
213
+ ## MCP OAuth proxy (dynamic clients)
214
+
215
+ MCP clients like Claude Desktop and Claude.ai can't be handed an API key — they
216
+ register themselves (RFC 7591) and expect an OAuth 2.1 authorization-code flow.
217
+ `oauthProxy` gives you that on top of WorkOS AuthKit, in one option:
218
+
219
+ ```ts
220
+ const billing = createBilling({
221
+ adapter, config,
222
+ agentAuth: { branding: { productName: "Acme" } },
223
+ oauthProxy: true, // needs REFRESH_TOKEN_SECRET
224
+ });
225
+
226
+ // app/oauth/authorize/route.ts export const GET = billing.oauth!.authorize
227
+ // app/oauth/register/route.ts export const POST = billing.oauth!.register
228
+ // app/oauth/callback/route.ts export const GET = billing.oauth!.callback
229
+ // app/oauth/token/route.ts export const POST = billing.oauth!.token
230
+ ```
231
+
232
+ The user authenticates with AuthKit; the client receives the WorkOS access token
233
+ plus an HS256 refresh token that wraps the WorkOS one and is bound to the
234
+ `client_id` that obtained it. PKCE (S256) is enforced whenever the client sends a
235
+ challenge, authorization codes are single-use, and the `/oauth/token` route also
236
+ serves the auth.md claim grant so one route covers both flows.
237
+
238
+ Enabling it also makes discovery honest: `authorization_endpoint` and
239
+ `registration_endpoint` appear in `/.well-known/oauth-authorization-server` only
240
+ when the proxy is on, and `authorization_code`/`refresh_token` join
241
+ `grant_types_supported`. Consumers without the proxy no longer advertise an
242
+ `/oauth/authorize` they don't implement.
243
+
244
+ **`REFRESH_TOKEN_SECRET` is required and has no fallback.** Falling back to
245
+ `WORKOS_CLIENT_ID` — a public identifier — would let anyone who knows it forge a
246
+ 30-day refresh token. Without the secret the token endpoint returns
247
+ `server_error` rather than signing with something guessable.
248
+
212
249
  ## CLI
213
250
 
214
251
  ```ts
@@ -45,8 +45,9 @@ export interface AgentAuthOptions {
45
45
  policy?: AgentAuthPolicy;
46
46
  /** Extra fields merged into the AS-metadata response (spread last, so they
47
47
  * override defaults). Use for capabilities layered on top of auth.md — e.g.
48
- * an MCP OAuth proxy's `authorization_endpoint` / `registration_endpoint`. */
49
- asMetadataExtra?: Record<string, unknown>;
48
+ * an MCP OAuth proxy's `authorization_endpoint` / `registration_endpoint`.
49
+ * A function is resolved per request, for fields derived from the base URL. */
50
+ asMetadataExtra?: Record<string, unknown> | ((request: Request) => Record<string, unknown>);
50
51
  }
51
52
  export declare function createAgentAuth(opts: AgentAuthOptions): {
52
53
  protectedResource: (request: Request) => Response;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agent-auth/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlE,OAAO,EAAsB,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAavE,eAAO,MAAM,gBAAgB,2CAA2C,CAAC;AAEzE,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG,gBAAgB,CAAC;AAE/D,MAAM,WAAW,iBAAiB;IAChC,0EAA0E;IAC1E,WAAW,EAAE,MAAM,CAAC;IACpB,gEAAgE;IAChE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,4EAA4E;IAC5E,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B;4DACwD;IACxD,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,cAAc,CAAC;IACxB,MAAM,EAAE,cAAc,CAAC;IACvB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB;4DACwD;IACxD,aAAa,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACpC;kEAC8D;IAC9D,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,CAAC,CAAC;IAClD,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB;;mFAE+E;IAC/E,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC3C;AAiCD,wBAAgB,eAAe,CAAC,IAAI,EAAE,gBAAgB;iCA2BhB,OAAO,KAAG,QAAQ;mCAehB,OAAO,KAAG,QAAQ;sBAiC/B,OAAO,KAAG,QAAQ;wBAgDV,OAAO,KAAG,OAAO,CAAC,QAAQ,CAAC;qBA8B9B,OAAO,KAAG,OAAO,CAAC,QAAQ,CAAC;qBAsD3B,OAAO,KAAG,OAAO,CAAC,QAAQ,CAAC;+BAvBjB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAG,OAAO,CAAC,QAAQ,CAAC;sBAkCnD,OAAO,KAAG,OAAO,CAAC,QAAQ,CAAC;IAuBxD,gFAAgF;mCACjD,OAAO;IACtC,gFAAgF;+BACrD,OAAO;EAGrC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agent-auth/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlE,OAAO,EAAsB,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAavE,eAAO,MAAM,gBAAgB,2CAA2C,CAAC;AAEzE,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG,gBAAgB,CAAC;AAE/D,MAAM,WAAW,iBAAiB;IAChC,0EAA0E;IAC1E,WAAW,EAAE,MAAM,CAAC;IACpB,gEAAgE;IAChE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,4EAA4E;IAC5E,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B;4DACwD;IACxD,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,cAAc,CAAC;IACxB,MAAM,EAAE,cAAc,CAAC;IACvB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB;4DACwD;IACxD,aAAa,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACpC;kEAC8D;IAC9D,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,CAAC,CAAC;IAClD,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB;;;oFAGgF;IAChF,eAAe,CAAC,EACZ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACvB,CAAC,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACrD;AAiCD,wBAAgB,eAAe,CAAC,IAAI,EAAE,gBAAgB;iCA2BhB,OAAO,KAAG,QAAQ;mCAehB,OAAO,KAAG,QAAQ;sBA0C/B,OAAO,KAAG,QAAQ;wBAgDV,OAAO,KAAG,OAAO,CAAC,QAAQ,CAAC;qBA8B9B,OAAO,KAAG,OAAO,CAAC,QAAQ,CAAC;qBAsD3B,OAAO,KAAG,OAAO,CAAC,QAAQ,CAAC;+BAvBjB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAG,OAAO,CAAC,QAAQ,CAAC;sBAkCnD,OAAO,KAAG,OAAO,CAAC,QAAQ,CAAC;IAuBxD,gFAAgF;mCACjD,OAAO;IACtC,gFAAgF;+BACrD,OAAO;EAGrC"}
@@ -84,7 +84,14 @@ export function createAgentAuth(opts) {
84
84
  ];
85
85
  return Response.json({
86
86
  issuer: b,
87
- authorization_endpoint: `${b}/oauth/authorize`,
87
+ // Only advertised when the consumer opted into the authorization_code
88
+ // grant — i.e. it runs an OAuth proxy (see createOAuthProxy). Emitting
89
+ // it unconditionally made every consumer claim an /oauth/authorize it
90
+ // might not implement, and a spec-following MCP client dead-ended on a
91
+ // 404 during discovery.
92
+ ...(policy.extraGrantTypes?.includes("authorization_code")
93
+ ? { authorization_endpoint: `${b}/oauth/authorize` }
94
+ : {}),
88
95
  token_endpoint: `${b}${p.token}`,
89
96
  revocation_endpoint: `${b}${p.revoke}`,
90
97
  response_types_supported: ["code"],
@@ -101,7 +108,9 @@ export function createAgentAuth(opts) {
101
108
  ? { identity_assertion: { assertion_types_supported: assertionTypes } }
102
109
  : {}),
103
110
  },
104
- ...(opts.asMetadataExtra ?? {}),
111
+ ...(typeof opts.asMetadataExtra === "function"
112
+ ? opts.asMetadataExtra(request)
113
+ : (opts.asMetadataExtra ?? {})),
105
114
  }, { headers: { "Cache-Control": "public, max-age=3600" } });
106
115
  }
107
116
  function authMd(request) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agent-auth/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAmB,MAAM,kBAAkB,CAAC;AAEvE,iFAAiF;AACjF,iFAAiF;AACjF,2EAA2E;AAC3E,kFAAkF;AAClF,8DAA8D;AAC9D,EAAE;AACF,6DAA6D;AAC7D,0FAA0F;AAC1F,gFAAgF;AAChF,iFAAiF;AAEjF,MAAM,CAAC,MAAM,gBAAgB,GAAG,wCAAwC,CAAC;AAsDzE,MAAM,IAAI,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAEhC,SAAS,SAAS,CAAC,KAAa,EAAE,WAAmB,EAAE,MAAM,GAAG,GAAG;IACjE,OAAO,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAgB;IAC1C,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAC1B,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC/F,IAAI,IAAI;QAAE,OAAO,GAAG,KAAK,MAAM,IAAI,EAAE,CAAC;IACtC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;AACrC,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,OAAgB;IACtC,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IACrD,IAAI,CAAC;QACH,IAAI,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC,EAAE,CAAC;YACrD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC;YACtC,MAAM,GAAG,GAA2B,EAAE,CAAC;YACvC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBACpB,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACrB,CAAC,CAAC,CAAC;YACH,OAAO,GAAG,CAAC;QACb,CAAC;QACD,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAA2B,CAAC;IAC1D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAsB;IACpD,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,IAAI,kBAAkB,EAAE,CAAC;IACtD,MAAM,KAAK,GAAG,IAAI,GAAG,CAAoB,IAAI,CAAC,aAAa,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAChG,MAAM,CAAC,GAA6B;QAClC,GAAG,EAAE,MAAM;QACX,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,UAAU;QAClB,iBAAiB,EAAE,uCAAuC;QAC1D,UAAU,EAAE,yCAAyC;QACrD,QAAQ,EAAE,iBAAiB;QAC3B,KAAK,EAAE,uBAAuB;QAC9B,KAAK,EAAE,cAAc;QACrB,MAAM,EAAE,eAAe;QACvB,GAAG,IAAI,CAAC,KAAK;KACd,CAAC;IACF,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;IACjC,MAAM,GAAG,GAAG,MAAM,CAAC,cAAc,IAAI,IAAI,CAAC;IAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAE/D,MAAM,SAAS,GAAG,CAAC,OAAgB,EAAU,EAAE,CAC7C,OAAO,IAAI,CAAC,OAAO,KAAK,UAAU;QAChC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;QACvB,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;IAEpD,4EAA4E;IAE5E,SAAS,iBAAiB,CAAC,OAAgB;QACzC,MAAM,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;QAC7B,OAAO,QAAQ,CAAC,IAAI,CAClB;YACE,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE;YACxB,aAAa,EAAE,QAAQ,CAAC,WAAW;YACnC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,qBAAqB,EAAE,CAAC,CAAC,CAAC;YAC1B,gBAAgB,EAAE,MAAM;YACxB,wBAAwB,EAAE,CAAC,QAAQ,CAAC;SACrC,EACD,EAAE,OAAO,EAAE,EAAE,eAAe,EAAE,sBAAsB,EAAE,EAAE,CACzD,CAAC;IACJ,CAAC;IAED,SAAS,mBAAmB,CAAC,OAAgB;QAC3C,MAAM,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;QAC7B,MAAM,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7E,MAAM,sBAAsB,GAAG;YAC7B,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAChD,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SAC/D,CAAC;QACF,OAAO,QAAQ,CAAC,IAAI,CAClB;YACE,MAAM,EAAE,CAAC;YACT,sBAAsB,EAAE,GAAG,CAAC,kBAAkB;YAC9C,cAAc,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE;YAChC,mBAAmB,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE;YACtC,wBAAwB,EAAE,CAAC,MAAM,CAAC;YAClC,qBAAqB,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,eAAe,IAAI,EAAE,CAAC,EAAE,gBAAgB,CAAC;YAC5E,qCAAqC,EAAE,CAAC,MAAM,CAAC;YAC/C,gCAAgC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;YACnD,gBAAgB,EAAE,MAAM;YACxB,UAAU,EAAE;gBACV,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE;gBACxB,iBAAiB,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;gBACtC,cAAc,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE;gBAChC,wBAAwB,EAAE,sBAAsB;gBAChD,GAAG,CAAC,cAAc,CAAC,MAAM;oBACvB,CAAC,CAAC,EAAE,kBAAkB,EAAE,EAAE,yBAAyB,EAAE,cAAc,EAAE,EAAE;oBACvE,CAAC,CAAC,EAAE,CAAC;aACR;YACD,GAAG,CAAC,IAAI,CAAC,eAAe,IAAI,EAAE,CAAC;SAChC,EACD,EAAE,OAAO,EAAE,EAAE,eAAe,EAAE,sBAAsB,EAAE,EAAE,CACzD,CAAC;IACJ,CAAC;IAED,SAAS,MAAM,CAAC,OAAgB;QAC9B,OAAO,IAAI,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE;YACzF,OAAO,EAAE;gBACP,cAAc,EAAE,8BAA8B;gBAC9C,eAAe,EAAE,sBAAsB;aACxC;SACF,CAAC,CAAC;IACL,CAAC;IAED,6EAA6E;IAE7E,KAAK,UAAU,eAAe;QAC5B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;YAC3D,OAAO,SAAS,CAAC,uBAAuB,EAAE,uCAAuC,EAAE,GAAG,CAAC,CAAC;QAC1F,CAAC;QACD,MAAM,IAAI,GAAG,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QACzF,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,OAAO,CAAC,kBAAkB,CAAC;YACjD,IAAI,EAAE,oBAAoB,IAAI,GAAG;YACjC,QAAQ,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE;SAClC,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,CAAC,oBAAoB,IAAI,iBAAiB,CAAC;QAChE,MAAM,oBAAoB,CAAC,OAAO,EAAE,KAAK,EAAE,aAAa,IAAI,IAAI,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC;QAClF,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,sBAAsB,KAAK,EAAE,GAAG,CAAC,CAAC;QAC9E,OAAO,QAAQ,CAAC,IAAI,CAAC;YACnB,YAAY,EAAE,GAAG,CAAC,KAAK;YACvB,UAAU,EAAE,QAAQ;YACpB,UAAU,EAAE,GAAG;YACf,KAAK,EAAE,KAAK;YACZ,eAAe,EAAE,KAAK;SACvB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,UAAU,mBAAmB,CAAC,KAAa;QAC9C,IAAI,CAAC;YACH,MAAM,aAAa,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,SAAS,CAAC,cAAc,EAAE,qCAAqC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QACvF,CAAC;QACD,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5D,OAAO,QAAQ,CAAC,IAAI,CAAC;YACnB,WAAW,EAAE,UAAU;YACvB,UAAU,EAAE,SAAS;YACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,CAAC;YAC9B,gBAAgB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE;YAC9B,gBAAgB,EAAE,MAAM,CAAC,cAAc,IAAI,CAAC;SAC7C,CAAC,CAAC;IACL,CAAC;IAED,KAAK,UAAU,QAAQ,CAAC,OAAgB;QACtC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI;YAAE,OAAO,SAAS,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,CAAC;QACpE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAEvB,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;YACzB,IAAI,CAAC;gBACH,OAAO,MAAM,eAAe,EAAE,CAAC;YACjC,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,SAAS,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;QACD,IAAI,IAAI,KAAK,oBAAoB,EAAE,CAAC;YAClC,MAAM,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC;YAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YACjC,IAAI,OAAO,EAAE,KAAK,QAAQ;gBAAE,OAAO,SAAS,CAAC,iBAAiB,EAAE,4BAA4B,CAAC,CAAC;YAC9F,IAAI,EAAE,KAAK,yCAAyC,EAAE,CAAC;gBACrD,OAAO,SAAS,CAAC,oBAAoB,EAAE,wCAAwC,CAAC,CAAC;YACnF,CAAC;YACD,IAAI,EAAE,KAAK,gBAAgB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBAC5D,OAAO,SAAS,CAAC,iBAAiB,EAAE,+BAA+B,EAAE,EAAE,CAAC,CAAC;YAC3E,CAAC;YACD,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC9D,OAAO,SAAS,CAAC,iBAAiB,EAAE,oDAAoD,CAAC,CAAC;YAC5F,CAAC;YACD,OAAO,mBAAmB,CAAC,SAAS,CAAC,CAAC;QACxC,CAAC;QACD,OAAO,SAAS,CAAC,iBAAiB,EAAE,oDAAoD,CAAC,CAAC;IAC5F,CAAC;IAED,KAAK,UAAU,KAAK,CAAC,OAAgB;QACnC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI;YAAE,OAAO,SAAS,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,CAAC;QACpE,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACnE,OAAO,SAAS,CAAC,iBAAiB,EAAE,wCAAwC,CAAC,CAAC;QAChF,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC1C,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW;YAAE,OAAO,SAAS,CAAC,qBAAqB,EAAE,gCAAgC,CAAC,CAAC;QAC5G,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO;YAAE,OAAO,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;QACxE,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO;YAAE,OAAO,SAAS,CAAC,eAAe,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAE7E,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC1D,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YACvD,MAAM,oBAAoB,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAChE,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,YAAY,KAAK,EAAE,GAAG,CAAC,CAAC;YACpE,MAAM,KAAK,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC;YAChF,OAAO,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,KAAK,CAAC,SAAS,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,OAAO,SAAS,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,+EAA+E;IAE/E;kFAC8E;IAC9E,KAAK,UAAU,gBAAgB,CAAC,MAA8B;QAC5D,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;QACtC,IAAI,CAAC,UAAU;YAAE,OAAO,SAAS,CAAC,iBAAiB,EAAE,yBAAyB,CAAC,CAAC;QAEhF,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACzC,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW;YAAE,OAAO,SAAS,CAAC,eAAe,EAAE,gCAAgC,CAAC,CAAC;QACrG,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO,SAAS,CAAC,uBAAuB,EAAE,0CAA0C,CAAC,CAAC;QACxF,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACjD,IAAI,QAAQ,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YAChC,OAAO,QAAQ,CAAC,IAAI,CAAC;gBACnB,YAAY,EAAE,QAAQ,CAAC,MAAM;gBAC7B,UAAU,EAAE,QAAQ;gBACpB,UAAU,EAAE,GAAG;gBACf,KAAK,EAAE,KAAK;gBACZ,eAAe,EAAE,QAAQ,CAAC,cAAc;aACzC,CAAC,CAAC;QACL,CAAC;QACD,IAAI,QAAQ,CAAC,MAAM,KAAK,OAAO;YAAE,OAAO,SAAS,CAAC,eAAe,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;QACnF,OAAO,SAAS,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,UAAU,KAAK,CAAC,OAAgB;QACnC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM;YAAE,OAAO,SAAS,CAAC,iBAAiB,EAAE,sBAAsB,CAAC,CAAC;QACzE,IAAI,MAAM,CAAC,UAAU,KAAK,gBAAgB,EAAE,CAAC;YAC3C,OAAO,SAAS,CAAC,wBAAwB,EAAE,yBAAyB,gBAAgB,EAAE,CAAC,CAAC;QAC1F,CAAC;QACD,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,4EAA4E;IAE5E,KAAK,UAAU,MAAM,CAAC,OAAgB;QACpC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;QACvC,MAAM,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC;QACxB,6EAA6E;QAC7E,IAAI,CAAC,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;YACrC,IAAI,CAAC;gBACH,MAAM,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;YACvC,CAAC;YAAC,MAAM,CAAC;gBACP,4CAA4C;YAC9C,CAAC;QACH,CAAC;QACD,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO;QACL,iBAAiB;QACjB,mBAAmB;QACnB,MAAM;QACN,QAAQ;QACR,KAAK;QACL,KAAK;QACL,gBAAgB;QAChB,MAAM;QACN,gFAAgF;QAChF,mBAAmB,EAAE,CAAC,OAAgB,EAAE,EAAE,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,iBAAiB,EAAE;QACxF,gFAAgF;QAChF,eAAe,EAAE,CAAC,OAAgB,EAAE,EAAE,CACpC,6BAA6B,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,iBAAiB,GAAG;KAC3E,CAAC;AACJ,CAAC;AAED,SAAS,KAAK;IACZ,8EAA8E;IAC9E,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC/C,CAAC;AACD,SAAS,GAAG,CAAC,CAAU;IACrB,OAAO,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,YAAY,CACnB,OAAe,EACf,OAAe,EACf,CAA2B,EAC3B,KAA6B,EAC7B,GAAW;IAEX,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,IAAI,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC,IAAI,CACP,0FAA0F,CAC3F,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAChC,IAAI,CAAC,IAAI,CACP,mJAAmJ,CACpJ,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,OAAO;;;;;;;;MAQf,OAAO,GAAG,CAAC,CAAC,UAAU;;;;;;;;;EAS1B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;OAKV,OAAO,GAAG,CAAC,CAAC,QAAQ;;;EAIzB,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC;QACpB,CAAC,CAAC;iHAC2G,GAAG,uFAAuF,OAAO,GAAG,CAAC,CAAC,GAAG,WAAW,OAAO,GAAG,CAAC,CAAC,IAAI;CACpP;QACG,CAAC,CAAC,EACN,GACI,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC;QACzB,CAAC,CAAC;;;;;;;;OAQD,OAAO,GAAG,CAAC,CAAC,KAAK;;;;;;;;;OASjB,OAAO,GAAG,CAAC,CAAC,KAAK;;;aAGX,gBAAgB;;;qJAGwH,GAAG;CACvJ;QACK,CAAC,CAAC,EACN;;;aAGW,OAAO,GAAG,CAAC,CAAC,GAAG,mBAAmB,OAAO,GAAG,CAAC,CAAC,IAAI;;;;;OAKxD,OAAO,GAAG,CAAC,CAAC,MAAM;;;;;;;CAOxB,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agent-auth/index.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ import type { BillingAdapter, BillingConfig } from "./types.js";
3
3
  import { type AgentAuthBranding, type AgentAuthPaths, type AgentAuthPolicy, type AgentIdentityType } from "./agent-auth/index.js";
4
4
  import type { ClaimStore } from "./agent-auth/claim-store.js";
5
5
  import { type MachinePaymentOptions } from "./machine-payment/index.js";
6
+ import { type OAuthProxyOptions } from "./oauth-proxy/index.js";
6
7
  import type { PlansConfig } from "./plans.js";
7
8
  export interface CreateBillingOptions {
8
9
  /** Storage adapter (WorkOSOrgAdapter or your own). */
@@ -39,6 +40,13 @@ export interface CreateBillingOptions {
39
40
  };
40
41
  /** Enable MPP machine payments (pay-per-request 402). Omit to leave it off. */
41
42
  machinePayment?: MachinePaymentOptions;
43
+ /** Enable the MCP OAuth 2.1 + Dynamic Client Registration proxy, so MCP
44
+ * clients (Claude Desktop, Claude.ai) can connect without an API key. When
45
+ * set, the authorization_code + refresh_token grants are advertised, the
46
+ * authorization/registration endpoints appear in AS metadata, and
47
+ * `billing.oauth` exposes the four route handlers. Requires
48
+ * REFRESH_TOKEN_SECRET. */
49
+ oauthProxy?: OAuthProxyOptions | true;
42
50
  }
43
51
  export declare function createBilling(opts: CreateBillingOptions): {
44
52
  adapter: BillingAdapter;
@@ -88,5 +96,14 @@ export declare function createBilling(opts: CreateBillingOptions): {
88
96
  } | undefined;
89
97
  /** `/payment.md` handler (undefined unless `machinePayment` was configured). */
90
98
  paymentMd: ((request: Request) => Response) | undefined;
99
+ /** MCP OAuth proxy handlers (undefined unless `oauthProxy` was configured).
100
+ * Mount as app/oauth/{authorize,register,callback,token}/route.ts. `token`
101
+ * also serves the auth.md claim grant, so it replaces agentAuth.token. */
102
+ oauth: {
103
+ authorize: (request: Request) => Promise<Response>;
104
+ register: (request: Request) => Promise<Response>;
105
+ callback: (request: Request) => Promise<Response>;
106
+ token: (request: Request) => Promise<Response>;
107
+ } | undefined;
91
108
  };
92
109
  //# sourceMappingURL=create-billing.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-billing.d.ts","sourceRoot":"","sources":["../src/create-billing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAOhE,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAgD,KAAK,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACtH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAQ9C,MAAM,WAAW,oBAAoB;IACnC,sDAAsD;IACtD,OAAO,EAAE,cAAc,CAAC;IACxB,gDAAgD;IAChD,MAAM,EAAE,aAAa,CAAC;IACtB,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gFAAgF;IAChF,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC;IAC5C,oEAAoE;IACpE,SAAS,CAAC,EAAE;QACV,QAAQ,EAAE,iBAAiB,CAAC;QAC5B,aAAa,CAAC,EAAE,iBAAiB,EAAE,CAAC;QACpC,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,CAAC,CAAC;QAClD,MAAM,CAAC,EAAE,eAAe,CAAC;QACzB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC1C,KAAK,CAAC,EAAE,cAAc,CAAC;QACvB,UAAU,CAAC,EAAE,UAAU,CAAC;KACzB,CAAC;IACF,mFAAmF;IACnF,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,KAAK,CAAC;IACxC,+BAA+B;IAC/B,GAAG,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACtD,+EAA+E;IAC/E,cAAc,CAAC,EAAE,qBAAqB,CAAC;CACxC;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,oBAAoB;;;uBAY5B,SAAS;;;;;IA6CjC,2FAA2F;;;;;;IAE3F,qCAAqC;;IAErC,4CAA4C;;;;;;IAE5C,mEAAmE;;IAEnE,sEAAsE;;;;;;;;;;;;;IAEtE,4GAA4G;;;;;;;;;IAE5G,gFAAgF;;EAGnF"}
1
+ {"version":3,"file":"create-billing.d.ts","sourceRoot":"","sources":["../src/create-billing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAOhE,OAAO,EAGL,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAgD,KAAK,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACtH,OAAO,EAAoB,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAClF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAQ9C,MAAM,WAAW,oBAAoB;IACnC,sDAAsD;IACtD,OAAO,EAAE,cAAc,CAAC;IACxB,gDAAgD;IAChD,MAAM,EAAE,aAAa,CAAC;IACtB,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gFAAgF;IAChF,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC;IAC5C,oEAAoE;IACpE,SAAS,CAAC,EAAE;QACV,QAAQ,EAAE,iBAAiB,CAAC;QAC5B,aAAa,CAAC,EAAE,iBAAiB,EAAE,CAAC;QACpC,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,CAAC,CAAC;QAClD,MAAM,CAAC,EAAE,eAAe,CAAC;QACzB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC1C,KAAK,CAAC,EAAE,cAAc,CAAC;QACvB,UAAU,CAAC,EAAE,UAAU,CAAC;KACzB,CAAC;IACF,mFAAmF;IACnF,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,KAAK,CAAC;IACxC,+BAA+B;IAC/B,GAAG,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACtD,+EAA+E;IAC/E,cAAc,CAAC,EAAE,qBAAqB,CAAC;IACvC;;;;;gCAK4B;IAC5B,UAAU,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;CACvC;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,oBAAoB;;;uBAqD5B,SAAS;;;;;IA6CjC,2FAA2F;;;;;;IAE3F,qCAAqC;;IAErC,4CAA4C;;;;;;IAE5C,mEAAmE;;IAEnE,sEAAsE;;;;;;;;;;;;;IAEtE,4GAA4G;;;;;;;;;IAE5G,gFAAgF;;IAEhF;;+EAE2E;;;;;;;EAU9E"}
@@ -4,13 +4,52 @@ import { createDispatcher } from "./dispatch.js";
4
4
  import { createToolListHandler, createToolDispatchHandler } from "./routes/rest.js";
5
5
  import { createMcpTransport } from "./routes/mcp.js";
6
6
  import { createStripeWebhookHandler } from "./routes/webhook.js";
7
- import { createAgentAuth, } from "./agent-auth/index.js";
7
+ import { CLAIM_GRANT_TYPE, createAgentAuth, } from "./agent-auth/index.js";
8
8
  import { createMachinePaymentHandler, createPaymentMd } from "./machine-payment/index.js";
9
+ import { createOAuthProxy } from "./oauth-proxy/index.js";
9
10
  export function createBilling(opts) {
10
11
  const resolved = resolveConfig(opts.config);
12
+ // MCP OAuth 2.1 + DCR proxy (opt-in). Built first so agentAuth can advertise
13
+ // its endpoints and grants in the discovery document.
14
+ // eslint-disable-next-line prefer-const -- assigned below; the closure reads it lazily
15
+ let agentAuthRef;
16
+ const oauthProxy = opts.oauthProxy
17
+ ? createOAuthProxy({
18
+ ...(opts.oauthProxy === true ? {} : opts.oauthProxy),
19
+ baseUrl: (opts.oauthProxy === true ? undefined : opts.oauthProxy.baseUrl) ??
20
+ opts.agentAuth?.baseUrl,
21
+ // Late-bound: agentAuth is built after this (it needs the endpoints
22
+ // above for discovery), and the getter runs per request.
23
+ claimGrant: () => agentAuthRef
24
+ ? { type: CLAIM_GRANT_TYPE, handle: agentAuthRef.handleClaimGrant }
25
+ : undefined,
26
+ })
27
+ : undefined;
11
28
  const agentAuth = opts.agentAuth
12
- ? createAgentAuth({ adapter: opts.adapter, config: resolved, ...opts.agentAuth })
29
+ ? createAgentAuth({
30
+ adapter: opts.adapter,
31
+ config: resolved,
32
+ ...opts.agentAuth,
33
+ // An OAuth proxy adds two grants and two endpoints to discovery. Merged
34
+ // here (not asked of the caller) so enabling `oauthProxy` is the only
35
+ // thing needed for a client to discover the flow.
36
+ ...(oauthProxy
37
+ ? {
38
+ policy: {
39
+ ...opts.agentAuth.policy,
40
+ extraGrantTypes: [
41
+ ...(opts.agentAuth.policy?.extraGrantTypes ?? []),
42
+ ...oauthProxy.grantTypes,
43
+ ],
44
+ },
45
+ asMetadataExtra: (request) => ({
46
+ ...oauthProxy.asMetadata(request),
47
+ }),
48
+ }
49
+ : {}),
50
+ })
13
51
  : undefined;
52
+ agentAuthRef = agentAuth;
14
53
  const resourceMetadata = agentAuth
15
54
  ? (request) => agentAuth.resourceMetadataUrl(request)
16
55
  : undefined;
@@ -70,6 +109,17 @@ export function createBilling(opts) {
70
109
  machinePayment,
71
110
  /** `/payment.md` handler (undefined unless `machinePayment` was configured). */
72
111
  paymentMd,
112
+ /** MCP OAuth proxy handlers (undefined unless `oauthProxy` was configured).
113
+ * Mount as app/oauth/{authorize,register,callback,token}/route.ts. `token`
114
+ * also serves the auth.md claim grant, so it replaces agentAuth.token. */
115
+ oauth: oauthProxy
116
+ ? {
117
+ authorize: oauthProxy.authorize,
118
+ register: oauthProxy.register,
119
+ callback: oauthProxy.callback,
120
+ token: oauthProxy.token,
121
+ }
122
+ : undefined,
73
123
  };
74
124
  }
75
125
  //# sourceMappingURL=create-billing.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-billing.js","sourceRoot":"","sources":["../src/create-billing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-billing.js","sourceRoot":"","sources":["../src/create-billing.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -14,6 +14,7 @@ export { createBilling, type CreateBillingOptions } from "./create-billing.js";
14
14
  export { createAgentAuth, CLAIM_GRANT_TYPE, type AgentAuthOptions, type AgentAuthBranding, type AgentAuthPaths, type AgentAuthPolicy, type AgentIdentityType, } from "./agent-auth/index.js";
15
15
  export { inMemoryClaimStore, type ClaimStore, type ClaimStatus, type ClaimReadResult, } from "./agent-auth/claim-store.js";
16
16
  export { createMachinePaymentHandler, createPaymentMd, type MachinePaymentOptions, type MachinePaymentMethod, type PaymentChallenge, type SettleFn, type PaymentMdOptions, } from "./machine-payment/index.js";
17
+ export { createOAuthProxy, type OAuthProxy, type OAuthProxyOptions, type OAuthProxyPaths, type ClaimGrantChain, } from "./oauth-proxy/index.js";
17
18
  export { createToolListHandler, createToolDispatchHandler, type Dispatcher } from "./routes/rest.js";
18
19
  export { createMcpTransport, type McpTransportOptions } from "./routes/mcp.js";
19
20
  export { createStripeWebhookHandler, type WebhookOptions } from "./routes/webhook.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -27,6 +27,9 @@ export { createAgentAuth, CLAIM_GRANT_TYPE, } from "./agent-auth/index.js";
27
27
  export { inMemoryClaimStore, } from "./agent-auth/claim-store.js";
28
28
  // Machine payments — MPP (the 402 payment sibling of auth.md)
29
29
  export { createMachinePaymentHandler, createPaymentMd, } from "./machine-payment/index.js";
30
+ // MCP OAuth 2.1 + Dynamic Client Registration proxy (opt-in via
31
+ // createBilling({ oauthProxy }) or standalone).
32
+ export { createOAuthProxy, } from "./oauth-proxy/index.js";
30
33
  // Next route factories
31
34
  export { createToolListHandler, createToolDispatchHandler } from "./routes/rest.js";
32
35
  export { createMcpTransport } from "./routes/mcp.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mEAAmE;AAYnE,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEnE,cAAc;AACd,OAAO,EACL,WAAW,EACX,WAAW,EACX,kBAAkB,EAClB,aAAa,EACb,aAAa,GACd,MAAM,WAAW,CAAC;AAEnB,+BAA+B;AAC/B,OAAO,EACL,SAAS,EACT,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,0BAA0B,EAC1B,0BAA0B,EAC1B,qBAAqB,EACrB,qBAAqB,EACrB,aAAa,EACb,YAAY,EACZ,sBAAsB,EACtB,wBAAwB,GAEzB,MAAM,cAAc,CAAC;AAEtB,wEAAwE;AACxE,OAAO,EACL,WAAW,EACX,WAAW,EACX,cAAc,EACd,SAAS,EACT,cAAc,EACd,YAAY,GAKb,MAAM,YAAY,CAAC;AAEpB,oBAAoB;AACpB,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEjE,8DAA8D;AAC9D,OAAO,EACL,uBAAuB,GAMxB,MAAM,kBAAkB,CAAC;AAE1B,sEAAsE;AACtE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAmB,MAAM,aAAa,CAAC;AAElF,+EAA+E;AAC/E,OAAO,EACL,iBAAiB,EACjB,eAAe,GAIhB,MAAM,WAAW,CAAC;AAEnB,4EAA4E;AAC5E,OAAO,EACL,YAAY,GAKb,MAAM,aAAa,CAAC;AAErB,oBAAoB;AACpB,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,GAEnB,MAAM,qBAAqB,CAAC;AAE7B,uBAAuB;AACvB,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAmB,MAAM,eAAe,CAAC;AAEvF,oEAAoE;AACpE,OAAO,EAAE,aAAa,EAA6B,MAAM,qBAAqB,CAAC;AAE/E,2EAA2E;AAC3E,OAAO,EACL,eAAe,EACf,gBAAgB,GAMjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,kBAAkB,GAInB,MAAM,6BAA6B,CAAC;AAErC,8DAA8D;AAC9D,OAAO,EACL,2BAA2B,EAC3B,eAAe,GAMhB,MAAM,4BAA4B,CAAC;AAEpC,uBAAuB;AACvB,OAAO,EAAE,qBAAqB,EAAE,yBAAyB,EAAmB,MAAM,kBAAkB,CAAC;AACrG,OAAO,EAAE,kBAAkB,EAA4B,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAE,0BAA0B,EAAuB,MAAM,qBAAqB,CAAC;AAEtF,cAAc;AACd,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAwB,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAGL,UAAU,EACV,UAAU,EACV,WAAW,EACX,cAAc,EACd,aAAa,GACd,MAAM,iBAAiB,CAAC;AAEzB,QAAQ;AACR,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mEAAmE;AAYnE,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEnE,cAAc;AACd,OAAO,EACL,WAAW,EACX,WAAW,EACX,kBAAkB,EAClB,aAAa,EACb,aAAa,GACd,MAAM,WAAW,CAAC;AAEnB,+BAA+B;AAC/B,OAAO,EACL,SAAS,EACT,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,0BAA0B,EAC1B,0BAA0B,EAC1B,qBAAqB,EACrB,qBAAqB,EACrB,aAAa,EACb,YAAY,EACZ,sBAAsB,EACtB,wBAAwB,GAEzB,MAAM,cAAc,CAAC;AAEtB,wEAAwE;AACxE,OAAO,EACL,WAAW,EACX,WAAW,EACX,cAAc,EACd,SAAS,EACT,cAAc,EACd,YAAY,GAKb,MAAM,YAAY,CAAC;AAEpB,oBAAoB;AACpB,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEjE,8DAA8D;AAC9D,OAAO,EACL,uBAAuB,GAMxB,MAAM,kBAAkB,CAAC;AAE1B,sEAAsE;AACtE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAmB,MAAM,aAAa,CAAC;AAElF,+EAA+E;AAC/E,OAAO,EACL,iBAAiB,EACjB,eAAe,GAIhB,MAAM,WAAW,CAAC;AAEnB,4EAA4E;AAC5E,OAAO,EACL,YAAY,GAKb,MAAM,aAAa,CAAC;AAErB,oBAAoB;AACpB,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,GAEnB,MAAM,qBAAqB,CAAC;AAE7B,uBAAuB;AACvB,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAmB,MAAM,eAAe,CAAC;AAEvF,oEAAoE;AACpE,OAAO,EAAE,aAAa,EAA6B,MAAM,qBAAqB,CAAC;AAE/E,2EAA2E;AAC3E,OAAO,EACL,eAAe,EACf,gBAAgB,GAMjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,kBAAkB,GAInB,MAAM,6BAA6B,CAAC;AAErC,8DAA8D;AAC9D,OAAO,EACL,2BAA2B,EAC3B,eAAe,GAMhB,MAAM,4BAA4B,CAAC;AAEpC,gEAAgE;AAChE,gDAAgD;AAChD,OAAO,EACL,gBAAgB,GAKjB,MAAM,wBAAwB,CAAC;AAEhC,uBAAuB;AACvB,OAAO,EAAE,qBAAqB,EAAE,yBAAyB,EAAmB,MAAM,kBAAkB,CAAC;AACrG,OAAO,EAAE,kBAAkB,EAA4B,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAE,0BAA0B,EAAuB,MAAM,qBAAqB,CAAC;AAEtF,cAAc;AACd,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAwB,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAGL,UAAU,EACV,UAAU,EACV,WAAW,EACX,cAAc,EACd,aAAa,GACd,MAAM,iBAAiB,CAAC;AAEzB,QAAQ;AACR,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,51 @@
1
+ export interface ClaimGrantChain {
2
+ type: string;
3
+ handle: (params: Record<string, string>) => Promise<Response> | Response;
4
+ }
5
+ export interface OAuthProxyPaths {
6
+ authorize?: string;
7
+ register?: string;
8
+ callback?: string;
9
+ }
10
+ export interface OAuthProxyOptions {
11
+ /** Absolute base URL for the AuthKit redirect_uri + advertised endpoints.
12
+ * String, per-request resolver, or omitted to derive from forwarded headers. */
13
+ baseUrl?: string | ((request: Request) => string);
14
+ /** WorkOS client id. Defaults to process.env.WORKOS_CLIENT_ID. */
15
+ workosClientId?: string;
16
+ /** HS256 key for the proxy's refresh tokens. Defaults to
17
+ * process.env.REFRESH_TOKEN_SECRET. No fallback — see the note above. */
18
+ refreshSecret?: string;
19
+ paths?: OAuthProxyPaths;
20
+ /** Seconds/ms overrides. accessTokenTtl is what we *advertise* for the WorkOS
21
+ * access token; refreshTtl is how long our wrapper JWT stays valid. */
22
+ ttl?: {
23
+ clientMs?: number;
24
+ sessionMs?: number;
25
+ codeMs?: number;
26
+ accessTokenSeconds?: number;
27
+ refreshSeconds?: number;
28
+ };
29
+ /** Chain another grant type through the same /oauth/token route — e.g.
30
+ * auth.md's claim grant, so one route serves both. Pass a function when the
31
+ * handler isn't available yet at construction (createBilling builds the proxy
32
+ * first, because agent-auth needs its endpoints for discovery). */
33
+ claimGrant?: ClaimGrantChain | (() => ClaimGrantChain | undefined);
34
+ }
35
+ export declare function createOAuthProxy(opts?: OAuthProxyOptions): {
36
+ register: (request: Request) => Promise<Response>;
37
+ authorize: (request: Request) => Promise<Response>;
38
+ callback: (request: Request) => Promise<Response>;
39
+ token: (request: Request) => Promise<Response>;
40
+ /** Grant types to advertise in AS metadata. */
41
+ grantTypes: readonly ["authorization_code", "refresh_token"];
42
+ /** AS-metadata fields this proxy adds — merge into the discovery document so
43
+ * the endpoints are only advertised where they actually exist. */
44
+ asMetadata: (request: Request) => {
45
+ authorization_endpoint: string;
46
+ registration_endpoint: string;
47
+ };
48
+ paths: Required<OAuthProxyPaths>;
49
+ };
50
+ export type OAuthProxy = ReturnType<typeof createOAuthProxy>;
51
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/oauth-proxy/index.ts"],"names":[],"mappings":"AAgCA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;CAC1E;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC;qFACiF;IACjF,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,CAAC,CAAC;IAClD,kEAAkE;IAClE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;8EAC0E;IAC1E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB;4EACwE;IACxE,GAAG,CAAC,EAAE;QACJ,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;IACF;;;wEAGoE;IACpE,UAAU,CAAC,EAAE,eAAe,GAAG,CAAC,MAAM,eAAe,GAAG,SAAS,CAAC,CAAC;CACpE;AAsDD,wBAAgB,gBAAgB,CAAC,IAAI,GAAE,iBAAsB;wBAwF1B,OAAO,KAAG,OAAO,CAAC,QAAQ,CAAC;yBAyC1B,OAAO,KAAG,OAAO,CAAC,QAAQ,CAAC;wBAwC5B,OAAO,KAAG,OAAO,CAAC,QAAQ,CAAC;qBA0I9B,OAAO,KAAG,OAAO,CAAC,QAAQ,CAAC;IAmBvD,+CAA+C;;IAE/C;uEACmE;0BAC7C,OAAO;;;;;EAMhC;AAED,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
@@ -0,0 +1,385 @@
1
+ // MCP OAuth 2.1 proxy: lets a *dynamic* client (Claude Desktop, Claude.ai, any
2
+ // MCP client that speaks RFC 7591 Dynamic Client Registration) connect to a
3
+ // remote MCP server without a human pasting an API key.
4
+ //
5
+ // It is a proxy, not an authorization server: the user actually authenticates
6
+ // with WorkOS AuthKit, and we translate that into the OAuth shape MCP clients
7
+ // expect. Four endpoints, all framework-agnostic (Request → Response):
8
+ //
9
+ // POST /oauth/register RFC 7591 — client registers, gets a client_id
10
+ // GET /oauth/authorize parks the client's request, redirects to AuthKit
11
+ // GET /oauth/callback AuthKit returns; we mint OUR code, bounce to the client
12
+ // POST /oauth/token code → {access_token, refresh_token}; also refreshes
13
+ //
14
+ // The access token handed back is the WorkOS access token (short-lived, ~10 min).
15
+ // The refresh token is OUR HS256 JWT wrapping the WorkOS refresh token, so the
16
+ // client never holds WorkOS credentials directly and we can bind the token to
17
+ // the client_id that obtained it.
18
+ //
19
+ // Why this lives here and not in an app: it is pure protocol plumbing with one
20
+ // product-specific input (the WorkOS project). Two consumers already needed it,
21
+ // and the second one copying the first is how the fallback-secret bug below got
22
+ // duplicated in the first place.
23
+ //
24
+ // SECURITY — the refresh secret is REQUIRED. An earlier app-local version fell
25
+ // back to `WORKOS_CLIENT_ID`, which is a *public* OAuth identifier that appears
26
+ // in authorize URLs and discovery documents, so anyone who knew it could forge a
27
+ // 30-day refresh token. There is deliberately no fallback here: without
28
+ // REFRESH_TOKEN_SECRET the token endpoint returns server_error rather than
29
+ // signing with something guessable.
30
+ import { createHash, createHmac, randomUUID, timingSafeEqual } from "node:crypto";
31
+ import { getWorkOS } from "../workos.js";
32
+ const b64url = (b) => b.toString("base64url");
33
+ function jsonError(error, description, status = 400) {
34
+ return Response.json({ error, error_description: description }, { status });
35
+ }
36
+ function baseUrlFromRequest(request) {
37
+ const h = request.headers;
38
+ const host = h.get("x-forwarded-host") ?? h.get("host");
39
+ const proto = h.get("x-forwarded-proto") ?? (host?.startsWith("localhost") ? "http" : "https");
40
+ if (host)
41
+ return `${proto}://${host}`;
42
+ return new URL(request.url).origin;
43
+ }
44
+ /** RFC 7636. `plain` is accepted because the MCP spec still allows it, but S256
45
+ * is what every real client sends. */
46
+ function verifyCodeChallenge(verifier, challenge, method) {
47
+ if (method === "plain")
48
+ return verifier === challenge;
49
+ if (method === "S256")
50
+ return createHash("sha256").update(verifier).digest("base64url") === challenge;
51
+ return false;
52
+ }
53
+ export function createOAuthProxy(opts = {}) {
54
+ const paths = {
55
+ authorize: opts.paths?.authorize ?? "/oauth/authorize",
56
+ register: opts.paths?.register ?? "/oauth/register",
57
+ callback: opts.paths?.callback ?? "/oauth/callback",
58
+ };
59
+ const CLIENT_TTL = opts.ttl?.clientMs ?? 24 * 60 * 60 * 1000;
60
+ const SESSION_TTL = opts.ttl?.sessionMs ?? 10 * 60 * 1000;
61
+ const CODE_TTL = opts.ttl?.codeMs ?? 5 * 60 * 1000;
62
+ const ACCESS_TTL = opts.ttl?.accessTokenSeconds ?? 600;
63
+ const REFRESH_TTL = opts.ttl?.refreshSeconds ?? 30 * 24 * 60 * 60;
64
+ // In-memory, single-process — same assumption as the default claim store.
65
+ // Pruned on access rather than on a timer, so there is no dangling interval in
66
+ // a serverless/edge build.
67
+ const clients = new Map();
68
+ const sessions = new Map();
69
+ const codes = new Map();
70
+ function prune() {
71
+ const now = Date.now();
72
+ for (const [k, v] of clients)
73
+ if (now - v.created_at > CLIENT_TTL)
74
+ clients.delete(k);
75
+ for (const [k, v] of sessions)
76
+ if (now - v.created_at > SESSION_TTL)
77
+ sessions.delete(k);
78
+ for (const [k, v] of codes)
79
+ if (now - v.created_at > CODE_TTL)
80
+ codes.delete(k);
81
+ }
82
+ const baseUrlOf = (request) => typeof opts.baseUrl === "function"
83
+ ? opts.baseUrl(request)
84
+ : (opts.baseUrl ?? baseUrlFromRequest(request));
85
+ const workosClientId = () => opts.workosClientId ?? process.env.WORKOS_CLIENT_ID;
86
+ /** Throws when unset — callers turn that into a 500 rather than signing with
87
+ * a guessable key. Read lazily so app boot never depends on it. */
88
+ function refreshKey() {
89
+ const s = opts.refreshSecret ?? process.env.REFRESH_TOKEN_SECRET;
90
+ if (!s) {
91
+ throw new Error("REFRESH_TOKEN_SECRET is not configured — the OAuth proxy refuses to sign refresh tokens without it");
92
+ }
93
+ return Buffer.from(s, "utf8");
94
+ }
95
+ // HS256 JWT by hand: `jose` would be a dependency for ~15 lines, and the
96
+ // format is wire-compatible with it (same header, same claims), so tokens
97
+ // minted by an app's previous jose-based implementation still verify here.
98
+ function signRefresh(workosRefreshToken, clientId) {
99
+ const now = Math.floor(Date.now() / 1000);
100
+ const header = b64url(Buffer.from(JSON.stringify({ alg: "HS256", typ: "JWT" })));
101
+ const payload = b64url(Buffer.from(JSON.stringify({ wrt: workosRefreshToken, cid: clientId, iat: now, exp: now + REFRESH_TTL })));
102
+ const sig = b64url(createHmac("sha256", refreshKey()).update(`${header}.${payload}`).digest());
103
+ return `${header}.${payload}.${sig}`;
104
+ }
105
+ /** Throws if the secret is missing (a 500 condition), returns null for a token
106
+ * that is simply invalid (a 400 condition). Conflating the two sent
107
+ * "invalid_grant" to a client whose token was fine while WE were misconfigured. */
108
+ function verifyRefresh(token) {
109
+ const expected = (() => {
110
+ const parts = token.split(".");
111
+ if (parts.length !== 3)
112
+ return null;
113
+ return createHmac("sha256", refreshKey()).update(`${parts[0]}.${parts[1]}`).digest();
114
+ })();
115
+ if (!expected)
116
+ return null;
117
+ const parts = token.split(".");
118
+ const [, payload, sig] = parts;
119
+ const given = Buffer.from(sig, "base64url");
120
+ if (given.length !== expected.length || !timingSafeEqual(given, expected))
121
+ return null;
122
+ try {
123
+ const claims = JSON.parse(Buffer.from(payload, "base64url").toString("utf8"));
124
+ if (!claims.wrt || !claims.cid)
125
+ return null;
126
+ if (claims.exp && Math.floor(Date.now() / 1000) >= claims.exp)
127
+ return null;
128
+ return { workosRefreshToken: claims.wrt, clientId: claims.cid };
129
+ }
130
+ catch {
131
+ return null;
132
+ }
133
+ }
134
+ /** RFC 7591 dynamic client registration. Public clients only
135
+ * (token_endpoint_auth_method: none) — PKCE is what protects the exchange. */
136
+ async function register(request) {
137
+ prune();
138
+ let body;
139
+ try {
140
+ body = (await request.json());
141
+ }
142
+ catch {
143
+ return jsonError("invalid_client_metadata", "Invalid JSON body");
144
+ }
145
+ const uris = body.redirect_uris;
146
+ if (!Array.isArray(uris) || uris.length === 0) {
147
+ return jsonError("invalid_client_metadata", "redirect_uris is required and must be a non-empty array");
148
+ }
149
+ if (!uris.every((u) => typeof u === "string")) {
150
+ return jsonError("invalid_client_metadata", "Each redirect_uri must be a string");
151
+ }
152
+ const client = {
153
+ client_id: randomUUID(),
154
+ client_name: typeof body.client_name === "string" ? body.client_name : undefined,
155
+ redirect_uris: uris,
156
+ grant_types: ["authorization_code", "refresh_token"],
157
+ response_types: ["code"],
158
+ token_endpoint_auth_method: "none",
159
+ created_at: Date.now(),
160
+ };
161
+ clients.set(client.client_id, client);
162
+ return Response.json({
163
+ client_id: client.client_id,
164
+ client_name: client.client_name,
165
+ redirect_uris: client.redirect_uris,
166
+ grant_types: client.grant_types,
167
+ response_types: client.response_types,
168
+ token_endpoint_auth_method: client.token_endpoint_auth_method,
169
+ }, { status: 201 });
170
+ }
171
+ /** Parks the client's request under a session id, then hands the user to
172
+ * AuthKit. The session id travels as WorkOS's `state`, so the callback can
173
+ * match the returning user back to the waiting client. */
174
+ async function authorize(request) {
175
+ prune();
176
+ const q = new URL(request.url).searchParams;
177
+ const clientId = q.get("client_id");
178
+ const redirectUri = q.get("redirect_uri");
179
+ if (!clientId || !redirectUri || q.get("response_type") !== "code") {
180
+ return jsonError("invalid_request", "Missing or invalid required parameters (client_id, redirect_uri, response_type=code)");
181
+ }
182
+ const client = clients.get(clientId);
183
+ if (!client)
184
+ return jsonError("invalid_client", "Unknown client_id");
185
+ if (!client.redirect_uris.includes(redirectUri)) {
186
+ return jsonError("invalid_request", "redirect_uri does not match registered URIs");
187
+ }
188
+ const wosClientId = workosClientId();
189
+ if (!wosClientId)
190
+ return jsonError("server_error", "WORKOS_CLIENT_ID is not configured", 500);
191
+ const sessionId = randomUUID();
192
+ sessions.set(sessionId, {
193
+ client_id: clientId,
194
+ redirect_uri: redirectUri,
195
+ state: q.get("state") ?? undefined,
196
+ code_challenge: q.get("code_challenge") ?? undefined,
197
+ code_challenge_method: q.get("code_challenge_method") ?? undefined,
198
+ created_at: Date.now(),
199
+ });
200
+ const url = new URL("https://api.workos.com/user_management/authorize");
201
+ url.searchParams.set("client_id", wosClientId);
202
+ url.searchParams.set("redirect_uri", `${baseUrlOf(request)}${paths.callback}`);
203
+ url.searchParams.set("response_type", "code");
204
+ url.searchParams.set("provider", "authkit");
205
+ url.searchParams.set("state", sessionId);
206
+ return Response.redirect(url.toString(), 302);
207
+ }
208
+ /** AuthKit's redirect target. Exchanges WorkOS's code for tokens, mints OUR
209
+ * single-use code, and bounces back to the client's redirect_uri. */
210
+ async function callback(request) {
211
+ prune();
212
+ const q = new URL(request.url).searchParams;
213
+ const workosCode = q.get("code");
214
+ const sessionId = q.get("state");
215
+ if (!workosCode || !sessionId)
216
+ return jsonError("invalid_request", "Missing code or state parameter");
217
+ const session = sessions.get(sessionId);
218
+ if (!session)
219
+ return jsonError("invalid_request", "Invalid or expired session");
220
+ sessions.delete(sessionId);
221
+ const wosClientId = workosClientId();
222
+ if (!wosClientId)
223
+ return jsonError("server_error", "WORKOS_CLIENT_ID is not configured", 500);
224
+ let accessToken;
225
+ let refreshToken;
226
+ try {
227
+ const auth = await getWorkOS().userManagement.authenticateWithCode({
228
+ clientId: wosClientId,
229
+ code: workosCode,
230
+ });
231
+ accessToken = auth.accessToken;
232
+ refreshToken = auth.refreshToken;
233
+ }
234
+ catch (e) {
235
+ console.error("[oauth-proxy] WorkOS code exchange failed:", e);
236
+ return jsonError("server_error", "Failed to exchange authorization code with WorkOS", 500);
237
+ }
238
+ const code = randomUUID();
239
+ codes.set(code, {
240
+ client_id: session.client_id,
241
+ redirect_uri: session.redirect_uri,
242
+ access_token: accessToken,
243
+ refresh_token: refreshToken,
244
+ code_challenge: session.code_challenge,
245
+ code_challenge_method: session.code_challenge_method,
246
+ used: false,
247
+ created_at: Date.now(),
248
+ });
249
+ const back = new URL(session.redirect_uri);
250
+ back.searchParams.set("code", code);
251
+ if (session.state)
252
+ back.searchParams.set("state", session.state);
253
+ return Response.redirect(back.toString(), 302);
254
+ }
255
+ async function handleAuthorizationCode(params) {
256
+ const { code, client_id, redirect_uri, code_verifier } = params;
257
+ if (!code || !client_id) {
258
+ return jsonError("invalid_request", "Missing required parameters (code, client_id)");
259
+ }
260
+ const entry = codes.get(code);
261
+ if (!entry)
262
+ return jsonError("invalid_grant", "Invalid or expired authorization code");
263
+ if (entry.used) {
264
+ // Replay: burn it. RFC 6749 §4.1.2 — a reused code must invalidate.
265
+ codes.delete(code);
266
+ return jsonError("invalid_grant", "Authorization code has already been used");
267
+ }
268
+ if (entry.client_id !== client_id)
269
+ return jsonError("invalid_grant", "client_id does not match");
270
+ if (redirect_uri && entry.redirect_uri !== redirect_uri) {
271
+ return jsonError("invalid_grant", "redirect_uri does not match");
272
+ }
273
+ if (entry.code_challenge && entry.code_challenge_method) {
274
+ if (!code_verifier)
275
+ return jsonError("invalid_request", "code_verifier is required for PKCE");
276
+ if (!verifyCodeChallenge(code_verifier, entry.code_challenge, entry.code_challenge_method)) {
277
+ return jsonError("invalid_grant", "PKCE code_verifier verification failed");
278
+ }
279
+ }
280
+ entry.used = true;
281
+ let refresh;
282
+ try {
283
+ refresh = signRefresh(entry.refresh_token, entry.client_id);
284
+ }
285
+ catch (e) {
286
+ console.error("[oauth-proxy]", e);
287
+ return jsonError("server_error", "Refresh-token signing is not configured", 500);
288
+ }
289
+ return Response.json({
290
+ access_token: entry.access_token,
291
+ token_type: "bearer",
292
+ expires_in: ACCESS_TTL,
293
+ refresh_token: refresh,
294
+ });
295
+ }
296
+ async function handleRefreshToken(params) {
297
+ const { refresh_token, client_id } = params;
298
+ if (!refresh_token || !client_id) {
299
+ return jsonError("invalid_request", "Missing required parameters (refresh_token, client_id)");
300
+ }
301
+ let decoded;
302
+ try {
303
+ decoded = verifyRefresh(refresh_token);
304
+ }
305
+ catch (e) {
306
+ console.error("[oauth-proxy]", e);
307
+ return jsonError("server_error", "Refresh-token verification is not configured", 500);
308
+ }
309
+ if (!decoded)
310
+ return jsonError("invalid_grant", "Invalid or expired refresh token");
311
+ if (decoded.clientId !== client_id)
312
+ return jsonError("invalid_grant", "client_id does not match");
313
+ const wosClientId = workosClientId();
314
+ if (!wosClientId)
315
+ return jsonError("server_error", "WORKOS_CLIENT_ID is not configured", 500);
316
+ try {
317
+ const auth = await getWorkOS().userManagement.authenticateWithRefreshToken({
318
+ clientId: wosClientId,
319
+ refreshToken: decoded.workosRefreshToken,
320
+ });
321
+ return Response.json({
322
+ access_token: auth.accessToken,
323
+ token_type: "bearer",
324
+ expires_in: ACCESS_TTL,
325
+ refresh_token: signRefresh(auth.refreshToken, client_id),
326
+ });
327
+ }
328
+ catch (e) {
329
+ console.error("[oauth-proxy] refresh exchange failed:", e);
330
+ return jsonError("invalid_grant", "Refresh token is no longer valid. Please re-authenticate.");
331
+ }
332
+ }
333
+ async function readBody(request) {
334
+ const ct = request.headers.get("content-type") ?? "";
335
+ try {
336
+ if (ct.includes("application/x-www-form-urlencoded")) {
337
+ const form = await request.formData();
338
+ const out = {};
339
+ form.forEach((v, k) => {
340
+ out[k] = String(v);
341
+ });
342
+ return out;
343
+ }
344
+ return (await request.json());
345
+ }
346
+ catch {
347
+ return null;
348
+ }
349
+ }
350
+ /** POST /oauth/token — authorization_code + refresh_token, plus whatever
351
+ * `claimGrant` chains in (auth.md's claim grant, in practice). */
352
+ async function token(request) {
353
+ prune();
354
+ const params = await readBody(request);
355
+ if (!params)
356
+ return jsonError("invalid_request", "Invalid request body");
357
+ if (params.grant_type === "authorization_code")
358
+ return handleAuthorizationCode(params);
359
+ if (params.grant_type === "refresh_token")
360
+ return handleRefreshToken(params);
361
+ const chained = typeof opts.claimGrant === "function" ? opts.claimGrant() : opts.claimGrant;
362
+ if (chained && params.grant_type === chained.type)
363
+ return chained.handle(params);
364
+ const supported = ["authorization_code", "refresh_token", chained?.type]
365
+ .filter(Boolean)
366
+ .join(", ");
367
+ return jsonError("unsupported_grant_type", `Supported grant types: ${supported}`);
368
+ }
369
+ return {
370
+ register,
371
+ authorize,
372
+ callback,
373
+ token,
374
+ /** Grant types to advertise in AS metadata. */
375
+ grantTypes: ["authorization_code", "refresh_token"],
376
+ /** AS-metadata fields this proxy adds — merge into the discovery document so
377
+ * the endpoints are only advertised where they actually exist. */
378
+ asMetadata: (request) => ({
379
+ authorization_endpoint: `${baseUrlOf(request)}${paths.authorize}`,
380
+ registration_endpoint: `${baseUrlOf(request)}${paths.register}`,
381
+ }),
382
+ paths,
383
+ };
384
+ }
385
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/oauth-proxy/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arnaudjnn/billing-tools",
3
- "version": "0.15.0",
3
+ "version": "0.16.0",
4
4
  "description": "The get-paid engine for Stripe + WorkOS apps, for humans and AI agents. Drop-in API-key auth, token/credit + subscription billing, auth.md agent registration, and MPP machine payments, as MCP tools, a REST API, and a CLI. Framework-agnostic, storage-pluggable.",
5
5
  "license": "MIT",
6
6
  "author": "Arnaud Jeannin",