@aotter/mantle-cloudflare 0.1.0-alpha.1 → 0.1.0-alpha.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/README.md +7 -1
- package/dist/auth/createAuth.d.ts +22 -10
- package/dist/auth/createAuth.d.ts.map +1 -1
- package/dist/auth/createAuth.js +69 -1
- package/dist/auth/createAuth.js.map +1 -1
- package/dist/bindings/D1DatabaseDriver.js +21 -13
- package/dist/bindings/D1DatabaseDriver.js.map +1 -1
- package/dist/mount/bootRuntimeOnce.d.ts +1 -1
- package/dist/mount/bootRuntimeOnce.d.ts.map +1 -1
- package/dist/mount/bootRuntimeOnce.js +49 -4
- package/dist/mount/bootRuntimeOnce.js.map +1 -1
- package/dist/mount/cmsConfig.d.ts +1 -1
- package/dist/mount/cmsConfig.d.ts.map +1 -1
- package/dist/mount/mountMcp.d.ts +4 -4
- package/dist/mount/mountMcp.d.ts.map +1 -1
- package/dist/mount/mountMcp.js +34 -20
- package/dist/mount/mountMcp.js.map +1 -1
- package/dist/mount/mountServerEndpoints.d.ts +3 -4
- package/dist/mount/mountServerEndpoints.d.ts.map +1 -1
- package/dist/mount/mountServerEndpoints.js +216 -75
- package/dist/mount/mountServerEndpoints.js.map +1 -1
- package/dist/mount/resolveCaller.d.ts +2 -2
- package/dist/mount/resolveCaller.d.ts.map +1 -1
- package/dist/mount/resolveCaller.js +45 -14
- package/dist/mount/resolveCaller.js.map +1 -1
- package/dist/oauth/consentHtml.d.ts +1 -1
- package/dist/oauth/consentHtml.d.ts.map +1 -1
- package/dist/oauth/consentHtml.js +15 -13
- package/dist/oauth/consentHtml.js.map +1 -1
- package/dist/oauth/index.d.ts +1 -1
- package/dist/oauth/index.d.ts.map +1 -1
- package/dist/oauth/index.js.map +1 -1
- package/dist/oauth/mountOAuth.d.ts +0 -7
- package/dist/oauth/mountOAuth.d.ts.map +1 -1
- package/dist/oauth/mountOAuth.js +3 -7
- package/dist/oauth/mountOAuth.js.map +1 -1
- package/dist/oauth/oauthSingleton.d.ts +2 -3
- package/dist/oauth/oauthSingleton.d.ts.map +1 -1
- package/dist/oauth/oauthSingleton.js +6 -0
- package/dist/oauth/oauthSingleton.js.map +1 -1
- package/dist/worker/createMantleWorker.d.ts +4 -1
- package/dist/worker/createMantleWorker.d.ts.map +1 -1
- package/dist/worker/createMantleWorker.js +4 -1
- package/dist/worker/createMantleWorker.js.map +1 -1
- package/package.json +9 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mountMcp.d.ts","sourceRoot":"","sources":["../../src/mount/mountMcp.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mountMcp.d.ts","sourceRoot":"","sources":["../../src/mount/mountMcp.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAG1D,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,CAAC;IACrC;;6DAEyD;IACzD,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7C;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/D,OAAO,EAAE,0BAA0B,GAClC,eAAe,CAAC,GAAG,CAAC,CA8FtB"}
|
package/dist/mount/mountMcp.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { McpJsonRpcDispatcher } from "@aotter/mantle-runtime";
|
|
2
|
-
import {
|
|
2
|
+
import { contextForVerifiedUser } from "./resolveCaller.js";
|
|
3
3
|
/**
|
|
4
4
|
* Build a Cloudflare Worker `ExportedHandler` that serves one MCP
|
|
5
5
|
* resource path. Plug into `createOAuthProvider({ apiHandlers })`
|
|
6
6
|
* keyed by the resource path (e.g. `/mcp/staff` or `/mcp`).
|
|
7
7
|
*
|
|
8
|
-
* The OAuthProvider lib verifies the bearer token
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
8
|
+
* The OAuthProvider lib verifies the bearer token and sets its
|
|
9
|
+
* token-specific identity and scopes on `ctx.props` BEFORE calling
|
|
10
|
+
* this handler. We re-read the caller's mutable staff role from D1
|
|
11
|
+
* on every invocation.
|
|
12
12
|
*
|
|
13
13
|
* Note: OAuth scope distinction (`mcp:read` vs `mcp:staff`) used to
|
|
14
14
|
* differentiate surfaces here. Removed because claude.ai's MCP client
|
|
@@ -27,15 +27,21 @@ export function createMcpApiHandler(options) {
|
|
|
27
27
|
const dispatcherCache = new WeakMap();
|
|
28
28
|
return {
|
|
29
29
|
async fetch(request, env, ctx) {
|
|
30
|
-
const props = ctx.props;
|
|
31
|
-
if (!props
|
|
30
|
+
const props = readOAuthApiProps(ctx.props);
|
|
31
|
+
if (!props)
|
|
32
32
|
return forbidden(requiredScopes);
|
|
33
|
-
const grantedScopes = props.scopes
|
|
33
|
+
const grantedScopes = props.scopes;
|
|
34
34
|
if (requiredScopes.some((scope) => !grantedScopes.includes(scope))) {
|
|
35
35
|
return forbidden(requiredScopes);
|
|
36
36
|
}
|
|
37
|
-
const
|
|
38
|
-
|
|
37
|
+
const waitUntil = typeof ctx.waitUntil === "function" ? ctx.waitUntil.bind(ctx) : undefined;
|
|
38
|
+
const handlerContext = await contextForVerifiedUser(props.userId, {
|
|
39
|
+
credential: "oauth",
|
|
40
|
+
credentialId: null,
|
|
41
|
+
clientId: props.clientId,
|
|
42
|
+
scopes: grantedScopes,
|
|
43
|
+
}, ref.auth, { env, ...(waitUntil ? { waitUntil } : {}) });
|
|
44
|
+
if (surface === "staff" && !handlerContext.staff) {
|
|
39
45
|
return forbidden(requiredScopes);
|
|
40
46
|
}
|
|
41
47
|
const runtime = await ref.get();
|
|
@@ -86,19 +92,27 @@ export function createMcpApiHandler(options) {
|
|
|
86
92
|
cached = { mediaPurposesKey, dispatcher };
|
|
87
93
|
dispatcherCache.set(runtime, cached);
|
|
88
94
|
}
|
|
89
|
-
|
|
90
|
-
return cached.dispatcher.dispatch(request, {
|
|
91
|
-
userId: props.userId,
|
|
92
|
-
staff: role && STAFF_ROLE_SET.has(role)
|
|
93
|
-
? { userId: props.userId, role: role }
|
|
94
|
-
: null,
|
|
95
|
-
clientId: props.clientId ?? null,
|
|
96
|
-
credentialId: null,
|
|
97
|
-
scopes: grantedScopes,
|
|
98
|
-
}, { env, ...(waitUntil ? { waitUntil } : {}) });
|
|
95
|
+
return cached.dispatcher.dispatch(request, handlerContext);
|
|
99
96
|
},
|
|
100
97
|
};
|
|
101
98
|
}
|
|
99
|
+
function readOAuthApiProps(value) {
|
|
100
|
+
if (!value || typeof value !== "object")
|
|
101
|
+
return null;
|
|
102
|
+
const props = value;
|
|
103
|
+
if (typeof props["userId"] !== "string" ||
|
|
104
|
+
props["userId"].length === 0 ||
|
|
105
|
+
typeof props["clientId"] !== "string" ||
|
|
106
|
+
props["clientId"].length === 0 ||
|
|
107
|
+
!Array.isArray(props["scopes"]) ||
|
|
108
|
+
!props["scopes"].every((scope) => typeof scope === "string"))
|
|
109
|
+
return null;
|
|
110
|
+
return {
|
|
111
|
+
userId: props["userId"],
|
|
112
|
+
clientId: props["clientId"],
|
|
113
|
+
scopes: props["scopes"],
|
|
114
|
+
};
|
|
115
|
+
}
|
|
102
116
|
function forbidden(requiredScopes) {
|
|
103
117
|
const scope = requiredScopes.join(" ");
|
|
104
118
|
return new Response("forbidden", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mountMcp.js","sourceRoot":"","sources":["../../src/mount/mountMcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"mountMcp.js","sourceRoot":"","sources":["../../src/mount/mountMcp.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import type { Env, Hono } from "hono";
|
|
2
2
|
import type { CmsRuntimeRef } from "./bootRuntimeOnce.js";
|
|
3
3
|
/** Mount HTTP Triggers + Views + the Better Auth admin surface.
|
|
4
|
-
* HTTP
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* catch-all. */
|
|
4
|
+
* HTTP Triggers resolve configured credentials and sessions through
|
|
5
|
+
* `resolveCaller`; the target Procedure's `requires.auth` owns
|
|
6
|
+
* authorization. */
|
|
8
7
|
export declare function mountServerEndpoints<E extends Env>(app: Hono<E>, ref: CmsRuntimeRef): void;
|
|
9
8
|
export type { CmsRuntimeRef };
|
|
10
9
|
//# sourceMappingURL=mountServerEndpoints.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mountServerEndpoints.d.ts","sourceRoot":"","sources":["../../src/mount/mountServerEndpoints.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,GAAG,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"mountServerEndpoints.d.ts","sourceRoot":"","sources":["../../src/mount/mountServerEndpoints.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,GAAG,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAkC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAc1D;;;qBAGqB;AACrB,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,GAAG,EAChD,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,EACZ,GAAG,EAAE,aAAa,GACjB,IAAI,CAuCN;AAg0DD,YAAY,EAAE,aAAa,EAAE,CAAC"}
|