erosolar-cli 1.7.414 → 1.7.415

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":"toolRuntime.d.ts","sourceRoot":"","sources":["../../src/core/toolRuntime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,415 @@
1
+ import { ToolArgumentValidationError, validateToolArguments, } from './schemaValidator.js';
2
+ import { globalPerformanceMonitor } from './performanceMonitor.js';
3
+ import { validateToolPreconditions, validateAIFlowPatterns } from './toolPreconditions.js';
4
+ // Idempotent tools that can be safely cached
5
+ const CACHEABLE_TOOLS = new Set([
6
+ 'Read',
7
+ 'read_file',
8
+ 'Glob',
9
+ 'glob_search',
10
+ 'Grep',
11
+ 'grep_search',
12
+ 'find_definition',
13
+ 'analyze_code_quality',
14
+ 'extract_exports',
15
+ ]);
16
+ function buildOptimizationHint(warning) {
17
+ const code = warning.code;
18
+ const suggestion = warning.suggestion || warning.message;
19
+ switch (code) {
20
+ case 'SEARCH_NO_LIMIT':
21
+ case 'SEARCH_BROAD_PATTERN':
22
+ case 'SEARCH_OVERLY_BROAD':
23
+ return (`\n\n<optimization-hint>\n` +
24
+ `⚡ SEARCH SCOPE OPTIMIZATION: ${suggestion}\n` +
25
+ `Prefer targeted globs (e.g., "src/**/*.ts") and include head_limit to avoid context blowups.\n` +
26
+ `</optimization-hint>`);
27
+ case 'EDIT_WITHOUT_READ':
28
+ case 'EDIT_PLACEHOLDER':
29
+ case 'EDIT_NO_CONTEXT':
30
+ return (`\n\n<optimization-hint>\n` +
31
+ `⚡ EDIT RELIABILITY: Read the file immediately before editing to copy the exact whitespace and context. ${suggestion}\n` +
32
+ `</optimization-hint>`);
33
+ case 'DEFERRED_VALIDATION_REMINDER':
34
+ case 'EXCESSIVE_VALIDATION':
35
+ return (`\n\n<optimization-hint>\n` +
36
+ `⚡ VALIDATION STRATEGY: Batch your edits, then run a single validation pass at the end to save cycles. ${suggestion}\n` +
37
+ `</optimization-hint>`);
38
+ case 'GIT_EFFICIENCY_OPTIMIZATION':
39
+ return (`\n\n<optimization-hint>\n` +
40
+ `⚡ GIT EFFICIENCY: Combine git commands when possible (e.g., "git add -A && git commit -m \\"msg\\" && git push").\n` +
41
+ `</optimization-hint>`);
42
+ case 'NPM_INCOMPLETE_WORKFLOW':
43
+ case 'NPM_INCOMPLETE_PUBLISH':
44
+ return (`\n\n<optimization-hint>\n` +
45
+ `⚡ PUBLISH WORKFLOW: Confirm release steps cover auth, version bump, build/tests, publish, and git push per this repo; prefer npm_publish or documented scripts over rigid chains.\n` +
46
+ `</optimization-hint>`);
47
+ default:
48
+ return null;
49
+ }
50
+ }
51
+ /**
52
+ * Type-safe utility functions for tool runtime operations
53
+ */
54
+ export var ToolRuntimeUtils;
55
+ (function (ToolRuntimeUtils) {
56
+ /**
57
+ * Creates a type-safe tool definition with inferred parameter types
58
+ */
59
+ function createToolDefinition(definition) {
60
+ return definition;
61
+ }
62
+ ToolRuntimeUtils.createToolDefinition = createToolDefinition;
63
+ /**
64
+ * Creates a type-safe tool suite with inferred tool types
65
+ */
66
+ function createToolSuite(suite) {
67
+ return suite;
68
+ }
69
+ ToolRuntimeUtils.createToolSuite = createToolSuite;
70
+ /**
71
+ * Type guard to check if a tool definition matches expected parameter schema
72
+ */
73
+ function isToolDefinition(__tool, expectedSchema) {
74
+ if (!expectedSchema)
75
+ return true;
76
+ // In a real implementation, this would validate against the schema
77
+ return true;
78
+ }
79
+ ToolRuntimeUtils.isToolDefinition = isToolDefinition;
80
+ })(ToolRuntimeUtils || (ToolRuntimeUtils = {}));
81
+ export class ToolRuntime {
82
+ registry = new Map();
83
+ registrationOrder = [];
84
+ observer;
85
+ contextManager;
86
+ cache = new Map();
87
+ enableCache;
88
+ cacheTTLMs;
89
+ toolHistory = [];
90
+ maxHistorySize = 50; // Keep last 50 tool calls for AI flow pattern detection
91
+ constructor(baseTools = [], options = {}) {
92
+ this.observer = options.observer ?? null;
93
+ this.contextManager = options.contextManager ?? null;
94
+ this.enableCache = options.enableCache ?? true;
95
+ this.cacheTTLMs = options.cacheTTLMs ?? 5 * 60 * 1000; // 5 minutes default
96
+ if (baseTools.length) {
97
+ this.registerSuite({
98
+ id: 'runtime.core',
99
+ description: 'Core runtime metadata tools',
100
+ tools: baseTools,
101
+ });
102
+ }
103
+ }
104
+ registerSuite(suite) {
105
+ if (!suite?.id?.trim()) {
106
+ throw new Error('Tool suite id cannot be blank.');
107
+ }
108
+ this.unregisterSuite(suite.id);
109
+ for (const definition of suite.tools ?? []) {
110
+ this.addTool(definition, suite.id);
111
+ }
112
+ }
113
+ unregisterSuite(id) {
114
+ if (!id?.trim()) {
115
+ return;
116
+ }
117
+ for (const [name, record] of this.registry.entries()) {
118
+ if (record.suiteId === id) {
119
+ this.registry.delete(name);
120
+ this.removeFromOrder(name);
121
+ }
122
+ }
123
+ }
124
+ listProviderTools() {
125
+ return this.registrationOrder
126
+ .map((name) => this.registry.get(name))
127
+ .filter((record) => Boolean(record))
128
+ .map(({ definition }) => ({
129
+ name: definition.name,
130
+ description: definition.description,
131
+ ...(definition.parameters && { parameters: definition.parameters }),
132
+ }));
133
+ }
134
+ async execute(call, context) {
135
+ const record = this.registry.get(call.name);
136
+ // Parse args early to create augmented call for observer
137
+ const args = normalizeToolArguments(call.arguments);
138
+ const augmentedCall = { ...call, args };
139
+ if (!record) {
140
+ const message = `Tool "${call.name}" is not available.`;
141
+ this.observer?.onToolError?.(augmentedCall, message);
142
+ globalPerformanceMonitor.recordToolError(call, message, context ?? undefined);
143
+ return message;
144
+ }
145
+ // Check if tool is cacheable
146
+ const isCacheable = record.definition.cacheable ?? CACHEABLE_TOOLS.has(call.name);
147
+ // Try to get from cache
148
+ if (this.enableCache && isCacheable) {
149
+ const cacheKey = this.getCacheKey(call);
150
+ const cached = this.cache.get(cacheKey);
151
+ if (cached && Date.now() - cached.timestamp < this.cacheTTLMs) {
152
+ this.observer?.onCacheHit?.(augmentedCall);
153
+ this.observer?.onToolResult?.(augmentedCall, cached.result);
154
+ // Record cache hit as successful execution with 0ms time
155
+ globalPerformanceMonitor.startToolCall(call, context)();
156
+ return cached.result;
157
+ }
158
+ }
159
+ this.observer?.onToolStart?.(augmentedCall);
160
+ // Start performance monitoring
161
+ const finishToolCall = globalPerformanceMonitor.startToolCall(call, context);
162
+ try {
163
+ validateToolArguments(record.definition.name, record.definition.parameters, args);
164
+ // Pre-flight AI flow validation - catch common tool usage failures
165
+ const preflightWarnings = validateToolPreconditions(call.name, args);
166
+ for (const warning of preflightWarnings) {
167
+ this.observer?.onToolWarning?.(augmentedCall, warning);
168
+ }
169
+ // Advanced AI flow pattern validation using tool history
170
+ const aiFlowWarnings = validateAIFlowPatterns(call.name, args, this.toolHistory);
171
+ for (const warning of aiFlowWarnings) {
172
+ this.observer?.onToolWarning?.(augmentedCall, warning);
173
+ }
174
+ // Collect optimization hints to inject into result
175
+ const optimizationHints = [];
176
+ const seenOptimizationCodes = new Set();
177
+ for (const warning of [...preflightWarnings, ...aiFlowWarnings]) {
178
+ if (warning.code && seenOptimizationCodes.has(warning.code)) {
179
+ continue;
180
+ }
181
+ const hint = buildOptimizationHint(warning);
182
+ if (hint) {
183
+ if (warning.code) {
184
+ seenOptimizationCodes.add(warning.code);
185
+ }
186
+ optimizationHints.push(hint);
187
+ }
188
+ }
189
+ // Track this tool call in history for AI flow pattern detection
190
+ this.toolHistory.push({
191
+ toolName: call.name,
192
+ args,
193
+ timestamp: Date.now(),
194
+ });
195
+ // Keep history bounded to prevent memory growth
196
+ if (this.toolHistory.length > this.maxHistorySize) {
197
+ this.toolHistory.shift();
198
+ }
199
+ const result = await record.definition.handler(args);
200
+ let output = typeof result === 'string' ? result : JSON.stringify(result, null, 2);
201
+ // Truncate output if context manager is available
202
+ if (this.contextManager) {
203
+ const truncated = this.contextManager.truncateToolOutput(output, call.name);
204
+ if (truncated.wasTruncated) {
205
+ output = truncated.content;
206
+ // Log truncation for debugging
207
+ if (process.env['DEBUG_CONTEXT']) {
208
+ console.warn(`[Context Manager] Truncated ${call.name} output: ${truncated.originalLength} -> ${truncated.truncatedLength} chars`);
209
+ }
210
+ }
211
+ }
212
+ // Cache the result if cacheable
213
+ if (this.enableCache && isCacheable) {
214
+ const cacheKey = this.getCacheKey(call);
215
+ this.cache.set(cacheKey, {
216
+ result: output,
217
+ timestamp: Date.now(),
218
+ });
219
+ }
220
+ // Append optimization hints to guide future LLM behavior
221
+ if (optimizationHints.length > 0) {
222
+ output = output + optimizationHints.join('');
223
+ }
224
+ this.observer?.onToolResult?.(augmentedCall, output);
225
+ // Record successful execution
226
+ finishToolCall();
227
+ return output;
228
+ }
229
+ catch (error) {
230
+ let formatted;
231
+ if (error instanceof ToolArgumentValidationError) {
232
+ formatted = error.message;
233
+ }
234
+ else {
235
+ const message = error instanceof Error ? error.message : String(error);
236
+ formatted = `Failed to run "${call.name}": ${message}`;
237
+ }
238
+ this.observer?.onToolError?.(augmentedCall, formatted);
239
+ // Record failed execution
240
+ globalPerformanceMonitor.recordToolError(call, formatted, context ?? undefined);
241
+ return formatted;
242
+ }
243
+ }
244
+ getCacheKey(call) {
245
+ return `${call.name}:${JSON.stringify(call.arguments)}`;
246
+ }
247
+ clearCache() {
248
+ this.cache.clear();
249
+ }
250
+ getCacheStats() {
251
+ let totalSize = 0;
252
+ for (const entry of this.cache.values()) {
253
+ totalSize += entry.result.length;
254
+ }
255
+ return {
256
+ size: totalSize,
257
+ entries: this.cache.size,
258
+ };
259
+ }
260
+ clearToolHistory() {
261
+ this.toolHistory.length = 0;
262
+ }
263
+ getToolHistory() {
264
+ return this.toolHistory;
265
+ }
266
+ addTool(definition, suiteId) {
267
+ if (!definition?.name?.trim()) {
268
+ throw new Error(`Tool names cannot be blank (suite "${suiteId}").`);
269
+ }
270
+ if (this.registry.has(definition.name)) {
271
+ const owner = this.registry.get(definition.name)?.suiteId ?? 'unknown';
272
+ throw new Error(`Tool "${definition.name}" already registered by suite "${owner}".`);
273
+ }
274
+ this.registry.set(definition.name, {
275
+ suiteId,
276
+ definition,
277
+ });
278
+ this.registrationOrder.push(definition.name);
279
+ }
280
+ removeFromOrder(name) {
281
+ const index = this.registrationOrder.indexOf(name);
282
+ if (index >= 0) {
283
+ this.registrationOrder.splice(index, 1);
284
+ }
285
+ }
286
+ }
287
+ export function createDefaultToolRuntime(context, toolSuites = [], options = {}) {
288
+ const runtime = new ToolRuntime([
289
+ buildContextSnapshotTool(context.workspaceContext),
290
+ buildCapabilitiesTool(context),
291
+ buildProfileInspectorTool(context),
292
+ ], options);
293
+ for (const suite of toolSuites) {
294
+ runtime.registerSuite(suite);
295
+ }
296
+ return runtime;
297
+ }
298
+ function buildContextSnapshotTool(workspaceContext) {
299
+ return {
300
+ name: 'context_snapshot',
301
+ description: 'Returns a summary of the repository context. NOTE: Full context is already in your system prompt - only use this if you need to refresh or verify the context.',
302
+ parameters: {
303
+ type: 'object',
304
+ properties: {
305
+ format: {
306
+ type: 'string',
307
+ description: 'Use "plain" for raw text or "markdown" for a fenced block.',
308
+ enum: ['plain', 'markdown'],
309
+ },
310
+ },
311
+ },
312
+ handler: (args) => {
313
+ if (!workspaceContext?.trim()) {
314
+ return 'Workspace context is unavailable.';
315
+ }
316
+ // CRITICAL: Return only summary to prevent context duplication
317
+ // Full context is already in system prompt
318
+ const lines = workspaceContext.trim().split('\n');
319
+ const totalLines = lines.length;
320
+ // Return just first 20 lines + summary
321
+ const preview = lines.slice(0, 20).join('\n');
322
+ const summary = [
323
+ preview,
324
+ '',
325
+ `[Workspace context: ${totalLines} total lines]`,
326
+ `[Full context already available in system prompt - use Read/Glob tools for specific files]`
327
+ ].join('\n');
328
+ const format = args['format'] === 'markdown' ? 'markdown' : 'plain';
329
+ if (format === 'markdown') {
330
+ return ['```text', summary, '```'].join('\n');
331
+ }
332
+ return summary;
333
+ },
334
+ };
335
+ }
336
+ function buildCapabilitiesTool(context) {
337
+ return {
338
+ name: 'capabilities_overview',
339
+ description: 'Summarizes the agent runtime capabilities including available tools and features.',
340
+ parameters: {
341
+ type: 'object',
342
+ properties: {
343
+ audience: {
344
+ type: 'string',
345
+ enum: ['developer', 'model'],
346
+ description: 'Tailors the tone of the description.',
347
+ },
348
+ },
349
+ },
350
+ handler: (args) => {
351
+ const audience = args['audience'];
352
+ const adjective = audience === 'developer' ? 'Operator facing' : 'Model facing';
353
+ return [
354
+ `${adjective} capabilities summary:`,
355
+ '- Full file system access (read, write, list, search).',
356
+ '- Bash command execution for running scripts and tools.',
357
+ '- Advanced code search and pattern matching.',
358
+ '- Deterministic workspace context snapshot appended to the system prompt.',
359
+ '- Tool invocations are logged in realtime for transparency.',
360
+ `- Active provider: ${context.provider} (${context.model}).`,
361
+ ].join('\n');
362
+ },
363
+ };
364
+ }
365
+ function buildProfileInspectorTool(context) {
366
+ return {
367
+ name: 'profile_details',
368
+ description: 'Returns the configuration of the active CLI profile.',
369
+ parameters: {
370
+ type: 'object',
371
+ properties: {
372
+ includeWorkspaceContext: {
373
+ type: 'boolean',
374
+ description: 'Set true to append the workspace context snapshot if available.',
375
+ },
376
+ },
377
+ additionalProperties: false,
378
+ },
379
+ handler: (args) => {
380
+ const payload = {
381
+ profile: context.profileName,
382
+ provider: context.provider,
383
+ model: context.model,
384
+ workspaceContext: args['includeWorkspaceContext'] ? context.workspaceContext ?? null : null,
385
+ };
386
+ return JSON.stringify(payload, null, 2);
387
+ },
388
+ };
389
+ }
390
+ function normalizeToolArguments(value) {
391
+ if (value instanceof Map) {
392
+ return Object.fromEntries(value.entries());
393
+ }
394
+ if (isRecord(value)) {
395
+ return value;
396
+ }
397
+ if (typeof value === 'string') {
398
+ const trimmed = value.trim();
399
+ if (!trimmed) {
400
+ return {};
401
+ }
402
+ try {
403
+ const parsed = JSON.parse(trimmed);
404
+ return isRecord(parsed) ? parsed : {};
405
+ }
406
+ catch {
407
+ return {};
408
+ }
409
+ }
410
+ return {};
411
+ }
412
+ function isRecord(value) {
413
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
414
+ }
415
+ //# sourceMappingURL=toolRuntime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolRuntime.js","sourceRoot":"","sources":["../../src/core/toolRuntime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,116 @@
1
+ /**
2
+ * Comprehensive Tool Validation System
3
+ *
4
+ * Provides proactive validation for AI tool usage with:
5
+ * - Pre-flight validation before tool execution
6
+ * - Real-time AI flow guidance
7
+ * - Pattern-based anti-pattern detection
8
+ * - Recovery suggestions for common failures
9
+ */
10
+ import type { ToolDefinition } from './toolRuntime.js';
11
+ /**
12
+ * Tool validation result
13
+ */
14
+ export interface ToolValidationResult {
15
+ readonly valid: boolean;
16
+ readonly warnings: ToolValidationWarning[];
17
+ readonly suggestions: ToolValidationSuggestion[];
18
+ readonly criticalErrors: ToolValidationError[];
19
+ }
20
+ /**
21
+ * Tool validation warning
22
+ */
23
+ export interface ToolValidationWarning {
24
+ readonly code: string;
25
+ readonly message: string;
26
+ readonly severity: 'low' | 'medium' | 'high';
27
+ readonly suggestion?: string;
28
+ }
29
+ /**
30
+ * Tool validation error
31
+ */
32
+ export interface ToolValidationError {
33
+ readonly code: string;
34
+ readonly message: string;
35
+ readonly recovery?: string;
36
+ }
37
+ /**
38
+ * Tool validation suggestion
39
+ */
40
+ export interface ToolValidationSuggestion {
41
+ readonly code: string;
42
+ readonly message: string;
43
+ readonly action: string;
44
+ }
45
+ /**
46
+ * AI flow guidance patterns
47
+ */
48
+ export interface AIFlowPattern {
49
+ readonly pattern: string;
50
+ readonly description: string;
51
+ readonly guidance: string;
52
+ readonly examples: string[];
53
+ }
54
+ /**
55
+ * Tool usage context
56
+ */
57
+ export interface ToolUsageContext {
58
+ readonly toolName: string;
59
+ readonly parameters: Record<string, unknown>;
60
+ readonly workspaceContext?: {
61
+ readonly currentFiles: string[];
62
+ readonly recentOperations: string[];
63
+ readonly workspacePath: string;
64
+ };
65
+ }
66
+ /**
67
+ * Comprehensive tool validator
68
+ */
69
+ export declare class ToolValidator {
70
+ private readonly patterns;
71
+ /**
72
+ * Validate tool usage before execution
73
+ */
74
+ validateToolUsage(tool: ToolDefinition, context: ToolUsageContext): ToolValidationResult;
75
+ /**
76
+ * Validate tool-specific patterns
77
+ */
78
+ private validateToolSpecific;
79
+ /**
80
+ * Validate Edit tool usage
81
+ */
82
+ private validateEditTool;
83
+ /**
84
+ * Validate search tools (Glob, Grep)
85
+ */
86
+ private validateSearchTools;
87
+ /**
88
+ * Validate bash commands
89
+ */
90
+ private validateBashCommands;
91
+ /**
92
+ * Validate AI flow patterns
93
+ */
94
+ private validateAIFlowPatterns;
95
+ /**
96
+ * Validate performance optimizations
97
+ */
98
+ private validatePerformance;
99
+ private containsPlaceholderPattern;
100
+ private isLongSingleLine;
101
+ private hasIndentationMismatch;
102
+ private detectIndentation;
103
+ private isOverlyBroadPattern;
104
+ private isBroadPattern;
105
+ private mapFlowSeverity;
106
+ /**
107
+ * Get AI flow guidance for a specific pattern
108
+ */
109
+ getAIFlowGuidance(patternId: string): AIFlowPattern | undefined;
110
+ /**
111
+ * Get all AI flow patterns
112
+ */
113
+ getAllAIFlowPatterns(): AIFlowPattern[];
114
+ }
115
+ export declare const globalToolValidator: ToolValidator;
116
+ //# sourceMappingURL=toolValidation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolValidation.d.ts","sourceRoot":"","sources":["../../src/core/toolValidation.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGvD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,EAAE,CAAC;IAC3C,QAAQ,CAAC,WAAW,EAAE,wBAAwB,EAAE,CAAC;IACjD,QAAQ,CAAC,cAAc,EAAE,mBAAmB,EAAE,CAAC;CAChD;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC7C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7C,QAAQ,CAAC,gBAAgB,CAAC,EAAE;QAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;QAChC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,EAAE,CAAC;QACpC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;KAChC,CAAC;CACH;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAuDvB;IAEF;;OAEG;IACH,iBAAiB,CACf,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE,gBAAgB,GACxB,oBAAoB;IAsBvB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAqB5B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAuCxB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA4B3B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA6B5B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAsB9B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAwB3B,OAAO,CAAC,0BAA0B;IAWlC,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,sBAAsB;IAM9B,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,oBAAoB;IAK5B,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,eAAe;IAWvB;;OAEG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAI/D;;OAEG;IACH,oBAAoB,IAAI,aAAa,EAAE;CAGxC;AAGD,eAAO,MAAM,mBAAmB,eAAsB,CAAC"}