managed-deepagents 0.5.0-dev.78 → 0.5.0-dev.80
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 +50 -8
- package/dist/channels/assistant-text.js +1 -1
- package/dist/channels/assistant-text.js.map +1 -1
- package/dist/channels/binding.d.ts.map +1 -1
- package/dist/channels/binding.js +3 -1
- package/dist/channels/binding.js.map +1 -1
- package/dist/channels/index.d.ts +6 -8
- package/dist/channels/index.d.ts.map +1 -1
- package/dist/channels/index.js +5 -5
- package/dist/channels/index.js.map +1 -1
- package/dist/channels/manifest.d.ts +36 -3
- package/dist/channels/manifest.d.ts.map +1 -1
- package/dist/channels/messaging-registry.d.ts +17 -0
- package/dist/channels/messaging-registry.d.ts.map +1 -0
- package/dist/channels/messaging-registry.js +44 -0
- package/dist/channels/messaging-registry.js.map +1 -0
- package/dist/channels/registry.d.ts +4 -3
- package/dist/channels/registry.d.ts.map +1 -1
- package/dist/channels/registry.js +6 -5
- package/dist/channels/registry.js.map +1 -1
- package/dist/channels/schedule-delivery.d.ts +4 -1
- package/dist/channels/schedule-delivery.d.ts.map +1 -1
- package/dist/channels/schedule-delivery.js +4 -2
- package/dist/channels/schedule-delivery.js.map +1 -1
- package/dist/connectors/github/adapter-core.d.ts +15 -0
- package/dist/connectors/github/adapter-core.d.ts.map +1 -0
- package/dist/connectors/github/adapter-core.js +52 -0
- package/dist/connectors/github/adapter-core.js.map +1 -0
- package/dist/{channels → connectors}/github/define.d.ts +28 -58
- package/dist/connectors/github/define.d.ts.map +1 -0
- package/dist/connectors/github/define.js +72 -0
- package/dist/connectors/github/define.js.map +1 -0
- package/dist/{channels → connectors}/github/http.d.ts +4 -4
- package/dist/connectors/github/http.d.ts.map +1 -0
- package/dist/{channels → connectors}/github/http.js +13 -24
- package/dist/connectors/github/http.js.map +1 -0
- package/dist/connectors/github/index.d.ts +59 -16
- package/dist/connectors/github/index.d.ts.map +1 -1
- package/dist/connectors/github/index.js +159 -73
- package/dist/connectors/github/index.js.map +1 -1
- package/dist/connectors/github/match.d.ts +20 -0
- package/dist/connectors/github/match.d.ts.map +1 -0
- package/dist/connectors/github/match.js +41 -0
- package/dist/connectors/github/match.js.map +1 -0
- package/dist/{channels → connectors}/github/normalize.d.ts +1 -1
- package/dist/connectors/github/normalize.d.ts.map +1 -0
- package/dist/{channels → connectors}/github/normalize.js +2 -2
- package/dist/connectors/github/normalize.js.map +1 -0
- package/dist/connectors/github/sandbox.d.ts.map +1 -1
- package/dist/connectors/github/sandbox.js +30 -23
- package/dist/connectors/github/sandbox.js.map +1 -1
- package/dist/connectors/github/source-thread.d.ts.map +1 -0
- package/dist/connectors/github/source-thread.js.map +1 -0
- package/dist/{channels → connectors}/github/transport.d.ts +7 -1
- package/dist/connectors/github/transport.d.ts.map +1 -0
- package/dist/{channels → connectors}/github/transport.js +18 -4
- package/dist/connectors/github/transport.js.map +1 -0
- package/dist/connectors/langsmith/index.d.ts +29 -17
- package/dist/connectors/langsmith/index.d.ts.map +1 -1
- package/dist/connectors/langsmith/index.js +34 -29
- package/dist/connectors/langsmith/index.js.map +1 -1
- package/dist/connectors/langsmith/routes.d.ts +4 -15
- package/dist/connectors/langsmith/routes.d.ts.map +1 -1
- package/dist/connectors/langsmith/routes.js +63 -72
- package/dist/connectors/langsmith/routes.js.map +1 -1
- package/dist/connectors/mcp/index.d.ts +13 -20
- package/dist/connectors/mcp/index.d.ts.map +1 -1
- package/dist/connectors/mcp/index.js +92 -112
- package/dist/connectors/mcp/index.js.map +1 -1
- package/dist/connectors/mcp/load.d.ts.map +1 -1
- package/dist/connectors/mcp/load.js +16 -40
- package/dist/connectors/mcp/load.js.map +1 -1
- package/dist/{channels → connectors}/slack/adapter-core.d.ts +1 -1
- package/dist/connectors/slack/adapter-core.d.ts.map +1 -0
- package/dist/connectors/slack/adapter-core.js.map +1 -0
- package/dist/{channels → connectors}/slack/adapter.d.ts +3 -4
- package/dist/connectors/slack/adapter.d.ts.map +1 -0
- package/dist/{channels → connectors}/slack/adapter.js +1 -1
- package/dist/connectors/slack/adapter.js.map +1 -0
- package/dist/{channels → connectors}/slack/http.d.ts +6 -40
- package/dist/connectors/slack/http.d.ts.map +1 -0
- package/dist/{channels → connectors}/slack/http.js +22 -125
- package/dist/connectors/slack/http.js.map +1 -0
- package/dist/connectors/slack/index.d.ts +108 -0
- package/dist/connectors/slack/index.d.ts.map +1 -0
- package/dist/connectors/slack/index.js +191 -0
- package/dist/connectors/slack/index.js.map +1 -0
- package/dist/{channels → connectors}/slack/normalize.d.ts +5 -5
- package/dist/connectors/slack/normalize.d.ts.map +1 -0
- package/dist/{channels → connectors}/slack/normalize.js +21 -20
- package/dist/connectors/slack/normalize.js.map +1 -0
- package/dist/connectors/slack/source-thread.d.ts.map +1 -0
- package/dist/connectors/slack/source-thread.js.map +1 -0
- package/dist/{channels → connectors}/slack/transport.d.ts +1 -1
- package/dist/connectors/slack/transport.d.ts.map +1 -0
- package/dist/{channels → connectors}/slack/transport.js +4 -3
- package/dist/connectors/slack/transport.js.map +1 -0
- package/dist/connectors/tool-selection.d.ts +31 -0
- package/dist/connectors/tool-selection.d.ts.map +1 -0
- package/dist/connectors/tool-selection.js +54 -0
- package/dist/connectors/tool-selection.js.map +1 -0
- package/dist/connectors/toolserver/catalog.d.ts +134 -0
- package/dist/connectors/toolserver/catalog.d.ts.map +1 -0
- package/dist/connectors/toolserver/catalog.js +74 -0
- package/dist/connectors/toolserver/catalog.js.map +1 -0
- package/dist/connectors/toolserver/index.d.ts +119 -0
- package/dist/connectors/toolserver/index.d.ts.map +1 -0
- package/dist/connectors/toolserver/index.js +150 -0
- package/dist/connectors/toolserver/index.js.map +1 -0
- package/dist/connectors/toolserver/load.d.ts +55 -0
- package/dist/connectors/toolserver/load.d.ts.map +1 -0
- package/dist/connectors/toolserver/load.js +162 -0
- package/dist/connectors/toolserver/load.js.map +1 -0
- package/dist/extension.d.ts +77 -0
- package/dist/extension.d.ts.map +1 -0
- package/dist/extension.js +127 -0
- package/dist/extension.js.map +1 -0
- package/dist/identity/claims.d.ts +18 -0
- package/dist/identity/claims.d.ts.map +1 -0
- package/dist/identity/claims.js +37 -0
- package/dist/identity/claims.js.map +1 -0
- package/dist/identity/connect-inference.d.ts +28 -0
- package/dist/identity/connect-inference.d.ts.map +1 -0
- package/dist/identity/connect-inference.js +39 -0
- package/dist/identity/connect-inference.js.map +1 -0
- package/dist/identity/connect-provider-types.d.ts +23 -6
- package/dist/identity/connect-provider-types.d.ts.map +1 -1
- package/dist/identity/connect-provider-types.js +3 -1
- package/dist/identity/connect-provider-types.js.map +1 -1
- package/dist/identity/connect-provider.d.ts +9 -4
- package/dist/identity/connect-provider.d.ts.map +1 -1
- package/dist/identity/connect-provider.js +19 -9
- package/dist/identity/connect-provider.js.map +1 -1
- package/dist/identity/credential-resolvers.d.ts +33 -0
- package/dist/identity/credential-resolvers.d.ts.map +1 -0
- package/dist/identity/credential-resolvers.js +62 -0
- package/dist/identity/credential-resolvers.js.map +1 -0
- package/dist/identity/github/connect-http.d.ts +3 -3
- package/dist/identity/github/connect-http.d.ts.map +1 -1
- package/dist/identity/github/connect-http.js +21 -13
- package/dist/identity/github/connect-http.js.map +1 -1
- package/dist/identity/github/credentials-store.d.ts +10 -10
- package/dist/identity/github/credentials-store.d.ts.map +1 -1
- package/dist/identity/github/credentials-store.js +40 -43
- package/dist/identity/github/credentials-store.js.map +1 -1
- package/dist/identity/github/credentials.d.ts +16 -13
- package/dist/identity/github/credentials.d.ts.map +1 -1
- package/dist/identity/github/credentials.js +43 -23
- package/dist/identity/github/credentials.js.map +1 -1
- package/dist/identity/github/index.d.ts +2 -3
- package/dist/identity/github/index.d.ts.map +1 -1
- package/dist/identity/github/index.js +1 -2
- package/dist/identity/github/index.js.map +1 -1
- package/dist/identity/github/oauth.d.ts +3 -3
- package/dist/identity/github/oauth.d.ts.map +1 -1
- package/dist/identity/github/oauth.js +10 -9
- package/dist/identity/github/oauth.js.map +1 -1
- package/dist/identity/index.d.ts +35 -29
- package/dist/identity/index.d.ts.map +1 -1
- package/dist/identity/index.js +98 -131
- package/dist/identity/index.js.map +1 -1
- package/dist/identity/loopback.d.ts +27 -2
- package/dist/identity/loopback.d.ts.map +1 -1
- package/dist/identity/loopback.js +61 -8
- package/dist/identity/loopback.js.map +1 -1
- package/dist/identity/options.d.ts +90 -0
- package/dist/identity/options.d.ts.map +1 -0
- package/dist/identity/options.js +171 -0
- package/dist/identity/options.js.map +1 -0
- package/dist/identity/slack/connect-http.d.ts +3 -3
- package/dist/identity/slack/connect-http.d.ts.map +1 -1
- package/dist/identity/slack/connect-http.js +22 -14
- package/dist/identity/slack/connect-http.js.map +1 -1
- package/dist/identity/slack/index.d.ts +1 -2
- package/dist/identity/slack/index.d.ts.map +1 -1
- package/dist/identity/slack/index.js +1 -2
- package/dist/identity/slack/index.js.map +1 -1
- package/dist/identity/slack/links.d.ts +15 -15
- package/dist/identity/slack/links.d.ts.map +1 -1
- package/dist/identity/slack/links.js +50 -53
- package/dist/identity/slack/links.js.map +1 -1
- package/dist/identity/slack/oauth.d.ts +2 -2
- package/dist/identity/slack/oauth.d.ts.map +1 -1
- package/dist/identity/slack/oauth.js +9 -24
- package/dist/identity/slack/oauth.js.map +1 -1
- package/dist/identity/supabase.js +9 -9
- package/dist/identity/supabase.js.map +1 -1
- package/dist/identity/types.d.ts +82 -36
- package/dist/identity/types.d.ts.map +1 -1
- package/dist/index.d.ts +11 -21
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -12
- package/dist/index.js.map +1 -1
- package/dist/ingress/index.d.ts +54 -0
- package/dist/ingress/index.d.ts.map +1 -0
- package/dist/ingress/index.js +128 -0
- package/dist/ingress/index.js.map +1 -0
- package/dist/namespaces.d.ts +76 -0
- package/dist/namespaces.d.ts.map +1 -0
- package/dist/namespaces.js +94 -0
- package/dist/namespaces.js.map +1 -0
- package/dist/runtime/auth.d.ts +18 -14
- package/dist/runtime/auth.d.ts.map +1 -1
- package/dist/runtime/auth.js +88 -68
- package/dist/runtime/auth.js.map +1 -1
- package/dist/runtime/backend.d.ts +1 -1
- package/dist/runtime/backend.d.ts.map +1 -1
- package/dist/runtime/connector.d.ts +66 -23
- package/dist/runtime/connector.d.ts.map +1 -1
- package/dist/runtime/connector.js +63 -27
- package/dist/runtime/connector.js.map +1 -1
- package/dist/runtime/cors.d.ts +2 -3
- package/dist/runtime/cors.d.ts.map +1 -1
- package/dist/runtime/cors.js +2 -7
- package/dist/runtime/cors.js.map +1 -1
- package/dist/runtime/credentials.d.ts.map +1 -1
- package/dist/runtime/credentials.js +39 -14
- package/dist/runtime/credentials.js.map +1 -1
- package/dist/runtime/http.d.ts +47 -0
- package/dist/runtime/http.d.ts.map +1 -0
- package/dist/runtime/http.js +54 -0
- package/dist/runtime/http.js.map +1 -0
- package/dist/runtime/identity-http.d.ts +6 -16
- package/dist/runtime/identity-http.d.ts.map +1 -1
- package/dist/runtime/identity-http.js +71 -54
- package/dist/runtime/identity-http.js.map +1 -1
- package/dist/runtime/identity-runtime.d.ts +18 -17
- package/dist/runtime/identity-runtime.d.ts.map +1 -1
- package/dist/runtime/identity-runtime.js +55 -39
- package/dist/runtime/identity-runtime.js.map +1 -1
- package/dist/runtime/index.d.ts +77 -104
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +36 -35
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/memory/index.d.ts +1 -0
- package/dist/runtime/memory/index.d.ts.map +1 -1
- package/dist/runtime/memory/index.js +1 -0
- package/dist/runtime/memory/index.js.map +1 -1
- package/dist/runtime/memory/lazy-context-backend.d.ts +66 -0
- package/dist/runtime/memory/lazy-context-backend.d.ts.map +1 -0
- package/dist/runtime/memory/lazy-context-backend.js +154 -0
- package/dist/runtime/memory/lazy-context-backend.js.map +1 -0
- package/dist/runtime/memory/user-repo.js +3 -3
- package/dist/runtime/memory/user-repo.js.map +1 -1
- package/dist/runtime/sandbox-manager.d.ts +33 -0
- package/dist/runtime/sandbox-manager.d.ts.map +1 -1
- package/dist/runtime/sandbox-manager.js +173 -9
- package/dist/runtime/sandbox-manager.js.map +1 -1
- package/dist/runtime/sandbox-stream-retry.d.ts +16 -0
- package/dist/runtime/sandbox-stream-retry.d.ts.map +1 -0
- package/dist/runtime/sandbox-stream-retry.js +61 -0
- package/dist/runtime/sandbox-stream-retry.js.map +1 -0
- package/dist/runtime/setup-script.d.ts.map +1 -1
- package/dist/runtime/setup-script.js +4 -2
- package/dist/runtime/setup-script.js.map +1 -1
- package/dist/runtime/validated-token.d.ts +1 -1
- package/dist/runtime/validated-token.d.ts.map +1 -1
- package/dist/runtime/validated-token.js +75 -33
- package/dist/runtime/validated-token.js.map +1 -1
- package/dist/sandbox.d.ts +19 -22
- package/dist/sandbox.d.ts.map +1 -1
- package/dist/sandbox.js +20 -34
- package/dist/sandbox.js.map +1 -1
- package/dist/schedules.js +8 -9
- package/dist/schedules.js.map +1 -1
- package/package.json +18 -28
- package/dist/channels/collect.d.ts +0 -26
- package/dist/channels/collect.d.ts.map +0 -1
- package/dist/channels/collect.js +0 -42
- package/dist/channels/collect.js.map +0 -1
- package/dist/channels/github/adapter-core.d.ts +0 -6
- package/dist/channels/github/adapter-core.d.ts.map +0 -1
- package/dist/channels/github/adapter-core.js +0 -27
- package/dist/channels/github/adapter-core.js.map +0 -1
- package/dist/channels/github/adapter.d.ts +0 -16
- package/dist/channels/github/adapter.d.ts.map +0 -1
- package/dist/channels/github/adapter.js +0 -52
- package/dist/channels/github/adapter.js.map +0 -1
- package/dist/channels/github/define.d.ts.map +0 -1
- package/dist/channels/github/define.js +0 -166
- package/dist/channels/github/define.js.map +0 -1
- package/dist/channels/github/http.d.ts.map +0 -1
- package/dist/channels/github/http.js.map +0 -1
- package/dist/channels/github/index.d.ts +0 -12
- package/dist/channels/github/index.d.ts.map +0 -1
- package/dist/channels/github/index.js +0 -10
- package/dist/channels/github/index.js.map +0 -1
- package/dist/channels/github/normalize.d.ts.map +0 -1
- package/dist/channels/github/normalize.js.map +0 -1
- package/dist/channels/github/source-thread.d.ts.map +0 -1
- package/dist/channels/github/source-thread.js.map +0 -1
- package/dist/channels/github/transport.d.ts.map +0 -1
- package/dist/channels/github/transport.js.map +0 -1
- package/dist/channels/plugin.d.ts +0 -61
- package/dist/channels/plugin.d.ts.map +0 -1
- package/dist/channels/plugin.js +0 -80
- package/dist/channels/plugin.js.map +0 -1
- package/dist/channels/slack/adapter-core.d.ts.map +0 -1
- package/dist/channels/slack/adapter-core.js.map +0 -1
- package/dist/channels/slack/adapter.d.ts.map +0 -1
- package/dist/channels/slack/adapter.js.map +0 -1
- package/dist/channels/slack/define.d.ts +0 -74
- package/dist/channels/slack/define.d.ts.map +0 -1
- package/dist/channels/slack/define.js +0 -160
- package/dist/channels/slack/define.js.map +0 -1
- package/dist/channels/slack/http.d.ts.map +0 -1
- package/dist/channels/slack/http.js.map +0 -1
- package/dist/channels/slack/index.d.ts +0 -18
- package/dist/channels/slack/index.d.ts.map +0 -1
- package/dist/channels/slack/index.js +0 -13
- package/dist/channels/slack/index.js.map +0 -1
- package/dist/channels/slack/normalize.d.ts.map +0 -1
- package/dist/channels/slack/normalize.js.map +0 -1
- package/dist/channels/slack/source-thread.d.ts.map +0 -1
- package/dist/channels/slack/source-thread.js.map +0 -1
- package/dist/channels/slack/transport.d.ts.map +0 -1
- package/dist/channels/slack/transport.js.map +0 -1
- /package/dist/{channels → connectors}/github/source-thread.d.ts +0 -0
- /package/dist/{channels → connectors}/github/source-thread.js +0 -0
- /package/dist/{channels → connectors}/slack/adapter-core.js +0 -0
- /package/dist/{channels → connectors}/slack/source-thread.d.ts +0 -0
- /package/dist/{channels → connectors}/slack/source-thread.js +0 -0
|
@@ -2,11 +2,12 @@
|
|
|
2
2
|
* GitHub OAuth helpers for Connect-with-GitHub credential binding.
|
|
3
3
|
*
|
|
4
4
|
* Unlike Slack Connect (channel identity remap only), GitHub Connect stores a
|
|
5
|
-
* per-actor OAuth access token so `github
|
|
5
|
+
* per-actor OAuth access token so `credentials.github({ write: ["actor"] })`
|
|
6
6
|
* can act as the signed-in user (e.g. open pull requests).
|
|
7
7
|
*/
|
|
8
8
|
import { randomBytes } from "node:crypto";
|
|
9
9
|
import { jwtVerify, SignJWT } from "jose";
|
|
10
|
+
import { fetchWithTimeout, PROVIDER_HTTP_TIMEOUT_MS, } from "../../runtime/http.js";
|
|
10
11
|
import { MDA_PUBLIC_API_URL_ENV, MDA_PUBLIC_APP_URL_ENV, OAUTH_STATE_SIGNING_KEY_ENV, readOauthStateSigningKey, resolveSlackOauthRedirectBase, } from "../slack/oauth.js";
|
|
11
12
|
export { MDA_PUBLIC_API_URL_ENV, MDA_PUBLIC_APP_URL_ENV, OAUTH_STATE_SIGNING_KEY_ENV, readOauthStateSigningKey, };
|
|
12
13
|
export const GITHUB_CLIENT_ID_ENV = "GITHUB_CLIENT_ID";
|
|
@@ -50,11 +51,11 @@ export function buildGitHubAuthorizeUrl(config, state, redirectUri) {
|
|
|
50
51
|
return url.toString();
|
|
51
52
|
}
|
|
52
53
|
/** Signed state binding the authenticated actor to the OAuth round-trip. */
|
|
53
|
-
export async function createGitHubOauthState(
|
|
54
|
+
export async function createGitHubOauthState(userId, signingKey, nowMs = Date.now()) {
|
|
54
55
|
const iat = Math.floor(nowMs / 1000);
|
|
55
56
|
const exp = Math.floor((nowMs + STATE_TTL_MS) / 1000);
|
|
56
57
|
return new SignJWT({
|
|
57
|
-
|
|
58
|
+
userId,
|
|
58
59
|
nonce: randomBytes(16).toString("hex"),
|
|
59
60
|
})
|
|
60
61
|
.setProtectedHeader({ alg: "HS256", typ: STATE_JWT_TYP })
|
|
@@ -69,10 +70,10 @@ export async function verifyGitHubOauthState(state, signingKey, nowMs = Date.now
|
|
|
69
70
|
typ: STATE_JWT_TYP,
|
|
70
71
|
currentDate: new Date(nowMs),
|
|
71
72
|
});
|
|
72
|
-
if (typeof payload.
|
|
73
|
+
if (typeof payload.userId !== "string" || !payload.userId) {
|
|
73
74
|
throw new Error("invalid OAuth state actor");
|
|
74
75
|
}
|
|
75
|
-
return {
|
|
76
|
+
return { userId: payload.userId };
|
|
76
77
|
}
|
|
77
78
|
catch (err) {
|
|
78
79
|
if (err instanceof Error && err.message.startsWith("invalid OAuth state")) {
|
|
@@ -92,7 +93,7 @@ export async function verifyGitHubOauthState(state, signingKey, nowMs = Date.now
|
|
|
92
93
|
* application/json` is set.
|
|
93
94
|
*/
|
|
94
95
|
export async function exchangeGitHubOauthCode(config, code, redirectUri, fetchImpl = fetch) {
|
|
95
|
-
const tokenResponse = await
|
|
96
|
+
const tokenResponse = await fetchWithTimeout(`${config.oauthBase}/login/oauth/access_token`, {
|
|
96
97
|
method: "POST",
|
|
97
98
|
headers: {
|
|
98
99
|
Accept: "application/json",
|
|
@@ -104,21 +105,21 @@ export async function exchangeGitHubOauthCode(config, code, redirectUri, fetchIm
|
|
|
104
105
|
code,
|
|
105
106
|
redirect_uri: redirectUri,
|
|
106
107
|
}),
|
|
107
|
-
});
|
|
108
|
+
}, PROVIDER_HTTP_TIMEOUT_MS, fetchImpl);
|
|
108
109
|
const tokenJson = (await tokenResponse.json());
|
|
109
110
|
if (!tokenResponse.ok || !tokenJson.access_token) {
|
|
110
111
|
throw new Error(tokenJson.error_description ??
|
|
111
112
|
tokenJson.error ??
|
|
112
113
|
"GitHub OAuth token exchange failed");
|
|
113
114
|
}
|
|
114
|
-
const userResponse = await
|
|
115
|
+
const userResponse = await fetchWithTimeout(`${config.apiBase}/user`, {
|
|
115
116
|
headers: {
|
|
116
117
|
Accept: "application/vnd.github+json",
|
|
117
118
|
Authorization: `Bearer ${tokenJson.access_token}`,
|
|
118
119
|
"User-Agent": "managed-deepagents",
|
|
119
120
|
"X-GitHub-Api-Version": "2022-11-28",
|
|
120
121
|
},
|
|
121
|
-
});
|
|
122
|
+
}, PROVIDER_HTTP_TIMEOUT_MS, fetchImpl);
|
|
122
123
|
const userJson = (await userResponse.json());
|
|
123
124
|
if (!userResponse.ok || userJson.id === undefined || !userJson.login) {
|
|
124
125
|
throw new Error(userJson.message ?? "GitHub /user lookup failed");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../../src/identity/github/oauth.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE1C,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,2BAA2B,EAC3B,wBAAwB,EACxB,6BAA6B,GAC9B,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,2BAA2B,EAC3B,wBAAwB,GACzB,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,kBAAkB,CAAC;AACvD,MAAM,CAAC,MAAM,wBAAwB,GAAG,sBAAsB,CAAC;AAC/D,kEAAkE;AAClE,MAAM,CAAC,MAAM,uBAAuB,GAAG,qBAAqB,CAAC;AAC7D,8CAA8C;AAC9C,MAAM,CAAC,MAAM,qBAAqB,GAAG,mBAAmB,CAAC;AAEzD,MAAM,kBAAkB,GAAG,oBAAoB,CAAC;AAChD,MAAM,gBAAgB,GAAG,wBAAwB,CAAC;AAClD,MAAM,cAAc,GAAG,gBAAgB,CAAC;AACxC,MAAM,YAAY,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AACpC,MAAM,aAAa,GAAG,wBAAwB,CAAC;AAqB/C,MAAM,UAAU,qBAAqB,CACnC,GAAG,GAAsB,OAAO,CAAC,GAAG;IAEpC,MAAM,QAAQ,GAAG,GAAG,CAAC,oBAAoB,CAAC,EAAE,IAAI,EAAE,CAAC;IACnD,MAAM,YAAY,GAAG,GAAG,CAAC,wBAAwB,CAAC,EAAE,IAAI,EAAE,CAAC;IAC3D,MAAM,YAAY,GAAG,GAAG,CAAC,sBAAsB,CAAC,EAAE,IAAI,EAAE,CAAC;IACzD,IAAI,CAAC,QAAQ,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,SAAS,GAAG,CAChB,GAAG,CAAC,qBAAqB,CAAC,EAAE,IAAI,EAAE,IAAI,kBAAkB,CACzD,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACrB,OAAO;QACL,QAAQ;QACR,YAAY;QACZ,YAAY,EAAE,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;QAC7C,MAAM,EAAE,GAAG,CAAC,uBAAuB,CAAC,EAAE,IAAI,EAAE,IAAI,cAAc;QAC9D,SAAS;QACT,OAAO,EACL,SAAS,KAAK,kBAAkB;YAC9B,CAAC,CAAC,gBAAgB;YAClB,CAAC,CAAC,GAAG,SAAS,SAAS;KAC5B,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,MAAM,CAAC,MAAM,8BAA8B,GAAG,6BAA6B,CAAC;AAE5E,MAAM,UAAU,uBAAuB,CACrC,MAAyB,EACzB,KAAa,EACb,WAAmB;IAEnB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,SAAS,wBAAwB,CAAC,CAAC;IACjE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IACnD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;IAClD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAC7C,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACrC,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;AACxB,CAAC;AAED,4EAA4E;AAC5E,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,
|
|
1
|
+
{"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../../src/identity/github/oauth.ts"],"names":[],"mappings":"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"}
|
package/dist/identity/index.d.ts
CHANGED
|
@@ -2,39 +2,48 @@
|
|
|
2
2
|
* The managed `identity.ts` declaration primitive.
|
|
3
3
|
*
|
|
4
4
|
* A project's root `identity.ts` exports a named `identity` created with
|
|
5
|
-
* `defineIdentity(...)
|
|
6
|
-
*
|
|
7
|
-
* scoping and downstream credentials.
|
|
5
|
+
* `defineIdentity(...)`. The compiler discovers it, generates the custom-auth
|
|
6
|
+
* handler, and wires thread/memory scoping and downstream credentials.
|
|
8
7
|
*
|
|
9
8
|
* This module is pure authoring-time config construction plus eager validation —
|
|
10
|
-
* it has no runtime dependency (the `
|
|
9
|
+
* it has no runtime dependency (the `auth.*` helpers return plain data).
|
|
11
10
|
*/
|
|
11
|
+
import { type IdentityOptions } from "./options.js";
|
|
12
12
|
import { type SupabaseProviderOptions } from "./supabase.js";
|
|
13
|
-
import type { IdentityConfig, IdentityDefinition,
|
|
14
|
-
export
|
|
15
|
-
export
|
|
16
|
-
|
|
17
|
-
export
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
* Start from a named archetype and optionally override any subset of it. The
|
|
21
|
-
* headline API for the common case.
|
|
22
|
-
*/
|
|
23
|
-
preset(name: IdentityPresetName, overrides?: DeepPartial<IdentityConfig>): IdentityDefinition;
|
|
24
|
-
}
|
|
13
|
+
import type { IdentityConfig, IdentityDefinition, ValidatedTokenProvider } from "./types.js";
|
|
14
|
+
export { normalizeGroups, organizationClaimName, userClaimName, } from "./claims.js";
|
|
15
|
+
export { normalizeIdentity } from "./options.js";
|
|
16
|
+
export type { IdentityAuth, IdentityOptions, IdentityScope, IdentityScopeOverrides, } from "./options.js";
|
|
17
|
+
export { credentialTargetNames, isSingleCredentialResolver, } from "./credential-resolvers.js";
|
|
18
|
+
export type { ClaimMapping, CredentialConnectRequirements, CredentialResolver, CredentialResolverConfig, CredentialResolvers, CredentialScope, CredentialTarget, HttpIngress, IdentityConfig, IdentityConnectProvider, IdentityDefinition, MemoryScope, OrganizationRequirement, ResolvedCredential, RuntimeIdentity, ThreadScope, ValidatedTokenIngress, ValidatedTokenProvider, } from "./types.js";
|
|
19
|
+
export type { GitHubAppJwtArgs, GitHubCredentialsOptions, GitHubTokenSource, GitHubUserTokenArgs, } from "./github/credentials.js";
|
|
25
20
|
/**
|
|
26
21
|
* Declare the identity contract for the deployment.
|
|
27
22
|
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
23
|
+
* The common case takes no arguments — a backend you operate asserts the caller,
|
|
24
|
+
* and each caller gets private threads and memory:
|
|
25
|
+
*
|
|
26
|
+
* ```ts
|
|
27
|
+
* export const identity = defineIdentity();
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* Otherwise describe how callers authenticate and what the isolation boundary
|
|
31
|
+
* is; `scope` accepts per-axis overrides when a single boundary does not fit:
|
|
32
|
+
*
|
|
33
|
+
* ```ts
|
|
34
|
+
* export const identity = defineIdentity({
|
|
35
|
+
* auth: auth.auth0({ domain: "acme.us.auth0.com" }),
|
|
36
|
+
* scope: "organization",
|
|
37
|
+
* });
|
|
38
|
+
* ```
|
|
30
39
|
*/
|
|
31
|
-
export declare
|
|
40
|
+
export declare function defineIdentity(options?: IdentityOptions): IdentityDefinition;
|
|
32
41
|
/**
|
|
33
|
-
*
|
|
34
|
-
* Each returns a plain provider object you can
|
|
35
|
-
* there is no new runtime surface.
|
|
42
|
+
* Validated-token auth providers — authoring-time sugar over
|
|
43
|
+
* {@link ValidatedTokenProvider}. Each returns a plain provider object you can
|
|
44
|
+
* spread-and-override, so there is no new runtime surface.
|
|
36
45
|
*/
|
|
37
|
-
export declare const
|
|
46
|
+
export declare const auth: {
|
|
38
47
|
auth0({ domain, audience, }: {
|
|
39
48
|
domain: string;
|
|
40
49
|
audience?: string;
|
|
@@ -70,9 +79,10 @@ export declare const providers: {
|
|
|
70
79
|
*/
|
|
71
80
|
github(): ValidatedTokenProvider;
|
|
72
81
|
/** MDA-issued anonymous/guest tokens. */
|
|
73
|
-
guest({ ttl,
|
|
82
|
+
guest({ ttl, userPrefix, }?: {
|
|
74
83
|
ttl?: string;
|
|
75
|
-
|
|
84
|
+
/** Prefix applied to the generated user id, e.g. `"guest:"`. */
|
|
85
|
+
userPrefix?: string;
|
|
76
86
|
}): ValidatedTokenProvider;
|
|
77
87
|
};
|
|
78
88
|
/**
|
|
@@ -80,8 +90,4 @@ export declare const providers: {
|
|
|
80
90
|
* reaches the compiler or runtime.
|
|
81
91
|
*/
|
|
82
92
|
export declare function validateIdentity(config: IdentityConfig): void;
|
|
83
|
-
/** Recursively merge plain objects; arrays and primitives from `patch` win. */
|
|
84
|
-
type DeepPartial<T> = T extends object ? {
|
|
85
|
-
[K in keyof T]?: DeepPartial<T[K]>;
|
|
86
|
-
} : T;
|
|
87
93
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/identity/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/identity/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAAqB,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AACvE,OAAO,EAAE,KAAK,uBAAuB,EAAoB,MAAM,eAAe,CAAC;AAC/E,OAAO,KAAK,EAGV,cAAc,EACd,kBAAkB,EAElB,sBAAsB,EACvB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,aAAa,GACd,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,YAAY,EACV,YAAY,EACZ,eAAe,EACf,aAAa,EACb,sBAAsB,GACvB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,qBAAqB,EACrB,0BAA0B,GAC3B,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,YAAY,EACZ,6BAA6B,EAC7B,kBAAkB,EAClB,wBAAwB,EACxB,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,uBAAuB,EACvB,kBAAkB,EAClB,WAAW,EACX,uBAAuB,EACvB,kBAAkB,EAClB,eAAe,EACf,WAAW,EACX,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,gBAAgB,EAChB,wBAAwB,EACxB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,yBAAyB,CAAC;AAEjC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,cAAc,CAC5B,OAAO,GAAE,eAAoB,GAC5B,kBAAkB,CAIpB;AAED;;;;GAIG;AACH,eAAO,MAAM,IAAI;IACf,KAAK,wBAGF;QACD,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,sBAAsB;IAU1B,KAAK,aAAa;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,sBAAsB;IAS7D,IAAI,wBAGD;QACD,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,sBAAsB;IAU1B,OAAO,0BAGJ;QACD,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;KAChB,GAAG,sBAAsB;IAU1B,KAAK,0BAGF;QACD,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,sBAAsB;IAU1B,MAAM,gBAAe;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAQ,sBAAsB;IAUxE,oCAAoC;IACpC,QAAQ,UAAU,uBAAuB,GAAG,sBAAsB;IAIlE,mEAAmE;IACnE,IAAI,wBAGD;QACD,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,sBAAsB;IAU1B;;;OAGG;IACH,MAAM,IAAI,sBAAsB;IAehC,yCAAyC;IACzC,KAAK,wBAGF;QACD,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,gEAAgE;QAChE,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,GAAQ,sBAAsB;CAWhC,CAAC;AAIF;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CA4E7D"}
|
package/dist/identity/index.js
CHANGED
|
@@ -2,73 +2,57 @@
|
|
|
2
2
|
* The managed `identity.ts` declaration primitive.
|
|
3
3
|
*
|
|
4
4
|
* A project's root `identity.ts` exports a named `identity` created with
|
|
5
|
-
* `defineIdentity(...)
|
|
6
|
-
*
|
|
7
|
-
* scoping and downstream credentials.
|
|
5
|
+
* `defineIdentity(...)`. The compiler discovers it, generates the custom-auth
|
|
6
|
+
* handler, and wires thread/memory scoping and downstream credentials.
|
|
8
7
|
*
|
|
9
8
|
* This module is pure authoring-time config construction plus eager validation —
|
|
10
|
-
* it has no runtime dependency (the `
|
|
9
|
+
* it has no runtime dependency (the `auth.*` helpers return plain data).
|
|
11
10
|
*/
|
|
11
|
+
import { userClaimName } from "./claims.js";
|
|
12
|
+
import { isSingleCredentialResolver } from "./credential-resolvers.js";
|
|
13
|
+
import { normalizeIdentity } from "./options.js";
|
|
12
14
|
import { supabaseProvider } from "./supabase.js";
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
tenancy: "single",
|
|
17
|
-
scoping: { threads: "actor", memory: "actor", credentials: "actor" },
|
|
18
|
-
},
|
|
19
|
-
"multi-tenant-saas": {
|
|
20
|
-
ingress: { http: "trusted_backend" },
|
|
21
|
-
tenancy: "multi",
|
|
22
|
-
scoping: { threads: "actor", memory: "tenant", credentials: "agent" },
|
|
23
|
-
},
|
|
24
|
-
"shared-bot": {
|
|
25
|
-
ingress: { http: "trusted_backend" },
|
|
26
|
-
tenancy: "single",
|
|
27
|
-
scoping: { threads: "channel", memory: "actor", credentials: "agent" },
|
|
28
|
-
},
|
|
29
|
-
"internal-tool": {
|
|
30
|
-
ingress: { http: "trusted_backend" },
|
|
31
|
-
tenancy: "single",
|
|
32
|
-
scoping: { threads: "actor", memory: "actor", credentials: "agent" },
|
|
33
|
-
},
|
|
34
|
-
service: {
|
|
35
|
-
ingress: { http: "trusted_backend" },
|
|
36
|
-
tenancy: "single",
|
|
37
|
-
scoping: { memory: "agent", credentials: "agent" },
|
|
38
|
-
},
|
|
39
|
-
};
|
|
15
|
+
export { normalizeGroups, organizationClaimName, userClaimName, } from "./claims.js";
|
|
16
|
+
export { normalizeIdentity } from "./options.js";
|
|
17
|
+
export { credentialTargetNames, isSingleCredentialResolver, } from "./credential-resolvers.js";
|
|
40
18
|
/**
|
|
41
19
|
* Declare the identity contract for the deployment.
|
|
42
20
|
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
21
|
+
* The common case takes no arguments — a backend you operate asserts the caller,
|
|
22
|
+
* and each caller gets private threads and memory:
|
|
23
|
+
*
|
|
24
|
+
* ```ts
|
|
25
|
+
* export const identity = defineIdentity();
|
|
26
|
+
* ```
|
|
27
|
+
*
|
|
28
|
+
* Otherwise describe how callers authenticate and what the isolation boundary
|
|
29
|
+
* is; `scope` accepts per-axis overrides when a single boundary does not fit:
|
|
30
|
+
*
|
|
31
|
+
* ```ts
|
|
32
|
+
* export const identity = defineIdentity({
|
|
33
|
+
* auth: auth.auth0({ domain: "acme.us.auth0.com" }),
|
|
34
|
+
* scope: "organization",
|
|
35
|
+
* });
|
|
36
|
+
* ```
|
|
45
37
|
*/
|
|
46
|
-
export
|
|
38
|
+
export function defineIdentity(options = {}) {
|
|
39
|
+
const config = normalizeIdentity(options);
|
|
47
40
|
validateIdentity(config);
|
|
48
41
|
return { kind: "identity", config };
|
|
49
|
-
}
|
|
50
|
-
preset(name, overrides) {
|
|
51
|
-
const base = PRESETS[name];
|
|
52
|
-
if (base === undefined) {
|
|
53
|
-
throw new Error(`defineIdentity.preset(...) unknown preset "${String(name)}". ` +
|
|
54
|
-
`Valid presets: ${Object.keys(PRESETS).join(", ")}.`);
|
|
55
|
-
}
|
|
56
|
-
return defineIdentity(deepMerge(base, overrides));
|
|
57
|
-
},
|
|
58
|
-
});
|
|
42
|
+
}
|
|
59
43
|
/**
|
|
60
|
-
*
|
|
61
|
-
* Each returns a plain provider object you can
|
|
62
|
-
* there is no new runtime surface.
|
|
44
|
+
* Validated-token auth providers — authoring-time sugar over
|
|
45
|
+
* {@link ValidatedTokenProvider}. Each returns a plain provider object you can
|
|
46
|
+
* spread-and-override, so there is no new runtime surface.
|
|
63
47
|
*/
|
|
64
|
-
export const
|
|
48
|
+
export const auth = {
|
|
65
49
|
auth0({ domain, audience, }) {
|
|
66
50
|
return {
|
|
67
51
|
issuer: `https://${domain}/`,
|
|
68
52
|
jwks: `https://${domain}/.well-known/jwks.json`,
|
|
69
53
|
...(audience ? { audience } : {}),
|
|
70
54
|
algorithms: ["RS256"],
|
|
71
|
-
claims: {
|
|
55
|
+
claims: { user: "sub", organization: "org_id", groups: "groups" },
|
|
72
56
|
};
|
|
73
57
|
},
|
|
74
58
|
clerk({ domain }) {
|
|
@@ -76,7 +60,7 @@ export const providers = {
|
|
|
76
60
|
issuer: `https://${domain}`,
|
|
77
61
|
jwks: `https://${domain}/.well-known/jwks.json`,
|
|
78
62
|
algorithms: ["RS256"],
|
|
79
|
-
claims: {
|
|
63
|
+
claims: { user: "sub" },
|
|
80
64
|
};
|
|
81
65
|
},
|
|
82
66
|
okta({ domain, audience, }) {
|
|
@@ -85,7 +69,7 @@ export const providers = {
|
|
|
85
69
|
jwks: `https://${domain}/oauth2/v1/keys`,
|
|
86
70
|
...(audience ? { audience } : {}),
|
|
87
71
|
algorithms: ["RS256"],
|
|
88
|
-
claims: {
|
|
72
|
+
claims: { user: "sub" },
|
|
89
73
|
};
|
|
90
74
|
},
|
|
91
75
|
cognito({ userPoolId, region, }) {
|
|
@@ -94,7 +78,7 @@ export const providers = {
|
|
|
94
78
|
issuer,
|
|
95
79
|
jwks: `${issuer}/.well-known/jwks.json`,
|
|
96
80
|
algorithms: ["RS256"],
|
|
97
|
-
claims: {
|
|
81
|
+
claims: { user: "sub" },
|
|
98
82
|
};
|
|
99
83
|
},
|
|
100
84
|
entra({ tenantId, audience, }) {
|
|
@@ -103,7 +87,7 @@ export const providers = {
|
|
|
103
87
|
jwks: `https://login.microsoftonline.com/${tenantId}/discovery/v2.0/keys`,
|
|
104
88
|
...(audience ? { audience } : {}),
|
|
105
89
|
algorithms: ["RS256"],
|
|
106
|
-
claims: {
|
|
90
|
+
claims: { user: "oid", groups: "groups" },
|
|
107
91
|
};
|
|
108
92
|
},
|
|
109
93
|
google({ audience } = {}) {
|
|
@@ -112,7 +96,7 @@ export const providers = {
|
|
|
112
96
|
jwks: "https://www.googleapis.com/oauth2/v3/certs",
|
|
113
97
|
...(audience ? { audience } : {}),
|
|
114
98
|
algorithms: ["RS256"],
|
|
115
|
-
claims: {
|
|
99
|
+
claims: { user: "sub", email: "email" },
|
|
116
100
|
};
|
|
117
101
|
},
|
|
118
102
|
/** @see {@link supabaseProvider} */
|
|
@@ -126,7 +110,7 @@ export const providers = {
|
|
|
126
110
|
discover: true,
|
|
127
111
|
algorithms: ["RS256"],
|
|
128
112
|
...(audience ? { audience } : {}),
|
|
129
|
-
claims: {
|
|
113
|
+
claims: { user: "sub" },
|
|
130
114
|
};
|
|
131
115
|
},
|
|
132
116
|
/**
|
|
@@ -144,82 +128,81 @@ export const providers = {
|
|
|
144
128
|
"User-Agent": "managed-deepagents-github-example",
|
|
145
129
|
},
|
|
146
130
|
},
|
|
147
|
-
claims: {
|
|
131
|
+
claims: { user: "login", email: "email" },
|
|
148
132
|
};
|
|
149
133
|
},
|
|
150
134
|
/** MDA-issued anonymous/guest tokens. */
|
|
151
|
-
guest({ ttl,
|
|
135
|
+
guest({ ttl, userPrefix, } = {}) {
|
|
152
136
|
return {
|
|
153
137
|
id: "guest",
|
|
154
138
|
guest: {
|
|
155
139
|
issue: true,
|
|
156
140
|
...(ttl ? { ttl } : {}),
|
|
157
|
-
...(
|
|
141
|
+
...(userPrefix ? { userPrefix } : {}),
|
|
158
142
|
},
|
|
159
|
-
claims: {
|
|
143
|
+
claims: { user: "sub" },
|
|
160
144
|
};
|
|
161
145
|
},
|
|
162
146
|
};
|
|
163
|
-
const MANAGED_CREDENTIAL_MODES = ["agent", "
|
|
147
|
+
const MANAGED_CREDENTIAL_MODES = ["agent", "user", "none"];
|
|
164
148
|
/**
|
|
165
149
|
* Eagerly reject illegal identity configs at authoring time so misconfig never
|
|
166
150
|
* reaches the compiler or runtime.
|
|
167
151
|
*/
|
|
168
152
|
export function validateIdentity(config) {
|
|
169
|
-
const
|
|
170
|
-
const ingress = provided.ingress;
|
|
153
|
+
const ingress = config.ingress;
|
|
171
154
|
if (ingress === null || typeof ingress !== "object" || !("http" in ingress)) {
|
|
172
|
-
throw new Error("defineIdentity(...) requires an `ingress.http` value ('
|
|
155
|
+
throw new Error("defineIdentity(...) requires an `ingress.http` value ('backend' or a validated_token config).");
|
|
173
156
|
}
|
|
174
|
-
const
|
|
175
|
-
if (
|
|
176
|
-
throw new Error('defineIdentity(...) requires `
|
|
157
|
+
const organizations = config.organizations;
|
|
158
|
+
if (organizations !== "optional" && organizations !== "required") {
|
|
159
|
+
throw new Error('defineIdentity(...) requires `organizations` to be "optional" or "required".');
|
|
177
160
|
}
|
|
178
|
-
const
|
|
179
|
-
if (
|
|
180
|
-
throw new Error("defineIdentity(...) requires a `
|
|
161
|
+
const scope = config.scope;
|
|
162
|
+
if (scope === null || typeof scope !== "object") {
|
|
163
|
+
throw new Error("defineIdentity(...) requires a `scope` object.");
|
|
181
164
|
}
|
|
182
|
-
if (typeof
|
|
183
|
-
throw new Error('defineIdentity(...) requires `
|
|
165
|
+
if (typeof scope.memory !== "string") {
|
|
166
|
+
throw new Error('defineIdentity(...) requires `scope.memory` (one of "user" | "organization" | "agent" | "none").');
|
|
184
167
|
}
|
|
185
|
-
//
|
|
186
|
-
if (
|
|
187
|
-
const
|
|
188
|
-
if (
|
|
189
|
-
throw new Error(`defineIdentity(...) cannot use "
|
|
168
|
+
// An organization-scoped axis is only meaningful when one is always present.
|
|
169
|
+
if (organizations === "optional") {
|
|
170
|
+
const organizationAxes = ["threads", "memory", "credentials"].filter((axis) => scope[axis] === "organization");
|
|
171
|
+
if (organizationAxes.length > 0) {
|
|
172
|
+
throw new Error(`defineIdentity(...) cannot use "organization" scope (${organizationAxes.join(", ")}) with organizations: "optional". Set organizations: "required".`);
|
|
190
173
|
}
|
|
191
174
|
}
|
|
192
175
|
// Credentials axis must agree with the presence of a resolver/endpoint.
|
|
193
|
-
const hasResolver =
|
|
194
|
-
const credentialsMode =
|
|
176
|
+
const hasResolver = config.credentials !== undefined;
|
|
177
|
+
const credentialsMode = scope.credentials;
|
|
195
178
|
if (credentialsMode === "custom" && !hasResolver) {
|
|
196
|
-
throw new Error('defineIdentity(...) with
|
|
179
|
+
throw new Error('defineIdentity(...) with scope.credentials: "custom" requires a `credentials` resolver or endpoint.');
|
|
197
180
|
}
|
|
198
181
|
if (hasResolver &&
|
|
199
182
|
typeof credentialsMode === "string" &&
|
|
200
183
|
MANAGED_CREDENTIAL_MODES.includes(credentialsMode)) {
|
|
201
|
-
throw new Error(`defineIdentity(...) provides a \`credentials\` resolver but
|
|
202
|
-
'Set
|
|
184
|
+
throw new Error(`defineIdentity(...) provides a \`credentials\` resolver but scope.credentials is "${credentialsMode}". ` +
|
|
185
|
+
'Set scope.credentials: "custom" (or remove the resolver).');
|
|
203
186
|
}
|
|
204
187
|
if (hasResolver) {
|
|
205
|
-
validateCredentialResolver(
|
|
188
|
+
validateCredentialResolver(config.credentials);
|
|
206
189
|
}
|
|
207
|
-
// validated_token ingress needs at least one provider, each with claims.
|
|
190
|
+
// validated_token ingress needs at least one provider, each with claims.user.
|
|
208
191
|
const http = ingress.http;
|
|
209
192
|
if (isValidatedToken(http)) {
|
|
210
193
|
validateValidatedToken(http);
|
|
211
194
|
}
|
|
212
|
-
else if (http !== "
|
|
213
|
-
throw new Error('defineIdentity(...) `ingress.http` must be "
|
|
195
|
+
else if (http !== "backend") {
|
|
196
|
+
throw new Error('defineIdentity(...) `ingress.http` must be "backend" or a { mode: "validated_token", providers: [...] } config.');
|
|
214
197
|
}
|
|
215
|
-
if (
|
|
216
|
-
validateConnectProviders(
|
|
198
|
+
if (config.connect !== undefined) {
|
|
199
|
+
validateConnectProviders(config.connect);
|
|
217
200
|
}
|
|
218
201
|
}
|
|
219
202
|
function validateConnectProviders(connect) {
|
|
220
203
|
if (!Array.isArray(connect)) {
|
|
221
204
|
throw new Error("defineIdentity(...) `connect` must be an array of identity connect providers " +
|
|
222
|
-
"(e.g. `[github
|
|
205
|
+
"(e.g. `[connect.github(), connect.slack()]`).");
|
|
223
206
|
}
|
|
224
207
|
for (const [index, entry] of connect.entries()) {
|
|
225
208
|
if (entry === null || typeof entry !== "object") {
|
|
@@ -262,9 +245,8 @@ function validateValidatedToken(http) {
|
|
|
262
245
|
}
|
|
263
246
|
if (typeof provider.claims !== "object" ||
|
|
264
247
|
provider.claims === null ||
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
throw new Error(`defineIdentity(...) validated_token provider ${label} requires \`claims.actor\`.`);
|
|
248
|
+
!userClaimName(provider.claims)) {
|
|
249
|
+
throw new Error(`defineIdentity(...) validated_token provider ${label} requires \`claims.user\`.`);
|
|
268
250
|
}
|
|
269
251
|
if (multiple && typeof provider.id !== "string") {
|
|
270
252
|
throw new Error("defineIdentity(...) each validated_token provider requires an `id` when more than one is configured.");
|
|
@@ -281,52 +263,37 @@ function validateValidatedToken(http) {
|
|
|
281
263
|
}
|
|
282
264
|
function validateCredentialResolver(credentials) {
|
|
283
265
|
if (credentials === null || typeof credentials !== "object") {
|
|
284
|
-
throw new Error("defineIdentity(...) `credentials` must be a resolver ({ resolve })
|
|
266
|
+
throw new Error("defineIdentity(...) `credentials` must be a resolver ({ resolve }), an endpoint " +
|
|
267
|
+
"({ endpoint }), or a map of target name to either.");
|
|
285
268
|
}
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
cfg.endpoint !== null &&
|
|
290
|
-
typeof cfg.endpoint.url === "string";
|
|
291
|
-
if (hasResolveFn === hasEndpoint) {
|
|
292
|
-
throw new Error("defineIdentity(...) `credentials` requires exactly one of `resolve` (function) or `endpoint` ({ url }).");
|
|
269
|
+
if (isSingleCredentialResolver(credentials)) {
|
|
270
|
+
validateOneCredentialResolver(credentials, "`credentials`");
|
|
271
|
+
return;
|
|
293
272
|
}
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
typeof value !== "function");
|
|
300
|
-
}
|
|
301
|
-
function deepMerge(base, patch) {
|
|
302
|
-
if (patch === undefined)
|
|
303
|
-
return structuredCloneConfig(base);
|
|
304
|
-
if (!isPlainObject(base) || !isPlainObject(patch)) {
|
|
305
|
-
return patch;
|
|
273
|
+
// Per-target map. An empty one resolves nothing, which is always a mistake.
|
|
274
|
+
const entries = Object.entries(credentials);
|
|
275
|
+
if (entries.length === 0) {
|
|
276
|
+
throw new Error("defineIdentity(...) `credentials` map must declare at least one target, " +
|
|
277
|
+
"e.g. `{ github: credentials.github({ … }) }`.");
|
|
306
278
|
}
|
|
307
|
-
const
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
out[key] =
|
|
313
|
-
isPlainObject(current) && isPlainObject(value)
|
|
314
|
-
? deepMerge(current, value)
|
|
315
|
-
: value;
|
|
279
|
+
for (const [name, entry] of entries) {
|
|
280
|
+
if (!name.trim()) {
|
|
281
|
+
throw new Error("defineIdentity(...) `credentials` map keys must be non-empty target names.");
|
|
282
|
+
}
|
|
283
|
+
validateOneCredentialResolver(entry, `\`credentials.${name}\``);
|
|
316
284
|
}
|
|
317
|
-
return out;
|
|
318
285
|
}
|
|
319
|
-
function
|
|
320
|
-
if (
|
|
321
|
-
|
|
286
|
+
function validateOneCredentialResolver(entry, label) {
|
|
287
|
+
if (entry === null || typeof entry !== "object") {
|
|
288
|
+
throw new Error(`defineIdentity(...) ${label} must be a resolver ({ resolve }) or endpoint ({ endpoint }) config.`);
|
|
322
289
|
}
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
290
|
+
const cfg = entry;
|
|
291
|
+
const hasResolveFn = typeof cfg.resolve === "function";
|
|
292
|
+
const hasEndpoint = typeof cfg.endpoint === "object" &&
|
|
293
|
+
cfg.endpoint !== null &&
|
|
294
|
+
typeof cfg.endpoint.url === "string";
|
|
295
|
+
if (hasResolveFn === hasEndpoint) {
|
|
296
|
+
throw new Error(`defineIdentity(...) ${label} requires exactly one of \`resolve\` (function) or \`endpoint\` ({ url }).`);
|
|
329
297
|
}
|
|
330
|
-
return value;
|
|
331
298
|
}
|
|
332
299
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/identity/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/identity/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAwB,MAAM,cAAc,CAAC;AACvE,OAAO,EAAgC,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAU/E,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,aAAa,GACd,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAQjD,OAAO,EACL,qBAAqB,EACrB,0BAA0B,GAC3B,MAAM,2BAA2B,CAAC;AA6BnC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,cAAc,CAC5B,OAAO,GAAoB,EAAE;IAE7B,MAAM,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC1C,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACzB,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;AACtC,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG;IAClB,KAAK,CAAC,EACJ,MAAM,EACN,QAAQ,GAIT;QACC,OAAO;YACL,MAAM,EAAE,WAAW,MAAM,GAAG;YAC5B,IAAI,EAAE,WAAW,MAAM,wBAAwB;YAC/C,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjC,UAAU,EAAE,CAAC,OAAO,CAAC;YACrB,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;SAClE,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,EAAE,MAAM,EAAsB;QAClC,OAAO;YACL,MAAM,EAAE,WAAW,MAAM,EAAE;YAC3B,IAAI,EAAE,WAAW,MAAM,wBAAwB;YAC/C,UAAU,EAAE,CAAC,OAAO,CAAC;YACrB,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;SACxB,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,EACH,MAAM,EACN,QAAQ,GAIT;QACC,OAAO;YACL,MAAM,EAAE,WAAW,MAAM,EAAE;YAC3B,IAAI,EAAE,WAAW,MAAM,iBAAiB;YACxC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjC,UAAU,EAAE,CAAC,OAAO,CAAC;YACrB,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;SACxB,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,EACN,UAAU,EACV,MAAM,GAIP;QACC,MAAM,MAAM,GAAG,uBAAuB,MAAM,kBAAkB,UAAU,EAAE,CAAC;QAC3E,OAAO;YACL,MAAM;YACN,IAAI,EAAE,GAAG,MAAM,wBAAwB;YACvC,UAAU,EAAE,CAAC,OAAO,CAAC;YACrB,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;SACxB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,EACJ,QAAQ,EACR,QAAQ,GAIT;QACC,OAAO;YACL,MAAM,EAAE,qCAAqC,QAAQ,OAAO;YAC5D,IAAI,EAAE,qCAAqC,QAAQ,sBAAsB;YACzE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjC,UAAU,EAAE,CAAC,OAAO,CAAC;YACrB,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;SAC1C,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,EAAE,QAAQ,EAAE,GAA0B,EAAE;QAC7C,OAAO;YACL,MAAM,EAAE,6BAA6B;YACrC,IAAI,EAAE,4CAA4C;YAClD,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjC,UAAU,EAAE,CAAC,OAAO,CAAC;YACrB,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE;SACxC,CAAC;IACJ,CAAC;IAED,oCAAoC;IACpC,QAAQ,CAAC,OAAgC;QACvC,OAAO,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAED,mEAAmE;IACnE,IAAI,CAAC,EACH,MAAM,EACN,QAAQ,GAIT;QACC,OAAO;YACL,MAAM;YACN,QAAQ,EAAE,IAAI;YACd,UAAU,EAAE,CAAC,OAAO,CAAC;YACrB,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjC,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;SACxB,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,MAAM;QACJ,OAAO;YACL,EAAE,EAAE,QAAQ;YACZ,UAAU,EAAE;gBACV,GAAG,EAAE,6BAA6B;gBAClC,OAAO,EAAE;oBACP,MAAM,EAAE,6BAA6B;oBACrC,sBAAsB,EAAE,YAAY;oBACpC,YAAY,EAAE,mCAAmC;iBAClD;aACF;YACD,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;SAC1C,CAAC;IACJ,CAAC;IAED,yCAAyC;IACzC,KAAK,CAAC,EACJ,GAAG,EACH,UAAU,GACX,GAIG,EAAE;QACJ,OAAO;YACL,EAAE,EAAE,OAAO;YACX,KAAK,EAAE;gBACL,KAAK,EAAE,IAAI;gBACX,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvB,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACtC;YACD,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;SACxB,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,MAAM,wBAAwB,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAU,CAAC;AAEpE;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAsB;IACrD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAyC,CAAC;IACjE,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC,EAAE,CAAC;QAC5E,MAAM,IAAI,KAAK,CACb,+FAA+F,CAChG,CAAC;IACJ,CAAC;IAED,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;IAC3C,IAAI,aAAa,KAAK,UAAU,IAAI,aAAa,KAAK,UAAU,EAAE,CAAC;QACjE,MAAM,IAAI,KAAK,CACb,8EAA8E,CAC/E,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,KAER,CAAC;IACd,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IACD,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CACb,kGAAkG,CACnG,CAAC;IACJ,CAAC;IAED,6EAA6E;IAC7E,IAAI,aAAa,KAAK,UAAU,EAAE,CAAC;QACjC,MAAM,gBAAgB,GACpB,CAAC,SAAS,EAAE,QAAQ,EAAE,aAAa,CACpC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,cAAc,CAAC,CAAC;QACnD,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CACb,wDAAwD,gBAAgB,CAAC,IAAI,CAC3E,IAAI,CACL,kEAAkE,CACpE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,wEAAwE;IACxE,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,KAAK,SAAS,CAAC;IACrD,MAAM,eAAe,GAAG,KAAK,CAAC,WAAW,CAAC;IAC1C,IAAI,eAAe,KAAK,QAAQ,IAAI,CAAC,WAAW,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CACb,qGAAqG,CACtG,CAAC;IACJ,CAAC;IACD,IACE,WAAW;QACX,OAAO,eAAe,KAAK,QAAQ;QAClC,wBAA8C,CAAC,QAAQ,CAAC,eAAe,CAAC,EACzE,CAAC;QACD,MAAM,IAAI,KAAK,CACb,qFAAqF,eAAe,KAAK;YACvG,2DAA2D,CAC9D,CAAC;IACJ,CAAC;IACD,IAAI,WAAW,EAAE,CAAC;QAChB,0BAA0B,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACjD,CAAC;IAED,8EAA8E;IAC9E,MAAM,IAAI,GAAI,OAA6B,CAAC,IAAI,CAAC;IACjD,IAAI,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3B,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;SAAM,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CACb,iHAAiH,CAClH,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACjC,wBAAwB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;AACH,CAAC;AAED,SAAS,wBAAwB,CAAC,OAAgB;IAChD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CACb,+EAA+E;YAC7E,+CAA+C,CAClD,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QAC/C,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAChD,MAAM,IAAI,KAAK,CACb,+BAA+B,KAAK,8CAA8C,CACnF,CAAC;QACJ,CAAC;QACD,MAAM,QAAQ,GAAG,KAQhB,CAAC;QACF,IAAI,OAAO,QAAQ,CAAC,EAAE,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;YAC3D,MAAM,IAAI,KAAK,CACb,+BAA+B,KAAK,uCAAuC,CAC5E,CAAC;QACJ,CAAC;QACD,KAAK,MAAM,MAAM,IAAI;YACnB,aAAa;YACb,QAAQ;YACR,gBAAgB;YAChB,kBAAkB;YAClB,QAAQ;YACR,qBAAqB;SACb,EAAE,CAAC;YACX,IAAI,OAAO,QAAQ,CAAC,MAAM,CAAC,KAAK,UAAU,EAAE,CAAC;gBAC3C,MAAM,IAAI,KAAK,CACb,+BAA+B,KAAK,OAAO,QAAQ,CAAC,EAAE,iBAAiB,MAAM,KAAK,CACnF,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAa;IACrC,OAAO,CACL,OAAO,IAAI,KAAK,QAAQ;QACxB,IAAI,KAAK,IAAI;QACZ,IAA2B,CAAC,IAAI,KAAK,iBAAiB,CACxD,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAAC,IAA2B;IACzD,MAAM,IAAI,GAAI,IAAgC,CAAC,SAAS,CAAC;IACzD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CACb,oFAAoF,CACrF,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IACjC,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;QAC5C,MAAM,QAAQ,GAAG,KAA+B,CAAC;QACjD,MAAM,KAAK,GAAG,QAAQ,EAAE,EAAE,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1C,IAAI,QAAQ,KAAK,IAAI,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACtD,MAAM,IAAI,KAAK,CACb,gDAAgD,KAAK,qBAAqB,CAC3E,CAAC;QACJ,CAAC;QACD,IACE,OAAO,QAAQ,CAAC,MAAM,KAAK,QAAQ;YACnC,QAAQ,CAAC,MAAM,KAAK,IAAI;YACxB,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,EAC/B,CAAC;YACD,MAAM,IAAI,KAAK,CACb,gDAAgD,KAAK,4BAA4B,CAClF,CAAC;QACJ,CAAC;QACD,IAAI,QAAQ,IAAI,OAAO,QAAQ,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;YAChD,MAAM,IAAI,KAAK,CACb,sGAAsG,CACvG,CAAC;QACJ,CAAC;QACD,MAAM,WAAW,GACf,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ;YACjC,QAAQ,CAAC,QAAQ,KAAK,IAAI;YAC1B,OAAO,QAAQ,CAAC,YAAY,KAAK,QAAQ;YACzC,QAAQ,CAAC,UAAU,KAAK,SAAS;YACjC,QAAQ,CAAC,KAAK,KAAK,SAAS,CAAC;QAC/B,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CACb,gDAAgD,KAAK,8FAA8F,CACpJ,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,0BAA0B,CAAC,WAAoB;IACtD,IAAI,WAAW,KAAK,IAAI,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CACb,kFAAkF;YAChF,oDAAoD,CACvD,CAAC;IACJ,CAAC;IACD,IACE,0BAA0B,CACxB,WAA6D,CAC9D,EACD,CAAC;QACD,6BAA6B,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;QAC5D,OAAO;IACT,CAAC;IACD,4EAA4E;IAC5E,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,WAAsC,CAAC,CAAC;IACvE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,0EAA0E;YACxE,+CAA+C,CAClD,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CACb,4EAA4E,CAC7E,CAAC;QACJ,CAAC;QACD,6BAA6B,CAAC,KAAK,EAAE,iBAAiB,IAAI,IAAI,CAAC,CAAC;IAClE,CAAC;AACH,CAAC;AAED,SAAS,6BAA6B,CAAC,KAAc,EAAE,KAAa;IAClE,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CACb,uBAAuB,KAAK,sEAAsE,CACnG,CAAC;IACJ,CAAC;IACD,MAAM,GAAG,GAAG,KAAkD,CAAC;IAC/D,MAAM,YAAY,GAAG,OAAO,GAAG,CAAC,OAAO,KAAK,UAAU,CAAC;IACvD,MAAM,WAAW,GACf,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ;QAChC,GAAG,CAAC,QAAQ,KAAK,IAAI;QACrB,OAAQ,GAAG,CAAC,QAA8B,CAAC,GAAG,KAAK,QAAQ,CAAC;IAC9D,IAAI,YAAY,KAAK,WAAW,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CACb,uBAAuB,KAAK,4EAA4E,CACzG,CAAC;IACJ,CAAC;AACH,CAAC"}
|