@mastra/code-sdk 1.8.4-alpha.6 → 1.9.0-alpha.8

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.
Files changed (79) hide show
  1. package/README.md +190 -0
  2. package/dist/acp/agent.d.ts +30 -17
  3. package/dist/acp/agent.d.ts.map +1 -1
  4. package/dist/acp/agent.js +294 -103
  5. package/dist/acp/agent.js.map +1 -1
  6. package/dist/acp/errors.d.ts +3 -0
  7. package/dist/acp/errors.d.ts.map +1 -0
  8. package/dist/acp/errors.js +14 -0
  9. package/dist/acp/errors.js.map +1 -0
  10. package/dist/acp/event-mapper.d.ts +6 -1
  11. package/dist/acp/event-mapper.d.ts.map +1 -1
  12. package/dist/acp/event-mapper.js +116 -56
  13. package/dist/acp/event-mapper.js.map +1 -1
  14. package/dist/acp/index.d.ts +1 -4
  15. package/dist/acp/index.d.ts.map +1 -1
  16. package/dist/acp/index.js +6 -48
  17. package/dist/acp/index.js.map +1 -1
  18. package/dist/acp/runtime.d.ts +5 -0
  19. package/dist/acp/runtime.d.ts.map +1 -0
  20. package/dist/acp/runtime.js +80 -0
  21. package/dist/acp/runtime.js.map +1 -0
  22. package/dist/acp/server.d.ts +3 -6
  23. package/dist/acp/server.d.ts.map +1 -1
  24. package/dist/acp/server.js +22 -19
  25. package/dist/acp/server.js.map +1 -1
  26. package/dist/acp/skills.d.ts +6 -0
  27. package/dist/acp/skills.d.ts.map +1 -0
  28. package/dist/acp/skills.js +33 -0
  29. package/dist/acp/skills.js.map +1 -0
  30. package/dist/agents/model.js +1 -1
  31. package/dist/agents/prompts/agent-instructions.js +2 -2
  32. package/dist/agents/workspace.js +1 -1
  33. package/dist/analytics.js +2 -2
  34. package/dist/auth/providers/kimi-coding.js +1 -1
  35. package/dist/auth/storage.js +2 -2
  36. package/dist/clipboard/index.js +2 -2
  37. package/dist/headless/run-mc.d.ts.map +1 -1
  38. package/dist/headless/run-mc.js +14 -0
  39. package/dist/headless/run-mc.js.map +1 -1
  40. package/dist/hooks/config.js +1 -1
  41. package/dist/index.d.ts +2 -0
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +4 -4
  44. package/dist/index.js.map +1 -1
  45. package/dist/lsp/server.js +1 -1
  46. package/dist/lsp/workspace.js +1 -1
  47. package/dist/mcp/config.js +1 -1
  48. package/dist/mcp/manager.d.ts.map +1 -1
  49. package/dist/mcp/manager.js +2 -1
  50. package/dist/mcp/manager.js.map +1 -1
  51. package/dist/mcp/state.js +1 -1
  52. package/dist/mcp/types.d.ts +2 -0
  53. package/dist/mcp/types.d.ts.map +1 -1
  54. package/dist/onboarding/settings.js +3 -3
  55. package/dist/plugins/dependencies.js +1 -1
  56. package/dist/plugins/install.js +1 -1
  57. package/dist/plugins/loader.js +3 -3
  58. package/dist/plugins/manager.js +1 -1
  59. package/dist/plugins/manifest.js +1 -1
  60. package/dist/plugins/package-link.js +1 -1
  61. package/dist/plugins/paths.js +1 -1
  62. package/dist/plugins/registry.js +1 -1
  63. package/dist/plugins/scaffold.js +1 -1
  64. package/dist/process-memory-diagnostics.js +2 -2
  65. package/dist/providers/amazon-bedrock-gateway.js +1 -1
  66. package/dist/providers/openai-codex.js +1 -1
  67. package/dist/schema.js +1 -1
  68. package/dist/tools/request-sandbox-access.js +5 -4
  69. package/dist/tools/request-sandbox-access.js.map +1 -1
  70. package/dist/utils/debug-log.js +1 -1
  71. package/dist/utils/project.js +3 -3
  72. package/dist/utils/signals-pubsub.js +1 -1
  73. package/dist/utils/slash-command-loader.js +1 -1
  74. package/dist/utils/slash-command-processor.js +1 -1
  75. package/dist/utils/storage-maintenance.js +1 -1
  76. package/dist/utils/thread-lock.js +1 -1
  77. package/dist/utils/update-check.js +2 -2
  78. package/dist/workflows/register-primitives.js +1 -1
  79. package/package.json +18 -14
package/README.md CHANGED
@@ -58,6 +58,196 @@ The handle stays in memory and isn't restart-safe. The plugin still owns its con
58
58
 
59
59
  `defaultDisposition: 'foreground'` preserves normal calls unless the caller explicitly requests `_background.disposition: 'deferred'` or `'awaited'`. Plugins without a declaration remain usable in the foreground, including older versions of `mastra_expert`.
60
60
 
61
+ ### ACP server
62
+
63
+ See the [ACP server reference](https://mastra.ai/reference/code-sdk/acp-server) for
64
+ startup options, capabilities, and client behavior.
65
+
66
+ Start the installed CLI with `mastracode --acp`, or start the SDK server directly:
67
+
68
+ ```ts
69
+ import { acpMain } from '@mastra/code-sdk/acp/index';
70
+
71
+ await acpMain();
72
+ ```
73
+
74
+ The server uses newline-delimited JSON-RPC on standard input and output. Configure
75
+ provider authentication through Mastra Code before launching the client, or pass
76
+ API keys in the server's environment. ACP sessions do not load project `.env`
77
+ files into the shared process environment.
78
+
79
+ Each `session/new` creates its own runtime rooted at the request's absolute
80
+ `cwd`, including client-supplied MCP servers. Mode and model changes wait for
81
+ the current turn. Cancelling a session stops its active turn and cancels its
82
+ queued prompts.
83
+
84
+ Clients can use `configOptions` to select a model, mode, and requested reasoning
85
+ level. The reasoning choices follow Mastra Code's existing model policy; a
86
+ provider may adjust the requested level. For example:
87
+
88
+ ```ts
89
+ await connection.setSessionConfigOption({
90
+ sessionId,
91
+ configId: 'thought_level',
92
+ value: 'high',
93
+ });
94
+ ```
95
+
96
+ Tool approvals and sandbox access requests go through the client's permission
97
+ UI. The `ask_user` tool is disabled because ACP has no free-text tool response
98
+ method. Internal signals, including user input and system reminders, are not
99
+ sent as assistant messages. Failed turns return protocol errors.
100
+
101
+ Model choices include authenticated providers and the session's saved current
102
+ selection. Labels retain the full provider/model ID, so an OpenRouter route such
103
+ as `openrouter/openai/gpt-4.1-mini` cannot be confused with a Netlify route.
104
+ Unauthenticated gateway catalogs are omitted; stale model choices must be refreshed.
105
+
106
+ Session loading is not supported yet. Configure authentication outside ACP;
107
+ the server does not advertise an interactive authentication method.
108
+
109
+ #### Skills
110
+
111
+ The server advertises workspace skills through `available_commands_update` when
112
+ a session starts and refreshes the list before each prompt. Clients that support
113
+ ACP command discovery can offer `/skill/<name>` completions. Skills marked
114
+ `user-invocable: false` are omitted and cannot be explicitly invoked this way.
115
+ Skills are resolved through Mastra Code's existing project and global skill directories.
116
+ Duplicate names use the first user-invokable file in the workspace's catalog order.
117
+
118
+ Send the command as an ordinary text prompt, optionally followed by arguments:
119
+
120
+ ```ts
121
+ await connection.prompt({
122
+ sessionId,
123
+ prompt: [{ type: 'text', text: '/skill/review Check the current changes' }],
124
+ });
125
+ ```
126
+
127
+ The server loads the named skill's instructions and resource listings into the
128
+ turn. Missing or hidden skills return an invalid-parameters error without
129
+ starting inference. Each session uses its own workspace. Terminal commands such
130
+ as `/goal` are not advertised or implemented by this command handler.
131
+
132
+ #### Focused adapter tests
133
+
134
+ From the repository root, install dependencies and build core with its dependencies
135
+ before the first run:
136
+
137
+ ```sh
138
+ pnpm turbo build --filter @mastra/core...
139
+ pnpm --filter @mastra/code-sdk test:acp
140
+ pnpm --filter @mastra/code-sdk check:acp
141
+ ```
142
+
143
+ This suite runs the adapter and stdio protocol tests without building the TUI.
144
+ `check:acp` checks `agent.ts`, `event-mapper.ts`, `server.ts`, and `skills.ts`
145
+ against the repository's ES2023 library target. It does not check `runtime.ts`
146
+ or `index.ts`. Run `pnpm --filter @mastra/code-sdk check` for the full SDK
147
+ typecheck, including those entrypoints. CI runs the full check after building
148
+ the workspace dependencies.
149
+ It requires built workspace imports, including `@mastra/core/workspace`; the signal
150
+ factory alone is aliased to source. Runtime factory tests mock SDK startup. Use a running
151
+ ACP client to verify provider authentication and actual tool execution.
152
+
153
+ #### Build ACP without rebuilding the workspace
154
+
155
+ For local adapter development, bundle the SDK source against an existing
156
+ installation of Mastra Code's published dependencies:
157
+
158
+ ```sh
159
+ npm install --prefix /tmp/mastracode-runtime mastracode
160
+ pnpm --filter @mastra/code-sdk build:acp:dev /tmp/mastracode-runtime
161
+ node mastracode/sdk/node_modules/.acp-dev/local-acp.mjs
162
+ ```
163
+
164
+ Point the ACP client's command at `node` with that generated file as its argument.
165
+ Rebuild after source changes. This development bundle uses absolute dependency
166
+ paths and is not a release artifact. It checks the local SDK against the installed
167
+ dependency versions; changes to other workspace packages still need their own
168
+ builds and tests.
169
+
170
+ #### Validate the ACP wire protocol
171
+
172
+ Mastra Code implements [Agent Client Protocol v1](https://agentclientprotocol.com/protocol/v1/overview).
173
+ The similarly named `@acprotocol/conformance` package tests **Agent Control
174
+ Protocol**, a different protocol, and cannot validate this server.
175
+
176
+ The Mastra Code CI job builds matching workspace packages, runs the SDK typecheck
177
+ and ACP unit tests, then tests the built SDK with the conformance gate. Reports
178
+ are uploaded as the `acp-conformance` artifact.
179
+
180
+ Run that same conformance gate locally against a built SDK:
181
+
182
+ ```sh
183
+ pnpm --filter @mastra/code-sdk test:acp:conformance
184
+ ```
185
+
186
+ Build the SDK and its relevant workspace dependencies first. The command fails
187
+ if `dist/acp/index.js` is missing. It downloads the upstream v1 schema at revision
188
+ `367c56fb6115f391bc7550288363f87416cd0af8`, verifies its SHA-256 checksum, and installs
189
+ locked AJV validators with lifecycle scripts disabled. The first run needs network
190
+ access. Generated files stay under `node_modules/.acp-conformance`. The command
191
+ runs EOF, SIGINT and SIGTERM shutdown checks sequentially, with one server process
192
+ at a time.
193
+
194
+ To check a development bundle instead:
195
+
196
+ ```sh
197
+ pnpm --filter @mastra/code-sdk build:acp:dev /tmp/mastracode-runtime --local-core
198
+ pnpm --filter @mastra/code-sdk test:acp:conformance node_modules/.acp-dev/local-acp.mjs
199
+ ```
200
+
201
+ `--local-core` also bundles local `@mastra/core` source. Other workspace dependencies
202
+ still come from the supplied installation. This keeps local verification small;
203
+ it does not establish that the publishable packages build together.
204
+
205
+ The checker validates actual stdio JSON-RPC messages with AJV, independently of
206
+ the client's generated SDK validators. Local deterministic model and MCP fixtures
207
+ exercise the real runtime without model credentials or inherited user credentials.
208
+
209
+ | Supported behavior | Verification |
210
+ | ---------------------------------------------------------------- | ------------------------------------------------------------------------------ |
211
+ | Initialization, protocol version, capabilities | Wire responses and upstream schemas |
212
+ | New sessions, absolute working directories, concurrent isolation | Separate runtime sessions and concurrent model requests |
213
+ | Text prompts, assistant streaming, usage and tool updates | Wire schemas and adapter regressions |
214
+ | Permissions | Approved writes execute; denied writes leave no file |
215
+ | Cancellation | Streaming, parked approvals, follow-up turns, and core startup regressions |
216
+ | MCP stdio | Real tool calls with session working directory and environment |
217
+ | MCP HTTP | Real tool calls with supplied headers |
218
+ | Modes, models and reasoning configuration | Selection validation, configuration updates and legacy mode notifications |
219
+ | Errors and stop reasons | Invalid requests, failed MCP setup, provider errors, token limits and refusals |
220
+ | Process lifecycle | Disconnect, SIGINT/SIGTERM, MCP child exit, protocol-only stdout |
221
+
222
+ Session loading/resuming, image/audio prompts, binary resources, interactive ACP
223
+ authentication, and free-text tool questions are outside this release profile.
224
+ They are not advertised as supported. Unsupported prompt attachments fail explicitly.
225
+ Clients supply credentials through the existing Mastra Code setup.
226
+
227
+ `node_modules/.acp-conformance/report/report.json` records the checks, errors,
228
+ observed message count, and SHA-256 hashes of the schema, server entry and checker.
229
+ The EOF report is at that path; SIGINT and SIGTERM reports are in the
230
+ `report/sigint` and `report/sigterm` subdirectories. Checks assert that started MCP
231
+ children exit after failed initialization and final shutdown.
232
+
233
+ The server hash covers the selected entry file; for the default release wrapper,
234
+ it does not fingerprint the entire dependency tree. Archive the package tarballs
235
+ and lockfile alongside the report for release provenance. Nonzero exit, malformed
236
+ stdout, timeout, or forced shutdown fails the gate.
237
+
238
+ Before publishing:
239
+
240
+ 1. Run the focused adapter tests and affected core tests.
241
+ 2. Build and typecheck the affected packages with matching workspace dependencies
242
+ in CI, then run this gate against the resulting SDK artifact.
243
+ 3. Smoke-test the packaged `mastracode --acp` entry in an ACP client with a real
244
+ authenticated provider, including a reply, approved and denied tools, and cancellation.
245
+ 4. Archive the reports with the exact package versions and checksums.
246
+
247
+ Passing this gate supports a claim of tested compatibility with the documented
248
+ ACP v1 profile. It is not upstream certification or proof of every optional
249
+ protocol feature. Live-provider authentication remains a separate integration test.
250
+
61
251
  ## Documentation
62
252
 
63
253
  - [@mastra/code-sdk documentation](https://mastra.ai/reference/code-sdk/mount-agent-controller)
@@ -1,26 +1,39 @@
1
- import type { Agent, AgentSideConnection, InitializeRequest, InitializeResponse, NewSessionRequest, NewSessionResponse, PromptRequest, PromptResponse, CancelNotification, ContentBlock } from '@agentclientprotocol/sdk';
1
+ import type { Agent, AgentSideConnection, InitializeRequest, InitializeResponse, NewSessionRequest, NewSessionResponse, PromptRequest, PromptResponse, CancelNotification, ContentBlock, SetSessionConfigOptionRequest, SetSessionConfigOptionResponse } from '@agentclientprotocol/sdk';
2
2
  import type { AgentController, AgentControllerMode, Session } from '@mastra/core/agent-controller';
3
- /**
4
- * ACP Agent implementation that wraps a mastracode Controller.
5
- * Each instance represents one ACP connection from a client.
6
- */
3
+ import type { ThinkingLevelSetting } from '../thinking.js';
4
+ import type { AcpSkills } from './skills.js';
5
+ export interface AcpSessionRuntime {
6
+ controller: AgentController;
7
+ session: Session;
8
+ modes: AgentControllerMode[];
9
+ getThinkingLevel?: () => ThinkingLevelSetting;
10
+ getSkills?: () => Promise<AcpSkills | undefined>;
11
+ cleanup?: () => Promise<void>;
12
+ }
13
+ export type AcpSessionFactory = (request: NewSessionRequest) => Promise<AcpSessionRuntime>;
14
+ /** One ACP connection, with an independent Mastra Code runtime for each conversation. */
7
15
  export declare class MastraCodeAcpAgent implements Agent {
8
16
  private readonly connection;
9
- private readonly controller;
10
- private readonly session;
11
- private readonly modes;
12
- private readonly unsubscribeSessionEvents;
13
- private readonly sessionMap;
14
- private currentPromptState;
15
- private promptMutex;
16
- private getThreadIdOrThrow;
17
- constructor(connection: AgentSideConnection, controller: AgentController, session: Session, modes: AgentControllerMode[]);
18
- dispose(): void;
17
+ private readonly createSession;
18
+ private readonly sessions;
19
+ private readonly pendingCreations;
20
+ private readonly startupCleanupFailures;
21
+ private disposed;
22
+ private disposal?;
23
+ constructor(connection: AgentSideConnection, createSession: AcpSessionFactory);
24
+ private getSession;
25
+ private enqueue;
26
+ dispose(): Promise<void>;
19
27
  initialize(_request: InitializeRequest): Promise<InitializeResponse>;
20
28
  authenticate(): Promise<void>;
21
- newSession(_request: NewSessionRequest): Promise<NewSessionResponse>;
29
+ newSession(request: NewSessionRequest): Promise<NewSessionResponse>;
30
+ private createNewSession;
31
+ private refreshCommands;
32
+ private configOptions;
33
+ private thinkingLevel;
34
+ setSessionConfigOption(params: SetSessionConfigOptionRequest): Promise<SetSessionConfigOptionResponse>;
22
35
  prompt(request: PromptRequest): Promise<PromptResponse>;
23
- cancel(_notification: CancelNotification): Promise<void>;
36
+ cancel(notification: CancelNotification): Promise<void>;
24
37
  setSessionMode(params: {
25
38
  sessionId: string;
26
39
  modeId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/acp/agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EACL,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,YAAY,EACb,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAInG;;;GAGG;AACH,qBAAa,kBAAmB,YAAW,KAAK;IAC9C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsB;IACjD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkB;IAC7C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAwB;IAC9C,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAa;IACtD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA6B;IACxD,OAAO,CAAC,kBAAkB,CAA4B;IACtD,OAAO,CAAC,WAAW,CAAoC;IAEvD,OAAO,CAAC,kBAAkB;gBASxB,UAAU,EAAE,mBAAmB,EAC/B,UAAU,EAAE,eAAe,EAC3B,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,mBAAmB,EAAE;IAa9B,OAAO,IAAI,IAAI;IAIT,UAAU,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAcpE,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAI7B,UAAU,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA0CpE,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;IAsEvD,MAAM,CAAC,aAAa,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD,cAAc,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAM5E,wBAAwB,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAK9F;AAED,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,CAY3E;AAED,wBAAgB,aAAa,CAC3B,MAAM,EAAE,UAAU,GAAG,SAAS,GAAG,OAAO,GAAG,WAAW,GACrD,UAAU,GAAG,WAAW,GAAG,YAAY,GAAG,mBAAmB,GAAG,SAAS,CAW3E"}
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/acp/agent.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,KAAK,EACL,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,YAAY,EAEZ,6BAA6B,EAC7B,8BAA8B,EAE/B,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAEnG,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAM3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,eAAe,CAAC;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,mBAAmB,EAAE,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,oBAAoB,CAAC;IAC9C,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC;IACjD,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B;AAED,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAW3F,yFAAyF;AACzF,qBAAa,kBAAmB,YAAW,KAAK;IAQ5C,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,aAAa;IARhC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmC;IAC5D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA0C;IAC3E,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAiB;IACxD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAC,CAAgB;gBAGd,UAAU,EAAE,mBAAmB,EAC/B,aAAa,EAAE,iBAAiB;IAGnD,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,OAAO;IASf,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAgClB,UAAU,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAQpE,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAInC,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;YAUrD,gBAAgB;YAkGhB,eAAe;IAa7B,OAAO,CAAC,aAAa;IAqCrB,OAAO,CAAC,aAAa;IAMf,sBAAsB,CAAC,MAAM,EAAE,6BAA6B,GAAG,OAAO,CAAC,8BAA8B,CAAC;IA0BtG,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;IA2DvD,MAAM,CAAC,YAAY,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BvD,cAAc,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAU5E,wBAAwB,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAiB9F;AASD,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,CAiB3E;AAED,wBAAgB,aAAa,CAC3B,MAAM,EAAE,UAAU,GAAG,SAAS,GAAG,OAAO,GAAG,WAAW,GACrD,UAAU,GAAG,WAAW,GAAG,YAAY,GAAG,mBAAmB,GAAG,SAAS,CAW3E"}