agentic-qe 2.0.0 → 2.1.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.
- package/.claude/agents/qx-partner.md +17 -4
- package/.claude/skills/accessibility-testing/SKILL.md +144 -692
- package/.claude/skills/agentic-quality-engineering/SKILL.md +176 -529
- package/.claude/skills/api-testing-patterns/SKILL.md +180 -560
- package/.claude/skills/brutal-honesty-review/SKILL.md +113 -603
- package/.claude/skills/bug-reporting-excellence/SKILL.md +116 -517
- package/.claude/skills/chaos-engineering-resilience/SKILL.md +127 -72
- package/.claude/skills/cicd-pipeline-qe-orchestrator/SKILL.md +209 -404
- package/.claude/skills/code-review-quality/SKILL.md +158 -608
- package/.claude/skills/compatibility-testing/SKILL.md +148 -38
- package/.claude/skills/compliance-testing/SKILL.md +132 -63
- package/.claude/skills/consultancy-practices/SKILL.md +114 -446
- package/.claude/skills/context-driven-testing/SKILL.md +117 -381
- package/.claude/skills/contract-testing/SKILL.md +176 -141
- package/.claude/skills/database-testing/SKILL.md +137 -130
- package/.claude/skills/exploratory-testing-advanced/SKILL.md +160 -629
- package/.claude/skills/holistic-testing-pact/SKILL.md +140 -188
- package/.claude/skills/localization-testing/SKILL.md +145 -33
- package/.claude/skills/mobile-testing/SKILL.md +132 -448
- package/.claude/skills/mutation-testing/SKILL.md +147 -41
- package/.claude/skills/performance-testing/SKILL.md +200 -546
- package/.claude/skills/quality-metrics/SKILL.md +164 -519
- package/.claude/skills/refactoring-patterns/SKILL.md +132 -699
- package/.claude/skills/regression-testing/SKILL.md +120 -926
- package/.claude/skills/risk-based-testing/SKILL.md +157 -660
- package/.claude/skills/security-testing/SKILL.md +199 -538
- package/.claude/skills/sherlock-review/SKILL.md +163 -699
- package/.claude/skills/shift-left-testing/SKILL.md +161 -465
- package/.claude/skills/shift-right-testing/SKILL.md +161 -519
- package/.claude/skills/six-thinking-hats/SKILL.md +175 -1110
- package/.claude/skills/skills-manifest.json +71 -20
- package/.claude/skills/tdd-london-chicago/SKILL.md +131 -448
- package/.claude/skills/technical-writing/SKILL.md +103 -154
- package/.claude/skills/test-automation-strategy/SKILL.md +166 -772
- package/.claude/skills/test-data-management/SKILL.md +126 -910
- package/.claude/skills/test-design-techniques/SKILL.md +179 -89
- package/.claude/skills/test-environment-management/SKILL.md +136 -91
- package/.claude/skills/test-reporting-analytics/SKILL.md +169 -92
- package/.claude/skills/testability-scoring/SKILL.md +172 -538
- package/.claude/skills/testability-scoring/scripts/generate-html-report.js +0 -0
- package/.claude/skills/visual-testing-advanced/SKILL.md +155 -78
- package/.claude/skills/xp-practices/SKILL.md +151 -587
- package/CHANGELOG.md +86 -0
- package/README.md +23 -16
- package/dist/agents/QXPartnerAgent.d.ts +47 -1
- package/dist/agents/QXPartnerAgent.d.ts.map +1 -1
- package/dist/agents/QXPartnerAgent.js +2086 -125
- package/dist/agents/QXPartnerAgent.js.map +1 -1
- package/dist/agents/lifecycle/AgentLifecycleManager.d.ts.map +1 -1
- package/dist/agents/lifecycle/AgentLifecycleManager.js +34 -31
- package/dist/agents/lifecycle/AgentLifecycleManager.js.map +1 -1
- package/dist/cli/commands/init-claude-md-template.d.ts.map +1 -1
- package/dist/cli/commands/init-claude-md-template.js +14 -0
- package/dist/cli/commands/init-claude-md-template.js.map +1 -1
- package/dist/core/SwarmCoordinator.d.ts +180 -0
- package/dist/core/SwarmCoordinator.d.ts.map +1 -0
- package/dist/core/SwarmCoordinator.js +473 -0
- package/dist/core/SwarmCoordinator.js.map +1 -0
- package/dist/core/memory/ReflexionMemoryAdapter.d.ts +109 -0
- package/dist/core/memory/ReflexionMemoryAdapter.d.ts.map +1 -0
- package/dist/core/memory/ReflexionMemoryAdapter.js +306 -0
- package/dist/core/memory/ReflexionMemoryAdapter.js.map +1 -0
- package/dist/core/memory/RuVectorPatternStore.d.ts +28 -0
- package/dist/core/memory/RuVectorPatternStore.d.ts.map +1 -1
- package/dist/core/memory/RuVectorPatternStore.js +70 -0
- package/dist/core/memory/RuVectorPatternStore.js.map +1 -1
- package/dist/core/memory/SparseVectorSearch.d.ts +55 -0
- package/dist/core/memory/SparseVectorSearch.d.ts.map +1 -0
- package/dist/core/memory/SparseVectorSearch.js +130 -0
- package/dist/core/memory/SparseVectorSearch.js.map +1 -0
- package/dist/core/memory/TieredCompression.d.ts +81 -0
- package/dist/core/memory/TieredCompression.d.ts.map +1 -0
- package/dist/core/memory/TieredCompression.js +270 -0
- package/dist/core/memory/TieredCompression.js.map +1 -0
- package/dist/core/memory/index.d.ts +6 -0
- package/dist/core/memory/index.d.ts.map +1 -1
- package/dist/core/memory/index.js +29 -1
- package/dist/core/memory/index.js.map +1 -1
- package/dist/core/metrics/MetricsAggregator.d.ts +228 -0
- package/dist/core/metrics/MetricsAggregator.d.ts.map +1 -0
- package/dist/core/metrics/MetricsAggregator.js +482 -0
- package/dist/core/metrics/MetricsAggregator.js.map +1 -0
- package/dist/core/metrics/index.d.ts +5 -0
- package/dist/core/metrics/index.d.ts.map +1 -0
- package/dist/core/metrics/index.js +11 -0
- package/dist/core/metrics/index.js.map +1 -0
- package/dist/core/optimization/SwarmOptimizer.d.ts +5 -0
- package/dist/core/optimization/SwarmOptimizer.d.ts.map +1 -1
- package/dist/core/optimization/SwarmOptimizer.js +17 -0
- package/dist/core/optimization/SwarmOptimizer.js.map +1 -1
- package/dist/core/orchestration/AdaptiveScheduler.d.ts +190 -0
- package/dist/core/orchestration/AdaptiveScheduler.d.ts.map +1 -0
- package/dist/core/orchestration/AdaptiveScheduler.js +460 -0
- package/dist/core/orchestration/AdaptiveScheduler.js.map +1 -0
- package/dist/core/orchestration/WorkflowOrchestrator.d.ts +13 -0
- package/dist/core/orchestration/WorkflowOrchestrator.d.ts.map +1 -1
- package/dist/core/orchestration/WorkflowOrchestrator.js +32 -0
- package/dist/core/orchestration/WorkflowOrchestrator.js.map +1 -1
- package/dist/core/recovery/CircuitBreaker.d.ts +176 -0
- package/dist/core/recovery/CircuitBreaker.d.ts.map +1 -0
- package/dist/core/recovery/CircuitBreaker.js +382 -0
- package/dist/core/recovery/CircuitBreaker.js.map +1 -0
- package/dist/core/recovery/RecoveryOrchestrator.d.ts +186 -0
- package/dist/core/recovery/RecoveryOrchestrator.d.ts.map +1 -0
- package/dist/core/recovery/RecoveryOrchestrator.js +476 -0
- package/dist/core/recovery/RecoveryOrchestrator.js.map +1 -0
- package/dist/core/recovery/RetryStrategy.d.ts +127 -0
- package/dist/core/recovery/RetryStrategy.d.ts.map +1 -0
- package/dist/core/recovery/RetryStrategy.js +314 -0
- package/dist/core/recovery/RetryStrategy.js.map +1 -0
- package/dist/core/recovery/index.d.ts +8 -0
- package/dist/core/recovery/index.d.ts.map +1 -0
- package/dist/core/recovery/index.js +27 -0
- package/dist/core/recovery/index.js.map +1 -0
- package/dist/core/skills/DependencyResolver.d.ts +99 -0
- package/dist/core/skills/DependencyResolver.d.ts.map +1 -0
- package/dist/core/skills/DependencyResolver.js +260 -0
- package/dist/core/skills/DependencyResolver.js.map +1 -0
- package/dist/core/skills/ManifestGenerator.d.ts +114 -0
- package/dist/core/skills/ManifestGenerator.d.ts.map +1 -0
- package/dist/core/skills/ManifestGenerator.js +449 -0
- package/dist/core/skills/ManifestGenerator.js.map +1 -0
- package/dist/core/skills/index.d.ts +9 -0
- package/dist/core/skills/index.d.ts.map +1 -0
- package/dist/core/skills/index.js +24 -0
- package/dist/core/skills/index.js.map +1 -0
- package/dist/mcp/handlers/chaos/chaos-inject-failure.d.ts +5 -0
- package/dist/mcp/handlers/chaos/chaos-inject-failure.d.ts.map +1 -1
- package/dist/mcp/handlers/chaos/chaos-inject-failure.js +36 -2
- package/dist/mcp/handlers/chaos/chaos-inject-failure.js.map +1 -1
- package/dist/mcp/handlers/chaos/chaos-inject-latency.d.ts +5 -0
- package/dist/mcp/handlers/chaos/chaos-inject-latency.d.ts.map +1 -1
- package/dist/mcp/handlers/chaos/chaos-inject-latency.js +36 -2
- package/dist/mcp/handlers/chaos/chaos-inject-latency.js.map +1 -1
- package/dist/mcp/server.d.ts +9 -9
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +1 -2
- package/dist/mcp/server.js.map +1 -1
- package/dist/types/qx.d.ts +113 -7
- package/dist/types/qx.d.ts.map +1 -1
- package/dist/types/qx.js.map +1 -1
- package/dist/visualization/api/RestEndpoints.js +1 -1
- package/dist/visualization/api/RestEndpoints.js.map +1 -1
- package/package.json +15 -54
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Dependency Resolver for Skill Loading
|
|
4
|
+
* Handles skill dependency graphs with cycle detection and optimal load ordering
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.DependencyResolver = void 0;
|
|
8
|
+
exports.createDependencyResolver = createDependencyResolver;
|
|
9
|
+
exports.visualizeDependencyTree = visualizeDependencyTree;
|
|
10
|
+
/**
|
|
11
|
+
* Skill Dependency Resolver
|
|
12
|
+
* Resolves skill dependencies with cycle detection and optimal ordering
|
|
13
|
+
*/
|
|
14
|
+
class DependencyResolver {
|
|
15
|
+
constructor(manifest, options = {}) {
|
|
16
|
+
this.manifest = manifest;
|
|
17
|
+
this.skillMap = new Map(manifest.skills.map(s => [s.id, s]));
|
|
18
|
+
this.options = {
|
|
19
|
+
maxDepth: 10,
|
|
20
|
+
includeOptional: true,
|
|
21
|
+
cycleStrategy: 'warn',
|
|
22
|
+
...options,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Resolve dependencies for a single skill
|
|
27
|
+
*/
|
|
28
|
+
resolve(skillId) {
|
|
29
|
+
return this.resolveMultiple([skillId]);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Resolve dependencies for multiple skills
|
|
33
|
+
*/
|
|
34
|
+
resolveMultiple(skillIds) {
|
|
35
|
+
const visited = new Set();
|
|
36
|
+
const loadOrder = [];
|
|
37
|
+
const cycles = [];
|
|
38
|
+
const unresolved = [];
|
|
39
|
+
// Build dependency tree for each skill
|
|
40
|
+
const trees = [];
|
|
41
|
+
for (const skillId of skillIds) {
|
|
42
|
+
const result = this.buildDependencyTree(skillId, [], 0, visited);
|
|
43
|
+
trees.push(result.node);
|
|
44
|
+
cycles.push(...result.cycles);
|
|
45
|
+
unresolved.push(...result.unresolved);
|
|
46
|
+
}
|
|
47
|
+
// Topological sort for optimal load order
|
|
48
|
+
const sortedOrder = this.topologicalSort(skillIds);
|
|
49
|
+
loadOrder.push(...sortedOrder);
|
|
50
|
+
// Merge trees into single root
|
|
51
|
+
const mergedTree = {
|
|
52
|
+
id: 'root',
|
|
53
|
+
depth: -1,
|
|
54
|
+
dependencies: trees,
|
|
55
|
+
};
|
|
56
|
+
return {
|
|
57
|
+
loadOrder,
|
|
58
|
+
tree: mergedTree,
|
|
59
|
+
cycles: this.deduplicateCycles(cycles),
|
|
60
|
+
unresolved,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Get all skills that depend on a given skill (reverse dependencies)
|
|
65
|
+
*/
|
|
66
|
+
getDependents(skillId) {
|
|
67
|
+
const dependents = [];
|
|
68
|
+
for (const skill of this.manifest.skills) {
|
|
69
|
+
if (skill.dependencies?.includes(skillId)) {
|
|
70
|
+
dependents.push(skill.id);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return dependents;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Get direct dependencies of a skill
|
|
77
|
+
*/
|
|
78
|
+
getDirectDependencies(skillId) {
|
|
79
|
+
const skill = this.skillMap.get(skillId);
|
|
80
|
+
return skill?.dependencies || [];
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Get all transitive dependencies (full dependency closure)
|
|
84
|
+
*/
|
|
85
|
+
getTransitiveDependencies(skillId) {
|
|
86
|
+
const resolution = this.resolve(skillId);
|
|
87
|
+
return resolution.loadOrder.filter(id => id !== skillId);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Check if adding a dependency would create a cycle
|
|
91
|
+
*/
|
|
92
|
+
wouldCreateCycle(fromSkillId, toSkillId) {
|
|
93
|
+
// Check if toSkillId already depends on fromSkillId
|
|
94
|
+
const deps = this.getTransitiveDependencies(toSkillId);
|
|
95
|
+
return deps.includes(fromSkillId);
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Build dependency tree recursively
|
|
99
|
+
*/
|
|
100
|
+
buildDependencyTree(skillId, path, depth, globalVisited) {
|
|
101
|
+
const cycles = [];
|
|
102
|
+
const unresolved = [];
|
|
103
|
+
// Check for cycle
|
|
104
|
+
if (path.includes(skillId)) {
|
|
105
|
+
const cycleStart = path.indexOf(skillId);
|
|
106
|
+
const cycle = [...path.slice(cycleStart), skillId];
|
|
107
|
+
cycles.push(cycle);
|
|
108
|
+
if (this.options.cycleStrategy === 'error') {
|
|
109
|
+
throw new Error(`Circular dependency detected: ${cycle.join(' -> ')}`);
|
|
110
|
+
}
|
|
111
|
+
// Return leaf node to break cycle
|
|
112
|
+
return {
|
|
113
|
+
node: { id: skillId, depth, dependencies: [] },
|
|
114
|
+
cycles,
|
|
115
|
+
unresolved,
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
// Check max depth
|
|
119
|
+
if (depth > this.options.maxDepth) {
|
|
120
|
+
return {
|
|
121
|
+
node: { id: skillId, depth, dependencies: [] },
|
|
122
|
+
cycles,
|
|
123
|
+
unresolved,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
const skill = this.skillMap.get(skillId);
|
|
127
|
+
if (!skill) {
|
|
128
|
+
return {
|
|
129
|
+
node: { id: skillId, depth, dependencies: [] },
|
|
130
|
+
cycles,
|
|
131
|
+
unresolved: [{ skillId, missing: [skillId] }],
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
// Check for missing dependencies
|
|
135
|
+
const missing = (skill.dependencies || []).filter(dep => !this.skillMap.has(dep));
|
|
136
|
+
if (missing.length > 0) {
|
|
137
|
+
unresolved.push({ skillId, missing });
|
|
138
|
+
}
|
|
139
|
+
// Build children
|
|
140
|
+
const dependencies = [];
|
|
141
|
+
const newPath = [...path, skillId];
|
|
142
|
+
for (const depId of skill.dependencies || []) {
|
|
143
|
+
if (!this.skillMap.has(depId))
|
|
144
|
+
continue;
|
|
145
|
+
if (globalVisited.has(depId) && !path.includes(depId)) {
|
|
146
|
+
// Already fully processed, add as leaf
|
|
147
|
+
dependencies.push({ id: depId, depth: depth + 1, dependencies: [] });
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
const result = this.buildDependencyTree(depId, newPath, depth + 1, globalVisited);
|
|
151
|
+
dependencies.push(result.node);
|
|
152
|
+
cycles.push(...result.cycles);
|
|
153
|
+
unresolved.push(...result.unresolved);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
globalVisited.add(skillId);
|
|
157
|
+
return {
|
|
158
|
+
node: { id: skillId, depth, dependencies },
|
|
159
|
+
cycles,
|
|
160
|
+
unresolved,
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Topological sort for optimal load order (dependencies first)
|
|
165
|
+
*/
|
|
166
|
+
topologicalSort(startIds) {
|
|
167
|
+
const result = [];
|
|
168
|
+
const visited = new Set();
|
|
169
|
+
const visiting = new Set(); // For cycle detection
|
|
170
|
+
const visit = (skillId) => {
|
|
171
|
+
if (visited.has(skillId))
|
|
172
|
+
return;
|
|
173
|
+
if (visiting.has(skillId))
|
|
174
|
+
return; // Cycle, skip
|
|
175
|
+
visiting.add(skillId);
|
|
176
|
+
const skill = this.skillMap.get(skillId);
|
|
177
|
+
if (skill?.dependencies) {
|
|
178
|
+
for (const depId of skill.dependencies) {
|
|
179
|
+
if (this.skillMap.has(depId)) {
|
|
180
|
+
visit(depId);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
visiting.delete(skillId);
|
|
185
|
+
visited.add(skillId);
|
|
186
|
+
result.push(skillId);
|
|
187
|
+
};
|
|
188
|
+
// Start from requested skills
|
|
189
|
+
for (const startId of startIds) {
|
|
190
|
+
visit(startId);
|
|
191
|
+
}
|
|
192
|
+
return result;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Deduplicate cycle arrays (same cycle may be detected from different starting points)
|
|
196
|
+
*/
|
|
197
|
+
deduplicateCycles(cycles) {
|
|
198
|
+
const seen = new Set();
|
|
199
|
+
const unique = [];
|
|
200
|
+
for (const cycle of cycles) {
|
|
201
|
+
// Normalize cycle by starting from smallest element
|
|
202
|
+
const normalized = this.normalizeCycle(cycle);
|
|
203
|
+
const key = normalized.join('->');
|
|
204
|
+
if (!seen.has(key)) {
|
|
205
|
+
seen.add(key);
|
|
206
|
+
unique.push(normalized);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
return unique;
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Normalize cycle to start from smallest element for deduplication
|
|
213
|
+
*/
|
|
214
|
+
normalizeCycle(cycle) {
|
|
215
|
+
if (cycle.length <= 1)
|
|
216
|
+
return cycle;
|
|
217
|
+
// Remove duplicate end if present
|
|
218
|
+
const normalized = cycle[0] === cycle[cycle.length - 1]
|
|
219
|
+
? cycle.slice(0, -1)
|
|
220
|
+
: cycle;
|
|
221
|
+
// Find index of smallest element
|
|
222
|
+
let minIndex = 0;
|
|
223
|
+
for (let i = 1; i < normalized.length; i++) {
|
|
224
|
+
if (normalized[i] < normalized[minIndex]) {
|
|
225
|
+
minIndex = i;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
// Rotate to start from smallest
|
|
229
|
+
return [...normalized.slice(minIndex), ...normalized.slice(0, minIndex)];
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
exports.DependencyResolver = DependencyResolver;
|
|
233
|
+
/**
|
|
234
|
+
* Create a dependency resolver from manifest
|
|
235
|
+
*/
|
|
236
|
+
function createDependencyResolver(manifest, options) {
|
|
237
|
+
return new DependencyResolver(manifest, options);
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Visualize dependency tree as ASCII art
|
|
241
|
+
*/
|
|
242
|
+
function visualizeDependencyTree(node, prefix = '') {
|
|
243
|
+
const lines = [];
|
|
244
|
+
if (node.id !== 'root') {
|
|
245
|
+
lines.push(`${prefix}${node.id}`);
|
|
246
|
+
}
|
|
247
|
+
const childPrefix = node.id === 'root' ? '' : prefix + ' ';
|
|
248
|
+
for (let i = 0; i < node.dependencies.length; i++) {
|
|
249
|
+
const child = node.dependencies[i];
|
|
250
|
+
const isLast = i === node.dependencies.length - 1;
|
|
251
|
+
const connector = isLast ? '└── ' : '├── ';
|
|
252
|
+
const nextPrefix = childPrefix + (isLast ? ' ' : '│ ');
|
|
253
|
+
lines.push(`${childPrefix}${connector}${child.id}`);
|
|
254
|
+
if (child.dependencies.length > 0) {
|
|
255
|
+
lines.push(visualizeDependencyTree(child, nextPrefix));
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
return lines.join('\n');
|
|
259
|
+
}
|
|
260
|
+
//# sourceMappingURL=DependencyResolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DependencyResolver.js","sourceRoot":"","sources":["../../../src/core/skills/DependencyResolver.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAqTH,4DAKC;AAKD,0DAuBC;AA/SD;;;GAGG;AACH,MAAa,kBAAkB;IAK7B,YAAY,QAAuB,EAAE,UAAoC,EAAE;QACzE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,IAAI,CAAC,OAAO,GAAG;YACb,QAAQ,EAAE,EAAE;YACZ,eAAe,EAAE,IAAI;YACrB,aAAa,EAAE,MAAM;YACrB,GAAG,OAAO;SACX,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,OAAe;QACrB,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,QAAkB;QAChC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAClC,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAe,EAAE,CAAC;QAC9B,MAAM,UAAU,GAA6C,EAAE,CAAC;QAEhE,uCAAuC;QACvC,MAAM,KAAK,GAAqB,EAAE,CAAC;QAEnC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;YACjE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;YAC9B,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;QACxC,CAAC;QAED,0CAA0C;QAC1C,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QACnD,SAAS,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;QAE/B,+BAA+B;QAC/B,MAAM,UAAU,GAAmB;YACjC,EAAE,EAAE,MAAM;YACV,KAAK,EAAE,CAAC,CAAC;YACT,YAAY,EAAE,KAAK;SACpB,CAAC;QAEF,OAAO;YACL,SAAS;YACT,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;YACtC,UAAU;SACX,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,OAAe;QAC3B,MAAM,UAAU,GAAa,EAAE,CAAC;QAEhC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YACzC,IAAI,KAAK,CAAC,YAAY,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC1C,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,qBAAqB,CAAC,OAAe;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACzC,OAAO,KAAK,EAAE,YAAY,IAAI,EAAE,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,yBAAyB,CAAC,OAAe;QACvC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACzC,OAAO,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;IAC3D,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,WAAmB,EAAE,SAAiB;QACrD,oDAAoD;QACpD,MAAM,IAAI,GAAG,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACpC,CAAC;IAED;;OAEG;IACK,mBAAmB,CACzB,OAAe,EACf,IAAc,EACd,KAAa,EACb,aAA0B;QAE1B,MAAM,MAAM,GAAe,EAAE,CAAC;QAC9B,MAAM,UAAU,GAA6C,EAAE,CAAC;QAEhE,kBAAkB;QAClB,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACzC,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;YACnD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAEnB,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,KAAK,OAAO,EAAE,CAAC;gBAC3C,MAAM,IAAI,KAAK,CAAC,iCAAiC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACzE,CAAC;YAED,kCAAkC;YAClC,OAAO;gBACL,IAAI,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,EAAE;gBAC9C,MAAM;gBACN,UAAU;aACX,CAAC;QACJ,CAAC;QAED,kBAAkB;QAClB,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YAClC,OAAO;gBACL,IAAI,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,EAAE;gBAC9C,MAAM;gBACN,UAAU;aACX,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAEzC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO;gBACL,IAAI,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,EAAE;gBAC9C,MAAM;gBACN,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;aAC9C,CAAC;QACJ,CAAC;QAED,iCAAiC;QACjC,MAAM,OAAO,GAAG,CAAC,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QAClF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,UAAU,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QACxC,CAAC;QAED,iBAAiB;QACjB,MAAM,YAAY,GAAqB,EAAE,CAAC;QAC1C,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;QAEnC,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,YAAY,IAAI,EAAE,EAAE,CAAC;YAC7C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;gBAAE,SAAS;YACxC,IAAI,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACtD,uCAAuC;gBACvC,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC;YACvE,CAAC;iBAAM,CAAC;gBACN,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,GAAG,CAAC,EAAE,aAAa,CAAC,CAAC;gBAClF,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC/B,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC9B,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;QAED,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAE3B,OAAO;YACL,IAAI,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE;YAC1C,MAAM;YACN,UAAU;SACX,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,QAAkB;QACxC,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAClC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC,CAAC,sBAAsB;QAE1D,MAAM,KAAK,GAAG,CAAC,OAAe,EAAQ,EAAE;YACtC,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;gBAAE,OAAO;YACjC,IAAI,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;gBAAE,OAAO,CAAC,cAAc;YAEjD,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAEtB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACzC,IAAI,KAAK,EAAE,YAAY,EAAE,CAAC;gBACxB,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;oBACvC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;wBAC7B,KAAK,CAAC,KAAK,CAAC,CAAC;oBACf,CAAC;gBACH,CAAC;YACH,CAAC;YAED,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACrB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC,CAAC;QAEF,8BAA8B;QAC9B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,KAAK,CAAC,OAAO,CAAC,CAAC;QACjB,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,MAAkB;QAC1C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,MAAM,MAAM,GAAe,EAAE,CAAC;QAE9B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,oDAAoD;YACpD,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YAC9C,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAElC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACnB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACd,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,KAAe;QACpC,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QAEpC,kCAAkC;QAClC,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;YACrD,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACpB,CAAC,CAAC,KAAK,CAAC;QAEV,iCAAiC;QACjC,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACzC,QAAQ,GAAG,CAAC,CAAC;YACf,CAAC;QACH,CAAC;QAED,gCAAgC;QAChC,OAAO,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC3E,CAAC;CACF;AArQD,gDAqQC;AAED;;GAEG;AACH,SAAgB,wBAAwB,CACtC,QAAuB,EACvB,OAAkC;IAElC,OAAO,IAAI,kBAAkB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACnD,CAAC;AAED;;GAEG;AACH,SAAgB,uBAAuB,CAAC,IAAoB,EAAE,SAAiB,EAAE;IAC/E,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,IAAI,IAAI,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;IAE5D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClD,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,MAAM,GAAG,CAAC,KAAK,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;QAClD,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QAC3C,MAAM,UAAU,GAAG,WAAW,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAE5D,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,GAAG,SAAS,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;QAEpD,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Manifest Generator for Dynamic Skill Loading
|
|
3
|
+
* Scans skill directories and generates/updates skills-manifest.json
|
|
4
|
+
*/
|
|
5
|
+
import { SkillManifest, SkillPriority } from './types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Configuration for manifest generation
|
|
8
|
+
*/
|
|
9
|
+
export interface ManifestGeneratorConfig {
|
|
10
|
+
/** Path to skills directory */
|
|
11
|
+
skillsDir: string;
|
|
12
|
+
/** Output path for manifest */
|
|
13
|
+
outputPath: string;
|
|
14
|
+
/** Default priority for skills without explicit priority */
|
|
15
|
+
defaultPriority: SkillPriority;
|
|
16
|
+
/** Estimate tokens per line of content */
|
|
17
|
+
tokensPerLine: number;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Manifest Generator for creating and updating skill manifests
|
|
21
|
+
*/
|
|
22
|
+
export declare class ManifestGenerator {
|
|
23
|
+
private config;
|
|
24
|
+
constructor(config?: Partial<ManifestGeneratorConfig>);
|
|
25
|
+
/**
|
|
26
|
+
* Generate manifest from skill directories
|
|
27
|
+
*/
|
|
28
|
+
generate(): Promise<SkillManifest>;
|
|
29
|
+
/**
|
|
30
|
+
* Update existing manifest with new/changed skills
|
|
31
|
+
*/
|
|
32
|
+
update(): Promise<SkillManifest>;
|
|
33
|
+
/**
|
|
34
|
+
* Validate existing manifest against actual skill files
|
|
35
|
+
*/
|
|
36
|
+
validate(): Promise<{
|
|
37
|
+
valid: boolean;
|
|
38
|
+
errors: string[];
|
|
39
|
+
warnings: string[];
|
|
40
|
+
}>;
|
|
41
|
+
/**
|
|
42
|
+
* Scan skill directories and extract metadata
|
|
43
|
+
*/
|
|
44
|
+
private scanSkillDirectories;
|
|
45
|
+
/**
|
|
46
|
+
* Get list of skill directories
|
|
47
|
+
*/
|
|
48
|
+
private getSkillDirectories;
|
|
49
|
+
/**
|
|
50
|
+
* Extract metadata from a skill directory
|
|
51
|
+
*/
|
|
52
|
+
private extractMetadata;
|
|
53
|
+
/**
|
|
54
|
+
* Parse YAML frontmatter from markdown
|
|
55
|
+
*/
|
|
56
|
+
private parseFrontmatter;
|
|
57
|
+
/**
|
|
58
|
+
* Detect category based on skill ID and frontmatter
|
|
59
|
+
*/
|
|
60
|
+
private detectCategory;
|
|
61
|
+
/**
|
|
62
|
+
* Check if category is valid
|
|
63
|
+
*/
|
|
64
|
+
private isValidCategory;
|
|
65
|
+
/**
|
|
66
|
+
* Detect priority based on skill ID and frontmatter
|
|
67
|
+
*/
|
|
68
|
+
private detectPriority;
|
|
69
|
+
/**
|
|
70
|
+
* Extract description from content (first paragraph after frontmatter)
|
|
71
|
+
*/
|
|
72
|
+
private extractDescription;
|
|
73
|
+
/**
|
|
74
|
+
* Extract keywords from frontmatter and content
|
|
75
|
+
*/
|
|
76
|
+
private extractKeywords;
|
|
77
|
+
/**
|
|
78
|
+
* Estimate token count for content
|
|
79
|
+
*/
|
|
80
|
+
private estimateTokens;
|
|
81
|
+
/**
|
|
82
|
+
* Format skill ID as human-readable name
|
|
83
|
+
*/
|
|
84
|
+
private formatName;
|
|
85
|
+
/**
|
|
86
|
+
* Calculate category counts
|
|
87
|
+
*/
|
|
88
|
+
private calculateCategoryCounts;
|
|
89
|
+
/**
|
|
90
|
+
* Get file modification time
|
|
91
|
+
*/
|
|
92
|
+
private getFileStats;
|
|
93
|
+
/**
|
|
94
|
+
* Write manifest to file
|
|
95
|
+
*/
|
|
96
|
+
private writeManifest;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* CLI entry point for manifest generation
|
|
100
|
+
*/
|
|
101
|
+
export declare function generateManifest(options?: Partial<ManifestGeneratorConfig>): Promise<SkillManifest>;
|
|
102
|
+
/**
|
|
103
|
+
* CLI entry point for manifest update
|
|
104
|
+
*/
|
|
105
|
+
export declare function updateManifest(options?: Partial<ManifestGeneratorConfig>): Promise<SkillManifest>;
|
|
106
|
+
/**
|
|
107
|
+
* CLI entry point for manifest validation
|
|
108
|
+
*/
|
|
109
|
+
export declare function validateManifest(options?: Partial<ManifestGeneratorConfig>): Promise<{
|
|
110
|
+
valid: boolean;
|
|
111
|
+
errors: string[];
|
|
112
|
+
warnings: string[];
|
|
113
|
+
}>;
|
|
114
|
+
//# sourceMappingURL=ManifestGenerator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ManifestGenerator.d.ts","sourceRoot":"","sources":["../../../src/core/skills/ManifestGenerator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAiB,aAAa,EAAiB,aAAa,EAAE,MAAM,YAAY,CAAC;AAExF;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,+BAA+B;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,+BAA+B;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,4DAA4D;IAC5D,eAAe,EAAE,aAAa,CAAC;IAC/B,0CAA0C;IAC1C,aAAa,EAAE,MAAM,CAAC;CACvB;AAoCD;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAA0B;gBAE5B,MAAM,GAAE,OAAO,CAAC,uBAAuB,CAAM;IAUzD;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,aAAa,CAAC;IAgBxC;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,aAAa,CAAC;IA8CtC;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAmDnF;;OAEG;YACW,oBAAoB;IAuBlC;;OAEG;YACW,mBAAmB;IAWjC;;OAEG;YACW,eAAe;IA0B7B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA0BxB;;OAEG;IACH,OAAO,CAAC,cAAc;IAqBtB;;OAEG;IACH,OAAO,CAAC,eAAe;IAOvB;;OAEG;IACH,OAAO,CAAC,cAAc;IAkBtB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAW1B;;OAEG;IACH,OAAO,CAAC,eAAe;IAyBvB;;OAEG;IACH,OAAO,CAAC,cAAc;IAKtB;;OAEG;IACH,OAAO,CAAC,UAAU;IAOlB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAiB/B;;OAEG;YACW,YAAY;IAU1B;;OAEG;YACW,aAAa;CAI5B;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,GAAE,OAAO,CAAC,uBAAuB,CAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAG7G;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,GAAE,OAAO,CAAC,uBAAuB,CAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAG3G;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,GAAE,OAAO,CAAC,uBAAuB,CAAM,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAGxJ"}
|