specweave 0.8.3 → 0.8.5

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 (70) hide show
  1. package/.claude-plugin/marketplace.json +11 -0
  2. package/dist/adapters/adapter-loader.d.ts +4 -4
  3. package/dist/adapters/adapter-loader.d.ts.map +1 -1
  4. package/dist/adapters/adapter-loader.js +8 -7
  5. package/dist/adapters/adapter-loader.js.map +1 -1
  6. package/dist/cli/commands/init.d.ts.map +1 -1
  7. package/dist/cli/commands/init.js +12 -1
  8. package/dist/cli/commands/init.js.map +1 -1
  9. package/dist/utils/docs-preview/config-generator.d.ts +46 -0
  10. package/dist/utils/docs-preview/config-generator.d.ts.map +1 -0
  11. package/dist/utils/docs-preview/config-generator.js +377 -0
  12. package/dist/utils/docs-preview/config-generator.js.map +1 -0
  13. package/dist/utils/docs-preview/docusaurus-setup.d.ts +38 -0
  14. package/dist/utils/docs-preview/docusaurus-setup.d.ts.map +1 -0
  15. package/dist/utils/docs-preview/docusaurus-setup.js +177 -0
  16. package/dist/utils/docs-preview/docusaurus-setup.js.map +1 -0
  17. package/dist/utils/docs-preview/index.d.ts +11 -0
  18. package/dist/utils/docs-preview/index.d.ts.map +1 -0
  19. package/dist/utils/docs-preview/index.js +17 -0
  20. package/dist/utils/docs-preview/index.js.map +1 -0
  21. package/dist/utils/docs-preview/package-installer.d.ts +42 -0
  22. package/dist/utils/docs-preview/package-installer.d.ts.map +1 -0
  23. package/dist/utils/docs-preview/package-installer.js +182 -0
  24. package/dist/utils/docs-preview/package-installer.js.map +1 -0
  25. package/dist/utils/docs-preview/server-manager.d.ts +30 -0
  26. package/dist/utils/docs-preview/server-manager.d.ts.map +1 -0
  27. package/dist/utils/docs-preview/server-manager.js +207 -0
  28. package/dist/utils/docs-preview/server-manager.js.map +1 -0
  29. package/dist/utils/docs-preview/sidebar-builder.d.ts +31 -0
  30. package/dist/utils/docs-preview/sidebar-builder.d.ts.map +1 -0
  31. package/dist/utils/docs-preview/sidebar-builder.js +202 -0
  32. package/dist/utils/docs-preview/sidebar-builder.js.map +1 -0
  33. package/dist/utils/docs-preview/types.d.ts +60 -0
  34. package/dist/utils/docs-preview/types.d.ts.map +1 -0
  35. package/dist/utils/docs-preview/types.js +5 -0
  36. package/dist/utils/docs-preview/types.js.map +1 -0
  37. package/dist/utils/docs-preview.bak/config-generator.d.ts +46 -0
  38. package/dist/utils/docs-preview.bak/config-generator.d.ts.map +1 -0
  39. package/dist/utils/docs-preview.bak/config-generator.js +377 -0
  40. package/dist/utils/docs-preview.bak/config-generator.js.map +1 -0
  41. package/dist/utils/docs-preview.bak/package-installer.d.ts +42 -0
  42. package/dist/utils/docs-preview.bak/package-installer.d.ts.map +1 -0
  43. package/dist/utils/docs-preview.bak/package-installer.js +182 -0
  44. package/dist/utils/docs-preview.bak/package-installer.js.map +1 -0
  45. package/dist/utils/docs-preview.bak/server-manager.d.ts +30 -0
  46. package/dist/utils/docs-preview.bak/server-manager.d.ts.map +1 -0
  47. package/dist/utils/docs-preview.bak/server-manager.js +207 -0
  48. package/dist/utils/docs-preview.bak/server-manager.js.map +1 -0
  49. package/dist/utils/docs-preview.bak/sidebar-builder.d.ts +31 -0
  50. package/dist/utils/docs-preview.bak/sidebar-builder.d.ts.map +1 -0
  51. package/dist/utils/docs-preview.bak/sidebar-builder.js +202 -0
  52. package/dist/utils/docs-preview.bak/sidebar-builder.js.map +1 -0
  53. package/dist/utils/docs-preview.bak/types.d.ts +60 -0
  54. package/dist/utils/docs-preview.bak/types.d.ts.map +1 -0
  55. package/dist/utils/docs-preview.bak/types.js +5 -0
  56. package/dist/utils/docs-preview.bak/types.js.map +1 -0
  57. package/package.json +1 -1
  58. package/src/templates/.gitattributes.template +35 -0
  59. package/dist/cli/commands/plugin.js +0 -322
  60. package/dist/cli/commands/plugin.js.map +0 -1
  61. package/dist/core/plugin-detector.d.ts +0 -97
  62. package/dist/core/plugin-detector.d.ts.map +0 -1
  63. package/dist/core/plugin-detector.js +0 -374
  64. package/dist/core/plugin-detector.js.map +0 -1
  65. package/dist/core/plugin-manager.d.ts +0 -144
  66. package/dist/core/plugin-manager.d.ts.map +0 -1
  67. package/dist/core/plugin-manager.js +0 -393
  68. package/dist/core/plugin-manager.js.map +0 -1
  69. package/dist/utils/plugin-detection.js +0 -229
  70. package/dist/utils/plugin-detection.js.map +0 -1
@@ -1,374 +0,0 @@
1
- /**
2
- * Plugin Detector
3
- *
4
- * Automatically detects which plugins should be enabled based on:
5
- * 1. Project structure (package.json, directories, env vars, git remote)
6
- * 2. Spec content (keywords, domain analysis)
7
- * 3. Task descriptions (pre-task hook)
8
- * 4. Git changes (post-increment hook)
9
- *
10
- * @module core/plugin-detector
11
- * @version 0.4.0
12
- */
13
- import * as path from 'path';
14
- import * as fs from 'fs-extra';
15
- import { PluginLoader } from './plugin-loader.js';
16
- /**
17
- * PluginDetector - Auto-detects relevant plugins for a project
18
- */
19
- export class PluginDetector {
20
- /**
21
- * Create a new PluginDetector
22
- *
23
- * @param pluginsDir - Path to plugins directory (default: src/plugins)
24
- */
25
- constructor(pluginsDir) {
26
- this.availablePlugins = [];
27
- this.loader = new PluginLoader();
28
- this.pluginsDir = pluginsDir || path.join(process.cwd(), 'src', 'plugins');
29
- }
30
- /**
31
- * Load available plugins for detection
32
- *
33
- * Scans plugins directory and loads all plugin manifests
34
- */
35
- async loadAvailablePlugins() {
36
- this.availablePlugins = [];
37
- if (!(await fs.pathExists(this.pluginsDir))) {
38
- return; // No plugins available
39
- }
40
- const dirs = await fs.readdir(this.pluginsDir);
41
- for (const dir of dirs) {
42
- const pluginPath = path.join(this.pluginsDir, dir);
43
- const stat = await fs.stat(pluginPath);
44
- if (stat.isDirectory()) {
45
- try {
46
- const plugin = await this.loader.loadFromDirectory(pluginPath);
47
- this.availablePlugins.push(plugin);
48
- }
49
- catch (error) {
50
- console.warn(`⚠️ Failed to load plugin ${dir}: ${error.message}`);
51
- }
52
- }
53
- }
54
- }
55
- /**
56
- * Phase 1: Init-time detection
57
- *
58
- * Detects plugins based on project structure during `specweave init`
59
- * NOW uses the new plugin-detection.ts utility for comprehensive scanning
60
- *
61
- * @param projectPath - Path to project root
62
- * @returns Array of detection results with confidence scores
63
- */
64
- async detectFromProject(projectPath) {
65
- const results = [];
66
- // NEW: Use plugin-detection.ts utility for comprehensive scanning
67
- try {
68
- const { scanProjectStructure, detectPlugins } = await import('../utils/plugin-detection.js');
69
- const signals = await scanProjectStructure(projectPath);
70
- const detected = detectPlugins(signals);
71
- // Convert to DetectionResult format
72
- for (const plugin of detected) {
73
- // Map confidence levels to scores
74
- const confidenceMap = { high: 0.9, medium: 0.6, low: 0.3 };
75
- const confidence = confidenceMap[plugin.confidence];
76
- results.push({
77
- pluginName: plugin.name,
78
- confidence,
79
- reason: plugin.reason,
80
- trigger: plugin.signals.join(', '), // Join array into string
81
- });
82
- }
83
- return results;
84
- }
85
- catch (error) {
86
- // Fallback to old detection method if new utility fails
87
- console.warn('⚠️ New plugin detection failed, falling back to legacy method');
88
- }
89
- // LEGACY: Old detection method (fallback)
90
- // Ensure plugins are loaded
91
- if (this.availablePlugins.length === 0) {
92
- await this.loadAvailablePlugins();
93
- }
94
- // Check each plugin's auto_detect rules
95
- for (const plugin of this.availablePlugins) {
96
- const { auto_detect } = plugin.manifest;
97
- if (!auto_detect)
98
- continue;
99
- let confidence = 0;
100
- const reasons = [];
101
- // Check files/directories
102
- if (auto_detect.files) {
103
- for (const pattern of auto_detect.files) {
104
- const filePath = path.join(projectPath, pattern);
105
- if (await fs.pathExists(filePath)) {
106
- confidence += 0.3;
107
- reasons.push(`Found ${pattern}`);
108
- }
109
- }
110
- }
111
- // Check package.json dependencies
112
- if (auto_detect.packages) {
113
- const packageJsonPath = path.join(projectPath, 'package.json');
114
- if (await fs.pathExists(packageJsonPath)) {
115
- const packageJson = await fs.readJSON(packageJsonPath);
116
- const allDeps = {
117
- ...packageJson.dependencies,
118
- ...packageJson.devDependencies
119
- };
120
- for (const pkg of auto_detect.packages) {
121
- if (allDeps[pkg]) {
122
- confidence += 0.25;
123
- reasons.push(`Uses ${pkg}`);
124
- }
125
- }
126
- }
127
- }
128
- // Check environment variables
129
- if (auto_detect.env_vars) {
130
- for (const envVar of auto_detect.env_vars) {
131
- if (process.env[envVar]) {
132
- confidence += 0.2;
133
- reasons.push(`Env var ${envVar} set`);
134
- }
135
- }
136
- }
137
- // Check git remote pattern
138
- if (auto_detect.git_remote_pattern) {
139
- const gitConfigPath = path.join(projectPath, '.git', 'config');
140
- if (await fs.pathExists(gitConfigPath)) {
141
- const gitConfig = await fs.readFile(gitConfigPath, 'utf-8');
142
- const regex = new RegExp(auto_detect.git_remote_pattern);
143
- if (regex.test(gitConfig)) {
144
- confidence += 0.25;
145
- reasons.push(`Git remote matches ${auto_detect.git_remote_pattern}`);
146
- }
147
- }
148
- }
149
- // Add to results if confidence > 0
150
- if (confidence > 0) {
151
- results.push({
152
- pluginName: plugin.manifest.name,
153
- confidence: Math.min(confidence, 1.0), // Cap at 1.0
154
- reason: reasons.join(', '),
155
- trigger: 'project-structure'
156
- });
157
- }
158
- }
159
- // Sort by confidence (highest first)
160
- return results.sort((a, b) => b.confidence - a.confidence);
161
- }
162
- /**
163
- * Phase 2: Spec-based detection
164
- *
165
- * Detects plugins based on increment spec content during `/specweave.inc`
166
- *
167
- * @param specContent - Content of spec.md
168
- * @returns Array of detection results
169
- */
170
- async detectFromSpec(specContent) {
171
- const results = [];
172
- // Ensure plugins are loaded
173
- if (this.availablePlugins.length === 0) {
174
- await this.loadAvailablePlugins();
175
- }
176
- const normalizedContent = specContent.toLowerCase();
177
- // Check each plugin's trigger keywords
178
- for (const plugin of this.availablePlugins) {
179
- const { triggers } = plugin.manifest;
180
- if (!triggers || triggers.length === 0)
181
- continue;
182
- let matchCount = 0;
183
- const matchedTriggers = [];
184
- for (const trigger of triggers) {
185
- const regex = new RegExp(`\\b${trigger.toLowerCase()}\\b`, 'gi');
186
- const matches = normalizedContent.match(regex);
187
- if (matches) {
188
- matchCount += matches.length;
189
- matchedTriggers.push(trigger);
190
- }
191
- }
192
- if (matchCount > 0) {
193
- // Confidence based on frequency (capped at 1.0)
194
- const confidence = Math.min(matchCount * 0.1, 1.0);
195
- results.push({
196
- pluginName: plugin.manifest.name,
197
- confidence,
198
- reason: `Spec mentions: ${matchedTriggers.join(', ')}`,
199
- trigger: 'spec-keywords'
200
- });
201
- }
202
- }
203
- // Sort by confidence
204
- return results.sort((a, b) => b.confidence - a.confidence);
205
- }
206
- /**
207
- * Phase 3: Task-based detection
208
- *
209
- * Detects plugins based on task description (pre-task hook)
210
- *
211
- * @param taskContent - Content of task description
212
- * @returns Array of detection results
213
- */
214
- async detectFromTask(taskContent) {
215
- const results = [];
216
- // Ensure plugins are loaded
217
- if (this.availablePlugins.length === 0) {
218
- await this.loadAvailablePlugins();
219
- }
220
- const normalizedContent = taskContent.toLowerCase();
221
- // Check each plugin's trigger keywords
222
- for (const plugin of this.availablePlugins) {
223
- const { triggers } = plugin.manifest;
224
- if (!triggers || triggers.length === 0)
225
- continue;
226
- const matchedTriggers = [];
227
- for (const trigger of triggers) {
228
- const regex = new RegExp(`\\b${trigger.toLowerCase()}\\b`, 'i');
229
- if (regex.test(normalizedContent)) {
230
- matchedTriggers.push(trigger);
231
- }
232
- }
233
- if (matchedTriggers.length > 0) {
234
- // Task-based detection has moderate confidence
235
- const confidence = 0.6;
236
- results.push({
237
- pluginName: plugin.manifest.name,
238
- confidence,
239
- reason: `Task mentions: ${matchedTriggers.join(', ')}`,
240
- trigger: 'task-keywords'
241
- });
242
- }
243
- }
244
- // Sort by confidence
245
- return results.sort((a, b) => b.confidence - a.confidence);
246
- }
247
- /**
248
- * Phase 4: Git diff detection
249
- *
250
- * Detects plugins based on recent git changes (post-increment hook)
251
- *
252
- * @param diff - Git diff output
253
- * @returns Array of detection results
254
- */
255
- async detectFromChanges(diff) {
256
- const results = [];
257
- // Ensure plugins are loaded
258
- if (this.availablePlugins.length === 0) {
259
- await this.loadAvailablePlugins();
260
- }
261
- const normalizedDiff = diff.toLowerCase();
262
- // Check for new file patterns
263
- for (const plugin of this.availablePlugins) {
264
- const { auto_detect } = plugin.manifest;
265
- if (!auto_detect?.files)
266
- continue;
267
- const matchedFiles = [];
268
- for (const pattern of auto_detect.files) {
269
- // Check if diff contains new files matching pattern
270
- const regex = new RegExp(`\\+\\+\\+.*${pattern}`, 'i');
271
- if (regex.test(normalizedDiff)) {
272
- matchedFiles.push(pattern);
273
- }
274
- }
275
- if (matchedFiles.length > 0) {
276
- results.push({
277
- pluginName: plugin.manifest.name,
278
- confidence: 0.7,
279
- reason: `Added files: ${matchedFiles.join(', ')}`,
280
- trigger: 'git-changes'
281
- });
282
- }
283
- }
284
- // Check for new package.json dependencies
285
- const packageJsonMatch = diff.match(/\+\+\+ b\/package\.json([\s\S]+?)(?=\+\+\+|$)/);
286
- if (packageJsonMatch) {
287
- const addedLines = packageJsonMatch[1]
288
- .split('\n')
289
- .filter(line => line.startsWith('+') && !line.startsWith('+++'));
290
- for (const plugin of this.availablePlugins) {
291
- const { auto_detect } = plugin.manifest;
292
- if (!auto_detect?.packages)
293
- continue;
294
- const matchedPackages = [];
295
- for (const pkg of auto_detect.packages) {
296
- if (addedLines.some(line => line.includes(`"${pkg}"`))) {
297
- matchedPackages.push(pkg);
298
- }
299
- }
300
- if (matchedPackages.length > 0) {
301
- results.push({
302
- pluginName: plugin.manifest.name,
303
- confidence: 0.8,
304
- reason: `Added dependencies: ${matchedPackages.join(', ')}`,
305
- trigger: 'package-json-changes'
306
- });
307
- }
308
- }
309
- }
310
- // Sort by confidence
311
- return results.sort((a, b) => b.confidence - a.confidence);
312
- }
313
- /**
314
- * Combine detection results from multiple sources
315
- *
316
- * Merges results and adjusts confidence scores
317
- *
318
- * @param results - Array of detection result arrays
319
- * @returns Merged and deduplicated results
320
- */
321
- combineResults(...results) {
322
- const combined = new Map();
323
- for (const resultArray of results) {
324
- for (const result of resultArray) {
325
- const existing = combined.get(result.pluginName);
326
- if (existing) {
327
- // Boost confidence if detected from multiple sources
328
- existing.confidence = Math.min(existing.confidence + result.confidence * 0.3, 1.0);
329
- existing.reason += `; ${result.reason}`;
330
- }
331
- else {
332
- combined.set(result.pluginName, { ...result });
333
- }
334
- }
335
- }
336
- // Convert to array and sort
337
- return Array.from(combined.values()).sort((a, b) => b.confidence - a.confidence);
338
- }
339
- /**
340
- * Get high-confidence suggestions
341
- *
342
- * Filters detection results by confidence threshold
343
- *
344
- * @param results - Detection results
345
- * @param threshold - Minimum confidence (default: 0.6)
346
- * @returns High-confidence plugin suggestions
347
- */
348
- getHighConfidenceSuggestions(results, threshold = 0.6) {
349
- return results
350
- .filter(r => r.confidence >= threshold)
351
- .map(r => r.pluginName);
352
- }
353
- /**
354
- * Format detection results for display
355
- *
356
- * @param results - Detection results
357
- * @returns Formatted string for CLI output
358
- */
359
- formatResults(results) {
360
- if (results.length === 0) {
361
- return 'No plugins detected for this project.';
362
- }
363
- let output = '\n📦 Detected plugins:\n\n';
364
- for (const result of results) {
365
- const confidenceBar = '█'.repeat(Math.floor(result.confidence * 10));
366
- const confidencePercent = Math.floor(result.confidence * 100);
367
- output += ` ${result.pluginName}\n`;
368
- output += ` Confidence: ${confidenceBar} ${confidencePercent}%\n`;
369
- output += ` Reason: ${result.reason}\n\n`;
370
- }
371
- return output;
372
- }
373
- }
374
- //# sourceMappingURL=plugin-detector.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin-detector.js","sourceRoot":"","sources":["../../src/core/plugin-detector.ts"],"names":[],"mappings":"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"}
@@ -1,144 +0,0 @@
1
- /**
2
- * Plugin Manager
3
- *
4
- * Central orchestrator for plugin lifecycle management.
5
- * Handles loading/unloading, dependency resolution, configuration management.
6
- *
7
- * @module core/plugin-manager
8
- * @version 0.4.0
9
- */
10
- import type { Plugin, PluginInfo, PluginLoadOptions, PluginUnloadOptions } from './types/plugin.js';
11
- import type { IAdapter } from '../adapters/adapter-interface.js';
12
- /**
13
- * PluginManager - Manages plugin lifecycle and configuration
14
- */
15
- export declare class PluginManager {
16
- private projectPath;
17
- private loader;
18
- private configPath;
19
- private pluginsDir;
20
- private loadedPlugins;
21
- /**
22
- * Create a new PluginManager
23
- *
24
- * @param projectPath - Path to project root
25
- * @param pluginsDir - Path to plugins directory (default: src/plugins)
26
- */
27
- constructor(projectPath?: string, pluginsDir?: string);
28
- /**
29
- * Load (enable) a plugin
30
- *
31
- * 1. Load plugin from src/plugins/
32
- * 2. Check dependencies
33
- * 3. Install via adapter
34
- * 4. Update config
35
- *
36
- * @param name - Plugin name (e.g., "github", "kubernetes")
37
- * @param adapter - Adapter to use for installation
38
- * @param options - Load options
39
- */
40
- loadPlugin(name: string, adapter: IAdapter, options?: PluginLoadOptions): Promise<void>;
41
- /**
42
- * Unload (disable) a plugin
43
- *
44
- * @param name - Plugin name
45
- * @param adapter - Adapter to use for uninstallation
46
- * @param options - Unload options
47
- */
48
- unloadPlugin(name: string, adapter: IAdapter, options?: PluginUnloadOptions): Promise<void>;
49
- /**
50
- * Get all available plugins (scan src/plugins/)
51
- *
52
- * @returns Array of plugin info
53
- */
54
- getAvailablePlugins(): Promise<PluginInfo[]>;
55
- /**
56
- * Get enabled plugins from config
57
- *
58
- * @returns Array of enabled plugin names
59
- */
60
- getEnabledPlugins(): Promise<string[]>;
61
- /**
62
- * Check if a plugin is enabled
63
- *
64
- * @param name - Plugin name
65
- * @returns True if enabled
66
- */
67
- isPluginEnabled(name: string): Promise<boolean>;
68
- /**
69
- * Update plugin configuration
70
- *
71
- * @param name - Plugin name
72
- * @param action - 'enable' or 'disable'
73
- */
74
- private updateConfig;
75
- /**
76
- * Load plugin configuration from .specweave/config.yaml
77
- *
78
- * @returns Plugin configuration
79
- */
80
- private loadConfig;
81
- /**
82
- * Save plugin configuration to .specweave/config.yaml
83
- *
84
- * @param pluginConfig - Plugin configuration to save
85
- */
86
- private saveConfig;
87
- /**
88
- * Check plugin dependencies
89
- *
90
- * Ensures all required plugins are loaded
91
- *
92
- * @param plugin - Plugin to check
93
- * @throws PluginDependencyError if dependencies are not met
94
- */
95
- checkDependencies(plugin: Plugin): Promise<void>;
96
- /**
97
- * Resolve dependency graph for a plugin
98
- *
99
- * Returns all plugins that need to be loaded (including transitive deps)
100
- *
101
- * @param plugin - Plugin to resolve
102
- * @returns Array of plugins in load order
103
- */
104
- resolveDependencies(plugin: Plugin): Promise<Plugin[]>;
105
- /**
106
- * Get plugins that depend on a given plugin
107
- *
108
- * @param name - Plugin name
109
- * @returns Array of dependent plugin names
110
- */
111
- private getDependents;
112
- /**
113
- * Validate plugin configuration
114
- *
115
- * Checks for circular dependencies, missing plugins, etc.
116
- *
117
- * @returns Validation result
118
- */
119
- validateConfig(): Promise<{
120
- valid: boolean;
121
- errors: string[];
122
- }>;
123
- /**
124
- * Get plugin by name
125
- *
126
- * @param name - Plugin name
127
- * @returns Loaded plugin
128
- * @throws PluginNotFoundError if plugin is not loaded
129
- */
130
- getPlugin(name: string): Plugin;
131
- /**
132
- * Get all loaded plugins
133
- *
134
- * @returns Map of loaded plugins
135
- */
136
- getLoadedPlugins(): Map<string, Plugin>;
137
- /**
138
- * Clear loaded plugins cache
139
- *
140
- * Useful for testing or forcing reload
141
- */
142
- clearCache(): void;
143
- }
144
- //# sourceMappingURL=plugin-manager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin-manager.d.ts","sourceRoot":"","sources":["../../src/core/plugin-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,KAAK,EACV,MAAM,EACN,UAAU,EAEV,iBAAiB,EACjB,mBAAmB,EAEpB,MAAM,mBAAmB,CAAC;AAM3B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAEjE;;GAEG;AACH,qBAAa,aAAa;IAatB,OAAO,CAAC,WAAW;IAZrB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,aAAa,CAAsB;IAE3C;;;;;OAKG;gBAEO,WAAW,GAAE,MAAsB,EAC3C,UAAU,CAAC,EAAE,MAAM;IAQrB;;;;;;;;;;;OAWG;IACG,UAAU,CACd,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,QAAQ,EACjB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,IAAI,CAAC;IAmDhB;;;;;;OAMG;IACG,YAAY,CAChB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,QAAQ,EACjB,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,IAAI,CAAC;IAkChB;;;;OAIG;IACG,mBAAmB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAwClD;;;;OAIG;IACG,iBAAiB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAK5C;;;;;OAKG;IACG,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKrD;;;;;OAKG;YACW,YAAY;IAc1B;;;;OAIG;YACW,UAAU;IA4BxB;;;;OAIG;YACW,UAAU;IAgBxB;;;;;;;OAOG;IACG,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBtD;;;;;;;OAOG;IACG,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IA4B5D;;;;;OAKG;YACW,aAAa;IAgB3B;;;;;;OAMG;IACG,cAAc,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAuDrE;;;;;;OAMG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAQ/B;;;;OAIG;IACH,gBAAgB,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAIvC;;;;OAIG;IACH,UAAU,IAAI,IAAI;CAGnB"}