managed-deepagents 0.6.2-dev.8 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +34 -16
- package/dist/agent-auth.d.ts +167 -0
- package/dist/agent-auth.d.ts.map +1 -0
- package/dist/agent-auth.js +520 -0
- package/dist/agent-auth.js.map +1 -0
- package/dist/channels/manifest.d.ts +4 -0
- package/dist/channels/manifest.d.ts.map +1 -1
- package/dist/channels/response-format.d.ts +1 -1
- package/dist/channels/response-format.d.ts.map +1 -1
- package/dist/channels/response-format.js +1 -1
- package/dist/channels/response-format.js.map +1 -1
- package/dist/channels/trigger/http.d.ts +8 -0
- package/dist/channels/trigger/http.d.ts.map +1 -1
- package/dist/channels/trigger/http.js +56 -6
- package/dist/channels/trigger/http.js.map +1 -1
- package/dist/channels/trigger/identity-context.d.ts +47 -0
- package/dist/channels/trigger/identity-context.d.ts.map +1 -0
- package/dist/channels/trigger/identity-context.js +171 -0
- package/dist/channels/trigger/identity-context.js.map +1 -0
- package/dist/channels/trigger/types.d.ts +10 -0
- package/dist/channels/trigger/types.d.ts.map +1 -1
- package/dist/channels/trigger/types.js +5 -0
- package/dist/channels/trigger/types.js.map +1 -1
- package/dist/connection-authorization.d.ts +17 -0
- package/dist/connection-authorization.d.ts.map +1 -0
- package/dist/connection-authorization.js +46 -0
- package/dist/connection-authorization.js.map +1 -0
- package/dist/connections.d.ts +98 -0
- package/dist/connections.d.ts.map +1 -0
- package/dist/connections.js +339 -0
- package/dist/connections.js.map +1 -0
- package/dist/connectors/mcp/index.d.ts +36 -95
- package/dist/connectors/mcp/index.d.ts.map +1 -1
- package/dist/connectors/mcp/index.js +266 -57
- package/dist/connectors/mcp/index.js.map +1 -1
- package/dist/connectors/mcp/schema.d.ts +17 -0
- package/dist/connectors/mcp/schema.d.ts.map +1 -0
- package/dist/connectors/mcp/schema.js +122 -0
- package/dist/connectors/mcp/schema.js.map +1 -0
- package/dist/connectors/mcp/types.d.ts +81 -0
- package/dist/connectors/mcp/types.d.ts.map +1 -0
- package/dist/connectors/mcp/types.js +2 -0
- package/dist/connectors/mcp/types.js.map +1 -0
- package/dist/connectors/tool-selection.d.ts +10 -19
- package/dist/connectors/tool-selection.d.ts.map +1 -1
- package/dist/connectors/tool-selection.js +33 -59
- package/dist/connectors/tool-selection.js.map +1 -1
- package/dist/credential-gate.d.ts +28 -0
- package/dist/credential-gate.d.ts.map +1 -0
- package/dist/credential-gate.js +179 -0
- package/dist/credential-gate.js.map +1 -0
- package/dist/extension.d.ts +3 -3
- package/dist/extension.js +2 -2
- package/dist/identity/index.d.ts +1 -1
- package/dist/identity/index.d.ts.map +1 -1
- package/dist/identity/index.js.map +1 -1
- package/dist/identity/types.d.ts +102 -5
- package/dist/identity/types.d.ts.map +1 -1
- package/dist/index.d.ts +9 -34
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -6
- package/dist/index.js.map +1 -1
- package/dist/ingress/index.d.ts +10 -2
- package/dist/ingress/index.d.ts.map +1 -1
- package/dist/ingress/index.js +18 -9
- package/dist/ingress/index.js.map +1 -1
- package/dist/namespaces.d.ts +12 -29
- package/dist/namespaces.d.ts.map +1 -1
- package/dist/namespaces.js +26 -9
- package/dist/namespaces.js.map +1 -1
- package/dist/runtime/auth.d.ts +76 -5
- package/dist/runtime/auth.d.ts.map +1 -1
- package/dist/runtime/auth.js +114 -6
- package/dist/runtime/auth.js.map +1 -1
- package/dist/runtime/http.d.ts +1 -1
- package/dist/runtime/http.d.ts.map +1 -1
- package/dist/runtime/http.js.map +1 -1
- package/dist/runtime/identity-runtime.d.ts +65 -5
- package/dist/runtime/identity-runtime.d.ts.map +1 -1
- package/dist/runtime/identity-runtime.js +164 -0
- package/dist/runtime/identity-runtime.js.map +1 -1
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +13 -8
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/managed-middleware.d.ts +2 -2
- package/dist/runtime/managed-middleware.js +6 -6
- package/dist/runtime/managed-tools.d.ts +19 -15
- package/dist/runtime/managed-tools.d.ts.map +1 -1
- package/dist/runtime/managed-tools.js +14 -13
- package/dist/runtime/managed-tools.js.map +1 -1
- package/dist/runtime/types.d.ts +2 -2
- package/dist/runtime/validated-token.d.ts.map +1 -1
- package/dist/runtime/validated-token.js +23 -0
- package/dist/runtime/validated-token.js.map +1 -1
- package/package.json +8 -8
- package/dist/connectors/mcp/load.d.ts +0 -12
- package/dist/connectors/mcp/load.d.ts.map +0 -1
- package/dist/connectors/mcp/load.js +0 -122
- package/dist/connectors/mcp/load.js.map +0 -1
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Tool-name selection, shared by the connectors that load their tools from a
|
|
3
3
|
* remote MCP server.
|
|
4
4
|
*
|
|
5
|
-
* `
|
|
5
|
+
* `defineMcp` selects by raw tool name across arbitrary servers. A name in
|
|
6
6
|
* `includeTools`/`excludeTools` that no loaded tool answers to is an error
|
|
7
7
|
* naming what *was* available, so a typo fails the deployment instead of
|
|
8
8
|
* silently dropping a tool the agent was meant to have.
|
|
@@ -20,27 +20,18 @@ export interface ToolSelection<TTool extends string = string> {
|
|
|
20
20
|
/** Tool names to hide. Applied after {@link ToolSelection.includeTools}. */
|
|
21
21
|
excludeTools?: TTool[];
|
|
22
22
|
}
|
|
23
|
-
/**
|
|
24
|
-
* Shared authoring options for connectors that load remote tools.
|
|
25
|
-
*/
|
|
26
|
-
export interface ToolSelectionConnectorConfig<TTool extends string = string> extends ToolSelection<TTool> {
|
|
27
|
-
/** Timeout for each tool call (milliseconds on the TypeScript runtime). */
|
|
28
|
-
defaultToolTimeout?: number;
|
|
29
|
-
}
|
|
30
23
|
/** Tool names: non-empty, no duplicates within one list. */
|
|
31
|
-
export declare const
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
defaultToolTimeout: z.ZodOptional<z.ZodNumber>;
|
|
35
|
-
};
|
|
36
|
-
/** Shared include/exclude overlap check for connector arg schemas. */
|
|
37
|
-
export declare function checkToolSelectionOverlap(ctx: {
|
|
24
|
+
export declare const optionalToolNameListSchema: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
25
|
+
export declare function appendToolSelectionOverlapIssue(ctx: {
|
|
26
|
+
value: unknown;
|
|
38
27
|
issues: {
|
|
39
|
-
push(issue:
|
|
28
|
+
push: (issue: {
|
|
29
|
+
code: "custom";
|
|
30
|
+
input: unknown;
|
|
31
|
+
message: string;
|
|
32
|
+
}) => void;
|
|
40
33
|
};
|
|
41
|
-
|
|
42
|
-
}, value: ToolSelection): void;
|
|
43
|
-
export declare function toolSelectionConnectorSchema<TArgs, TInput>(extra?: z.ZodRawShape): z.ZodType<TArgs, TInput>;
|
|
34
|
+
}): void;
|
|
44
35
|
/** Read the name a selection matches a loaded tool by. */
|
|
45
36
|
export type ToolNameReader = (tool: unknown) => string | undefined;
|
|
46
37
|
/** Read a loaded tool's own `name`. The default for connectors that don't rename. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-selection.d.ts","sourceRoot":"","sources":["../../src/connectors/tool-selection.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;GAKG;AACH,MAAM,WAAW,aAAa,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM;IAC1D,6DAA6D;IAC7D,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC;IACvB,4EAA4E;IAC5E,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC;CACxB;AAED
|
|
1
|
+
{"version":3,"file":"tool-selection.d.ts","sourceRoot":"","sources":["../../src/connectors/tool-selection.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;GAKG;AACH,MAAM,WAAW,aAAa,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM;IAC1D,6DAA6D;IAC7D,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC;IACvB,4EAA4E;IAC5E,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC;CACxB;AAED,4DAA4D;AAC5D,eAAO,MAAM,0BAA0B,wCAsB1B,CAAC;AAmBd,wBAAgB,+BAA+B,CAAC,GAAG,EAAE;IACnD,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE;QACN,IAAI,EAAE,CAAC,KAAK,EAAE;YAAE,IAAI,EAAE,QAAQ,CAAC;YAAC,KAAK,EAAE,OAAO,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,KAAK,IAAI,CAAC;KAC5E,CAAC;CACH,GAAG,IAAI,CAWP;AAED,0DAA0D;AAC1D,MAAM,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK,MAAM,GAAG,SAAS,CAAC;AAEnE,qFAAqF;AACrF,eAAO,MAAM,QAAQ,EAAE,cAGtB,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,aAAa,EACxB,KAAK,EAAE,SAAS,OAAO,EAAE,EACzB,QAAQ,GAAE,cAAyB,GAClC,OAAO,EAAE,CAwBX"}
|
|
@@ -2,79 +2,53 @@
|
|
|
2
2
|
* Tool-name selection, shared by the connectors that load their tools from a
|
|
3
3
|
* remote MCP server.
|
|
4
4
|
*
|
|
5
|
-
* `
|
|
5
|
+
* `defineMcp` selects by raw tool name across arbitrary servers. A name in
|
|
6
6
|
* `includeTools`/`excludeTools` that no loaded tool answers to is an error
|
|
7
7
|
* naming what *was* available, so a typo fails the deployment instead of
|
|
8
8
|
* silently dropping a tool the agent was meant to have.
|
|
9
9
|
*/
|
|
10
10
|
import { z } from "zod";
|
|
11
|
-
function nonEmpty(field) {
|
|
12
|
-
const message = `${field} must be a non-empty string`;
|
|
13
|
-
return z.string(message).refine((value) => value.trim().length > 0, message);
|
|
14
|
-
}
|
|
15
11
|
/** Tool names: non-empty, no duplicates within one list. */
|
|
16
|
-
export const
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
seen.add(name);
|
|
30
|
-
}
|
|
31
|
-
})
|
|
32
|
-
.optional(),
|
|
33
|
-
excludeTools: z
|
|
34
|
-
.array(nonEmpty("tool name"))
|
|
35
|
-
.check((ctx) => {
|
|
36
|
-
const seen = new Set();
|
|
37
|
-
for (const name of ctx.value) {
|
|
38
|
-
if (seen.has(name)) {
|
|
39
|
-
ctx.issues.push({
|
|
40
|
-
code: "custom",
|
|
41
|
-
input: ctx.value,
|
|
42
|
-
message: `contains duplicate tool name "${name}"`,
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
seen.add(name);
|
|
12
|
+
export const optionalToolNameListSchema = z
|
|
13
|
+
.array(z
|
|
14
|
+
.string("tool name must be a non-empty string")
|
|
15
|
+
.refine((name) => name.trim().length > 0, "tool name must be a non-empty string"))
|
|
16
|
+
.check((ctx) => {
|
|
17
|
+
const seen = new Set();
|
|
18
|
+
for (const name of ctx.value) {
|
|
19
|
+
if (seen.has(name)) {
|
|
20
|
+
ctx.issues.push({
|
|
21
|
+
code: "custom",
|
|
22
|
+
input: ctx.value,
|
|
23
|
+
message: `contains duplicate tool name "${name}"`,
|
|
24
|
+
});
|
|
46
25
|
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
};
|
|
54
|
-
/** Shared include/exclude overlap check for connector arg schemas. */
|
|
55
|
-
export function checkToolSelectionOverlap(ctx, value) {
|
|
56
|
-
const { includeTools, excludeTools } = value;
|
|
26
|
+
seen.add(name);
|
|
27
|
+
}
|
|
28
|
+
})
|
|
29
|
+
.optional();
|
|
30
|
+
function toolSelectionOverlapMessage(selection) {
|
|
31
|
+
const { includeTools, excludeTools } = selection;
|
|
57
32
|
const overlap = (includeTools ?? []).filter((name) => (excludeTools ?? []).includes(name));
|
|
58
|
-
if (overlap.length
|
|
33
|
+
if (overlap.length === 0) {
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
36
|
+
return `selects tool(s) in both \`includeTools\` and \`excludeTools\`: ${[
|
|
37
|
+
...new Set(overlap),
|
|
38
|
+
]
|
|
39
|
+
.sort()
|
|
40
|
+
.join(", ")}`;
|
|
41
|
+
}
|
|
42
|
+
export function appendToolSelectionOverlapIssue(ctx) {
|
|
43
|
+
const message = toolSelectionOverlapMessage(ctx.value);
|
|
44
|
+
if (message) {
|
|
59
45
|
ctx.issues.push({
|
|
60
46
|
code: "custom",
|
|
61
47
|
input: ctx.value,
|
|
62
|
-
message
|
|
63
|
-
...new Set(overlap),
|
|
64
|
-
]
|
|
65
|
-
.sort()
|
|
66
|
-
.join(", ")}`,
|
|
48
|
+
message,
|
|
67
49
|
});
|
|
68
50
|
}
|
|
69
51
|
}
|
|
70
|
-
export function toolSelectionConnectorSchema(extra = {}) {
|
|
71
|
-
return z
|
|
72
|
-
.strictObject({ ...toolSelectionConnectorFields, ...extra })
|
|
73
|
-
.check((ctx) => {
|
|
74
|
-
checkToolSelectionOverlap(ctx, ctx.value);
|
|
75
|
-
})
|
|
76
|
-
.prefault({});
|
|
77
|
-
}
|
|
78
52
|
/** Read a loaded tool's own `name`. The default for connectors that don't rename. */
|
|
79
53
|
export const toolName = (tool) => {
|
|
80
54
|
const name = tool.name;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-selection.js","sourceRoot":"","sources":["../../src/connectors/tool-selection.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"tool-selection.js","sourceRoot":"","sources":["../../src/connectors/tool-selection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pre-run gate for declarations that need a user-owned connection.
|
|
3
|
+
*
|
|
4
|
+
* Before the first model turn the gate reads the caller's OAuth grants and
|
|
5
|
+
* opaque secrets from Agent Auth. Missing grants raise one LangGraph interrupt;
|
|
6
|
+
* OAuth slugs include connect URLs, opaque slugs request password-style input.
|
|
7
|
+
* The tools a grant unlocks are loaded on first use and cached per caller.
|
|
8
|
+
*/
|
|
9
|
+
import { createMiddleware } from "langchain";
|
|
10
|
+
import { type ConnectionReference } from "./connections.js";
|
|
11
|
+
export declare const CREDENTIAL_GATE_MIDDLEWARE_NAME = "mda-credential-gate";
|
|
12
|
+
/** Tools a declaration contributes for one caller, plus their transport. */
|
|
13
|
+
export interface LoadedCredentialTools {
|
|
14
|
+
tools: unknown[];
|
|
15
|
+
close: () => Promise<void>;
|
|
16
|
+
}
|
|
17
|
+
/** A declaration whose tools are unlocked by user-owned connections. */
|
|
18
|
+
export interface CredentialConsumer {
|
|
19
|
+
/** The declaration itself, used to key the per-caller tool cache. */
|
|
20
|
+
declaration: object;
|
|
21
|
+
/** User-owned connection references the declaration needs. */
|
|
22
|
+
credentials: readonly ConnectionReference[];
|
|
23
|
+
load: (accessTokens: ReadonlyMap<string, string>) => Promise<LoadedCredentialTools>;
|
|
24
|
+
}
|
|
25
|
+
export declare function createCredentialGateMiddleware(consumers: readonly CredentialConsumer[]): ReturnType<typeof createMiddleware> | undefined;
|
|
26
|
+
/** Drop every cached caller entry and close its transports. Test-only. */
|
|
27
|
+
export declare function clearCredentialToolCacheForTests(): Promise<void>;
|
|
28
|
+
//# sourceMappingURL=credential-gate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credential-gate.d.ts","sourceRoot":"","sources":["../src/credential-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAG7C,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,kBAAkB,CAAC;AAY1B,eAAO,MAAM,+BAA+B,wBAAwB,CAAC;AAUrE,4EAA4E;AAC5E,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAED,wEAAwE;AACxE,MAAM,WAAW,kBAAkB;IACjC,qEAAqE;IACrE,WAAW,EAAE,MAAM,CAAC;IACpB,8DAA8D;IAC9D,WAAW,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC5C,IAAI,EAAE,CACJ,YAAY,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,KACtC,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACrC;AAuCD,wBAAgB,8BAA8B,CAC5C,SAAS,EAAE,SAAS,kBAAkB,EAAE,GACvC,UAAU,CAAC,OAAO,gBAAgB,CAAC,GAAG,SAAS,CAyCjD;AA6ID,0EAA0E;AAC1E,wBAAsB,gCAAgC,IAAI,OAAO,CAAC,IAAI,CAAC,CAStE"}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pre-run gate for declarations that need a user-owned connection.
|
|
3
|
+
*
|
|
4
|
+
* Before the first model turn the gate reads the caller's OAuth grants and
|
|
5
|
+
* opaque secrets from Agent Auth. Missing grants raise one LangGraph interrupt;
|
|
6
|
+
* OAuth slugs include connect URLs, opaque slugs request password-style input.
|
|
7
|
+
* The tools a grant unlocks are loaded on first use and cached per caller.
|
|
8
|
+
*/
|
|
9
|
+
import { createMiddleware } from "langchain";
|
|
10
|
+
import { AgentAuth } from "./agent-auth.js";
|
|
11
|
+
import { resolveUserConnectionGrants } from "./connection-authorization.js";
|
|
12
|
+
import { resolveAgentAuthContext, resolveOwnerId, } from "./connections.js";
|
|
13
|
+
import { buildRuntimeIdentity, resolveRuntimeConfigurable, } from "./runtime/identity-runtime.js";
|
|
14
|
+
import { wrapToolsWithManagedRuntime, } from "./runtime/managed-tools.js";
|
|
15
|
+
export const CREDENTIAL_GATE_MIDDLEWARE_NAME = "mda-credential-gate";
|
|
16
|
+
/**
|
|
17
|
+
* How long a caller's loaded tools stay cached.
|
|
18
|
+
*
|
|
19
|
+
* The access token is bound into the transport when the tools are built, so the
|
|
20
|
+
* entry has to lapse well before the token does.
|
|
21
|
+
*/
|
|
22
|
+
const TOOL_CACHE_TTL_MS = 5 * 60_000;
|
|
23
|
+
/**
|
|
24
|
+
* Loaded tools by declaration and caller.
|
|
25
|
+
*
|
|
26
|
+
* Module scope, not middleware scope: a resumed run re-enters through a fresh
|
|
27
|
+
* graph factory, so a cache owned by the middleware would be empty for every
|
|
28
|
+
* turn after an interrupt. It is only ever a latency optimization — a resume
|
|
29
|
+
* can also land on another replica, so every read path rebuilds on a miss.
|
|
30
|
+
*/
|
|
31
|
+
const toolCache = new Map();
|
|
32
|
+
const declarationIds = new WeakMap();
|
|
33
|
+
let nextDeclarationId = 0;
|
|
34
|
+
class UnauthenticatedCallerError extends Error {
|
|
35
|
+
constructor() {
|
|
36
|
+
super("connections with a user owner require an authenticated caller. " +
|
|
37
|
+
"Anonymous or agent-only runs cannot complete the credential gate.");
|
|
38
|
+
this.name = "UnauthenticatedCallerError";
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
export function createCredentialGateMiddleware(consumers) {
|
|
42
|
+
if (consumers.length === 0) {
|
|
43
|
+
return undefined;
|
|
44
|
+
}
|
|
45
|
+
return createMiddleware({
|
|
46
|
+
name: CREDENTIAL_GATE_MIDDLEWARE_NAME,
|
|
47
|
+
async beforeAgent(_state, runtime) {
|
|
48
|
+
const caller = await authContext(runtime);
|
|
49
|
+
if (!caller) {
|
|
50
|
+
throw new UnauthenticatedCallerError();
|
|
51
|
+
}
|
|
52
|
+
await ensureGrants(consumers, caller);
|
|
53
|
+
await toolsForContext(consumers, caller.context);
|
|
54
|
+
},
|
|
55
|
+
async wrapModelCall(request, handler) {
|
|
56
|
+
const extra = await toolsForRuntime(consumers, request.runtime);
|
|
57
|
+
if (extra.length === 0) {
|
|
58
|
+
return handler(request);
|
|
59
|
+
}
|
|
60
|
+
const existing = Array.isArray(request.tools) ? request.tools : [];
|
|
61
|
+
return handler({ ...request, tools: [...existing, ...extra] });
|
|
62
|
+
},
|
|
63
|
+
async wrapToolCall(request, handler) {
|
|
64
|
+
const name = request.toolCall?.name;
|
|
65
|
+
if (request.tool != null || typeof name !== "string") {
|
|
66
|
+
return handler(request);
|
|
67
|
+
}
|
|
68
|
+
const tools = await toolsForRuntime(consumers, request.runtime);
|
|
69
|
+
const tool = tools.find((candidate) => candidate.name === name);
|
|
70
|
+
return tool ? handler({ ...request, tool }) : handler(request);
|
|
71
|
+
},
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Interrupt once when the caller is missing a grant.
|
|
76
|
+
*
|
|
77
|
+
* Reads never mint, so the probe is safe to repeat on every replay of this
|
|
78
|
+
* node. OAuth sessions are minted once, immediately before the interrupt that
|
|
79
|
+
* shows their URLs.
|
|
80
|
+
*/
|
|
81
|
+
async function ensureGrants(consumers, caller) {
|
|
82
|
+
const agentAuth = new AgentAuth(caller.context);
|
|
83
|
+
await resolveUserConnectionGrants(agentAuth, consumerCredentials(consumers, caller).map((credential) => credential.slug));
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Declared connections, one per slug.
|
|
87
|
+
*
|
|
88
|
+
* Every reference is resolved through {@link resolveOwnerId}, the same check
|
|
89
|
+
* `connections.get` applies when a tool awaits a handle, so a declaration that
|
|
90
|
+
* names another user is rejected here rather than quietly run as the caller.
|
|
91
|
+
*/
|
|
92
|
+
function consumerCredentials(consumers, caller) {
|
|
93
|
+
const bySlug = new Map();
|
|
94
|
+
for (const consumer of consumers) {
|
|
95
|
+
for (const credential of consumer.credentials) {
|
|
96
|
+
resolveOwnerId(credential.owner, caller.identity, caller.context.agentId);
|
|
97
|
+
bySlug.set(credential.slug, credential);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return [...bySlug.values()];
|
|
101
|
+
}
|
|
102
|
+
async function toolsForRuntime(consumers, runtime) {
|
|
103
|
+
const caller = await authContext(runtime);
|
|
104
|
+
return caller ? await toolsForContext(consumers, caller.context) : [];
|
|
105
|
+
}
|
|
106
|
+
async function toolsForContext(consumers, context) {
|
|
107
|
+
const loaded = await Promise.all(consumers.map((consumer) => cachedTools(consumer, context)));
|
|
108
|
+
return loaded.flat();
|
|
109
|
+
}
|
|
110
|
+
async function cachedTools(consumer, context) {
|
|
111
|
+
const key = `${declarationId(consumer.declaration)} ${context.principalId}`;
|
|
112
|
+
for (;;) {
|
|
113
|
+
const cached = toolCache.get(key);
|
|
114
|
+
if (!cached) {
|
|
115
|
+
return refresh(key, consumer, context, undefined);
|
|
116
|
+
}
|
|
117
|
+
const entry = await cached.catch(() => undefined);
|
|
118
|
+
if (entry && entry.expiresAt > Date.now()) {
|
|
119
|
+
return entry.tools;
|
|
120
|
+
}
|
|
121
|
+
// Nothing suspends between this read and the write inside `refresh`, so a
|
|
122
|
+
// lapsed entry is retired by exactly one caller. The rest see the
|
|
123
|
+
// replacement on the next pass and join it.
|
|
124
|
+
if (toolCache.get(key) === cached) {
|
|
125
|
+
return refresh(key, consumer, context, entry);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
/** Publish the load before awaiting it, so concurrent callers share one transport. */
|
|
130
|
+
async function refresh(key, consumer, context, lapsed) {
|
|
131
|
+
const loading = loadTools(consumer, context);
|
|
132
|
+
toolCache.set(key, loading);
|
|
133
|
+
lapsed?.close().catch(() => undefined);
|
|
134
|
+
try {
|
|
135
|
+
return (await loading).tools;
|
|
136
|
+
}
|
|
137
|
+
catch (error) {
|
|
138
|
+
if (toolCache.get(key) === loading) {
|
|
139
|
+
toolCache.delete(key);
|
|
140
|
+
}
|
|
141
|
+
throw error;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
async function loadTools(consumer, context) {
|
|
145
|
+
const agentAuth = new AgentAuth(context);
|
|
146
|
+
const accessTokens = await resolveUserConnectionGrants(agentAuth, consumer.credentials.map((credential) => credential.slug));
|
|
147
|
+
const loaded = await consumer.load(accessTokens);
|
|
148
|
+
return {
|
|
149
|
+
tools: wrapToolsWithManagedRuntime(loaded.tools),
|
|
150
|
+
close: loaded.close,
|
|
151
|
+
expiresAt: Date.now() + TOOL_CACHE_TTL_MS,
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
function declarationId(declaration) {
|
|
155
|
+
const existing = declarationIds.get(declaration);
|
|
156
|
+
if (existing)
|
|
157
|
+
return existing;
|
|
158
|
+
nextDeclarationId += 1;
|
|
159
|
+
const id = String(nextDeclarationId);
|
|
160
|
+
declarationIds.set(declaration, id);
|
|
161
|
+
return id;
|
|
162
|
+
}
|
|
163
|
+
async function authContext(runtime) {
|
|
164
|
+
const identity = buildRuntimeIdentity(resolveRuntimeConfigurable(runtime));
|
|
165
|
+
if (!identity?.user.id) {
|
|
166
|
+
return undefined;
|
|
167
|
+
}
|
|
168
|
+
return { context: await resolveAgentAuthContext(identity), identity };
|
|
169
|
+
}
|
|
170
|
+
/** Drop every cached caller entry and close its transports. Test-only. */
|
|
171
|
+
export async function clearCredentialToolCacheForTests() {
|
|
172
|
+
const entries = [...toolCache.values()];
|
|
173
|
+
toolCache.clear();
|
|
174
|
+
await Promise.all(entries.map(async (entry) => {
|
|
175
|
+
const resolved = await entry.catch(() => undefined);
|
|
176
|
+
await resolved?.close().catch(() => undefined);
|
|
177
|
+
}));
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=credential-gate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credential-gate.js","sourceRoot":"","sources":["../src/credential-gate.ts"],"names":[],"mappings":"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"}
|
package/dist/extension.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The contribution API behind the extensible MDA primitives.
|
|
3
3
|
*
|
|
4
|
-
* `defineExtension(kind, options)` returns the factory a
|
|
5
|
-
* calls, such as `
|
|
4
|
+
* `defineExtension(kind, options)` returns the factory a first-party primitive
|
|
5
|
+
* calls, such as `defineMcp({ … })`. Argument parsing, branding, and
|
|
6
6
|
* manifest stamping are shared.
|
|
7
7
|
*
|
|
8
8
|
* Every kind declares its input through `args`, which takes a schema from any
|
|
@@ -40,7 +40,7 @@ export type ExtensionArgs<TInput, TArgs> = StandardSchemaV1<TInput, TArgs> | ((i
|
|
|
40
40
|
interface ExtensionEnvelope<TInput, TArgs> {
|
|
41
41
|
args: ExtensionArgs<TInput, TArgs>;
|
|
42
42
|
/**
|
|
43
|
-
* How the factory is spelled in an agent project, e.g. `"
|
|
43
|
+
* How the factory is spelled in an agent project, e.g. `"defineMcp"`.
|
|
44
44
|
* Prefixes validation errors, which is the only place an author sees it.
|
|
45
45
|
*/
|
|
46
46
|
label: string;
|
package/dist/extension.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The contribution API behind the extensible MDA primitives.
|
|
3
3
|
*
|
|
4
|
-
* `defineExtension(kind, options)` returns the factory a
|
|
5
|
-
* calls, such as `
|
|
4
|
+
* `defineExtension(kind, options)` returns the factory a first-party primitive
|
|
5
|
+
* calls, such as `defineMcp({ … })`. Argument parsing, branding, and
|
|
6
6
|
* manifest stamping are shared.
|
|
7
7
|
*
|
|
8
8
|
* Every kind declares its input through `args`, which takes a schema from any
|
package/dist/identity/index.d.ts
CHANGED
|
@@ -14,7 +14,7 @@ import type { IdentityConfig, IdentityDefinition, LangSmithApiKeyIngress, Valida
|
|
|
14
14
|
export { normalizeGroups, userClaimName } from "./claims.js";
|
|
15
15
|
export { normalizeIdentity } from "./options.js";
|
|
16
16
|
export type { IdentityAuth, IdentityOptions } from "./options.js";
|
|
17
|
-
export type { ClaimMapping, CredentialScope, HttpIngress, IdentityConfig, IdentityDefinition, LangSmithApiKeyIngress, RuntimeIdentity, ValidatedTokenIngress, ValidatedTokenProvider, } from "./types.js";
|
|
17
|
+
export type { ClaimMapping, CredentialScope, HttpIngress, IdentityConfig, IdentityDefinition, IdentitySource, LangSmithApiKeyIngress, Link, LinkStatus, Principal, PrincipalClaims, PrincipalEnvelope, PrincipalKind, RuntimeIdentity, Subject, SubjectAuthority, ValidatedTokenIngress, ValidatedTokenProvider, } from "./types.js";
|
|
18
18
|
/**
|
|
19
19
|
* Declare the identity contract for the deployment.
|
|
20
20
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/identity/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAqB,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AACvE,OAAO,EAAE,KAAK,uBAAuB,EAAoB,MAAM,eAAe,CAAC;AAC/E,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAClB,sBAAsB,EAEtB,sBAAsB,EACvB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAElE,YAAY,EACV,YAAY,EACZ,eAAe,EACf,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,sBAAsB,EACtB,eAAe,EACf,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,kBAAkB,CAI3E;AAED;;;GAGG;AACH,eAAO,MAAM,IAAI;IACf,2EAA2E;IAC3E,eAAe,IAAI,sBAAsB;IAGzC,oCAAoC;IACpC,QAAQ,UAAU,uBAAuB,GAAG,sBAAsB;CAGnE,CAAC;AAEF;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAuC7D"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/identity/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAqB,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AACvE,OAAO,EAAE,KAAK,uBAAuB,EAAoB,MAAM,eAAe,CAAC;AAC/E,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAClB,sBAAsB,EAEtB,sBAAsB,EACvB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAElE,YAAY,EACV,YAAY,EACZ,eAAe,EACf,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,sBAAsB,EACtB,IAAI,EACJ,UAAU,EACV,SAAS,EACT,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,OAAO,EACP,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,kBAAkB,CAI3E;AAED;;;GAGG;AACH,eAAO,MAAM,IAAI;IACf,2EAA2E;IAC3E,eAAe,IAAI,sBAAsB;IAGzC,oCAAoC;IACpC,QAAQ,UAAU,uBAAuB,GAAG,sBAAsB;CAGnE,CAAC;AAEF;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAuC7D"}
|
|
@@ -1 +1 @@
|
|
|
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,iBAAiB,EAAwB,MAAM,cAAc,CAAC;AACvE,OAAO,EAAgC,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAS/E,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/identity/index.ts"],"names":[],"mappings":"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"}
|
package/dist/identity/types.d.ts
CHANGED
|
@@ -86,22 +86,96 @@ export interface ValidatedTokenProvider {
|
|
|
86
86
|
claims: ClaimMapping;
|
|
87
87
|
}
|
|
88
88
|
/**
|
|
89
|
-
* Which verified token claim supplies each
|
|
89
|
+
* Which verified token claim supplies each principal field.
|
|
90
90
|
*
|
|
91
91
|
* `user` is required; `defineIdentity` rejects a provider that omits it.
|
|
92
92
|
*/
|
|
93
93
|
export interface ClaimMapping {
|
|
94
|
-
/** Claim used as `runtime.
|
|
94
|
+
/** Claim used as `runtime.serverInfo.principal.id` (e.g. "sub", "email"). */
|
|
95
95
|
user?: string;
|
|
96
96
|
/**
|
|
97
97
|
* Claim carrying every group the caller belongs to. Accepts a JSON array, or a
|
|
98
|
-
* comma/space-delimited string.
|
|
98
|
+
* comma/space-delimited string. Folded into `principal.claims.groups`.
|
|
99
99
|
*/
|
|
100
100
|
groups?: string;
|
|
101
|
-
/** Claim
|
|
101
|
+
/** Claim folded into `principal.claims.email`. */
|
|
102
102
|
email?: string;
|
|
103
103
|
}
|
|
104
|
-
/**
|
|
104
|
+
/**
|
|
105
|
+
* Agent Auth–aligned identity types for the current run.
|
|
106
|
+
*
|
|
107
|
+
* Author surface on LangGraph `serverInfo` (flattened, no nested envelope bag):
|
|
108
|
+
* `runtime.serverInfo.principal` / `.subject` / `.link`. Reassemble into
|
|
109
|
+
* {@link PrincipalEnvelope} when calling Agent Auth mint.
|
|
110
|
+
*
|
|
111
|
+
* Fields MDA cannot yet fill use conservative defaults
|
|
112
|
+
* (`link.status: "not_required"`, `subject.agent_id: ""`).
|
|
113
|
+
*/
|
|
114
|
+
export type PrincipalKind = "person" | "service" | "channel";
|
|
115
|
+
export type SubjectAuthority = "agent" | "user";
|
|
116
|
+
export type LinkStatus = "not_required" | "linked" | "unlinked" | "pending";
|
|
117
|
+
/**
|
|
118
|
+
* The caller's claim bag.
|
|
119
|
+
*
|
|
120
|
+
* Mostly the verified token payload, passed through as the IdP sent it. The two
|
|
121
|
+
* claims MDA gives a name to are normalized before they land here, whether or
|
|
122
|
+
* not the deployment mapped them in `ClaimMapping`: `groups` is always a string
|
|
123
|
+
* array (IdPs send arrays or delimited strings), and `email` is always a string.
|
|
124
|
+
* An unmapped claim of either name that cannot be normalized is dropped rather
|
|
125
|
+
* than passed through, so the declared type always holds.
|
|
126
|
+
*/
|
|
127
|
+
export interface PrincipalClaims {
|
|
128
|
+
/** Every group the caller's token asserts. Never a raw delimited string. */
|
|
129
|
+
groups?: readonly string[];
|
|
130
|
+
email?: string;
|
|
131
|
+
[claim: string]: unknown;
|
|
132
|
+
}
|
|
133
|
+
export interface Principal {
|
|
134
|
+
id: string;
|
|
135
|
+
kind: PrincipalKind;
|
|
136
|
+
claims: PrincipalClaims;
|
|
137
|
+
}
|
|
138
|
+
export interface Subject {
|
|
139
|
+
authority: SubjectAuthority;
|
|
140
|
+
/**
|
|
141
|
+
* Deployment / agent id. Omitted when the platform supplied neither an
|
|
142
|
+
* assistant nor a graph id, so an Agent Auth call fails on a missing field
|
|
143
|
+
* rather than silently addressing the empty agent.
|
|
144
|
+
*/
|
|
145
|
+
agent_id?: string;
|
|
146
|
+
/** Present when `authority === "user"`. */
|
|
147
|
+
user_id?: string;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Where the run entered from, as stamped by trusted managed ingress.
|
|
151
|
+
*
|
|
152
|
+
* This is MDA's own ingress record, not part of the Agent Auth envelope, so it
|
|
153
|
+
* sits beside `principal` on `serverInfo` instead of inside it.
|
|
154
|
+
*/
|
|
155
|
+
export interface IdentitySource {
|
|
156
|
+
/**
|
|
157
|
+
* Ingress source. Built-ins include `http`, `schedule`, `cli`, `studio`,
|
|
158
|
+
* plus channel providers (`slack`, `github`, or any registered plugin key).
|
|
159
|
+
*/
|
|
160
|
+
provider: string;
|
|
161
|
+
threadId?: string;
|
|
162
|
+
}
|
|
163
|
+
export interface Link {
|
|
164
|
+
status: LinkStatus;
|
|
165
|
+
from?: string;
|
|
166
|
+
to?: string;
|
|
167
|
+
}
|
|
168
|
+
/** Wire shape for Agent Auth (`principal_envelope` on resolve/mint). */
|
|
169
|
+
export interface PrincipalEnvelope {
|
|
170
|
+
principal: Principal;
|
|
171
|
+
subject: Subject;
|
|
172
|
+
link: Link;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Frozen identity bag for HTTP connector route handlers
|
|
176
|
+
* (`resolveRequestIdentity`). Tools/middleware use `serverInfo.principal`
|
|
177
|
+
* (plus `subject` / `link`) instead.
|
|
178
|
+
*/
|
|
105
179
|
export interface RuntimeIdentity {
|
|
106
180
|
/** The caller. `kind: "service"` for machine callers (schedules, channels, Studio). */
|
|
107
181
|
user: {
|
|
@@ -123,6 +197,29 @@ export interface RuntimeIdentity {
|
|
|
123
197
|
threadId?: string;
|
|
124
198
|
};
|
|
125
199
|
claims?: Record<string, unknown>;
|
|
200
|
+
/**
|
|
201
|
+
* Validated-token provider id for Agent Auth principal resolve
|
|
202
|
+
* (`POST /v1/agent-auth/principals`).
|
|
203
|
+
*/
|
|
204
|
+
identityProvider?: string;
|
|
205
|
+
/**
|
|
206
|
+
* Verified IdP issuer (`iss`) for Agent Auth principal resolve.
|
|
207
|
+
* Stamped by validated-token ingress; not the configured `claims.user` value.
|
|
208
|
+
*/
|
|
209
|
+
identityIssuer?: string;
|
|
210
|
+
/**
|
|
211
|
+
* Verified IdP subject (`sub`) for Agent Auth principal resolve.
|
|
212
|
+
* Stamped by validated-token ingress so grants match other LangSmith clients
|
|
213
|
+
* even when `claims.user` maps to email. Thread ownership still uses
|
|
214
|
+
* {@link RuntimeIdentity.user.id}.
|
|
215
|
+
*/
|
|
216
|
+
identitySubject?: string;
|
|
217
|
+
/**
|
|
218
|
+
* Agent Auth principal UUID when channel ingress already resolved one
|
|
219
|
+
* (Trigger `identity_context`). Credential ops use this; thread ownership
|
|
220
|
+
* still uses {@link RuntimeIdentity.user.id}.
|
|
221
|
+
*/
|
|
222
|
+
agentAuthPrincipalId?: string;
|
|
126
223
|
}
|
|
127
224
|
/**
|
|
128
225
|
* Whose token downstream calls carry.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/identity/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,8DAA8D;AAC9D,MAAM,MAAM,WAAW,GACnB,SAAS,GACT,sBAAsB,GACtB,qBAAqB,CAAC;AAE1B,qEAAqE;AACrE,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,mBAAmB,CAAC;CAC3B;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,iBAAiB,CAAC;IACxB;;;;OAIG;IACH,SAAS,EAAE,sBAAsB,EAAE,CAAC;CACrC;AAED,qDAAqD;AACrD,MAAM,WAAW,sBAAsB;IACrC,kFAAkF;IAClF,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,wFAAwF;IACxF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,UAAU,CAAC,EAAE;QACX,uDAAuD;QACvD,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,sFAAsF;QACtF,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB;;;;WAIG;QACH,OAAO,CAAC,EAAE,MAAM,CACd,MAAM,EACN,MAAM,GAAG;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;SAAE,CAC3D,CAAC;QACF,gFAAgF;QAChF,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,2FAA2F;QAC3F,OAAO,CAAC,EAAE,eAAe,GAAG,QAAQ,CAAC;QACrC,qDAAqD;QACrD,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,6DAA6D;IAC7D,MAAM,EAAE,YAAY,CAAC;CACtB;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/identity/types.ts"],"names":[],"mappings":"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"}
|