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,449 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Manifest Generator for Dynamic Skill Loading
|
|
4
|
+
* Scans skill directories and generates/updates skills-manifest.json
|
|
5
|
+
*/
|
|
6
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
+
if (k2 === undefined) k2 = k;
|
|
8
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(o, k2, desc);
|
|
13
|
+
}) : (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
o[k2] = m[k];
|
|
16
|
+
}));
|
|
17
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
+
}) : function(o, v) {
|
|
20
|
+
o["default"] = v;
|
|
21
|
+
});
|
|
22
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
23
|
+
var ownKeys = function(o) {
|
|
24
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
25
|
+
var ar = [];
|
|
26
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
27
|
+
return ar;
|
|
28
|
+
};
|
|
29
|
+
return ownKeys(o);
|
|
30
|
+
};
|
|
31
|
+
return function (mod) {
|
|
32
|
+
if (mod && mod.__esModule) return mod;
|
|
33
|
+
var result = {};
|
|
34
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
35
|
+
__setModuleDefault(result, mod);
|
|
36
|
+
return result;
|
|
37
|
+
};
|
|
38
|
+
})();
|
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
exports.ManifestGenerator = void 0;
|
|
41
|
+
exports.generateManifest = generateManifest;
|
|
42
|
+
exports.updateManifest = updateManifest;
|
|
43
|
+
exports.validateManifest = validateManifest;
|
|
44
|
+
const fs = __importStar(require("fs/promises"));
|
|
45
|
+
const path = __importStar(require("path"));
|
|
46
|
+
/**
|
|
47
|
+
* Category detection rules based on skill name patterns
|
|
48
|
+
*/
|
|
49
|
+
const CATEGORY_PATTERNS = {
|
|
50
|
+
'agentic-quality': 'qe-core',
|
|
51
|
+
'holistic-testing': 'qe-core',
|
|
52
|
+
'tdd-': 'qe-methodology',
|
|
53
|
+
'context-driven': 'qe-methodology',
|
|
54
|
+
'exploratory': 'qe-methodology',
|
|
55
|
+
'api-testing': 'qe-specialized',
|
|
56
|
+
'performance-': 'qe-specialized',
|
|
57
|
+
'security-': 'qe-specialized',
|
|
58
|
+
'accessibility-': 'qe-specialized',
|
|
59
|
+
'mobile-': 'qe-specialized',
|
|
60
|
+
'mutation-': 'qe-advanced',
|
|
61
|
+
'chaos-': 'qe-advanced',
|
|
62
|
+
'contract-': 'qe-advanced',
|
|
63
|
+
'github-': 'integration',
|
|
64
|
+
'flow-nexus': 'integration',
|
|
65
|
+
'hooks-': 'advanced',
|
|
66
|
+
'swarm-': 'advanced',
|
|
67
|
+
'hive-mind': 'advanced',
|
|
68
|
+
};
|
|
69
|
+
/**
|
|
70
|
+
* Priority detection based on skill characteristics
|
|
71
|
+
*/
|
|
72
|
+
const PRIORITY_KEYWORDS = {
|
|
73
|
+
critical: ['agentic-quality-engineering', 'holistic-testing-pact'],
|
|
74
|
+
high: ['tdd', 'context-driven', 'api-testing', 'security'],
|
|
75
|
+
medium: ['performance', 'exploratory', 'regression', 'integration'],
|
|
76
|
+
low: ['localization', 'compatibility', 'visual'],
|
|
77
|
+
};
|
|
78
|
+
/**
|
|
79
|
+
* Manifest Generator for creating and updating skill manifests
|
|
80
|
+
*/
|
|
81
|
+
class ManifestGenerator {
|
|
82
|
+
constructor(config = {}) {
|
|
83
|
+
this.config = {
|
|
84
|
+
skillsDir: path.resolve(process.cwd(), '.claude/skills'),
|
|
85
|
+
outputPath: path.resolve(process.cwd(), '.claude/skills/skills-manifest.json'),
|
|
86
|
+
defaultPriority: 'medium',
|
|
87
|
+
tokensPerLine: 4, // Approximate tokens per line
|
|
88
|
+
...config,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Generate manifest from skill directories
|
|
93
|
+
*/
|
|
94
|
+
async generate() {
|
|
95
|
+
const skills = await this.scanSkillDirectories();
|
|
96
|
+
const categoryCounts = this.calculateCategoryCounts(skills);
|
|
97
|
+
const manifest = {
|
|
98
|
+
version: '1.1.0',
|
|
99
|
+
generatedAt: new Date().toISOString(),
|
|
100
|
+
totalSkills: skills.length,
|
|
101
|
+
categoryCounts,
|
|
102
|
+
skills,
|
|
103
|
+
};
|
|
104
|
+
await this.writeManifest(manifest);
|
|
105
|
+
return manifest;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Update existing manifest with new/changed skills
|
|
109
|
+
*/
|
|
110
|
+
async update() {
|
|
111
|
+
let existingManifest = null;
|
|
112
|
+
try {
|
|
113
|
+
const content = await fs.readFile(this.config.outputPath, 'utf-8');
|
|
114
|
+
existingManifest = JSON.parse(content);
|
|
115
|
+
}
|
|
116
|
+
catch {
|
|
117
|
+
// No existing manifest, generate from scratch
|
|
118
|
+
return this.generate();
|
|
119
|
+
}
|
|
120
|
+
const currentSkills = await this.scanSkillDirectories();
|
|
121
|
+
// TypeScript flow analysis: existingManifest is guaranteed non-null here
|
|
122
|
+
// because catch block returns early via this.generate()
|
|
123
|
+
const existingSkillMap = new Map(existingManifest.skills.map(s => [s.id, s]));
|
|
124
|
+
// Merge: keep existing metadata where possible, add new skills
|
|
125
|
+
const mergedSkills = [];
|
|
126
|
+
for (const skill of currentSkills) {
|
|
127
|
+
const existing = existingSkillMap.get(skill.id);
|
|
128
|
+
if (existing) {
|
|
129
|
+
// Update only if file changed (check lastUpdated)
|
|
130
|
+
const fileStats = await this.getFileStats(skill.id);
|
|
131
|
+
if (fileStats && fileStats > new Date(existing.lastUpdated)) {
|
|
132
|
+
mergedSkills.push(skill);
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
mergedSkills.push(existing);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
mergedSkills.push(skill);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
const manifest = {
|
|
143
|
+
version: '1.1.0',
|
|
144
|
+
generatedAt: new Date().toISOString(),
|
|
145
|
+
totalSkills: mergedSkills.length,
|
|
146
|
+
categoryCounts: this.calculateCategoryCounts(mergedSkills),
|
|
147
|
+
skills: mergedSkills,
|
|
148
|
+
};
|
|
149
|
+
await this.writeManifest(manifest);
|
|
150
|
+
return manifest;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Validate existing manifest against actual skill files
|
|
154
|
+
*/
|
|
155
|
+
async validate() {
|
|
156
|
+
const errors = [];
|
|
157
|
+
const warnings = [];
|
|
158
|
+
let manifest;
|
|
159
|
+
try {
|
|
160
|
+
const content = await fs.readFile(this.config.outputPath, 'utf-8');
|
|
161
|
+
manifest = JSON.parse(content);
|
|
162
|
+
}
|
|
163
|
+
catch (error) {
|
|
164
|
+
return {
|
|
165
|
+
valid: false,
|
|
166
|
+
errors: [`Cannot read manifest: ${error instanceof Error ? error.message : String(error)}`],
|
|
167
|
+
warnings: [],
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
// Check each skill exists
|
|
171
|
+
for (const skill of manifest.skills) {
|
|
172
|
+
const skillPath = path.join(this.config.skillsDir, skill.path);
|
|
173
|
+
try {
|
|
174
|
+
await fs.access(skillPath);
|
|
175
|
+
}
|
|
176
|
+
catch {
|
|
177
|
+
errors.push(`Skill file missing: ${skill.id} (${skill.path})`);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
// Check for orphan skills (files without manifest entries)
|
|
181
|
+
const manifestIds = new Set(manifest.skills.map(s => s.id));
|
|
182
|
+
const actualSkills = await this.getSkillDirectories();
|
|
183
|
+
for (const skillId of actualSkills) {
|
|
184
|
+
if (!manifestIds.has(skillId)) {
|
|
185
|
+
warnings.push(`Skill not in manifest: ${skillId}`);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
// Validate category counts
|
|
189
|
+
const actualCounts = this.calculateCategoryCounts(manifest.skills);
|
|
190
|
+
for (const [category, count] of Object.entries(manifest.categoryCounts)) {
|
|
191
|
+
if (actualCounts[category] !== count) {
|
|
192
|
+
warnings.push(`Category count mismatch for ${category}: manifest=${count}, actual=${actualCounts[category] || 0}`);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
return {
|
|
196
|
+
valid: errors.length === 0,
|
|
197
|
+
errors,
|
|
198
|
+
warnings,
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Scan skill directories and extract metadata
|
|
203
|
+
*/
|
|
204
|
+
async scanSkillDirectories() {
|
|
205
|
+
const skillDirs = await this.getSkillDirectories();
|
|
206
|
+
const skills = [];
|
|
207
|
+
for (const skillId of skillDirs) {
|
|
208
|
+
try {
|
|
209
|
+
const metadata = await this.extractMetadata(skillId);
|
|
210
|
+
if (metadata) {
|
|
211
|
+
skills.push(metadata);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
catch (error) {
|
|
215
|
+
console.warn(`Failed to extract metadata for ${skillId}: ${error}`);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
// Sort by priority then name
|
|
219
|
+
return skills.sort((a, b) => {
|
|
220
|
+
const priorityOrder = { critical: 0, high: 1, medium: 2, low: 3 };
|
|
221
|
+
const priorityDiff = priorityOrder[a.priority] - priorityOrder[b.priority];
|
|
222
|
+
return priorityDiff !== 0 ? priorityDiff : a.name.localeCompare(b.name);
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Get list of skill directories
|
|
227
|
+
*/
|
|
228
|
+
async getSkillDirectories() {
|
|
229
|
+
try {
|
|
230
|
+
const entries = await fs.readdir(this.config.skillsDir, { withFileTypes: true });
|
|
231
|
+
return entries
|
|
232
|
+
.filter(e => e.isDirectory() && !e.name.startsWith('.'))
|
|
233
|
+
.map(e => e.name);
|
|
234
|
+
}
|
|
235
|
+
catch {
|
|
236
|
+
return [];
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Extract metadata from a skill directory
|
|
241
|
+
*/
|
|
242
|
+
async extractMetadata(skillId) {
|
|
243
|
+
const skillDir = path.join(this.config.skillsDir, skillId);
|
|
244
|
+
const skillFile = path.join(skillDir, 'SKILL.md');
|
|
245
|
+
try {
|
|
246
|
+
const content = await fs.readFile(skillFile, 'utf-8');
|
|
247
|
+
const frontmatter = this.parseFrontmatter(content);
|
|
248
|
+
const stats = await fs.stat(skillFile);
|
|
249
|
+
return {
|
|
250
|
+
id: skillId,
|
|
251
|
+
name: frontmatter.name || this.formatName(skillId),
|
|
252
|
+
category: this.detectCategory(skillId, frontmatter),
|
|
253
|
+
description: frontmatter.description || this.extractDescription(content),
|
|
254
|
+
keywords: this.extractKeywords(frontmatter, content),
|
|
255
|
+
dependencies: frontmatter.dependencies?.split(',').map((d) => d.trim()) || [],
|
|
256
|
+
estimatedTokens: this.estimateTokens(content),
|
|
257
|
+
priority: this.detectPriority(skillId, frontmatter),
|
|
258
|
+
path: `${skillId}/SKILL.md`,
|
|
259
|
+
lastUpdated: stats.mtime.toISOString(),
|
|
260
|
+
};
|
|
261
|
+
}
|
|
262
|
+
catch {
|
|
263
|
+
return null;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Parse YAML frontmatter from markdown
|
|
268
|
+
*/
|
|
269
|
+
parseFrontmatter(content) {
|
|
270
|
+
const match = content.match(/^---\n([\s\S]*?)\n---/);
|
|
271
|
+
if (!match)
|
|
272
|
+
return {};
|
|
273
|
+
const frontmatter = {};
|
|
274
|
+
const lines = match[1].split('\n');
|
|
275
|
+
for (const line of lines) {
|
|
276
|
+
const colonIndex = line.indexOf(':');
|
|
277
|
+
if (colonIndex === -1)
|
|
278
|
+
continue;
|
|
279
|
+
const key = line.substring(0, colonIndex).trim();
|
|
280
|
+
let value = line.substring(colonIndex + 1).trim();
|
|
281
|
+
// Handle arrays in YAML
|
|
282
|
+
if (value.startsWith('[') && value.endsWith(']')) {
|
|
283
|
+
value = value.slice(1, -1);
|
|
284
|
+
frontmatter[key] = value.split(',').map(v => v.trim().replace(/['"]/g, ''));
|
|
285
|
+
}
|
|
286
|
+
else {
|
|
287
|
+
frontmatter[key] = value.replace(/['"]/g, '');
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
return frontmatter;
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Detect category based on skill ID and frontmatter
|
|
294
|
+
*/
|
|
295
|
+
detectCategory(skillId, frontmatter) {
|
|
296
|
+
// Prefer explicit category from frontmatter
|
|
297
|
+
if (frontmatter.category && this.isValidCategory(frontmatter.category)) {
|
|
298
|
+
return frontmatter.category;
|
|
299
|
+
}
|
|
300
|
+
// Pattern matching
|
|
301
|
+
for (const [pattern, category] of Object.entries(CATEGORY_PATTERNS)) {
|
|
302
|
+
if (skillId.includes(pattern)) {
|
|
303
|
+
return category;
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
// Default based on skill characteristics
|
|
307
|
+
if (skillId.includes('testing') || skillId.includes('test')) {
|
|
308
|
+
return 'qe-specialized';
|
|
309
|
+
}
|
|
310
|
+
return 'qe-methodology';
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* Check if category is valid
|
|
314
|
+
*/
|
|
315
|
+
isValidCategory(category) {
|
|
316
|
+
const validCategories = [
|
|
317
|
+
'qe-core', 'qe-methodology', 'qe-specialized', 'qe-advanced', 'advanced', 'integration'
|
|
318
|
+
];
|
|
319
|
+
return validCategories.includes(category);
|
|
320
|
+
}
|
|
321
|
+
/**
|
|
322
|
+
* Detect priority based on skill ID and frontmatter
|
|
323
|
+
*/
|
|
324
|
+
detectPriority(skillId, frontmatter) {
|
|
325
|
+
// Prefer explicit priority from frontmatter
|
|
326
|
+
if (frontmatter.priority && ['critical', 'high', 'medium', 'low'].includes(frontmatter.priority)) {
|
|
327
|
+
return frontmatter.priority;
|
|
328
|
+
}
|
|
329
|
+
// Keyword matching
|
|
330
|
+
for (const [priority, keywords] of Object.entries(PRIORITY_KEYWORDS)) {
|
|
331
|
+
for (const keyword of keywords) {
|
|
332
|
+
if (skillId.includes(keyword)) {
|
|
333
|
+
return priority;
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
return this.config.defaultPriority;
|
|
338
|
+
}
|
|
339
|
+
/**
|
|
340
|
+
* Extract description from content (first paragraph after frontmatter)
|
|
341
|
+
*/
|
|
342
|
+
extractDescription(content) {
|
|
343
|
+
const withoutFrontmatter = content.replace(/^---\n[\s\S]*?\n---\n?/, '');
|
|
344
|
+
const lines = withoutFrontmatter.split('\n').filter(l => l.trim() && !l.startsWith('#'));
|
|
345
|
+
if (lines.length > 0) {
|
|
346
|
+
return lines[0].trim().substring(0, 100);
|
|
347
|
+
}
|
|
348
|
+
return 'No description available';
|
|
349
|
+
}
|
|
350
|
+
/**
|
|
351
|
+
* Extract keywords from frontmatter and content
|
|
352
|
+
*/
|
|
353
|
+
extractKeywords(frontmatter, content) {
|
|
354
|
+
const keywords = new Set();
|
|
355
|
+
// From frontmatter tags
|
|
356
|
+
if (Array.isArray(frontmatter.tags)) {
|
|
357
|
+
frontmatter.tags.forEach((tag) => keywords.add(tag.toLowerCase()));
|
|
358
|
+
}
|
|
359
|
+
// From frontmatter keywords
|
|
360
|
+
if (Array.isArray(frontmatter.keywords)) {
|
|
361
|
+
frontmatter.keywords.forEach((kw) => keywords.add(kw.toLowerCase()));
|
|
362
|
+
}
|
|
363
|
+
// Extract from headers
|
|
364
|
+
const headers = content.match(/^#+\s+(.+)$/gm) || [];
|
|
365
|
+
headers.forEach(h => {
|
|
366
|
+
const text = h.replace(/^#+\s+/, '').toLowerCase();
|
|
367
|
+
if (text.length <= 30) {
|
|
368
|
+
keywords.add(text);
|
|
369
|
+
}
|
|
370
|
+
});
|
|
371
|
+
return Array.from(keywords).slice(0, 10);
|
|
372
|
+
}
|
|
373
|
+
/**
|
|
374
|
+
* Estimate token count for content
|
|
375
|
+
*/
|
|
376
|
+
estimateTokens(content) {
|
|
377
|
+
const lines = content.split('\n').length;
|
|
378
|
+
return Math.ceil(lines * this.config.tokensPerLine);
|
|
379
|
+
}
|
|
380
|
+
/**
|
|
381
|
+
* Format skill ID as human-readable name
|
|
382
|
+
*/
|
|
383
|
+
formatName(skillId) {
|
|
384
|
+
return skillId
|
|
385
|
+
.split('-')
|
|
386
|
+
.map(word => word.charAt(0).toUpperCase() + word.slice(1))
|
|
387
|
+
.join(' ');
|
|
388
|
+
}
|
|
389
|
+
/**
|
|
390
|
+
* Calculate category counts
|
|
391
|
+
*/
|
|
392
|
+
calculateCategoryCounts(skills) {
|
|
393
|
+
const counts = {
|
|
394
|
+
'qe-core': 0,
|
|
395
|
+
'qe-methodology': 0,
|
|
396
|
+
'qe-specialized': 0,
|
|
397
|
+
'qe-advanced': 0,
|
|
398
|
+
'advanced': 0,
|
|
399
|
+
'integration': 0,
|
|
400
|
+
};
|
|
401
|
+
for (const skill of skills) {
|
|
402
|
+
counts[skill.category]++;
|
|
403
|
+
}
|
|
404
|
+
return counts;
|
|
405
|
+
}
|
|
406
|
+
/**
|
|
407
|
+
* Get file modification time
|
|
408
|
+
*/
|
|
409
|
+
async getFileStats(skillId) {
|
|
410
|
+
try {
|
|
411
|
+
const skillPath = path.join(this.config.skillsDir, skillId, 'SKILL.md');
|
|
412
|
+
const stats = await fs.stat(skillPath);
|
|
413
|
+
return stats.mtime;
|
|
414
|
+
}
|
|
415
|
+
catch {
|
|
416
|
+
return null;
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
/**
|
|
420
|
+
* Write manifest to file
|
|
421
|
+
*/
|
|
422
|
+
async writeManifest(manifest) {
|
|
423
|
+
const content = JSON.stringify(manifest, null, 2);
|
|
424
|
+
await fs.writeFile(this.config.outputPath, content, 'utf-8');
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
exports.ManifestGenerator = ManifestGenerator;
|
|
428
|
+
/**
|
|
429
|
+
* CLI entry point for manifest generation
|
|
430
|
+
*/
|
|
431
|
+
async function generateManifest(options = {}) {
|
|
432
|
+
const generator = new ManifestGenerator(options);
|
|
433
|
+
return generator.generate();
|
|
434
|
+
}
|
|
435
|
+
/**
|
|
436
|
+
* CLI entry point for manifest update
|
|
437
|
+
*/
|
|
438
|
+
async function updateManifest(options = {}) {
|
|
439
|
+
const generator = new ManifestGenerator(options);
|
|
440
|
+
return generator.update();
|
|
441
|
+
}
|
|
442
|
+
/**
|
|
443
|
+
* CLI entry point for manifest validation
|
|
444
|
+
*/
|
|
445
|
+
async function validateManifest(options = {}) {
|
|
446
|
+
const generator = new ManifestGenerator(options);
|
|
447
|
+
return generator.validate();
|
|
448
|
+
}
|
|
449
|
+
//# sourceMappingURL=ManifestGenerator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ManifestGenerator.js","sourceRoot":"","sources":["../../../src/core/skills/ManifestGenerator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skills Module - Progressive Disclosure System
|
|
3
|
+
* Achieves 98% token reduction by lazy-loading skills on demand
|
|
4
|
+
*/
|
|
5
|
+
export { Skill, SkillMetadata, SkillManifest, SkillLoaderConfig, SkillUsageStats, SkillSearchFilter, SkillPriority, SkillCategory, } from './types.js';
|
|
6
|
+
export { DynamicSkillLoader, getDefaultLoader, resetDefaultLoader, } from './DynamicSkillLoader.js';
|
|
7
|
+
export { ManifestGenerator, ManifestGeneratorConfig, generateManifest, updateManifest, validateManifest, } from './ManifestGenerator.js';
|
|
8
|
+
export { DependencyResolver, DependencyResolution, DependencyNode, ResolverOptions, createDependencyResolver, visualizeDependencyTree, } from './DependencyResolver.js';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/skills/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,KAAK,EACL,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,aAAa,GACd,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,gBAAgB,EAChB,cAAc,EACd,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,cAAc,EACd,eAAe,EACf,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Skills Module - Progressive Disclosure System
|
|
4
|
+
* Achieves 98% token reduction by lazy-loading skills on demand
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.visualizeDependencyTree = exports.createDependencyResolver = exports.DependencyResolver = exports.validateManifest = exports.updateManifest = exports.generateManifest = exports.ManifestGenerator = exports.resetDefaultLoader = exports.getDefaultLoader = exports.DynamicSkillLoader = void 0;
|
|
8
|
+
// Dynamic Skill Loader
|
|
9
|
+
var DynamicSkillLoader_js_1 = require("./DynamicSkillLoader.js");
|
|
10
|
+
Object.defineProperty(exports, "DynamicSkillLoader", { enumerable: true, get: function () { return DynamicSkillLoader_js_1.DynamicSkillLoader; } });
|
|
11
|
+
Object.defineProperty(exports, "getDefaultLoader", { enumerable: true, get: function () { return DynamicSkillLoader_js_1.getDefaultLoader; } });
|
|
12
|
+
Object.defineProperty(exports, "resetDefaultLoader", { enumerable: true, get: function () { return DynamicSkillLoader_js_1.resetDefaultLoader; } });
|
|
13
|
+
// Manifest Generator
|
|
14
|
+
var ManifestGenerator_js_1 = require("./ManifestGenerator.js");
|
|
15
|
+
Object.defineProperty(exports, "ManifestGenerator", { enumerable: true, get: function () { return ManifestGenerator_js_1.ManifestGenerator; } });
|
|
16
|
+
Object.defineProperty(exports, "generateManifest", { enumerable: true, get: function () { return ManifestGenerator_js_1.generateManifest; } });
|
|
17
|
+
Object.defineProperty(exports, "updateManifest", { enumerable: true, get: function () { return ManifestGenerator_js_1.updateManifest; } });
|
|
18
|
+
Object.defineProperty(exports, "validateManifest", { enumerable: true, get: function () { return ManifestGenerator_js_1.validateManifest; } });
|
|
19
|
+
// Dependency Resolver
|
|
20
|
+
var DependencyResolver_js_1 = require("./DependencyResolver.js");
|
|
21
|
+
Object.defineProperty(exports, "DependencyResolver", { enumerable: true, get: function () { return DependencyResolver_js_1.DependencyResolver; } });
|
|
22
|
+
Object.defineProperty(exports, "createDependencyResolver", { enumerable: true, get: function () { return DependencyResolver_js_1.createDependencyResolver; } });
|
|
23
|
+
Object.defineProperty(exports, "visualizeDependencyTree", { enumerable: true, get: function () { return DependencyResolver_js_1.visualizeDependencyTree; } });
|
|
24
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/skills/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAcH,uBAAuB;AACvB,iEAIiC;AAH/B,2HAAA,kBAAkB,OAAA;AAClB,yHAAA,gBAAgB,OAAA;AAChB,2HAAA,kBAAkB,OAAA;AAGpB,qBAAqB;AACrB,+DAMgC;AAL9B,yHAAA,iBAAiB,OAAA;AAEjB,wHAAA,gBAAgB,OAAA;AAChB,sHAAA,cAAc,OAAA;AACd,wHAAA,gBAAgB,OAAA;AAGlB,sBAAsB;AACtB,iEAOiC;AAN/B,2HAAA,kBAAkB,OAAA;AAIlB,iIAAA,wBAAwB,OAAA;AACxB,gIAAA,uBAAuB,OAAA"}
|
|
@@ -3,6 +3,11 @@
|
|
|
3
3
|
* Real fault injection for various failure types (errors, timeouts, connection issues)
|
|
4
4
|
*/
|
|
5
5
|
import type { ChaosFailureConfig, ChaosInjectionResult, ActiveInjection } from '../../types/chaos';
|
|
6
|
+
/**
|
|
7
|
+
* Stop cleanup interval and clear all injections
|
|
8
|
+
* Call this during test teardown or process shutdown
|
|
9
|
+
*/
|
|
10
|
+
export declare function shutdown(): void;
|
|
6
11
|
/**
|
|
7
12
|
* Main handler for chaos failure injection
|
|
8
13
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chaos-inject-failure.d.ts","sourceRoot":"","sources":["../../../../src/mcp/handlers/chaos/chaos-inject-failure.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,kBAAkB,EAClB,oBAAoB,EACpB,eAAe,EAEhB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"chaos-inject-failure.d.ts","sourceRoot":"","sources":["../../../../src/mcp/handlers/chaos/chaos-inject-failure.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,kBAAkB,EAClB,oBAAoB,EACpB,eAAe,EAEhB,MAAM,mBAAmB,CAAC;AA2B3B;;;GAGG;AACH,wBAAgB,QAAQ,IAAI,IAAI,CAa/B;AAqMD;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC,oBAAoB,CAAC,CAqG/B;AAED;;GAEG;AACH,wBAAgB,0BAA0B,IAAI,eAAe,EAAE,CAE9D;AAED;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,IAAI,CAS/C"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* Real fault injection for various failure types (errors, timeouts, connection issues)
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.shutdown = shutdown;
|
|
7
8
|
exports.chaosInjectFailure = chaosInjectFailure;
|
|
8
9
|
exports.getActiveFailureInjections = getActiveFailureInjections;
|
|
9
10
|
exports.cleanupExpiredInjections = cleanupExpiredInjections;
|
|
@@ -13,6 +14,39 @@ const SecureRandom_js_1 = require("../../../utils/SecureRandom.js");
|
|
|
13
14
|
const activeInjections = new Map();
|
|
14
15
|
// Failure interceptors
|
|
15
16
|
const failureHandlers = new Map();
|
|
17
|
+
// Cleanup interval handle (lazy-initialized to prevent memory leaks)
|
|
18
|
+
let cleanupIntervalHandle = null;
|
|
19
|
+
/**
|
|
20
|
+
* Start cleanup interval if not already running
|
|
21
|
+
* Uses unref() to prevent interval from keeping process alive
|
|
22
|
+
*/
|
|
23
|
+
function ensureCleanupInterval() {
|
|
24
|
+
if (!cleanupIntervalHandle) {
|
|
25
|
+
cleanupIntervalHandle = setInterval(cleanupExpiredInjections, 60000);
|
|
26
|
+
// Prevent interval from keeping process alive
|
|
27
|
+
if (cleanupIntervalHandle.unref) {
|
|
28
|
+
cleanupIntervalHandle.unref();
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Stop cleanup interval and clear all injections
|
|
34
|
+
* Call this during test teardown or process shutdown
|
|
35
|
+
*/
|
|
36
|
+
function shutdown() {
|
|
37
|
+
if (cleanupIntervalHandle) {
|
|
38
|
+
clearInterval(cleanupIntervalHandle);
|
|
39
|
+
cleanupIntervalHandle = null;
|
|
40
|
+
}
|
|
41
|
+
// Rollback all active injections
|
|
42
|
+
for (const [id, injection] of activeInjections.entries()) {
|
|
43
|
+
if (injection.active) {
|
|
44
|
+
rollbackFailureInjection(id).catch(() => { });
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
activeInjections.clear();
|
|
48
|
+
failureHandlers.clear();
|
|
49
|
+
}
|
|
16
50
|
/**
|
|
17
51
|
* Valid HTTP error codes
|
|
18
52
|
*/
|
|
@@ -211,6 +245,8 @@ async function chaosInjectFailure(config) {
|
|
|
211
245
|
active: true,
|
|
212
246
|
};
|
|
213
247
|
activeInjections.set(injectionId, injection);
|
|
248
|
+
// Start cleanup interval when first injection is created (lazy init)
|
|
249
|
+
ensureCleanupInterval();
|
|
214
250
|
// Auto-rollback after duration
|
|
215
251
|
if (config.duration) {
|
|
216
252
|
setTimeout(async () => {
|
|
@@ -273,6 +309,4 @@ function cleanupExpiredInjections() {
|
|
|
273
309
|
}
|
|
274
310
|
}
|
|
275
311
|
}
|
|
276
|
-
// Run cleanup every 60 seconds
|
|
277
|
-
setInterval(cleanupExpiredInjections, 60000);
|
|
278
312
|
//# sourceMappingURL=chaos-inject-failure.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chaos-inject-failure.js","sourceRoot":"","sources":["../../../../src/mcp/handlers/chaos/chaos-inject-failure.ts"],"names":[],"mappings":";AAAA;;;GAGG;;
|
|
1
|
+
{"version":3,"file":"chaos-inject-failure.js","sourceRoot":"","sources":["../../../../src/mcp/handlers/chaos/chaos-inject-failure.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,11 @@
|
|
|
3
3
|
* Real fault injection for network latency with multiple distribution types
|
|
4
4
|
*/
|
|
5
5
|
import type { ChaosLatencyConfig, ChaosInjectionResult, ActiveInjection } from '../../types/chaos';
|
|
6
|
+
/**
|
|
7
|
+
* Stop cleanup interval and clear all injections
|
|
8
|
+
* Call this during test teardown or process shutdown
|
|
9
|
+
*/
|
|
10
|
+
export declare function shutdown(): void;
|
|
6
11
|
/**
|
|
7
12
|
* Main handler for chaos latency injection
|
|
8
13
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chaos-inject-latency.d.ts","sourceRoot":"","sources":["../../../../src/mcp/handlers/chaos/chaos-inject-latency.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,kBAAkB,EAClB,oBAAoB,EACpB,eAAe,EAChB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"chaos-inject-latency.d.ts","sourceRoot":"","sources":["../../../../src/mcp/handlers/chaos/chaos-inject-latency.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,kBAAkB,EAClB,oBAAoB,EACpB,eAAe,EAChB,MAAM,mBAAmB,CAAC;AA2B3B;;;GAGG;AACH,wBAAgB,QAAQ,IAAI,IAAI,CAa/B;AAuID;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC,oBAAoB,CAAC,CAoG/B;AAED;;GAEG;AACH,wBAAgB,0BAA0B,IAAI,eAAe,EAAE,CAE9D;AAED;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,IAAI,CAS/C"}
|