@q32/core 0.1.20 → 0.1.22
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 +10 -2
- package/dist/auth.d.ts +98 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +230 -0
- package/dist/auth.js.map +1 -0
- package/dist/hono.d.ts +22 -0
- package/dist/hono.d.ts.map +1 -0
- package/dist/hono.js +26 -0
- package/dist/hono.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/jobs.d.ts +394 -6
- package/dist/jobs.d.ts.map +1 -1
- package/dist/jobs.js +1134 -62
- package/dist/jobs.js.map +1 -1
- package/dist/react-router.d.ts +14 -0
- package/dist/react-router.d.ts.map +1 -0
- package/dist/react-router.js +30 -0
- package/dist/react-router.js.map +1 -0
- package/docs/evaluation.md +5 -4
- package/docs/jobs.md +49 -0
- package/package.json +13 -1
- package/src/auth.ts +338 -0
- package/src/hono.ts +54 -0
- package/src/index.ts +3 -0
- package/src/jobs.ts +1665 -71
- package/src/react-router.ts +53 -0
package/dist/jobs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jobs.js","sourceRoot":"","sources":["../src/jobs.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"jobs.js","sourceRoot":"","sources":["../src/jobs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { AuthSystem, McpAuthService, McpAuthorizationParams } from "./auth.js";
|
|
2
|
+
import type { OAuthClientInformation } from "./oauth.js";
|
|
3
|
+
export type ReactRouterRequestArgs = {
|
|
4
|
+
request: Request;
|
|
5
|
+
params?: Record<string, string | undefined>;
|
|
6
|
+
context?: unknown;
|
|
7
|
+
};
|
|
8
|
+
export declare function reactRouterAuthContext<TPrincipal, TSession>(auth: AuthSystem<TPrincipal, TSession>, args: ReactRouterRequestArgs): Promise<import("./auth.js").AuthContext<TPrincipal, TSession>>;
|
|
9
|
+
export declare function reactRouterRequirePrincipal<TPrincipal, TSession>(auth: AuthSystem<TPrincipal, TSession>, args: ReactRouterRequestArgs): Promise<TPrincipal>;
|
|
10
|
+
export declare function reactRouterJson(value: unknown, init?: ResponseInit): Response;
|
|
11
|
+
export declare function reactRouterRedirect(location: string, status?: number): Response;
|
|
12
|
+
export declare function reactRouterError(error: unknown): Response;
|
|
13
|
+
export declare function reactRouterMcpAuthorize<TPrincipal, TSubject extends Record<string, string>>(args: ReactRouterRequestArgs, service: McpAuthService<TPrincipal, TSubject>, client: OAuthClientInformation, params: McpAuthorizationParams): Promise<Response>;
|
|
14
|
+
//# sourceMappingURL=react-router.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react-router.d.ts","sourceRoot":"","sources":["../src/react-router.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAEpF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEzD,MAAM,MAAM,sBAAsB,GAAG;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAC5C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,wBAAsB,sBAAsB,CAAC,UAAU,EAAE,QAAQ,EAC/D,IAAI,EAAE,UAAU,CAAC,UAAU,EAAE,QAAQ,CAAC,EACtC,IAAI,EAAE,sBAAsB,kEAG7B;AAED,wBAAsB,2BAA2B,CAAC,UAAU,EAAE,QAAQ,EACpE,IAAI,EAAE,UAAU,CAAC,UAAU,EAAE,QAAQ,CAAC,EACtC,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,UAAU,CAAC,CAErB;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,GAAE,YAAiB,GAAG,QAAQ,CAEjF;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAM,GAAG,QAAQ,CAK5E;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,CAOzD;AAED,wBAAsB,uBAAuB,CAAC,UAAU,EAAE,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/F,IAAI,EAAE,sBAAsB,EAC5B,OAAO,EAAE,cAAc,CAAC,UAAU,EAAE,QAAQ,CAAC,EAC7C,MAAM,EAAE,sBAAsB,EAC9B,MAAM,EAAE,sBAAsB,GAC7B,OAAO,CAAC,QAAQ,CAAC,CAGnB"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { HttpError, jsonResponse } from "./http.js";
|
|
2
|
+
export async function reactRouterAuthContext(auth, args) {
|
|
3
|
+
return auth.contextFromRequest(args.request);
|
|
4
|
+
}
|
|
5
|
+
export async function reactRouterRequirePrincipal(auth, args) {
|
|
6
|
+
return auth.requirePrincipal(args.request);
|
|
7
|
+
}
|
|
8
|
+
export function reactRouterJson(value, init = {}) {
|
|
9
|
+
return jsonResponse(value, init);
|
|
10
|
+
}
|
|
11
|
+
export function reactRouterRedirect(location, status = 302) {
|
|
12
|
+
return new Response(null, {
|
|
13
|
+
status,
|
|
14
|
+
headers: { location },
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
export function reactRouterError(error) {
|
|
18
|
+
if (error instanceof Response)
|
|
19
|
+
return error;
|
|
20
|
+
if (error instanceof HttpError) {
|
|
21
|
+
return jsonResponse({ error: { code: error.code, message: error.message } }, { status: error.status });
|
|
22
|
+
}
|
|
23
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
24
|
+
return jsonResponse({ error: { code: "internal_error", message } }, { status: 500 });
|
|
25
|
+
}
|
|
26
|
+
export async function reactRouterMcpAuthorize(args, service, client, params) {
|
|
27
|
+
const result = await service.authorize(client, params, args.request);
|
|
28
|
+
return reactRouterRedirect(result.kind === "redirect" ? result.location : result.redirect, result.kind === "redirect" ? (result.status ?? 302) : 302);
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=react-router.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react-router.js","sourceRoot":"","sources":["../src/react-router.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AASpD,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,IAAsC,EACtC,IAA4B;IAE5B,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,IAAsC,EACtC,IAA4B;IAE5B,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAc,EAAE,OAAqB,EAAE;IACrE,OAAO,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,QAAgB,EAAE,MAAM,GAAG,GAAG;IAChE,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE;QACxB,MAAM;QACN,OAAO,EAAE,EAAE,QAAQ,EAAE;KACtB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,IAAI,KAAK,YAAY,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,KAAK,YAAY,SAAS,EAAE,CAAC;QAC/B,OAAO,YAAY,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACzG,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,OAAO,YAAY,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;AACvF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,IAA4B,EAC5B,OAA6C,EAC7C,MAA8B,EAC9B,MAA8B;IAE9B,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACrE,OAAO,mBAAmB,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACxJ,CAAC"}
|
package/docs/evaluation.md
CHANGED
|
@@ -12,6 +12,7 @@ This package was seeded from repeated infrastructure found across Erik/Q32 TypeS
|
|
|
12
12
|
| JSON responses, bearer/admin token checks, request body parsing | `http` | Replace repeated Worker/Hono-adjacent HTTP utility functions. |
|
|
13
13
|
| Prefixed IDs, random tokens, base64url, SHA-256 | `ids` | Replace local `createId`, token, digest-key, and hash helpers. |
|
|
14
14
|
| Signed session tokens and cookies | `session` | Replace small HMAC session implementations where full auth frameworks are unnecessary. |
|
|
15
|
+
| Auth/session/MCP authorization policy | `auth` | Keep principal lookup, session verification, admin checks, OAuth authorization-code exchange, token verification, and refresh rotation independent of Hono, React Router, or any single app. |
|
|
15
16
|
| Credential or provider-secret encryption | `crypto` | Replace local AES-GCM JSON encryption helpers backed by WebCrypto. |
|
|
16
17
|
| D1-like database typing and explicit migrations | `d1` | Replace duplicated `D1DatabaseLike` types and simple migration runners. |
|
|
17
18
|
| Postgres migration and JSON helpers | `pg` | Replace small pg migration scripts while still using official `pg` or `postgres` clients in apps. |
|
|
@@ -23,8 +24,9 @@ This package was seeded from repeated infrastructure found across Erik/Q32 TypeS
|
|
|
23
24
|
| Email provider boundary | `email` | Standardize provider-independent send input/result shapes and address helpers. |
|
|
24
25
|
| Billing plan/status checks | `billing` | Replace local plan rank and active subscription status helpers around Stripe-backed apps. |
|
|
25
26
|
| Worker test helpers | `testing` | Replace small fake Queue/R2 helpers and JSON response assertions in unit tests; complements workerd/Miniflare integration tests. |
|
|
26
|
-
| OAuth/MCP metadata | `oauth`, `mcp` | Replace repeated discovery metadata
|
|
27
|
+
| OAuth/MCP metadata and storage | `oauth`, `mcp` | Replace repeated discovery metadata, API-to-tool descriptors, and configurable D1 OAuth client/code/token repositories. |
|
|
27
28
|
| API operation registries | `api` | Replace local operation registries used for OpenAPI, admin APIs, and MCP exposure. |
|
|
29
|
+
| Framework request adapters | `hono`, `react-router` | Translate Hono middleware and React Router loader/action requests into the same framework-neutral auth/API services. |
|
|
28
30
|
|
|
29
31
|
## Current Fit
|
|
30
32
|
|
|
@@ -37,14 +39,13 @@ Strong first replacement candidates:
|
|
|
37
39
|
- D1 jobs in `travelerideas`, `bizsnipe`, `logtura`, and smaller domain apps.
|
|
38
40
|
- signed session, ID, token, and base64url helpers in `zura`, `relin`, `getflight`, and `adgiro`.
|
|
39
41
|
- API operation metadata from `bce.email` and `relin`.
|
|
40
|
-
- OAuth/MCP metadata from `getflight`, `captcha`, `ipogrid`, `relin`, and `bce.email`.
|
|
42
|
+
- OAuth/MCP metadata and auth/token flow from `getflight`, `captcha`, `ipogrid`, `relin`, and `bce.email`.
|
|
41
43
|
|
|
42
44
|
## Not Yet Complete
|
|
43
45
|
|
|
44
46
|
The package intentionally does not yet replace:
|
|
45
47
|
|
|
46
|
-
-
|
|
47
|
-
- full OAuth authorization-code and refresh-token stores
|
|
48
|
+
- complete app-specific login/account repositories
|
|
48
49
|
- Stripe billing repositories
|
|
49
50
|
- Postgres job runners and migration orchestration
|
|
50
51
|
- email provider clients
|
package/docs/jobs.md
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Q32 Jobs
|
|
2
|
+
|
|
3
|
+
`@q32/core/jobs` has two layers so projects can adopt common job behavior without all moving at the same speed.
|
|
4
|
+
|
|
5
|
+
## Durable Jobs
|
|
6
|
+
|
|
7
|
+
Use `D1JobStore` with `DurableJobDispatcher` when jobs need operator visibility, retries, stop requests, child jobs, and rollups. The store uses the shared `jobs` table shape and supports:
|
|
8
|
+
|
|
9
|
+
- statuses: `queued`, `running`, `succeeded`, `failed`, `stopping`, `stopped`
|
|
10
|
+
- `parent_job_id` child trees with `summarizeChildren`
|
|
11
|
+
- `lock_key` plus `enqueuePolicy: "dedupe_active"` for active-job dedupe
|
|
12
|
+
- `concurrency_key` plus `concurrency_limit` for per-tenant or per-resource throttles
|
|
13
|
+
- handler result types for done, requeue, and stopped
|
|
14
|
+
- error capture in `last_error` plus retry requeue when attempts remain
|
|
15
|
+
- optional stale-running reclamation with `staleRunningAfterSeconds`
|
|
16
|
+
- event sink hooks for `ops_events`
|
|
17
|
+
|
|
18
|
+
The intended Worker queue pattern is:
|
|
19
|
+
|
|
20
|
+
1. HTTP, cron, or another job calls `jobs.enqueue(...)`.
|
|
21
|
+
2. A Cloudflare Queue message carries `{ jobId }`.
|
|
22
|
+
3. The queue consumer calls `dispatcher.run(jobId)`.
|
|
23
|
+
4. The dispatcher claims, runs, catches errors, records retry or failure state, and emits lifecycle events.
|
|
24
|
+
|
|
25
|
+
Parent orchestration should use `runParentJobOrchestration`. It queues children once, polls by requeueing the parent, rolls child statuses up, fails fast by default, and can fail or stop queued siblings when a child fails.
|
|
26
|
+
|
|
27
|
+
## Pipeline Jobs
|
|
28
|
+
|
|
29
|
+
Use `PipelineManager` when the project already passes all state in queue messages, as in IPOGrid and DirtSignal ingestion. This avoids an immediate migration to durable jobs while still removing duplicated step advancement logic.
|
|
30
|
+
|
|
31
|
+
`PipelineManager` provides:
|
|
32
|
+
|
|
33
|
+
- ordered named steps
|
|
34
|
+
- handler-directed state updates
|
|
35
|
+
- explicit jumps and same-step continuations
|
|
36
|
+
- optional delayed next-step enqueue
|
|
37
|
+
- generated continuation ids
|
|
38
|
+
- standard completion output
|
|
39
|
+
|
|
40
|
+
## Queue Publisher
|
|
41
|
+
|
|
42
|
+
Use `createJobPublisher` around Cloudflare Queue bindings. It gives tests and local scripts the same `.put(message, { delaySeconds })` interface as production and supports inline execution for integration tests.
|
|
43
|
+
|
|
44
|
+
## Adoption Map
|
|
45
|
+
|
|
46
|
+
- Adgiro should move its job driver, job registry, parent orchestration, stop handling, and queue runner onto the durable layer.
|
|
47
|
+
- DirtSignal should first replace its local pipeline manager and queue publisher with the pipeline layer, then wire its ingestion job driver to the dispatcher event sink pattern.
|
|
48
|
+
- IPOGrid should first replace its local pipeline manager and queue publishers. A later durable migration can persist selected long-running ingestion and AI jobs without changing handler shape.
|
|
49
|
+
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@q32/core",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.22",
|
|
4
4
|
"description": "Shared TypeScript primitives for Q32 Cloudflare Worker projects.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -28,6 +28,10 @@
|
|
|
28
28
|
"types": "./dist/ai.d.ts",
|
|
29
29
|
"default": "./dist/ai.js"
|
|
30
30
|
},
|
|
31
|
+
"./auth": {
|
|
32
|
+
"types": "./dist/auth.d.ts",
|
|
33
|
+
"default": "./dist/auth.js"
|
|
34
|
+
},
|
|
31
35
|
"./billing": {
|
|
32
36
|
"types": "./dist/billing.d.ts",
|
|
33
37
|
"default": "./dist/billing.js"
|
|
@@ -60,6 +64,10 @@
|
|
|
60
64
|
"types": "./dist/hash.d.ts",
|
|
61
65
|
"default": "./dist/hash.js"
|
|
62
66
|
},
|
|
67
|
+
"./hono": {
|
|
68
|
+
"types": "./dist/hono.d.ts",
|
|
69
|
+
"default": "./dist/hono.js"
|
|
70
|
+
},
|
|
63
71
|
"./http": {
|
|
64
72
|
"types": "./dist/http.d.ts",
|
|
65
73
|
"default": "./dist/http.js"
|
|
@@ -100,6 +108,10 @@
|
|
|
100
108
|
"types": "./dist/rate-limit.d.ts",
|
|
101
109
|
"default": "./dist/rate-limit.js"
|
|
102
110
|
},
|
|
111
|
+
"./react-router": {
|
|
112
|
+
"types": "./dist/react-router.d.ts",
|
|
113
|
+
"default": "./dist/react-router.js"
|
|
114
|
+
},
|
|
103
115
|
"./seo": {
|
|
104
116
|
"types": "./dist/seo.d.ts",
|
|
105
117
|
"default": "./dist/seo.js"
|
package/src/auth.ts
ADDED
|
@@ -0,0 +1,338 @@
|
|
|
1
|
+
import { HttpError, requireAdminToken } from "./http.js";
|
|
2
|
+
import {
|
|
3
|
+
createOAuthRedirect,
|
|
4
|
+
decryptOAuthTokenResponse,
|
|
5
|
+
encryptOAuthTokenResponse,
|
|
6
|
+
issueMcpOAuthTokenSet,
|
|
7
|
+
type McpOAuthRepository,
|
|
8
|
+
type McpTokenRow,
|
|
9
|
+
type OAuthClientInformation,
|
|
10
|
+
type OAuthClientRegistration,
|
|
11
|
+
type OAuthTokens,
|
|
12
|
+
parseOAuthJsonArray,
|
|
13
|
+
} from "./oauth.js";
|
|
14
|
+
import { verifySession } from "./session.js";
|
|
15
|
+
|
|
16
|
+
export type CookieOptions = {
|
|
17
|
+
name: string;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export type SessionAuthOptions<TSession> = {
|
|
21
|
+
secret: string;
|
|
22
|
+
cookie: CookieOptions;
|
|
23
|
+
verify?: (payload: TSession) => Promise<TSession | null> | TSession | null;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
export type AuthContext<TPrincipal = unknown, TSession = unknown> = {
|
|
27
|
+
request: Request;
|
|
28
|
+
session: TSession | null;
|
|
29
|
+
principal: TPrincipal | null;
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
export type AuthSystemOptions<TPrincipal, TSession> = {
|
|
33
|
+
session?: SessionAuthOptions<TSession>;
|
|
34
|
+
loadPrincipal?: (session: TSession, request: Request) => Promise<TPrincipal | null> | TPrincipal | null;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
export class AuthSystem<TPrincipal = unknown, TSession = unknown> {
|
|
38
|
+
constructor(private readonly options: AuthSystemOptions<TPrincipal, TSession>) {}
|
|
39
|
+
|
|
40
|
+
async sessionFromRequest(request: Request): Promise<TSession | null> {
|
|
41
|
+
const config = this.options.session;
|
|
42
|
+
if (!config) return null;
|
|
43
|
+
const token = getCookie(request, config.cookie.name);
|
|
44
|
+
const payload = await verifySession<TSession>(token, config.secret);
|
|
45
|
+
if (!payload) return null;
|
|
46
|
+
return config.verify ? await config.verify(payload) : payload;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
async contextFromRequest(request: Request): Promise<AuthContext<TPrincipal, TSession>> {
|
|
50
|
+
const session = await this.sessionFromRequest(request);
|
|
51
|
+
const principal = session && this.options.loadPrincipal ? await this.options.loadPrincipal(session, request) : null;
|
|
52
|
+
return { request, session, principal };
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
async requirePrincipal(request: Request): Promise<TPrincipal> {
|
|
56
|
+
const context = await this.contextFromRequest(request);
|
|
57
|
+
if (!context.principal) throw new HttpError(401, "Authentication required.", "authentication_required");
|
|
58
|
+
return context.principal;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export function createAuthSystem<TPrincipal = unknown, TSession = unknown>(
|
|
63
|
+
options: AuthSystemOptions<TPrincipal, TSession>,
|
|
64
|
+
): AuthSystem<TPrincipal, TSession> {
|
|
65
|
+
return new AuthSystem(options);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export function getCookie(request: Request, name: string): string | undefined {
|
|
69
|
+
const cookie = request.headers.get("cookie");
|
|
70
|
+
if (!cookie) return undefined;
|
|
71
|
+
for (const part of cookie.split(";")) {
|
|
72
|
+
const [rawName, ...rawValue] = part.trim().split("=");
|
|
73
|
+
if (rawName === name) return decodeURIComponent(rawValue.join("="));
|
|
74
|
+
}
|
|
75
|
+
return undefined;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
export function requireAdminRequest(request: Request, expectedToken: string | undefined): void {
|
|
79
|
+
requireAdminToken(request, expectedToken);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
export type McpAuthInfo<TSubject extends Record<string, string> = Record<string, string>> = {
|
|
83
|
+
token: string;
|
|
84
|
+
clientId: string;
|
|
85
|
+
scopes: string[];
|
|
86
|
+
expiresAt: number;
|
|
87
|
+
resource?: URL;
|
|
88
|
+
subject: TSubject;
|
|
89
|
+
extra?: Record<string, unknown>;
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
export type McpAuthorizationParams = {
|
|
93
|
+
redirectUri: string;
|
|
94
|
+
state?: string;
|
|
95
|
+
scopes?: string[];
|
|
96
|
+
resource?: URL;
|
|
97
|
+
codeChallenge: string;
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
export type McpAuthorizeResult =
|
|
101
|
+
| { kind: "redirect"; location: string; status?: number }
|
|
102
|
+
| { kind: "authorized"; code: string; redirect: string };
|
|
103
|
+
|
|
104
|
+
export type McpAuthServiceOptions<TPrincipal, TSubject extends Record<string, string>> = {
|
|
105
|
+
repository: McpOAuthRepository;
|
|
106
|
+
sessionAuth?: AuthSystem<TPrincipal, unknown>;
|
|
107
|
+
loginPath?: string;
|
|
108
|
+
defaultScopes?: string[];
|
|
109
|
+
authCodeTtlSeconds?: number;
|
|
110
|
+
accessTokenTtlSeconds?: number;
|
|
111
|
+
refreshTokenTtlSeconds?: number;
|
|
112
|
+
refreshTokenReuseGraceSeconds?: number;
|
|
113
|
+
tokenEncryptionSecret: string;
|
|
114
|
+
principalToSubject: (principal: TPrincipal) => TSubject | null | Promise<TSubject | null>;
|
|
115
|
+
subjectToPrincipal?: (subject: TSubject) => TPrincipal | null | Promise<TPrincipal | null>;
|
|
116
|
+
canAuthorize?: (principal: TPrincipal, client: OAuthClientInformation, params: McpAuthorizationParams) => boolean | Promise<boolean>;
|
|
117
|
+
canUseToken?: (principal: TPrincipal, row: McpTokenRow) => boolean | Promise<boolean>;
|
|
118
|
+
accessDeniedDescription?: string;
|
|
119
|
+
createAuthorizationCode?: () => string;
|
|
120
|
+
createAccessToken?: () => string;
|
|
121
|
+
createRefreshToken?: () => string;
|
|
122
|
+
now?: () => number;
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
const DEFAULT_SCOPE = "mcp:read";
|
|
126
|
+
const DEFAULT_AUTH_CODE_TTL_SECONDS = 10 * 60;
|
|
127
|
+
const DEFAULT_ACCESS_TOKEN_TTL_SECONDS = 60 * 60;
|
|
128
|
+
const DEFAULT_REFRESH_TOKEN_TTL_SECONDS = 30 * 24 * 60 * 60;
|
|
129
|
+
const DEFAULT_REFRESH_TOKEN_REUSE_GRACE_SECONDS = 10 * 60;
|
|
130
|
+
|
|
131
|
+
export class McpAuthService<TPrincipal, TSubject extends Record<string, string> = Record<string, string>> {
|
|
132
|
+
readonly skipLocalPkceValidation = false;
|
|
133
|
+
|
|
134
|
+
constructor(private readonly options: McpAuthServiceOptions<TPrincipal, TSubject>) {}
|
|
135
|
+
|
|
136
|
+
get clientsStore(): {
|
|
137
|
+
getClient: (clientId: string) => Promise<OAuthClientInformation | undefined>;
|
|
138
|
+
registerClient: (client: OAuthClientRegistration) => Promise<OAuthClientInformation>;
|
|
139
|
+
} {
|
|
140
|
+
return {
|
|
141
|
+
getClient: (clientId: string) => this.options.repository.getClient(clientId),
|
|
142
|
+
registerClient: (client: OAuthClientRegistration) => this.options.repository.registerClient(client),
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
async authorize(client: OAuthClientInformation, params: McpAuthorizationParams, request: Request): Promise<McpAuthorizeResult> {
|
|
147
|
+
const principal = this.options.sessionAuth ? await this.options.sessionAuth.requirePrincipal(request).catch(() => null) : null;
|
|
148
|
+
if (!principal) {
|
|
149
|
+
return { kind: "redirect", location: this.loginRedirect(request), status: 302 };
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
const allowed = this.options.canAuthorize ? await this.options.canAuthorize(principal, client, params) : true;
|
|
153
|
+
const subject = allowed ? await this.options.principalToSubject(principal) : null;
|
|
154
|
+
if (!allowed || !subject) {
|
|
155
|
+
const redirect = createOAuthRedirect(params.redirectUri, {
|
|
156
|
+
error: "access_denied",
|
|
157
|
+
error_description: this.options.accessDeniedDescription ?? "Access denied.",
|
|
158
|
+
state: params.state,
|
|
159
|
+
});
|
|
160
|
+
return { kind: "redirect", location: redirect, status: 302 };
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
const code = this.options.createAuthorizationCode?.() ?? `mcpcode_${crypto.randomUUID().replace(/-/g, "")}`;
|
|
164
|
+
await this.options.repository.createAuthorizationCode({
|
|
165
|
+
code,
|
|
166
|
+
clientId: client.client_id,
|
|
167
|
+
subject,
|
|
168
|
+
redirectUri: params.redirectUri,
|
|
169
|
+
scopes: params.scopes?.length ? params.scopes : this.defaultScopes(),
|
|
170
|
+
resource: params.resource?.href ?? null,
|
|
171
|
+
codeChallenge: params.codeChallenge,
|
|
172
|
+
expiresAt: this.now() + (this.options.authCodeTtlSeconds ?? DEFAULT_AUTH_CODE_TTL_SECONDS),
|
|
173
|
+
});
|
|
174
|
+
|
|
175
|
+
return {
|
|
176
|
+
kind: "authorized",
|
|
177
|
+
code,
|
|
178
|
+
redirect: createOAuthRedirect(params.redirectUri, { code, state: params.state }),
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
async challengeForAuthorizationCode(client: OAuthClientInformation, authorizationCode: string): Promise<string> {
|
|
183
|
+
const row = await this.validAuthorizationCode(client, authorizationCode);
|
|
184
|
+
return row.codeChallenge;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
async exchangeAuthorizationCode(
|
|
188
|
+
client: OAuthClientInformation,
|
|
189
|
+
authorizationCode: string,
|
|
190
|
+
_codeVerifier?: string,
|
|
191
|
+
redirectUri?: string,
|
|
192
|
+
resource?: URL,
|
|
193
|
+
): Promise<OAuthTokens> {
|
|
194
|
+
const row = await this.validAuthorizationCode(client, authorizationCode);
|
|
195
|
+
if (redirectUri && row.redirectUri !== redirectUri) throw invalidGrant("Redirect URI mismatch");
|
|
196
|
+
if (resource?.href && row.resource && row.resource !== resource.href) throw invalidGrant("Resource mismatch");
|
|
197
|
+
|
|
198
|
+
await this.options.repository.consumeAuthorizationCode(row.authorizationCodeId);
|
|
199
|
+
return this.issueTokens({
|
|
200
|
+
clientId: row.clientId,
|
|
201
|
+
subject: row.subject as TSubject,
|
|
202
|
+
scopes: parseOAuthJsonArray(row.scopesJson),
|
|
203
|
+
resource: row.resource ? new URL(row.resource) : resource,
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
async exchangeRefreshToken(client: OAuthClientInformation, refreshToken: string, scopes?: string[], resource?: URL): Promise<OAuthTokens> {
|
|
208
|
+
const row = await this.options.repository.getTokenByRefreshToken(refreshToken);
|
|
209
|
+
if (!row || row.clientId !== client.client_id) throw invalidGrant("Invalid refresh token");
|
|
210
|
+
const cachedResponse = await this.cachedRefreshResponse(row);
|
|
211
|
+
if (cachedResponse) return cachedResponse;
|
|
212
|
+
if (row.revokedAt) throw invalidGrant("Invalid refresh token");
|
|
213
|
+
if (row.refreshExpiresAt && row.refreshExpiresAt < this.now()) throw invalidGrant("Refresh token expired");
|
|
214
|
+
|
|
215
|
+
const grantedScopes = parseOAuthJsonArray(row.scopesJson);
|
|
216
|
+
const requestedScopes = scopes?.length ? scopes.filter((scope) => grantedScopes.includes(scope)) : grantedScopes;
|
|
217
|
+
const issued = await this.issueTokenSet({
|
|
218
|
+
clientId: row.clientId,
|
|
219
|
+
subject: row.subject as TSubject,
|
|
220
|
+
scopes: requestedScopes,
|
|
221
|
+
resource: resource ?? (row.resource ? new URL(row.resource) : undefined),
|
|
222
|
+
});
|
|
223
|
+
const encryptedResponse = await encryptOAuthTokenResponse(issued.tokens, this.options.tokenEncryptionSecret);
|
|
224
|
+
const claimedRotation = await this.options.repository.markTokenRotated({
|
|
225
|
+
tokenId: row.tokenId,
|
|
226
|
+
rotatedToTokenId: issued.tokenId,
|
|
227
|
+
refreshReuseExpiresAt: this.now() + (this.options.refreshTokenReuseGraceSeconds ?? DEFAULT_REFRESH_TOKEN_REUSE_GRACE_SECONDS),
|
|
228
|
+
rotatedResponseCiphertext: encryptedResponse.ciphertext,
|
|
229
|
+
rotatedResponseNonce: encryptedResponse.nonce,
|
|
230
|
+
});
|
|
231
|
+
if (claimedRotation) return issued.tokens;
|
|
232
|
+
|
|
233
|
+
await this.options.repository.revokeToken(issued.tokenId);
|
|
234
|
+
const winner = await this.options.repository.getTokenByRefreshToken(refreshToken);
|
|
235
|
+
const winnerResponse = winner ? await this.cachedRefreshResponse(winner) : null;
|
|
236
|
+
if (winnerResponse) return winnerResponse;
|
|
237
|
+
throw invalidGrant("Invalid refresh token");
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
async verifyAccessToken(token: string): Promise<McpAuthInfo<TSubject>> {
|
|
241
|
+
const row = await this.options.repository.getTokenByAccessToken(token);
|
|
242
|
+
if (!row || row.revokedAt || row.accessExpiresAt < this.now()) throw new HttpError(401, "Invalid access token.", "invalid_access_token");
|
|
243
|
+
const subject = row.subject as TSubject;
|
|
244
|
+
const principal = this.options.subjectToPrincipal ? await this.options.subjectToPrincipal(subject) : null;
|
|
245
|
+
if (this.options.subjectToPrincipal && !principal) throw new HttpError(401, "Invalid access token.", "invalid_access_token");
|
|
246
|
+
if (principal && this.options.canUseToken && !(await this.options.canUseToken(principal, row))) {
|
|
247
|
+
throw new HttpError(403, "Token is not allowed.", "token_not_allowed");
|
|
248
|
+
}
|
|
249
|
+
await this.options.repository.touchAccessToken(row.tokenId);
|
|
250
|
+
return {
|
|
251
|
+
token,
|
|
252
|
+
clientId: row.clientId,
|
|
253
|
+
scopes: parseOAuthJsonArray(row.scopesJson),
|
|
254
|
+
expiresAt: row.accessExpiresAt,
|
|
255
|
+
resource: row.resource ? new URL(row.resource) : undefined,
|
|
256
|
+
subject,
|
|
257
|
+
extra: { ...subject },
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
async revokeToken(client: OAuthClientInformation, request: { token: string }): Promise<void> {
|
|
262
|
+
const accessRow = await this.options.repository.getTokenByAccessToken(request.token);
|
|
263
|
+
if (accessRow && accessRow.clientId === client.client_id) {
|
|
264
|
+
await this.options.repository.revokeToken(accessRow.tokenId);
|
|
265
|
+
return;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
const refreshRow = await this.options.repository.getTokenByRefreshToken(request.token);
|
|
269
|
+
if (refreshRow && refreshRow.clientId === client.client_id) await this.options.repository.revokeToken(refreshRow.tokenId);
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
private async validAuthorizationCode(client: OAuthClientInformation, authorizationCode: string) {
|
|
273
|
+
const row = await this.options.repository.getAuthorizationCode(authorizationCode);
|
|
274
|
+
if (!row || row.clientId !== client.client_id || row.usedAt || row.expiresAt < this.now()) {
|
|
275
|
+
throw invalidGrant("Invalid authorization code");
|
|
276
|
+
}
|
|
277
|
+
return row;
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
private async issueTokens(input: {
|
|
281
|
+
clientId: string;
|
|
282
|
+
subject: TSubject;
|
|
283
|
+
scopes: string[];
|
|
284
|
+
resource?: URL;
|
|
285
|
+
}): Promise<OAuthTokens> {
|
|
286
|
+
return (await this.issueTokenSet(input)).tokens;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
private async issueTokenSet(input: {
|
|
290
|
+
clientId: string;
|
|
291
|
+
subject: TSubject;
|
|
292
|
+
scopes: string[];
|
|
293
|
+
resource?: URL;
|
|
294
|
+
}) {
|
|
295
|
+
return issueMcpOAuthTokenSet(
|
|
296
|
+
this.options.repository,
|
|
297
|
+
{
|
|
298
|
+
clientId: input.clientId,
|
|
299
|
+
subject: input.subject,
|
|
300
|
+
scopes: input.scopes,
|
|
301
|
+
resource: input.resource,
|
|
302
|
+
},
|
|
303
|
+
{
|
|
304
|
+
accessTokenTtlSeconds: this.options.accessTokenTtlSeconds ?? DEFAULT_ACCESS_TOKEN_TTL_SECONDS,
|
|
305
|
+
refreshTokenTtlSeconds: this.options.refreshTokenTtlSeconds ?? DEFAULT_REFRESH_TOKEN_TTL_SECONDS,
|
|
306
|
+
createAccessToken: this.options.createAccessToken,
|
|
307
|
+
createRefreshToken: this.options.createRefreshToken,
|
|
308
|
+
now: this.options.now,
|
|
309
|
+
},
|
|
310
|
+
);
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
private async cachedRefreshResponse(row: McpTokenRow): Promise<OAuthTokens | null> {
|
|
314
|
+
if (!row.rotatedResponseCiphertext || !row.rotatedResponseNonce || !row.refreshReuseExpiresAt || row.refreshReuseExpiresAt < this.now()) return null;
|
|
315
|
+
return decryptOAuthTokenResponse(row.rotatedResponseCiphertext, row.rotatedResponseNonce, this.options.tokenEncryptionSecret);
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
private defaultScopes(): string[] {
|
|
319
|
+
return this.options.defaultScopes?.length ? this.options.defaultScopes : [DEFAULT_SCOPE];
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
private loginRedirect(request: Request): string {
|
|
323
|
+
const loginPath = this.options.loginPath ?? "/login";
|
|
324
|
+
const url = new URL(loginPath, request.url);
|
|
325
|
+
url.searchParams.set("next", request.url);
|
|
326
|
+
return `${url.pathname}${url.search}`;
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
private now(): number {
|
|
330
|
+
return this.options.now?.() ?? Math.floor(Date.now() / 1000);
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
function invalidGrant(message: string): Error {
|
|
335
|
+
const error = new Error(message);
|
|
336
|
+
error.name = "InvalidGrantError";
|
|
337
|
+
return error;
|
|
338
|
+
}
|