@enactprotocol/execution 2.2.4 → 2.3.1

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-provider.d.ts","sourceRoot":"","sources":["../src/local-provider.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAQnF,OAAO,KAAK,EACV,YAAY,EAEZ,cAAc,EAEd,gBAAgB,EAEhB,iBAAiB,EACjB,eAAe,EAChB,MAAM,uBAAuB,CAAC;AAE/B;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,sCAAsC;IACtC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,6BAA6B;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,oEAAoE;IACpE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,qBAAa,sBAAuB,YAAW,iBAAiB;IAC9D,QAAQ,CAAC,IAAI,WAAW;IACxB,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,OAAO,CAAqB;gBAExB,MAAM,GAAE,mBAAwB;IAK5C;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAIrC;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,YAAY,CAAC;IAQxC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAI3B;;OAEG;IACH,OAAO,CAAC,YAAY;IA2BpB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA+BzB;;OAEG;YACW,QAAQ;IAYtB;;OAEG;IACH,OAAO,CAAC,UAAU;IA2DlB;;OAEG;IACG,OAAO,CACX,QAAQ,EAAE,YAAY,EACtB,KAAK,EAAE,cAAc,EACrB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,eAAe,CAAC;IAmE3B;;OAEG;IACG,IAAI,CACR,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,eAAe,CAAC;IAQ3B;;OAEG;IACG,aAAa,CACjB,QAAQ,EAAE,YAAY,EACtB,eAAe,EAAE,eAAe,EAChC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,cAAc,EACrB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,eAAe,CAAC;IAgJ3B;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAGhC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAErD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,GAChD,OAAO,GAAG,WAAW,CAWvB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,GAAE,mBAAwB,GAAG,sBAAsB,CAE5F"}
@@ -0,0 +1,369 @@
1
+ /**
2
+ * Local Execution Provider
3
+ *
4
+ * Executes commands directly on the host system without containerization.
5
+ * This is faster but provides no isolation or sandboxing.
6
+ */
7
+ import { spawn } from "node:child_process";
8
+ import { existsSync } from "node:fs";
9
+ import { join } from "node:path";
10
+ import { applyDefaults, getEffectiveInputSchema, prepareActionCommand, prepareCommand, validateInputs, } from "@enactprotocol/shared";
11
+ /**
12
+ * Provider for executing commands directly on the host system
13
+ *
14
+ * WARNING: This provider offers no sandboxing or isolation.
15
+ * Commands have full access to the filesystem and network.
16
+ */
17
+ export class LocalExecutionProvider {
18
+ name = "local";
19
+ defaultTimeout;
20
+ workdir;
21
+ constructor(config = {}) {
22
+ this.defaultTimeout = config.defaultTimeout ?? 300000; // 5 minutes
23
+ this.workdir = config.workdir;
24
+ }
25
+ /**
26
+ * Initialize the provider
27
+ */
28
+ async initialize() {
29
+ // No initialization needed for local execution
30
+ }
31
+ /**
32
+ * Check if the provider is available (always true for local)
33
+ */
34
+ async isAvailable() {
35
+ return true;
36
+ }
37
+ /**
38
+ * Get provider health status
39
+ */
40
+ async getHealth() {
41
+ return {
42
+ healthy: true,
43
+ runtime: "docker", // N/A but required by interface
44
+ consecutiveFailures: 0,
45
+ };
46
+ }
47
+ /**
48
+ * Generate a unique execution ID
49
+ */
50
+ generateExecutionId() {
51
+ return `local-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`;
52
+ }
53
+ /**
54
+ * Parse a timeout string to milliseconds
55
+ */
56
+ parseTimeout(timeout) {
57
+ if (!timeout) {
58
+ return this.defaultTimeout ?? 300000;
59
+ }
60
+ const match = timeout.match(/^(\d+)(ms|s|m|h)?$/);
61
+ if (!match) {
62
+ return this.defaultTimeout ?? 300000;
63
+ }
64
+ const value = Number.parseInt(match[1] ?? "300000", 10);
65
+ const unit = match[2] ?? "ms";
66
+ switch (unit) {
67
+ case "ms":
68
+ return value;
69
+ case "s":
70
+ return value * 1000;
71
+ case "m":
72
+ return value * 60000;
73
+ case "h":
74
+ return value * 3600000;
75
+ default:
76
+ return value;
77
+ }
78
+ }
79
+ /**
80
+ * Create an error result
81
+ */
82
+ createErrorResult(toolName, executionId, startTime, code, message) {
83
+ const endTime = new Date();
84
+ return {
85
+ success: false,
86
+ output: {
87
+ stdout: "",
88
+ stderr: message,
89
+ exitCode: 1,
90
+ },
91
+ metadata: {
92
+ toolName,
93
+ containerImage: "local",
94
+ startTime,
95
+ endTime,
96
+ durationMs: endTime.getTime() - startTime.getTime(),
97
+ cached: false,
98
+ executionId,
99
+ },
100
+ error: {
101
+ code,
102
+ message,
103
+ },
104
+ };
105
+ }
106
+ /**
107
+ * Run build commands if specified
108
+ */
109
+ async runBuild(build, cwd, env) {
110
+ const commands = Array.isArray(build) ? build : [build];
111
+ for (const command of commands) {
112
+ await this.runCommand(command.split(/\s+/), cwd, env, 600000); // 10 min timeout for build
113
+ }
114
+ }
115
+ /**
116
+ * Run a command and return the output
117
+ */
118
+ runCommand(commandArray, cwd, env, timeoutMs) {
119
+ return new Promise((resolve, reject) => {
120
+ const [cmd, ...args] = commandArray;
121
+ if (!cmd) {
122
+ reject(new Error("Empty command"));
123
+ return;
124
+ }
125
+ const child = spawn(cmd, args, {
126
+ cwd,
127
+ env: { ...process.env, ...env },
128
+ stdio: ["pipe", "pipe", "pipe"],
129
+ });
130
+ let stdout = "";
131
+ let stderr = "";
132
+ let timedOut = false;
133
+ const timer = setTimeout(() => {
134
+ timedOut = true;
135
+ child.kill("SIGTERM");
136
+ setTimeout(() => child.kill("SIGKILL"), 5000);
137
+ }, timeoutMs);
138
+ child.stdout?.on("data", (data) => {
139
+ stdout += data.toString();
140
+ });
141
+ child.stderr?.on("data", (data) => {
142
+ stderr += data.toString();
143
+ });
144
+ child.on("error", (error) => {
145
+ clearTimeout(timer);
146
+ reject(error);
147
+ });
148
+ child.on("close", (exitCode) => {
149
+ clearTimeout(timer);
150
+ if (timedOut) {
151
+ reject(new Error("TIMEOUT"));
152
+ return;
153
+ }
154
+ resolve({
155
+ stdout,
156
+ stderr,
157
+ exitCode: exitCode ?? 1,
158
+ });
159
+ });
160
+ });
161
+ }
162
+ /**
163
+ * Execute a tool (for compatibility - uses manifest.command)
164
+ */
165
+ async execute(manifest, input, options = {}) {
166
+ const startTime = new Date();
167
+ const executionId = this.generateExecutionId();
168
+ if (!manifest.command) {
169
+ return this.createErrorResult(manifest.name, executionId, startTime, "COMMAND_ERROR", "No command specified in manifest");
170
+ }
171
+ const workdir = options.workdir ?? this.workdir ?? process.cwd();
172
+ const timeoutMs = this.parseTimeout(options.timeout ?? manifest.timeout);
173
+ // Build environment
174
+ const env = {
175
+ ...input.envOverrides,
176
+ };
177
+ try {
178
+ // Interpolate parameters and prepare command array
179
+ const commandArray = prepareCommand(manifest.command, input.params);
180
+ const output = await this.runCommand(commandArray, workdir, env, timeoutMs);
181
+ const endTime = new Date();
182
+ const metadata = {
183
+ toolName: manifest.name,
184
+ containerImage: "local",
185
+ startTime,
186
+ endTime,
187
+ durationMs: endTime.getTime() - startTime.getTime(),
188
+ cached: false,
189
+ executionId,
190
+ };
191
+ if (output.exitCode !== 0) {
192
+ return {
193
+ success: false,
194
+ output,
195
+ metadata,
196
+ error: {
197
+ code: "COMMAND_ERROR",
198
+ message: `Command exited with code ${output.exitCode}`,
199
+ },
200
+ };
201
+ }
202
+ return {
203
+ success: true,
204
+ output,
205
+ metadata,
206
+ };
207
+ }
208
+ catch (error) {
209
+ const message = error instanceof Error ? error.message : String(error);
210
+ let code = "COMMAND_ERROR";
211
+ if (message === "TIMEOUT") {
212
+ code = "TIMEOUT";
213
+ }
214
+ return this.createErrorResult(manifest.name, executionId, startTime, code, message);
215
+ }
216
+ }
217
+ /**
218
+ * Execute a raw command
219
+ */
220
+ async exec(manifest, command, options = {}) {
221
+ const execManifest = {
222
+ ...manifest,
223
+ command,
224
+ };
225
+ return this.execute(execManifest, { params: {} }, options);
226
+ }
227
+ /**
228
+ * Execute an action from ACTIONS.yaml
229
+ */
230
+ async executeAction(manifest, actionsManifest, actionName, action, input, options = {}) {
231
+ const startTime = new Date();
232
+ const executionId = this.generateExecutionId();
233
+ // Get effective inputSchema (defaults to empty if not provided)
234
+ const effectiveSchema = getEffectiveInputSchema(action);
235
+ // Validate inputs against action's inputSchema
236
+ const validation = validateInputs(input.params, effectiveSchema);
237
+ if (!validation.valid) {
238
+ const errorMessages = validation.errors.map((e) => `${e.path}: ${e.message}`);
239
+ return this.createErrorResult(`${manifest.name}:${actionName}`, executionId, startTime, "VALIDATION_ERROR", `Input validation failed: ${errorMessages.join(", ")}`);
240
+ }
241
+ // Apply defaults to inputs
242
+ const params = applyDefaults(input.params, effectiveSchema);
243
+ // Prepare the command using {{param}} template system
244
+ let commandArray;
245
+ try {
246
+ const actionCommand = action.command;
247
+ if (typeof actionCommand === "string") {
248
+ // String-form command (no templates allowed - validation ensures this)
249
+ commandArray = actionCommand.split(/\s+/).filter((s) => s.length > 0);
250
+ }
251
+ else {
252
+ // Array-form command with {{param}} templates
253
+ commandArray = prepareActionCommand(actionCommand, params, effectiveSchema);
254
+ }
255
+ }
256
+ catch (error) {
257
+ const message = error instanceof Error ? error.message : String(error);
258
+ return this.createErrorResult(`${manifest.name}:${actionName}`, executionId, startTime, "COMMAND_ERROR", `Failed to prepare action command: ${message}`);
259
+ }
260
+ if (commandArray.length === 0) {
261
+ return this.createErrorResult(`${manifest.name}:${actionName}`, executionId, startTime, "COMMAND_ERROR", "Action command is empty");
262
+ }
263
+ const workdir = options.workdir ?? this.workdir ?? process.cwd();
264
+ const timeoutMs = this.parseTimeout(options.timeout ?? manifest.timeout);
265
+ // Build environment
266
+ const env = {
267
+ ...input.envOverrides,
268
+ };
269
+ // Add env from actions manifest
270
+ if (actionsManifest.env) {
271
+ for (const [key, envVar] of Object.entries(actionsManifest.env)) {
272
+ if (envVar.default && !env[key]) {
273
+ env[key] = envVar.default;
274
+ }
275
+ }
276
+ }
277
+ try {
278
+ // Run build commands if present
279
+ if (actionsManifest.build) {
280
+ await this.runBuild(actionsManifest.build, workdir, env);
281
+ }
282
+ // Execute the action command
283
+ const output = await this.runCommand(commandArray, workdir, env, timeoutMs);
284
+ const endTime = new Date();
285
+ const metadata = {
286
+ toolName: `${manifest.name}:${actionName}`,
287
+ containerImage: "local",
288
+ startTime,
289
+ endTime,
290
+ durationMs: endTime.getTime() - startTime.getTime(),
291
+ cached: false,
292
+ executionId,
293
+ };
294
+ if (manifest.version) {
295
+ metadata.toolVersion = manifest.version;
296
+ }
297
+ if (output.exitCode !== 0) {
298
+ return {
299
+ success: false,
300
+ output,
301
+ metadata,
302
+ error: {
303
+ code: "COMMAND_ERROR",
304
+ message: `Action "${actionName}" exited with code ${output.exitCode}`,
305
+ ...(output.stderr && { details: { stderr: output.stderr } }),
306
+ },
307
+ };
308
+ }
309
+ // Validate output against outputSchema if defined
310
+ if (action.outputSchema && output.stdout) {
311
+ try {
312
+ const parsed = JSON.parse(output.stdout);
313
+ output.parsed = parsed;
314
+ }
315
+ catch {
316
+ // Output is not JSON - that's OK, leave as string
317
+ }
318
+ }
319
+ return {
320
+ success: true,
321
+ output,
322
+ metadata,
323
+ };
324
+ }
325
+ catch (error) {
326
+ const message = error instanceof Error ? error.message : String(error);
327
+ let code = "COMMAND_ERROR";
328
+ if (message.startsWith("BUILD_ERROR:") || message.includes("build")) {
329
+ code = "BUILD_ERROR";
330
+ }
331
+ else if (message === "TIMEOUT") {
332
+ code = "TIMEOUT";
333
+ }
334
+ return this.createErrorResult(`${manifest.name}:${actionName}`, executionId, startTime, code, message);
335
+ }
336
+ }
337
+ /**
338
+ * Shutdown the provider (no-op for local)
339
+ */
340
+ async shutdown() {
341
+ // Nothing to clean up
342
+ }
343
+ }
344
+ /**
345
+ * Check if a directory has a Containerfile or Dockerfile
346
+ */
347
+ export function hasContainerfile(dir) {
348
+ return existsSync(join(dir, "Containerfile")) || existsSync(join(dir, "Dockerfile"));
349
+ }
350
+ /**
351
+ * Determine the execution mode based on skill directory and options
352
+ */
353
+ export function selectExecutionMode(skillDir, options) {
354
+ if (options.local) {
355
+ return "local";
356
+ }
357
+ if (options.container) {
358
+ return "container";
359
+ }
360
+ // Default: container if Containerfile exists, else local
361
+ return hasContainerfile(skillDir) ? "container" : "local";
362
+ }
363
+ /**
364
+ * Create a local execution provider
365
+ */
366
+ export function createLocalProvider(config = {}) {
367
+ return new LocalExecutionProvider(config);
368
+ }
369
+ //# sourceMappingURL=local-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-provider.js","sourceRoot":"","sources":["../src/local-provider.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  * Main execution provider that uses Dagger SDK to run
5
5
  * containerized commands for Enact tools.
6
6
  */
7
- import type { ToolManifest } from "@enactprotocol/shared";
7
+ import type { Action, ActionsManifest, ToolManifest } from "@enactprotocol/shared";
8
8
  import type { ContainerRuntime, EngineHealth, ExecutionInput, ExecutionOptions, ExecutionProvider, ExecutionResult } from "@enactprotocol/shared";
9
9
  /**
10
10
  * Configuration for the Dagger execution provider
@@ -53,6 +53,22 @@ export declare class DaggerExecutionProvider implements ExecutionProvider {
53
53
  * Execute a raw command in a tool's container
54
54
  */
55
55
  exec(manifest: ToolManifest, command: string, options?: ExecutionOptions): Promise<ExecutionResult>;
56
+ /**
57
+ * Execute an action from ACTIONS.yaml
58
+ *
59
+ * This method uses the {{param}} template system which:
60
+ * - Passes commands directly to execve() (no shell interpolation)
61
+ * - Each template becomes a single argument regardless of content
62
+ * - Omits arguments for optional params without values
63
+ *
64
+ * @param manifest - The skill manifest (SKILL.md)
65
+ * @param actionsManifest - The actions manifest (ACTIONS.yaml)
66
+ * @param actionName - The name of the action to execute
67
+ * @param action - The specific action definition to execute
68
+ * @param input - Execution input with params
69
+ * @param options - Execution options
70
+ */
71
+ executeAction(manifest: ToolManifest, actionsManifest: ActionsManifest, actionName: string, action: Action, input: ExecutionInput, options?: ExecutionOptions): Promise<ExecutionResult>;
56
72
  /**
57
73
  * Shutdown the provider
58
74
  */
@@ -61,6 +77,13 @@ export declare class DaggerExecutionProvider implements ExecutionProvider {
61
77
  * Run the container and capture output
62
78
  */
63
79
  private runContainer;
80
+ /**
81
+ * Run action container with direct exec (no shell wrapper)
82
+ *
83
+ * This is the key difference from runContainer - commands are passed
84
+ * directly to execve() without shell interpolation, preventing injection.
85
+ */
86
+ private runActionContainer;
64
87
  /**
65
88
  * Generate a unique execution ID
66
89
  */
@@ -1 +1 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAO1D,OAAO,KAAK,EACV,gBAAgB,EAChB,YAAY,EAEZ,cAAc,EAEd,gBAAgB,EAEhB,iBAAiB,EACjB,eAAe,EAChB,MAAM,uBAAuB,CAAC;AAE/B;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,sCAAsC;IACtC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kCAAkC;IAClC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,6BAA6B;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sCAAsC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,qBAAa,uBAAwB,YAAW,iBAAiB;IAC/D,QAAQ,CAAC,IAAI,YAAY;IACzB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,eAAe,CAAiC;IACxD,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,mBAAmB,CAAK;gBAEpB,MAAM,GAAE,oBAAyB;IAY7C;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAajC;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAOrC;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,YAAY,CAAC;IAwBxC;;OAEG;IACG,OAAO,CACX,QAAQ,EAAE,YAAY,EACtB,KAAK,EAAE,cAAc,EACrB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,eAAe,CAAC;IA6J3B;;OAEG;IACG,IAAI,CACR,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,eAAe,CAAC;IAe3B;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAK/B;;OAEG;YACW,YAAY;IA6O1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAI3B;;OAEG;IACH,OAAO,CAAC,YAAY;IAwBpB;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAgC1B;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,CAAC,EAAE,oBAAoB,GAAG,uBAAuB,CAE9F;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,YAAY,EACtB,KAAK,EAAE,cAAc,EACrB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,eAAe,CAAC,CAI1B"}
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AASnF,OAAO,KAAK,EACV,gBAAgB,EAChB,YAAY,EAEZ,cAAc,EAEd,gBAAgB,EAEhB,iBAAiB,EACjB,eAAe,EAChB,MAAM,uBAAuB,CAAC;AAE/B;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,sCAAsC;IACtC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kCAAkC;IAClC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,6BAA6B;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sCAAsC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,qBAAa,uBAAwB,YAAW,iBAAiB;IAC/D,QAAQ,CAAC,IAAI,YAAY;IACzB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,eAAe,CAAiC;IACxD,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,mBAAmB,CAAK;gBAEpB,MAAM,GAAE,oBAAyB;IAY7C;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAajC;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAOrC;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,YAAY,CAAC;IAwBxC;;OAEG;IACG,OAAO,CACX,QAAQ,EAAE,YAAY,EACtB,KAAK,EAAE,cAAc,EACrB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,eAAe,CAAC;IAsI3B;;OAEG;IACG,IAAI,CACR,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,eAAe,CAAC;IAe3B;;;;;;;;;;;;;;OAcG;IACG,aAAa,CACjB,QAAQ,EAAE,YAAY,EACtB,eAAe,EAAE,eAAe,EAChC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,cAAc,EACrB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,eAAe,CAAC;IA0K3B;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAK/B;;OAEG;YACW,YAAY;IA6O1B;;;;;OAKG;YACW,kBAAkB;IA4MhC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAI3B;;OAEG;IACH,OAAO,CAAC,YAAY;IAwBpB;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAgC1B;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,CAAC,EAAE,oBAAoB,GAAG,uBAAuB,CAE9F;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,YAAY,EACtB,KAAK,EAAE,cAAc,EACrB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,eAAe,CAAC,CAI1B"}