@softure-ai/mcp-access 0.2.0 → 0.2.2
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/CHANGELOG.md +17 -0
- package/README.md +49 -2
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/jobs/index.d.ts +12 -0
- package/dist/jobs/index.d.ts.map +1 -0
- package/dist/jobs/index.js +22 -0
- package/dist/jobs/index.js.map +1 -0
- package/dist/options.d.ts +8 -0
- package/dist/options.d.ts.map +1 -1
- package/dist/options.js +7 -0
- package/dist/options.js.map +1 -1
- package/dist/schema.d.ts +58 -0
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +9 -4
- package/dist/schema.js.map +1 -1
- package/dist/scripts/index.d.ts +2 -0
- package/dist/scripts/index.d.ts.map +1 -0
- package/dist/scripts/index.js +4 -0
- package/dist/scripts/index.js.map +1 -0
- package/dist/scripts/registration-scripts.d.ts +15 -0
- package/dist/scripts/registration-scripts.d.ts.map +1 -0
- package/dist/scripts/registration-scripts.js +73 -0
- package/dist/scripts/registration-scripts.js.map +1 -0
- package/dist/server/health.d.ts.map +1 -1
- package/dist/server/health.js +3 -2
- package/dist/server/health.js.map +1 -1
- package/dist/server/index.d.ts +1 -0
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +1 -0
- package/dist/server/index.js.map +1 -1
- package/dist/server/oauth-http.d.ts +2 -0
- package/dist/server/oauth-http.d.ts.map +1 -1
- package/dist/server/oauth-http.js +18 -0
- package/dist/server/oauth-http.js.map +1 -1
- package/dist/server/registration-window.d.ts +20 -0
- package/dist/server/registration-window.d.ts.map +1 -0
- package/dist/server/registration-window.js +41 -0
- package/dist/server/registration-window.js.map +1 -0
- package/migrations/0003_create_oauth_registration_window.sql +11 -0
- package/module.json +3 -3
- package/package.json +21 -1
- package/src/index.ts +3 -3
- package/src/jobs/index.ts +23 -0
- package/src/options.ts +7 -0
- package/src/schema.ts +10 -4
- package/src/scripts/index.ts +9 -0
- package/src/scripts/registration-scripts.ts +98 -0
- package/src/server/health.ts +3 -2
- package/src/server/index.ts +9 -0
- package/src/server/oauth-http.ts +16 -0
- package/src/server/registration-window.ts +55 -0
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,23 @@ Newest first. Each version lists what changed for an app that uses `@softure-ai/
|
|
|
4
4
|
production, the version gets a line `verified in: <app>@<commit>` ([docs/05](../../docs/05-adoption-playbook.md),
|
|
5
5
|
"Definition of done"). Versions before the first one below are described in their GitHub Releases (`mcp-access@x.y.z`).
|
|
6
6
|
|
|
7
|
+
## 0.2.2
|
|
8
|
+
|
|
9
|
+
- `oauth.registration` (#520): `"closed"` keeps `POST /api/oauth/register` shut (`403 access_denied`) except while a
|
|
10
|
+
window opened by the new `open-client-registration --minutes=N` ops script lasts; `close-client-registration` shuts
|
|
11
|
+
it early. Both come from the new `@softure-ai/mcp-access/scripts` entry; `@softure-ai/ops` (^0.2.0) is a new
|
|
12
|
+
optional peer. The default `"open"` changes nothing. Migrate: run `softure migrate` (file 3 adds
|
|
13
|
+
`mcp.oauth_registration_window`; the health check reads it). An app that adopted its own tables keeps
|
|
14
|
+
`baseline: { "mcp-access": 2 }`.
|
|
15
|
+
|
|
16
|
+
## 0.2.1
|
|
17
|
+
|
|
18
|
+
- `@softure-ai/mcp-access/jobs` (#491): `mcpAccessJobHandlers` and `mcpAccessJobSchedules` run `pruneMcpAccess`
|
|
19
|
+
daily as a `@softure-ai/jobs` schedule; `@softure-ai/jobs` (^0.1.1) is a new optional peer. Migrate (optional): an app with
|
|
20
|
+
`@softure-ai/jobs` adds `...mcpAccessJobSchedules` to `jobs({ schedules })` and `...mcpAccessJobHandlers` to its
|
|
21
|
+
worker's handlers, then drops the `softure-mcp prune` `maintain` hook (or its own cron). Without jobs nothing
|
|
22
|
+
changes; `softure-mcp prune` stays.
|
|
23
|
+
|
|
7
24
|
## 0.2.0
|
|
8
25
|
|
|
9
26
|
- **Breaking (#446):** the built-in `pl` dictionary is gone; English is the only built-in copy and the fallback for
|
package/README.md
CHANGED
|
@@ -26,6 +26,7 @@ limit check made race-free.
|
|
|
26
26
|
- a `401` from the endpoint names the protected resource metadata (`resource_metadata` in the
|
|
27
27
|
challenge, RFC 9728), which points at the authorization server metadata (RFC 8414);
|
|
28
28
|
- dynamic client registration (RFC 7591, `POST /api/oauth/register`), public or confidential;
|
|
29
|
+
open to anyone, or closed outside a window an ops script opens (`oauth.registration`);
|
|
29
30
|
- `/oauth/authorize`: authorization code with PKCE `S256` only, on a consent page that shows the
|
|
30
31
|
app, where the code goes, the signed-in account and the access; writes need the `mcp:write`
|
|
31
32
|
scope, `allowWrites` and the person's tick;
|
|
@@ -85,6 +86,7 @@ mcpAccess({
|
|
|
85
86
|
| `expiryWarningDays` | `integer` 0–60 | `14` | From how many calendar days before the expiry the list warns. |
|
|
86
87
|
| `legacyTokenPattern` | `RegExp` | — | Also accept tokens of this shape, issued by the app before it adopted the module (e.g. `/^[0-9a-f]{64}$/`), looked up by the same sha256. Must be anchored (`^…$`), without the `g` or `y` flag; tokens longer than 512 characters are refused before it runs. New tokens are always `sftmcp_`. |
|
|
87
88
|
| `oauth.enabled` | `boolean` | `false` | Turns on the OAuth routes, the consent page, the connected apps list and `resource_metadata`. Off, the OAuth routes answer `404`. |
|
|
89
|
+
| `oauth.registration` | `"open"` \| `"closed"` | `"open"` | Dynamic client registration. `"closed"`: `POST /api/oauth/register` answers `403 access_denied` except while a window opened by the `open-client-registration` ops script lasts (§4, "Closed registration"). |
|
|
88
90
|
| `oauth.accessTokenLifetimeMinutes` | `integer` 5–1440 | `60` | Lifetime of an access token issued through OAuth; the client refreshes it. |
|
|
89
91
|
| `oauth.refreshTokenLifetimeDays` | `integer` 1–365 | `90` | Lifetime of a refresh token, renewed on every rotation. An unused connection ends after it. |
|
|
90
92
|
| `oauth.authorizationCodeLifetimeMinutes` | `integer` 1–10 | `10` | Lifetime of an authorization code (single use). |
|
|
@@ -335,6 +337,32 @@ An app that composes its own routes from `/server` builds the context with
|
|
|
335
337
|
resolves origins with `resolveMcpOrigins(config, request)` and passes them to the URL builders,
|
|
336
338
|
whose last argument they are; `OAuthClientRow` is exported from the package root.
|
|
337
339
|
|
|
340
|
+
### Closed registration
|
|
341
|
+
|
|
342
|
+
Registration is public by default: claude.ai and ChatGPT register a client before anyone signs in, and a client
|
|
343
|
+
grants nothing until a person consents. An app with one owner who adds the connector a few times a year can keep the
|
|
344
|
+
route shut with `oauth.registration: "closed"`. Closed, `POST /api/oauth/register` answers
|
|
345
|
+
`403 { "error": "access_denied", "error_description": "Client registration is closed." }` before it reads the body
|
|
346
|
+
(the request still counts in the `mcp-oauth` bucket); a failing read of the window answers `503`. The discovery
|
|
347
|
+
document keeps `registration_endpoint`, so a client that connects while registration is open finds it.
|
|
348
|
+
|
|
349
|
+
The operator opens a window for the minutes in which the owner adds the connector, with the safe ops scripts from
|
|
350
|
+
`@softure-ai/mcp-access/scripts` (`@softure-ai/ops` is an optional peer; dry run by default, `--commit` writes):
|
|
351
|
+
|
|
352
|
+
```ts
|
|
353
|
+
// scripts/open-client-registration.ts
|
|
354
|
+
import { runOpsScript } from "@softure-ai/ops/scripts";
|
|
355
|
+
import { createOpenClientRegistrationScript } from "@softure-ai/mcp-access/scripts";
|
|
356
|
+
import config from "../softure.config";
|
|
357
|
+
|
|
358
|
+
process.exitCode = await runOpsScript({ script: createOpenClientRegistrationScript(config), argv: process.argv.slice(2), config });
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
`open-client-registration --minutes=15 --commit` opens registration for 15 minutes (1 to 1440), replacing any open
|
|
362
|
+
window; `close-client-registration --commit` (`createCloseClientRegistrationScript`) shuts it early. Both refuse while
|
|
363
|
+
`oauth.enabled` is off or `oauth.registration` is `"open"`, and report the window's end before and after. Clients
|
|
364
|
+
registered in a window keep working after it ends; an unused one is pruned a day later like any other.
|
|
365
|
+
|
|
338
366
|
## 5. Migrations and tables
|
|
339
367
|
|
|
340
368
|
`migrations/0001_create_access_tokens.sql` creates `mcp.access_tokens`:
|
|
@@ -360,6 +388,10 @@ expiry, last use), and adds `access_tokens.grant_id` (null for hand-issued token
|
|
|
360
388
|
with the account. `pruneOAuthRecords(ctx)` deletes expired codes, grants whose refresh token has
|
|
361
389
|
expired (with their access tokens) and clients registered over a day ago that hold no grant.
|
|
362
390
|
|
|
391
|
+
`migrations/0003_create_oauth_registration_window.sql` creates `mcp.oauth_registration_window`: at most one row
|
|
392
|
+
(`id = 1`) with `opened_at` and `open_until` (`open_until > opened_at`), the window of "Closed registration" (§4). It
|
|
393
|
+
holds no personal data.
|
|
394
|
+
|
|
363
395
|
### Scheduled pruning
|
|
364
396
|
|
|
365
397
|
`pruneMcpAccess(ctx)` (`/server`) runs both prunes and counts what each removed. The `softure-mcp prune` command
|
|
@@ -372,6 +404,19 @@ runs it with the app's config (loaded like `softure migrate`, or from an app scr
|
|
|
372
404
|
|
|
373
405
|
An app that pruned inline on every token exchange can drop that code.
|
|
374
406
|
|
|
407
|
+
**With `@softure-ai/jobs`.** `@softure-ai/mcp-access/jobs` ships the handler and the schedule, so the worker runs the
|
|
408
|
+
cleanup instead of an app cron (`mcp-access.prune` daily; jobs README, "Schedules"):
|
|
409
|
+
|
|
410
|
+
```ts
|
|
411
|
+
// softure.config.ts
|
|
412
|
+
jobs({ schedules: { ...mcpAccessJobSchedules } }),
|
|
413
|
+
// src/jobs/handlers.ts (the worker's handlers)
|
|
414
|
+
export const handlers: JobHandlers = { ...mcpAccessJobHandlers /* , the app's own */ };
|
|
415
|
+
```
|
|
416
|
+
With it, drop the `mcp-prune` `maintain` hook.
|
|
417
|
+
|
|
418
|
+
`@softure-ai/jobs` is an optional peer: an app without it keeps calling the function from its own cron.
|
|
419
|
+
|
|
375
420
|
### Adopting an app's own tables
|
|
376
421
|
|
|
377
422
|
An app that ran its own `public.access_tokens` (with `grant_id`) and `oauth_clients`,
|
|
@@ -389,7 +434,8 @@ app: { before, baseline: { "mcp-access": 2 } }
|
|
|
389
434
|
Old tokens keep working with `legacyTokenPattern`; connected apps keep their grants, and their old
|
|
390
435
|
refresh tokens rotate into module-shaped ones on the next refresh. An app without OAuth tables
|
|
391
436
|
drops its `grant_id` column (if any), deletes the OAuth part of the script and uses
|
|
392
|
-
`baseline: { "mcp-access": 1 }`; file 2 then runs as a normal migration.
|
|
437
|
+
`baseline: { "mcp-access": 1 }`; file 2 then runs as a normal migration. File 3 and later always run as normal
|
|
438
|
+
migrations after the baseline.
|
|
393
439
|
|
|
394
440
|
## 6. Environment variables
|
|
395
441
|
|
|
@@ -421,7 +467,8 @@ The MCP server factory passed to `createMcpRoute` (and to `serveMcpStdio`) and t
|
|
|
421
467
|
`createMcpEndpoint({ createServer })`, a `(ctx, request) => Response` for hosts other than Next, and
|
|
422
468
|
`issueAccessToken`, `listAccessTokens`, `revokeAccessToken`, `verifyAccessToken` and
|
|
423
469
|
`pruneAccessTokens` for scripts. For OAuth: `listOAuthGrants`, `revokeOAuthGrant`,
|
|
424
|
-
`pruneOAuthRecords`, the
|
|
470
|
+
`pruneOAuthRecords`, the registration window (`isClientRegistrationOpen`, `findClientRegistrationWindow`,
|
|
471
|
+
`openClientRegistration`, `closeClientRegistration`), the protocol steps (`registerMcpClient`, `createAuthorizationCode`,
|
|
425
472
|
`exchangeAuthorizationCode`, `refreshMcpGrant`) and the HTTP handlers behind the routes
|
|
426
473
|
(`handleClientRegistration`, `handleTokenRequest`, `handleAuthorizationDecision`,
|
|
427
474
|
`validateAuthorizationRequest`, `serveDiscoveryDocument`) for hosts other than Next.
|
package/dist/index.d.ts
CHANGED
|
@@ -159,6 +159,10 @@ export declare const mcpAccess: import("@softure-ai/core").ModuleFactory<{
|
|
|
159
159
|
resourceOrigins: import("zod").ZodDefault<import("zod").ZodArray<import("zod").ZodPipe<import("zod").ZodString, import("zod").ZodTransform<string, string>>>>;
|
|
160
160
|
oauth: import("zod").ZodPrefault<import("zod").ZodObject<{
|
|
161
161
|
enabled: import("zod").ZodDefault<import("zod").ZodBoolean>;
|
|
162
|
+
registration: import("zod").ZodDefault<import("zod").ZodEnum<{
|
|
163
|
+
open: "open";
|
|
164
|
+
closed: "closed";
|
|
165
|
+
}>>;
|
|
162
166
|
accessTokenLifetimeMinutes: import("zod").ZodDefault<import("zod").ZodInt>;
|
|
163
167
|
refreshTokenLifetimeDays: import("zod").ZodDefault<import("zod").ZodInt>;
|
|
164
168
|
authorizationCodeLifetimeMinutes: import("zod").ZodDefault<import("zod").ZodInt>;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,SAAS,eAAe,CAAC;AAEtC;;;;GAIG;AACH,eAAO,MAAM,sBAAsB;;;;;;IAEjC;;;;OAIG;;;;;;CAE8D,CAAC;AAEpE;;;GAGG;AACH,eAAO,MAAM,SAAS
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,SAAS,eAAe,CAAC;AAEtC;;;;GAIG;AACH,eAAO,MAAM,sBAAsB;;;;;;IAEjC;;;;OAIG;;;;;;CAE8D,CAAC;AAEpE;;;GAGG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kCA4BpB,CAAC;AAEH,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,KAAK,mBAAmB,GACzB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,iBAAiB,EACjB,eAAe,EACf,WAAW,EACX,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACtG,OAAO,EACL,0BAA0B,EAC1B,qBAAqB,EACrB,mBAAmB,EACnB,iBAAiB,EACjB,mCAAmC,EACnC,iCAAiC,EACjC,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,GAC5B,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,KAAK,gBAAgB,EAAE,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AACzF,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,YAAY,EAAE,WAAW,EAAE,KAAK,cAAc,EAAE,KAAK,4BAA4B,EAAE,MAAM,aAAa,CAAC;AACvJ,OAAO,EAAE,oBAAoB,EAAE,KAAK,wBAAwB,EAAE,MAAM,mBAAmB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -30,10 +30,10 @@ export const MCP_RATE_LIMIT_BUCKETS = {
|
|
|
30
30
|
export const mcpAccess = defineModule({
|
|
31
31
|
manifest: {
|
|
32
32
|
id: MODULE_ID,
|
|
33
|
-
version: "0.2.
|
|
34
|
-
dependsOn: { security: "^0.2.0", auth: "^0.2.0" },
|
|
33
|
+
version: "0.2.2",
|
|
34
|
+
dependsOn: { security: "^0.2.0", auth: "^0.2.0", jobs: "^0.1.1?", ops: "^0.2.0?" },
|
|
35
35
|
dbSchema: "mcp",
|
|
36
|
-
tables: ["access_tokens", "oauth_clients", "oauth_authorization_codes", "oauth_grants"],
|
|
36
|
+
tables: ["access_tokens", "oauth_clients", "oauth_authorization_codes", "oauth_grants", "oauth_registration_window"],
|
|
37
37
|
env: [],
|
|
38
38
|
switches: [],
|
|
39
39
|
routes: { ...DEFAULT_MCP_ACCESS_ROUTES },
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iGAAiG;AACjG,kGAAkG;AAClG,kGAAkG;AAClG,mDAAmD;AACnD,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAEtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAElE,MAAM,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC;AAEtC;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,aAAa,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;IACjD;;;;OAIG;IACH,WAAW,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;CACS,CAAC;AAEpE;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC;IACpC,QAAQ,EAAE;QACR,EAAE,EAAE,SAAS;QACb,OAAO,EAAE,OAAO;QAChB,SAAS,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/** Handlers for the worker: `handlers: { ...mcpAccessJobHandlers }`. */
|
|
2
|
+
export declare const mcpAccessJobHandlers: {
|
|
3
|
+
/** Deletes expired access tokens and dead OAuth records (`pruneMcpAccess`). */
|
|
4
|
+
"mcp-access.prune": import("@softure-ai/jobs").JobHandler<Record<string, never>>;
|
|
5
|
+
};
|
|
6
|
+
/** Schedules for `jobs({ schedules: { ...mcpAccessJobSchedules } })`: daily. */
|
|
7
|
+
export declare const mcpAccessJobSchedules: {
|
|
8
|
+
"mcp-access.prune": {
|
|
9
|
+
every: string;
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/jobs/index.ts"],"names":[],"mappings":"AAOA,wEAAwE;AACxE,eAAO,MAAM,oBAAoB;IAC/B,+EAA+E;;CAQ1D,CAAC;AAExB,gFAAgF;AAChF,eAAO,MAAM,qBAAqB;;;;CAEL,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// The jobs adapter of @softure-ai/mcp-access: its daily cleanup as a `@softure-ai/jobs` handler and schedule (an
|
|
2
|
+
// optional peer dependency; only apps that import this entry need it).
|
|
3
|
+
import { ok } from "@softure-ai/core";
|
|
4
|
+
import { defineJobHandler } from "@softure-ai/jobs";
|
|
5
|
+
import { z } from "zod";
|
|
6
|
+
import { pruneMcpAccess } from "../server/prune.js";
|
|
7
|
+
/** Handlers for the worker: `handlers: { ...mcpAccessJobHandlers }`. */
|
|
8
|
+
export const mcpAccessJobHandlers = {
|
|
9
|
+
/** Deletes expired access tokens and dead OAuth records (`pruneMcpAccess`). */
|
|
10
|
+
"mcp-access.prune": defineJobHandler({
|
|
11
|
+
payload: z.object({}),
|
|
12
|
+
run: async (_payload, ctx) => {
|
|
13
|
+
await pruneMcpAccess(ctx);
|
|
14
|
+
return ok();
|
|
15
|
+
},
|
|
16
|
+
}),
|
|
17
|
+
};
|
|
18
|
+
/** Schedules for `jobs({ schedules: { ...mcpAccessJobSchedules } })`: daily. */
|
|
19
|
+
export const mcpAccessJobSchedules = {
|
|
20
|
+
"mcp-access.prune": { every: "1d" },
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/jobs/index.ts"],"names":[],"mappings":"AAAA,iHAAiH;AACjH,uEAAuE;AACvE,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAA4C,MAAM,kBAAkB,CAAC;AAC9F,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,wEAAwE;AACxE,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,+EAA+E;IAC/E,kBAAkB,EAAE,gBAAgB,CAAC;QACnC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;QACrB,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE;YAC3B,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC;YAC1B,OAAO,EAAE,EAAE,CAAC;QACd,CAAC;KACF,CAAC;CACmB,CAAC;AAExB,gFAAgF;AAChF,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,kBAAkB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;CACR,CAAC"}
|
package/dist/options.d.ts
CHANGED
|
@@ -33,6 +33,10 @@ export type McpAppOriginResolver = (request: McpOriginRequest) => string | null;
|
|
|
33
33
|
export declare function isBareOrigin(value: string): boolean;
|
|
34
34
|
declare const oauthSchema: z.ZodObject<{
|
|
35
35
|
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
36
|
+
registration: z.ZodDefault<z.ZodEnum<{
|
|
37
|
+
open: "open";
|
|
38
|
+
closed: "closed";
|
|
39
|
+
}>>;
|
|
36
40
|
accessTokenLifetimeMinutes: z.ZodDefault<z.ZodInt>;
|
|
37
41
|
refreshTokenLifetimeDays: z.ZodDefault<z.ZodInt>;
|
|
38
42
|
authorizationCodeLifetimeMinutes: z.ZodDefault<z.ZodInt>;
|
|
@@ -64,6 +68,10 @@ export declare const mcpAccessOptionsSchema: z.ZodObject<{
|
|
|
64
68
|
resourceOrigins: z.ZodDefault<z.ZodArray<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>>;
|
|
65
69
|
oauth: z.ZodPrefault<z.ZodObject<{
|
|
66
70
|
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
71
|
+
registration: z.ZodDefault<z.ZodEnum<{
|
|
72
|
+
open: "open";
|
|
73
|
+
closed: "closed";
|
|
74
|
+
}>>;
|
|
67
75
|
accessTokenLifetimeMinutes: z.ZodDefault<z.ZodInt>;
|
|
68
76
|
refreshTokenLifetimeDays: z.ZodDefault<z.ZodInt>;
|
|
69
77
|
authorizationCodeLifetimeMinutes: z.ZodDefault<z.ZodInt>;
|
package/dist/options.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAEjE,oGAAoG;AACpG,eAAO,MAAM,mBAAmB,QAA2C,CAAC;AAE5E,gFAAgF;AAChF,eAAO,MAAM,iBAAiB,QAA4B,CAAC;AAE3D,qEAAqE;AACrE,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAExC,sGAAsG;AACtG,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAK9C,QAAA,MAAM,UAAU;;;;;;;;;kBAcd,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,mCAAmC,8TAYtC,CAAC;AAEX,8GAA8G;AAC9G,eAAO,MAAM,iCAAiC,gGAAiG,CAAC;AAEhJ,iGAAiG;AACjG,MAAM,MAAM,oBAAoB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,UAAU,KAAK,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AAEpI,8DAA8D;AAC9D,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,EAAE,gBAAgB,KAAK,MAAM,GAAG,IAAI,CAAC;AAahF,8FAA8F;AAC9F,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAKnD;AAOD,QAAA,MAAM,WAAW
|
|
1
|
+
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAEjE,oGAAoG;AACpG,eAAO,MAAM,mBAAmB,QAA2C,CAAC;AAE5E,gFAAgF;AAChF,eAAO,MAAM,iBAAiB,QAA4B,CAAC;AAE3D,qEAAqE;AACrE,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAExC,sGAAsG;AACtG,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAK9C,QAAA,MAAM,UAAU;;;;;;;;;kBAcd,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,mCAAmC,8TAYtC,CAAC;AAEX,8GAA8G;AAC9G,eAAO,MAAM,iCAAiC,gGAAiG,CAAC;AAEhJ,iGAAiG;AACjG,MAAM,MAAM,oBAAoB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,UAAU,KAAK,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AAEpI,8DAA8D;AAC9D,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,EAAE,gBAAgB,KAAK,MAAM,GAAG,IAAI,CAAC;AAahF,8FAA8F;AAC9F,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAKnD;AAOD,QAAA,MAAM,WAAW;;;;;;;;;;;sFAtBM,UAAU,KAAK,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,YAAhD,UAAU,KAAK,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;oFAAhD,UAAU,KAAK,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,YAAhD,UAAU,KAAK,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;;kBAyDrE,CAAC;AAQH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0FAjEZ,UAAU,KAAK,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,YAAhD,UAAU,KAAK,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;wFAAhD,UAAU,KAAK,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,YAAhD,UAAU,KAAK,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;;;kBAoHnE,CAAC;AAEL,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAC3E,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACvE,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAChE,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,UAAU,CAAC,CAAC;AAC5D,MAAM,MAAM,aAAa,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AACxD,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,WAAW,CAAC,CAAC"}
|
package/dist/options.js
CHANGED
|
@@ -75,6 +75,13 @@ const oauthSchema = z.strictObject({
|
|
|
75
75
|
* dynamic client registration, a consent page and a token endpoint. The app mounts those routes.
|
|
76
76
|
*/
|
|
77
77
|
enabled: z.boolean().default(false),
|
|
78
|
+
/**
|
|
79
|
+
* Dynamic client registration (RFC 7591). `open`: anyone who reaches the route registers a client
|
|
80
|
+
* (a client grants nothing until a person consents). `closed`: the route answers `403
|
|
81
|
+
* access_denied` except while a window opened by the `open-client-registration` ops script lasts,
|
|
82
|
+
* for an app whose owner adds the connector a few times a year.
|
|
83
|
+
*/
|
|
84
|
+
registration: z.enum(["open", "closed"]).default("open"),
|
|
78
85
|
/** How long an access token issued through OAuth works. Clients refresh it themselves. */
|
|
79
86
|
accessTokenLifetimeMinutes: z.int().min(5).max(1440).default(60),
|
|
80
87
|
/** How long a refresh token works, counted from the last refresh: a grant in use never expires. */
|
package/dist/options.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.js","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"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"}
|
package/dist/schema.d.ts
CHANGED
|
@@ -626,6 +626,64 @@ export declare const accessTokens: import("drizzle-orm/pg-core").PgTableWithColu
|
|
|
626
626
|
};
|
|
627
627
|
dialect: "pg";
|
|
628
628
|
}>;
|
|
629
|
+
export declare const oauthRegistrationWindow: import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
630
|
+
name: "oauth_registration_window";
|
|
631
|
+
schema: "mcp";
|
|
632
|
+
columns: {
|
|
633
|
+
id: import("drizzle-orm/pg-core").PgColumn<{
|
|
634
|
+
name: "id";
|
|
635
|
+
tableName: "oauth_registration_window";
|
|
636
|
+
dataType: "number";
|
|
637
|
+
columnType: "PgSmallInt";
|
|
638
|
+
data: number;
|
|
639
|
+
driverParam: string | number;
|
|
640
|
+
notNull: true;
|
|
641
|
+
hasDefault: true;
|
|
642
|
+
isPrimaryKey: true;
|
|
643
|
+
isAutoincrement: false;
|
|
644
|
+
hasRuntimeDefault: false;
|
|
645
|
+
enumValues: undefined;
|
|
646
|
+
baseColumn: never;
|
|
647
|
+
identity: undefined;
|
|
648
|
+
generated: undefined;
|
|
649
|
+
}, {}, {}>;
|
|
650
|
+
openedAt: import("drizzle-orm/pg-core").PgColumn<{
|
|
651
|
+
name: "opened_at";
|
|
652
|
+
tableName: "oauth_registration_window";
|
|
653
|
+
dataType: "date";
|
|
654
|
+
columnType: "PgTimestamp";
|
|
655
|
+
data: Date;
|
|
656
|
+
driverParam: string;
|
|
657
|
+
notNull: true;
|
|
658
|
+
hasDefault: false;
|
|
659
|
+
isPrimaryKey: false;
|
|
660
|
+
isAutoincrement: false;
|
|
661
|
+
hasRuntimeDefault: false;
|
|
662
|
+
enumValues: undefined;
|
|
663
|
+
baseColumn: never;
|
|
664
|
+
identity: undefined;
|
|
665
|
+
generated: undefined;
|
|
666
|
+
}, {}, {}>;
|
|
667
|
+
openUntil: import("drizzle-orm/pg-core").PgColumn<{
|
|
668
|
+
name: "open_until";
|
|
669
|
+
tableName: "oauth_registration_window";
|
|
670
|
+
dataType: "date";
|
|
671
|
+
columnType: "PgTimestamp";
|
|
672
|
+
data: Date;
|
|
673
|
+
driverParam: string;
|
|
674
|
+
notNull: true;
|
|
675
|
+
hasDefault: false;
|
|
676
|
+
isPrimaryKey: false;
|
|
677
|
+
isAutoincrement: false;
|
|
678
|
+
hasRuntimeDefault: false;
|
|
679
|
+
enumValues: undefined;
|
|
680
|
+
baseColumn: never;
|
|
681
|
+
identity: undefined;
|
|
682
|
+
generated: undefined;
|
|
683
|
+
}, {}, {}>;
|
|
684
|
+
};
|
|
685
|
+
dialect: "pg";
|
|
686
|
+
}>;
|
|
629
687
|
export type OAuthClientRow = typeof oauthClients.$inferSelect;
|
|
630
688
|
export type OAuthTokenEndpointAuthMethod = OAuthClientRow["tokenEndpointAuthMethod"];
|
|
631
689
|
//# sourceMappingURL=schema.d.ts.map
|
package/dist/schema.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,SAAS,+CAAkB,CAAC;AAEzC,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQvB,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAelC,CAAC;AAEH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EActB,CAAC;AAEH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYvB,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,OAAO,YAAY,CAAC,YAAY,CAAC;AAC9D,MAAM,MAAM,4BAA4B,GAAG,cAAc,CAAC,yBAAyB,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,SAAS,+CAAkB,CAAC;AAEzC,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQvB,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAelC,CAAC;AAEH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EActB,CAAC;AAEH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYvB,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAIlC,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,OAAO,YAAY,CAAC,YAAY,CAAC;AAC9D,MAAM,MAAM,4BAA4B,GAAG,cAAc,CAAC,yBAAyB,CAAC,CAAC"}
|
package/dist/schema.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
// Drizzle view of the module's tables (migrations/0001_create_access_tokens.sql
|
|
2
|
-
// 0002_create_oauth_grants.sql). The migrations are the
|
|
3
|
-
// queries.
|
|
1
|
+
// Drizzle view of the module's tables (migrations/0001_create_access_tokens.sql,
|
|
2
|
+
// 0002_create_oauth_grants.sql and 0003_create_oauth_registration_window.sql). The migrations are the
|
|
3
|
+
// source of truth; this file only types the queries.
|
|
4
4
|
import { users } from "@softure-ai/auth";
|
|
5
|
-
import { boolean, jsonb, pgSchema, text, timestamp, uuid } from "drizzle-orm/pg-core";
|
|
5
|
+
import { boolean, jsonb, pgSchema, smallint, text, timestamp, uuid } from "drizzle-orm/pg-core";
|
|
6
6
|
export const mcpSchema = pgSchema("mcp");
|
|
7
7
|
export const oauthClients = mcpSchema.table("oauth_clients", {
|
|
8
8
|
id: uuid("id").primaryKey().defaultRandom(),
|
|
@@ -57,4 +57,9 @@ export const accessTokens = mcpSchema.table("access_tokens", {
|
|
|
57
57
|
lastUsedAt: timestamp("last_used_at", { withTimezone: true }),
|
|
58
58
|
grantId: uuid("grant_id").references(() => oauthGrants.id, { onDelete: "cascade" }),
|
|
59
59
|
});
|
|
60
|
+
export const oauthRegistrationWindow = mcpSchema.table("oauth_registration_window", {
|
|
61
|
+
id: smallint("id").primaryKey().default(1),
|
|
62
|
+
openedAt: timestamp("opened_at", { withTimezone: true }).notNull(),
|
|
63
|
+
openUntil: timestamp("open_until", { withTimezone: true }).notNull(),
|
|
64
|
+
});
|
|
60
65
|
//# sourceMappingURL=schema.js.map
|
package/dist/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scripts/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,mCAAmC,EACnC,kCAAkC,EAClC,KAAK,iCAAiC,EACtC,KAAK,gCAAgC,EACrC,KAAK,yBAAyB,GAC/B,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
// `@softure-ai/mcp-access/scripts`: ops scripts that open and close OAuth dynamic client
|
|
2
|
+
// registration while `oauth.registration` is "closed" (see the README, "Closed registration").
|
|
3
|
+
export { createCloseClientRegistrationScript, createOpenClientRegistrationScript, } from "./registration-scripts.js";
|
|
4
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/scripts/index.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,+FAA+F;AAC/F,OAAO,EACL,mCAAmC,EACnC,kCAAkC,GAInC,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type Clock, type SoftureConfig } from "@softure-ai/core";
|
|
2
|
+
import { type OpsScript } from "@softure-ai/ops/scripts";
|
|
3
|
+
export interface OpenClientRegistrationScriptArgs {
|
|
4
|
+
readonly minutes: number;
|
|
5
|
+
}
|
|
6
|
+
export type CloseClientRegistrationScriptArgs = Readonly<Record<string, never>>;
|
|
7
|
+
export interface RegistrationScriptOptions {
|
|
8
|
+
/** The time the window opens at; the system clock by default. */
|
|
9
|
+
readonly clock?: Clock;
|
|
10
|
+
}
|
|
11
|
+
/** `open-client-registration --minutes=N`: opens dynamic client registration for N minutes (at most a day). */
|
|
12
|
+
export declare function createOpenClientRegistrationScript(config: SoftureConfig, options?: RegistrationScriptOptions): OpsScript<OpenClientRegistrationScriptArgs>;
|
|
13
|
+
/** `close-client-registration`: closes dynamic client registration before its window ends. */
|
|
14
|
+
export declare function createCloseClientRegistrationScript(config: SoftureConfig, options?: RegistrationScriptOptions): OpsScript<CloseClientRegistrationScriptArgs>;
|
|
15
|
+
//# sourceMappingURL=registration-scripts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registration-scripts.d.ts","sourceRoot":"","sources":["../../src/scripts/registration-scripts.ts"],"names":[],"mappings":"AAIA,OAAO,EAAmB,KAAK,KAAK,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEnF,OAAO,EAAqD,KAAK,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAW5G,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,iCAAiC,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AAEhF,MAAM,WAAW,yBAAyB;IACxC,iEAAiE;IACjE,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;CACxB;AA4BD,+GAA+G;AAC/G,wBAAgB,kCAAkC,CAChD,MAAM,EAAE,aAAa,EACrB,OAAO,GAAE,yBAA8B,GACtC,SAAS,CAAC,gCAAgC,CAAC,CAgB7C;AAED,8FAA8F;AAC9F,wBAAgB,mCAAmC,CACjD,MAAM,EAAE,aAAa,EACrB,OAAO,GAAE,yBAA8B,GACtC,SAAS,CAAC,iCAAiC,CAAC,CAiB9C"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
// The operator's way to open dynamic client registration for the minutes in which the owner adds
|
|
2
|
+
// the connector in an assistant, while `oauth.registration` is "closed" (#520): safe ops scripts
|
|
3
|
+
// (`@softure-ai/ops/scripts`), dry run by default, `--commit` writes. Reports carry only the end of
|
|
4
|
+
// the window.
|
|
5
|
+
import { ok, systemClock } from "@softure-ai/core";
|
|
6
|
+
import { defineOpsScript, refuseOpsScript } from "@softure-ai/ops/scripts";
|
|
7
|
+
import { z } from "zod";
|
|
8
|
+
import { getMcpAccessOptions } from "../server/options.js";
|
|
9
|
+
import { closeClientRegistration, findClientRegistrationWindow, MAX_REGISTRATION_WINDOW_MINUTES, openClientRegistration, } from "../server/registration-window.js";
|
|
10
|
+
const WHOLE_NUMBER = /^\d+$/;
|
|
11
|
+
const MINUTES_MESSAGE = `--minutes must be a whole number from 1 to ${String(MAX_REGISTRATION_WINDOW_MINUTES)}`;
|
|
12
|
+
const openArgs = z.strictObject({
|
|
13
|
+
minutes: z
|
|
14
|
+
.string({ error: MINUTES_MESSAGE })
|
|
15
|
+
.regex(WHOLE_NUMBER, MINUTES_MESSAGE)
|
|
16
|
+
.transform(Number)
|
|
17
|
+
.pipe(z.number().int().min(1, MINUTES_MESSAGE).max(MAX_REGISTRATION_WINDOW_MINUTES, MINUTES_MESSAGE)),
|
|
18
|
+
});
|
|
19
|
+
const closeArgs = z.strictObject({});
|
|
20
|
+
/** The refusal while the config gives the window nothing to do, or null when it does. */
|
|
21
|
+
function refuseWithoutClosedRegistration(config) {
|
|
22
|
+
const { oauth } = getMcpAccessOptions(config);
|
|
23
|
+
if (!oauth.enabled)
|
|
24
|
+
return refuseOpsScript("oauth.enabled is off: the OAuth routes answer 404");
|
|
25
|
+
if (oauth.registration === "open")
|
|
26
|
+
return refuseOpsScript('oauth.registration is "open": registration needs no window');
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
async function describeWindow(ctx) {
|
|
30
|
+
const window = await findClientRegistrationWindow(ctx);
|
|
31
|
+
return { openUntil: window === null ? null : window.openUntil.toISOString() };
|
|
32
|
+
}
|
|
33
|
+
/** `open-client-registration --minutes=N`: opens dynamic client registration for N minutes (at most a day). */
|
|
34
|
+
export function createOpenClientRegistrationScript(config, options = {}) {
|
|
35
|
+
const clock = options.clock ?? systemClock;
|
|
36
|
+
return defineOpsScript({
|
|
37
|
+
name: "open-client-registration",
|
|
38
|
+
description: "Opens OAuth dynamic client registration for the given minutes, replacing any open window.",
|
|
39
|
+
usage: [`--minutes=<1 to ${String(MAX_REGISTRATION_WINDOW_MINUTES)}, how long registration stays open>`],
|
|
40
|
+
args: openArgs,
|
|
41
|
+
run: async (tx, args) => {
|
|
42
|
+
const refusal = refuseWithoutClosedRegistration(config);
|
|
43
|
+
if (refusal !== null)
|
|
44
|
+
return refusal;
|
|
45
|
+
const ctx = { db: tx, clock, config };
|
|
46
|
+
const before = await describeWindow(ctx);
|
|
47
|
+
await openClientRegistration(ctx, { minutes: args.minutes });
|
|
48
|
+
return ok({ before, after: await describeWindow(ctx) });
|
|
49
|
+
},
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
/** `close-client-registration`: closes dynamic client registration before its window ends. */
|
|
53
|
+
export function createCloseClientRegistrationScript(config, options = {}) {
|
|
54
|
+
const clock = options.clock ?? systemClock;
|
|
55
|
+
return defineOpsScript({
|
|
56
|
+
name: "close-client-registration",
|
|
57
|
+
description: "Closes OAuth dynamic client registration before its open window ends.",
|
|
58
|
+
usage: [],
|
|
59
|
+
args: closeArgs,
|
|
60
|
+
run: async (tx) => {
|
|
61
|
+
const refusal = refuseWithoutClosedRegistration(config);
|
|
62
|
+
if (refusal !== null)
|
|
63
|
+
return refusal;
|
|
64
|
+
const ctx = { db: tx, clock, config };
|
|
65
|
+
const before = await describeWindow(ctx);
|
|
66
|
+
if (before.openUntil === null)
|
|
67
|
+
return refuseOpsScript("client registration has no open window");
|
|
68
|
+
await closeClientRegistration(ctx);
|
|
69
|
+
return ok({ before, after: await describeWindow(ctx) });
|
|
70
|
+
},
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=registration-scripts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registration-scripts.js","sourceRoot":"","sources":["../../src/scripts/registration-scripts.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../src/server/health.ts"],"names":[],"mappings":"AAGA,OAAO,EAAM,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAIxD,eAAO,MAAM,sBAAsB,EAAE,
|
|
1
|
+
{"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../src/server/health.ts"],"names":[],"mappings":"AAGA,OAAO,EAAM,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAIxD,eAAO,MAAM,sBAAsB,EAAE,WAOpC,CAAC"}
|
package/dist/server/health.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// The module's readiness probe for `GET /api/health` of `@softure-ai/ops`: the tokens table (with
|
|
2
|
-
// its grant column)
|
|
3
|
-
// It reads no rows.
|
|
2
|
+
// its grant column), the grants table and the registration window exist and answer, i.e.
|
|
3
|
+
// `softure migrate` ran every file. It reads no rows.
|
|
4
4
|
import { ok } from "@softure-ai/core";
|
|
5
5
|
import { sql } from "drizzle-orm";
|
|
6
6
|
export const checkAccessTokensTable = async (context) => {
|
|
@@ -8,6 +8,7 @@ export const checkAccessTokensTable = async (context) => {
|
|
|
8
8
|
const db = context.db;
|
|
9
9
|
await db.execute(sql `select grant_id from mcp.access_tokens limit 0`);
|
|
10
10
|
await db.execute(sql `select 1 from mcp.oauth_grants join mcp.oauth_clients on oauth_clients.id = oauth_grants.client_id limit 0`);
|
|
11
|
+
await db.execute(sql `select open_until from mcp.oauth_registration_window limit 0`);
|
|
11
12
|
return ok();
|
|
12
13
|
};
|
|
13
14
|
//# sourceMappingURL=health.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"health.js","sourceRoot":"","sources":["../../src/server/health.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAClG,
|
|
1
|
+
{"version":3,"file":"health.js","sourceRoot":"","sources":["../../src/server/health.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAClG,yFAAyF;AACzF,sDAAsD;AACtD,OAAO,EAAE,EAAE,EAAoB,MAAM,kBAAkB,CAAC;AAExD,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAElC,MAAM,CAAC,MAAM,sBAAsB,GAAgB,KAAK,EAAE,OAAO,EAAE,EAAE;IACnE,iFAAiF;IACjF,MAAM,EAAE,GAAG,OAAO,CAAC,EAAe,CAAC;IACnC,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA,gDAAgD,CAAC,CAAC;IACtE,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA,4GAA4G,CAAC,CAAC;IAClI,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA,8DAA8D,CAAC,CAAC;IACpF,OAAO,EAAE,EAAE,CAAC;AACd,CAAC,CAAC"}
|
package/dist/server/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ export { createMcpEndpoint, MAX_MCP_REQUEST_BYTES, MCP_RATE_LIMIT_BUCKET, MCP_RE
|
|
|
2
2
|
export { actionTool, toFormData, type ActionToolOptions, type FormActionHandler } from "./action-tool.js";
|
|
3
3
|
export { createMcpAccessContext } from "./context.js";
|
|
4
4
|
export { checkAccessTokensTable } from "./health.js";
|
|
5
|
+
export { closeClientRegistration, findClientRegistrationWindow, isClientRegistrationOpen, MAX_REGISTRATION_WINDOW_MINUTES, openClientRegistration, type ClientRegistrationWindow, type OpenClientRegistrationInput, } from "./registration-window.js";
|
|
5
6
|
export { CONSENT_CODE_PREFIX, CLIENT_SECRET_PREFIX, createAuthorizationCode, exchangeAuthorizationCode, findOAuthClient, isClientSecretValid, listOAuthGrants, pruneOAuthRecords, REFRESH_TOKEN_PREFIX, refreshMcpGrant, registerMcpClient, revokeOAuthGrant, type CreateAuthorizationCodeInput, type ExchangeAuthorizationCodeInput, type IssuedOAuthTokens, type OAuthClientRegistration, type PrunedOAuthRecords, type RefreshOAuthGrantInput, type RegisteredOAuthClient, type RevokeOAuthGrantInput, } from "./oauth.js";
|
|
6
7
|
export { answerOAuthPreflight, AUTHORIZATION_PARAMS, AUTHORIZATION_SERVER_METADATA_PATH, buildClientRedirect, getAuthorizationServerMetadata, getConsentPath, getOAuthIssuer, getProtectedResourceMetadata, getProtectedResourceMetadataUrl, getRootProtectedResourceMetadata, handleAuthorizationDecision, handleClientRegistration, handleTokenRequest, isAcceptableResource, isOAuthEnabled, isWriteScopeRequested, MCP_OAUTH_RATE_LIMIT_BUCKET, OAUTH_SCOPES, PROTECTED_RESOURCE_METADATA_PATH, readAuthorizationParams, serveDiscoveryDocument, validateAuthorizationRequest, type AuthorizationOutcome, type AuthorizationPageError, type AuthorizationRequest, type DiscoveryDocument, } from "./oauth-http.js";
|
|
7
8
|
export { findServedResourceOrigin, readRequestHost, readRequestOrigin, type McpOriginRequest, type McpOrigins } from "../origins.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,cAAc,EACd,eAAe,EACf,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,GACtB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1G,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,uBAAuB,EACvB,yBAAyB,EACzB,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,KAAK,4BAA4B,EACjC,KAAK,8BAA8B,EACnC,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,GAC3B,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,kCAAkC,EAClC,mBAAmB,EACnB,8BAA8B,EAC9B,cAAc,EACd,cAAc,EACd,4BAA4B,EAC5B,+BAA+B,EAC/B,gCAAgC,EAChC,2BAA2B,EAC3B,wBAAwB,EACxB,kBAAkB,EAClB,oBAAoB,EACpB,cAAc,EACd,qBAAqB,EACrB,2BAA2B,EAC3B,YAAY,EACZ,gCAAgC,EAChC,uBAAuB,EACvB,sBAAsB,EACtB,4BAA4B,EAC5B,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,GACvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,wBAAwB,EAAE,eAAe,EAAE,iBAAiB,EAAE,KAAK,gBAAgB,EAAE,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AACrI,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,YAAY,EAAE,cAAc,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAC;AACjF,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,KAAK,wBAAwB,EAAE,KAAK,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1L,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACrG,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AACtI,OAAO,EAAE,cAAc,EAAE,KAAK,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACzE,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,2BAA2B,EAC3B,KAAK,iBAAiB,GACvB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,GACzB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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"}
|
package/dist/server/index.js
CHANGED
|
@@ -4,6 +4,7 @@ export { createMcpEndpoint, MAX_MCP_REQUEST_BYTES, MCP_RATE_LIMIT_BUCKET, MCP_RE
|
|
|
4
4
|
export { actionTool, toFormData } from "./action-tool.js";
|
|
5
5
|
export { createMcpAccessContext } from "./context.js";
|
|
6
6
|
export { checkAccessTokensTable } from "./health.js";
|
|
7
|
+
export { closeClientRegistration, findClientRegistrationWindow, isClientRegistrationOpen, MAX_REGISTRATION_WINDOW_MINUTES, openClientRegistration, } from "./registration-window.js";
|
|
7
8
|
export { CONSENT_CODE_PREFIX, CLIENT_SECRET_PREFIX, createAuthorizationCode, exchangeAuthorizationCode, findOAuthClient, isClientSecretValid, listOAuthGrants, pruneOAuthRecords, REFRESH_TOKEN_PREFIX, refreshMcpGrant, registerMcpClient, revokeOAuthGrant, } from "./oauth.js";
|
|
8
9
|
export { answerOAuthPreflight, AUTHORIZATION_PARAMS, AUTHORIZATION_SERVER_METADATA_PATH, buildClientRedirect, getAuthorizationServerMetadata, getConsentPath, getOAuthIssuer, getProtectedResourceMetadata, getProtectedResourceMetadataUrl, getRootProtectedResourceMetadata, handleAuthorizationDecision, handleClientRegistration, handleTokenRequest, isAcceptableResource, isOAuthEnabled, isWriteScopeRequested, MCP_OAUTH_RATE_LIMIT_BUCKET, OAUTH_SCOPES, PROTECTED_RESOURCE_METADATA_PATH, readAuthorizationParams, serveDiscoveryDocument, validateAuthorizationRequest, } from "./oauth-http.js";
|
|
9
10
|
export { findServedResourceOrigin, readRequestHost, readRequestOrigin } from "../origins.js";
|