managed-deepagents 0.6.2-dev.9 → 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
package/README.md
CHANGED
|
@@ -75,12 +75,6 @@ the model, `--memory agent` opts into deployment-shared durable memory,
|
|
|
75
75
|
`--channels`) writes `channels/slack.ts`. Every new project includes an
|
|
76
76
|
`identity.ts` that explicitly selects `auth.langsmithApiKey()` authentication.
|
|
77
77
|
|
|
78
|
-
`mda init my-agent --gateway` runs the agent on
|
|
79
|
-
[LangSmith Gateway](https://docs.langchain.com/langsmith/gateway) — a model
|
|
80
|
-
LangSmith hosts, billed to your workspace's Gateway Credits, authenticated with
|
|
81
|
-
a LangSmith API key instead of a model provider key of your own. It is mutually
|
|
82
|
-
exclusive with `--model`, which names a provider you hold the key for.
|
|
83
|
-
|
|
84
78
|
## Evaluate
|
|
85
79
|
|
|
86
80
|
Managed Deep Agent evals run in Harbor. Install `uv` and Docker before running
|
|
@@ -163,11 +157,11 @@ my-agent/
|
|
|
163
157
|
package.json
|
|
164
158
|
.env # local deploy secrets, never committed
|
|
165
159
|
schedules/ # optional managed cron schedules
|
|
166
|
-
tools/ # optional custom tools
|
|
160
|
+
tools/ # optional custom tools and MCP declaration
|
|
161
|
+
mcp.ts # optional MCP server declaration
|
|
167
162
|
middleware/ # optional middleware
|
|
168
163
|
skills/ # optional skills synced to Context Hub
|
|
169
164
|
sandbox/ # LangSmith sandbox (`mda init` includes this; delete to opt out)
|
|
170
|
-
connectors/mcp.ts # optional MCP server declaration
|
|
171
165
|
```
|
|
172
166
|
|
|
173
167
|
The CLI copies your project files into the managed build and generates the entry
|
|
@@ -241,27 +235,51 @@ export const sandbox = defineSandbox({
|
|
|
241
235
|
Put `GHCR_TOKEN` in the project `.env` or process environment. Its value is
|
|
242
236
|
used only to reconcile the registry and never enters the build or snapshot.
|
|
243
237
|
|
|
244
|
-
## MCP
|
|
238
|
+
## MCP Servers
|
|
239
|
+
|
|
240
|
+
Add `tools/mcp.ts` to attach MCP servers. The file must export a named `mcp`.
|
|
241
|
+
By default, MDA exposes every tool loaded from each declared
|
|
242
|
+
server. In `mda dev`, an agent-owned connection reads from
|
|
243
|
+
`MDA_DEV_<SLUG>` with the slug uppercased and hyphens changed to underscores.
|
|
244
|
+
Hosted deployments resolve workspace connections from Agent Auth:
|
|
245
245
|
|
|
246
|
-
|
|
247
|
-
`
|
|
248
|
-
server. Supply your own auth via static `headers` when the server requires
|
|
249
|
-
credentials:
|
|
246
|
+
The old `connectors/mcp.ts` file API remains available with a warning during
|
|
247
|
+
`0.7.x`. It will be removed in `0.8.0`.
|
|
250
248
|
|
|
251
249
|
```ts
|
|
252
|
-
import {
|
|
250
|
+
import { defineMcp, connections } from "managed-deepagents";
|
|
253
251
|
|
|
254
|
-
export const
|
|
255
|
-
|
|
252
|
+
export const mcp = defineMcp({
|
|
253
|
+
servers: {
|
|
256
254
|
langchainDocs: {
|
|
257
255
|
transport: "http",
|
|
258
256
|
url: "https://docs.langchain.com/mcp",
|
|
259
257
|
includeTools: ["search", "fetch"],
|
|
258
|
+
connection: connections.get("docs-token", { type: "agent" }),
|
|
260
259
|
},
|
|
261
260
|
},
|
|
262
261
|
});
|
|
263
262
|
```
|
|
264
263
|
|
|
264
|
+
For this example, set `MDA_DEV_DOCS_TOKEN`.
|
|
265
|
+
|
|
266
|
+
A user-owned connection — `connections.get(slug, { type: "user" })` — resolves
|
|
267
|
+
per caller via OAuth. Any runtime access interrupts the run when a grant is
|
|
268
|
+
missing, including access from a custom tool or middleware. Connector
|
|
269
|
+
declarations use the same behavior in a pre-run gate, so all known grants can be
|
|
270
|
+
requested before the first model call. This path works in `mda deploy` and
|
|
271
|
+
`mda dev` when `LANGSMITH_API_KEY` and `LANGSMITH_WORKSPACE_ID` are set and
|
|
272
|
+
the workspace connection rows exist. Use a person principal (for example, a
|
|
273
|
+
Supabase JWT), not Studio’s synthetic service user. OAuth completes on
|
|
274
|
+
LangSmith’s platform callback URL. The local UI must show
|
|
275
|
+
`credential_authorization_required` and resume after the user connects.
|
|
276
|
+
|
|
277
|
+
Deploy the project first, then provision its connections with
|
|
278
|
+
`mda connections create`. Agent-owned opaque secrets are scoped to that
|
|
279
|
+
deployment, so the command refuses to create one before `mda deploy`.
|
|
280
|
+
`mda deploy` fails when a slug a project declares is missing from the
|
|
281
|
+
workspace.
|
|
282
|
+
|
|
265
283
|
Use `includeTools` or `excludeTools` inside a server config to select a subset.
|
|
266
284
|
Tool names are raw MCP tool names before the managed `{server}__` prefix is
|
|
267
285
|
applied, so `includeTools: ["search"]` on server `langchainDocs` exposes
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Auth client used by `credentials.get` and the pre-run credential gate.
|
|
3
|
+
*
|
|
4
|
+
* Talks to the shipped Agent Auth APIs (credentials + oauth-authorization-sessions),
|
|
5
|
+
* not the aspirational `credentials/mint` endpoint.
|
|
6
|
+
*/
|
|
7
|
+
export declare const AGENT_AUTH_TIMEOUT_MS = 10000;
|
|
8
|
+
export declare const AGENT_AUTH_PROVIDER_PAGE_SIZE = 100;
|
|
9
|
+
export declare const AGENT_AUTH_MAX_PROVIDER_PAGES = 20;
|
|
10
|
+
export interface AgentAuthHttpConfig {
|
|
11
|
+
apiKey?: string;
|
|
12
|
+
workspaceId?: string;
|
|
13
|
+
}
|
|
14
|
+
/** Query string for listing credentials filtered by owner and kind. */
|
|
15
|
+
export declare function agentAuthCredentialQuery(options: {
|
|
16
|
+
ownerType: string;
|
|
17
|
+
ownerId: string;
|
|
18
|
+
kind: string;
|
|
19
|
+
pageSize?: number;
|
|
20
|
+
cursor?: string;
|
|
21
|
+
}): string;
|
|
22
|
+
export declare function agentAuthHeaders(config: AgentAuthHttpConfig): Record<string, string>;
|
|
23
|
+
/** One Agent Auth HTTP call: no redirects, bounded timeout, JSON body. */
|
|
24
|
+
export declare function requestAgentAuthJson(options: {
|
|
25
|
+
url: string;
|
|
26
|
+
init?: Omit<RequestInit, "headers" | "signal">;
|
|
27
|
+
config: AgentAuthHttpConfig;
|
|
28
|
+
timeoutMs: number;
|
|
29
|
+
fetchImpl: typeof fetch;
|
|
30
|
+
}): Promise<{
|
|
31
|
+
ok: boolean;
|
|
32
|
+
status: number;
|
|
33
|
+
body: Record<string, unknown>;
|
|
34
|
+
}>;
|
|
35
|
+
export interface AgentAuthContext {
|
|
36
|
+
baseUrl: string;
|
|
37
|
+
/**
|
|
38
|
+
* Deployment id when present. Required for agent-owned credential lookups;
|
|
39
|
+
* optional for user-owned OAuth (grants are principal-scoped).
|
|
40
|
+
*/
|
|
41
|
+
agentId?: string;
|
|
42
|
+
/** Authenticated caller, used as `owner_id` for user credentials. */
|
|
43
|
+
principalId: string;
|
|
44
|
+
apiKey?: string;
|
|
45
|
+
workspaceId?: string;
|
|
46
|
+
}
|
|
47
|
+
export interface ResolvePrincipalIdentity {
|
|
48
|
+
provider: string;
|
|
49
|
+
issuer: string;
|
|
50
|
+
subject: string;
|
|
51
|
+
}
|
|
52
|
+
/** Drop cached principal resolutions. Test-only. */
|
|
53
|
+
export declare function clearPrincipalResolveCacheForTests(): void;
|
|
54
|
+
/** One credential slug the caller has not granted, with its connect URL. */
|
|
55
|
+
export interface PendingAuthorization {
|
|
56
|
+
slug: string;
|
|
57
|
+
connectUrl: string;
|
|
58
|
+
authId: string;
|
|
59
|
+
}
|
|
60
|
+
export declare class CredentialAuthorizationRequiredError extends Error {
|
|
61
|
+
readonly slugs: readonly string[];
|
|
62
|
+
readonly name = "CredentialAuthorizationRequiredError";
|
|
63
|
+
constructor(slugs: readonly string[]);
|
|
64
|
+
}
|
|
65
|
+
export declare class AgentAuthUnknownProviderError extends Error {
|
|
66
|
+
readonly slug: string;
|
|
67
|
+
readonly name = "AgentAuthUnknownProviderError";
|
|
68
|
+
constructor(slug: string);
|
|
69
|
+
}
|
|
70
|
+
export declare const AGENT_AUTH_PROBLEM_HINT_MAX_CHARS = 200;
|
|
71
|
+
/**
|
|
72
|
+
* The problem+json fields Agent Auth reserves for the caller: `detail` names
|
|
73
|
+
* the failure and `remedy` names the fix. Nothing else from a response body is
|
|
74
|
+
* read, because the rest can quote secret material.
|
|
75
|
+
*
|
|
76
|
+
* Both are collapsed to one line and truncated so a long or multi-line body
|
|
77
|
+
* cannot reshape an error message.
|
|
78
|
+
*/
|
|
79
|
+
export declare function agentAuthProblemHint(body: Record<string, unknown> | undefined): string | undefined;
|
|
80
|
+
/**
|
|
81
|
+
* Agent Auth could not answer. Callers pass a fixed message; the only part of
|
|
82
|
+
* a response body that reaches it is the allow-listed problem+json hint, since
|
|
83
|
+
* an arbitrary body can quote secret material.
|
|
84
|
+
*/
|
|
85
|
+
export declare class CredentialStoreError extends Error {
|
|
86
|
+
readonly status?: number | undefined;
|
|
87
|
+
readonly name: string;
|
|
88
|
+
constructor(message: string, status?: number | undefined, problem?: Record<string, unknown>);
|
|
89
|
+
}
|
|
90
|
+
/** The error for a declared slug that has no workspace connection row. */
|
|
91
|
+
export declare function missingWorkspaceConnectionError(slug: string): CredentialStoreError;
|
|
92
|
+
/**
|
|
93
|
+
* Read the slug back out of a missing-connection message.
|
|
94
|
+
*
|
|
95
|
+
* A run that fails in the gate reaches a channel as a plain string, so this is
|
|
96
|
+
* the only way back to the slug. It must move with the message it parses.
|
|
97
|
+
*/
|
|
98
|
+
export declare function missingWorkspaceConnectionSlug(text: string): string | undefined;
|
|
99
|
+
export interface WorkspaceConnection {
|
|
100
|
+
connectionId: string;
|
|
101
|
+
kind: string;
|
|
102
|
+
ownerPolicy: string;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Bound Agent Auth HTTP client. One instance per caller/run; headers, origin,
|
|
106
|
+
* and the request timeout stay on the instance rather than each call site.
|
|
107
|
+
*/
|
|
108
|
+
export declare class AgentAuth {
|
|
109
|
+
#private;
|
|
110
|
+
readonly context: AgentAuthContext;
|
|
111
|
+
constructor(context: AgentAuthContext, fetchImpl?: typeof fetch, timeoutMs?: number);
|
|
112
|
+
/**
|
|
113
|
+
* Resolve a verified external identity to an Agent Auth principal UUID.
|
|
114
|
+
*
|
|
115
|
+
* `POST /v1/agent-auth/principals` with `{ provider, issuer, subject }`.
|
|
116
|
+
* Results are cached per process for the same origin, workspace, and triple.
|
|
117
|
+
*/
|
|
118
|
+
resolvePrincipal(identity: ResolvePrincipalIdentity): Promise<string>;
|
|
119
|
+
/** List workspace connections and return the row for `slug`, if any. */
|
|
120
|
+
findWorkspaceConnection(slug: string): Promise<WorkspaceConnection | undefined>;
|
|
121
|
+
/** Workspace credential id for an agent-owned opaque secret grant. */
|
|
122
|
+
findWorkspaceCredentialId(slug: string): Promise<string | undefined>;
|
|
123
|
+
/**
|
|
124
|
+
* Resolve the credential id for a secret connection row.
|
|
125
|
+
*
|
|
126
|
+
* Agent-owned connection declarations scope the credential to this
|
|
127
|
+
* deployment. Workspace-owned credentials are deliberately not visible to
|
|
128
|
+
* deployments.
|
|
129
|
+
*/
|
|
130
|
+
findSecretCredentialId(connection: WorkspaceConnection, slug: string): Promise<string | undefined>;
|
|
131
|
+
/** Read a caller-owned opaque secret grant for a workspace connection slug. */
|
|
132
|
+
readUserSecret(slug: string): Promise<string | undefined>;
|
|
133
|
+
/** Read a caller-owned opaque secret when the connection row is already loaded. */
|
|
134
|
+
readUserSecretForConnection(connection: WorkspaceConnection): Promise<string | undefined>;
|
|
135
|
+
/** Read this deployment's OAuth grant for a workspace connection. */
|
|
136
|
+
readAgentAccessTokenForConnection(connection: WorkspaceConnection): Promise<string | undefined>;
|
|
137
|
+
/**
|
|
138
|
+
* Read the caller's OAuth access token for a slug without starting a session.
|
|
139
|
+
*
|
|
140
|
+
* Reads never mint, so a caller can be probed repeatedly — on every replay of
|
|
141
|
+
* an interrupted node, for instance — without leaving authorization sessions
|
|
142
|
+
* behind.
|
|
143
|
+
*
|
|
144
|
+
* @returns The access token, or `undefined` when the caller must connect.
|
|
145
|
+
*/
|
|
146
|
+
readUserAccessToken(slug: string): Promise<string | undefined>;
|
|
147
|
+
/** Read a caller OAuth token when the connection row is already loaded. */
|
|
148
|
+
readUserAccessTokenForConnection(connection: WorkspaceConnection): Promise<string | undefined>;
|
|
149
|
+
/**
|
|
150
|
+
* Start an OAuth authorization session for a slug the caller has not granted.
|
|
151
|
+
*
|
|
152
|
+
* @returns The pending session, including the user-facing connect URL.
|
|
153
|
+
*/
|
|
154
|
+
startAuthorizationSession(slug: string): Promise<PendingAuthorization>;
|
|
155
|
+
/** oauth-providers has no slug filter, so the match is made across pages. */
|
|
156
|
+
resolveOAuthProviderId(slug: string): Promise<string>;
|
|
157
|
+
/** The credential key is `credential_id`, never `id`. */
|
|
158
|
+
findCredentialId(options: {
|
|
159
|
+
ownerType: string;
|
|
160
|
+
ownerId: string;
|
|
161
|
+
kind: string;
|
|
162
|
+
slug: string;
|
|
163
|
+
}): Promise<string | undefined>;
|
|
164
|
+
/** @returns The secret, or `undefined` when Agent Auth has no value (404). */
|
|
165
|
+
readSecret(credentialId: string): Promise<string | undefined>;
|
|
166
|
+
}
|
|
167
|
+
//# sourceMappingURL=agent-auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-auth.d.ts","sourceRoot":"","sources":["../src/agent-auth.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,eAAO,MAAM,qBAAqB,QAAS,CAAC;AAC5C,eAAO,MAAM,6BAA6B,MAAM,CAAC;AACjD,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAEhD,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,uEAAuE;AACvE,wBAAgB,wBAAwB,CAAC,OAAO,EAAE;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,MAAM,CAaT;AAED,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,mBAAmB,GAC1B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAexB;AAED,0EAA0E;AAC1E,wBAAsB,oBAAoB,CAAC,OAAO,EAAE;IAClD,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,SAAS,GAAG,QAAQ,CAAC,CAAC;IAC/C,MAAM,EAAE,mBAAmB,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,OAAO,KAAK,CAAC;CACzB,GAAG,OAAO,CAAC;IACV,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B,CAAC,CAoBD;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qEAAqE;IACrE,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAcD,oDAAoD;AACpD,wBAAgB,kCAAkC,IAAI,IAAI,CAEzD;AAED,4EAA4E;AAC5E,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,oCAAqC,SAAQ,KAAK;IAGjD,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE;IAF7C,QAAQ,CAAC,IAAI,0CAA0C;IAEvD,YAAqB,KAAK,EAAE,SAAS,MAAM,EAAE,EAK5C;CACF;AAED,qBAAa,6BAA8B,SAAQ,KAAK;IAG1C,QAAQ,CAAC,IAAI,EAAE,MAAM;IAFjC,QAAQ,CAAC,IAAI,mCAAmC;IAEhD,YAAqB,IAAI,EAAE,MAAM,EAKhC;CACF;AAED,eAAO,MAAM,iCAAiC,MAAM,CAAC;AAErD;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GACxC,MAAM,GAAG,SAAS,CAcpB;AAED;;;;GAIG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;IAK3C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM;IAJ1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAA0B;IAE/C,YACE,OAAO,EAAE,MAAM,EACN,MAAM,CAAC,EAAE,MAAM,YAAA,EACxB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAMlC;CACF;AAMD,0EAA0E;AAC1E,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,MAAM,GACX,oBAAoB,CAItB;AAED;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,MAAM,GACX,MAAM,GAAG,SAAS,CAEpB;AAOD,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,qBAAa,SAAS;;IACpB,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;IAInC,YACE,OAAO,EAAE,gBAAgB,EACzB,SAAS,GAAE,OAAO,KAAa,EAC/B,SAAS,SAAwB,EAKlC;IAED;;;;;OAKG;IACG,gBAAgB,CAAC,QAAQ,EAAE,wBAAwB,GAAG,OAAO,CAAC,MAAM,CAAC,CA8B1E;IAoCD,wEAAwE;IAClE,uBAAuB,CAC3B,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAuD1C;IAED,sEAAsE;IAChE,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAMzE;IAED;;;;;;OAMG;IACG,sBAAsB,CAC1B,UAAU,EAAE,mBAAmB,EAC/B,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAyB7B;IAqCD,+EAA+E;IACzE,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAM9D;IAED,mFAAmF;IAC7E,2BAA2B,CAC/B,UAAU,EAAE,mBAAmB,GAC9B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAa7B;IAED,qEAAqE;IAC/D,iCAAiC,CACrC,UAAU,EAAE,mBAAmB,GAC9B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAQ7B;IAED;;;;;;;;OAQG;IACG,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAMnE;IAED,2EAA2E;IACrE,gCAAgC,CACpC,UAAU,EAAE,mBAAmB,GAC9B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAM7B;IAmBD;;;;OAIG;IACG,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAoC3E;IAED,6EAA6E;IACvE,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAqC1D;IAED,yDAAyD;IACnD,gBAAgB,CAAC,OAAO,EAAE;QAC9B,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KACd,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAwC9B;IAED,8EAA8E;IACxE,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAiBlE;CAyCF"}
|