agentic-qe 1.3.7 ā 1.4.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/CHANGELOG.md +57 -0
- package/README.md +47 -1
- package/dist/agents/ApiContractValidatorAgent.d.ts +11 -0
- package/dist/agents/ApiContractValidatorAgent.d.ts.map +1 -1
- package/dist/agents/ApiContractValidatorAgent.js +59 -0
- package/dist/agents/ApiContractValidatorAgent.js.map +1 -1
- package/dist/agents/BaseAgent.js +1 -1
- package/dist/agents/BaseAgent.js.map +1 -1
- package/dist/agents/DeploymentReadinessAgent.d.ts +11 -0
- package/dist/agents/DeploymentReadinessAgent.d.ts.map +1 -1
- package/dist/agents/DeploymentReadinessAgent.js +61 -0
- package/dist/agents/DeploymentReadinessAgent.js.map +1 -1
- package/dist/agents/FlakyTestHunterAgent.d.ts +20 -0
- package/dist/agents/FlakyTestHunterAgent.d.ts.map +1 -1
- package/dist/agents/FlakyTestHunterAgent.js +81 -7
- package/dist/agents/FlakyTestHunterAgent.js.map +1 -1
- package/dist/agents/FleetCommanderAgent.d.ts +20 -0
- package/dist/agents/FleetCommanderAgent.d.ts.map +1 -1
- package/dist/agents/FleetCommanderAgent.js +77 -0
- package/dist/agents/FleetCommanderAgent.js.map +1 -1
- package/dist/agents/PerformanceTesterAgent.d.ts +20 -0
- package/dist/agents/PerformanceTesterAgent.d.ts.map +1 -1
- package/dist/agents/PerformanceTesterAgent.js +77 -0
- package/dist/agents/PerformanceTesterAgent.js.map +1 -1
- package/dist/agents/ProductionIntelligenceAgent.d.ts +20 -0
- package/dist/agents/ProductionIntelligenceAgent.d.ts.map +1 -1
- package/dist/agents/ProductionIntelligenceAgent.js +64 -0
- package/dist/agents/ProductionIntelligenceAgent.js.map +1 -1
- package/dist/agents/RegressionRiskAnalyzerAgent.d.ts +20 -0
- package/dist/agents/RegressionRiskAnalyzerAgent.d.ts.map +1 -1
- package/dist/agents/RegressionRiskAnalyzerAgent.js +64 -0
- package/dist/agents/RegressionRiskAnalyzerAgent.js.map +1 -1
- package/dist/agents/RequirementsValidatorAgent.d.ts +11 -0
- package/dist/agents/RequirementsValidatorAgent.d.ts.map +1 -1
- package/dist/agents/RequirementsValidatorAgent.js +60 -0
- package/dist/agents/RequirementsValidatorAgent.js.map +1 -1
- package/dist/agents/SecurityScannerAgent.d.ts +20 -0
- package/dist/agents/SecurityScannerAgent.d.ts.map +1 -1
- package/dist/agents/SecurityScannerAgent.js +63 -0
- package/dist/agents/SecurityScannerAgent.js.map +1 -1
- package/dist/agents/TestDataArchitectAgent.d.ts +20 -0
- package/dist/agents/TestDataArchitectAgent.d.ts.map +1 -1
- package/dist/agents/TestDataArchitectAgent.js +62 -0
- package/dist/agents/TestDataArchitectAgent.js.map +1 -1
- package/dist/agents/TestExecutorAgent.d.ts +20 -0
- package/dist/agents/TestExecutorAgent.d.ts.map +1 -1
- package/dist/agents/TestExecutorAgent.js +88 -13
- package/dist/agents/TestExecutorAgent.js.map +1 -1
- package/dist/agents/TestGeneratorAgent.d.ts +1 -0
- package/dist/agents/TestGeneratorAgent.d.ts.map +1 -1
- package/dist/agents/TestGeneratorAgent.js +53 -2
- package/dist/agents/TestGeneratorAgent.js.map +1 -1
- package/dist/cli/commands/agentdb/learn.d.ts +22 -0
- package/dist/cli/commands/agentdb/learn.d.ts.map +1 -0
- package/dist/cli/commands/agentdb/learn.js +343 -0
- package/dist/cli/commands/agentdb/learn.js.map +1 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +33 -11
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/patterns/extract.d.ts +12 -0
- package/dist/cli/commands/patterns/extract.d.ts.map +1 -0
- package/dist/cli/commands/patterns/extract.js +304 -0
- package/dist/cli/commands/patterns/extract.js.map +1 -0
- package/dist/cli/commands/patterns/index-new.d.ts +12 -0
- package/dist/cli/commands/patterns/index-new.d.ts.map +1 -0
- package/dist/cli/commands/patterns/index-new.js +102 -0
- package/dist/cli/commands/patterns/index-new.js.map +1 -0
- package/dist/cli/commands/patterns/list.d.ts +14 -0
- package/dist/cli/commands/patterns/list.d.ts.map +1 -0
- package/dist/cli/commands/patterns/list.js +133 -0
- package/dist/cli/commands/patterns/list.js.map +1 -0
- package/dist/cli/commands/patterns/search.d.ts +13 -0
- package/dist/cli/commands/patterns/search.d.ts.map +1 -0
- package/dist/cli/commands/patterns/search.js +125 -0
- package/dist/cli/commands/patterns/search.js.map +1 -0
- package/dist/cli/commands/patterns/show.d.ts +7 -0
- package/dist/cli/commands/patterns/show.d.ts.map +1 -0
- package/dist/cli/commands/patterns/show.js +164 -0
- package/dist/cli/commands/patterns/show.js.map +1 -0
- package/dist/cli/commands/patterns/stats.d.ts +11 -0
- package/dist/cli/commands/patterns/stats.d.ts.map +1 -0
- package/dist/cli/commands/patterns/stats.js +241 -0
- package/dist/cli/commands/patterns/stats.js.map +1 -0
- package/dist/cli/index.js +1 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/core/PatternDatabaseAdapter.d.ts +169 -0
- package/dist/core/PatternDatabaseAdapter.d.ts.map +1 -0
- package/dist/core/PatternDatabaseAdapter.js +493 -0
- package/dist/core/PatternDatabaseAdapter.js.map +1 -0
- package/dist/learning/AgentDBLearningIntegration.d.ts +147 -0
- package/dist/learning/AgentDBLearningIntegration.d.ts.map +1 -0
- package/dist/learning/AgentDBLearningIntegration.js +380 -0
- package/dist/learning/AgentDBLearningIntegration.js.map +1 -0
- package/dist/learning/AgentDBPatternOptimizer.d.ts +129 -0
- package/dist/learning/AgentDBPatternOptimizer.d.ts.map +1 -0
- package/dist/learning/AgentDBPatternOptimizer.js +332 -0
- package/dist/learning/AgentDBPatternOptimizer.js.map +1 -0
- package/dist/learning/LearningEngine.d.ts +15 -1
- package/dist/learning/LearningEngine.d.ts.map +1 -1
- package/dist/learning/LearningEngine.js +128 -1
- package/dist/learning/LearningEngine.js.map +1 -1
- package/dist/learning/RewardCalculator.d.ts +100 -0
- package/dist/learning/RewardCalculator.d.ts.map +1 -0
- package/dist/learning/RewardCalculator.js +176 -0
- package/dist/learning/RewardCalculator.js.map +1 -0
- package/dist/learning/StateExtractor.d.ts +62 -0
- package/dist/learning/StateExtractor.d.ts.map +1 -0
- package/dist/learning/StateExtractor.js +217 -0
- package/dist/learning/StateExtractor.js.map +1 -0
- package/dist/migrations/001_add_learning_tables.d.ts +63 -0
- package/dist/migrations/001_add_learning_tables.d.ts.map +1 -0
- package/dist/migrations/001_add_learning_tables.js +287 -0
- package/dist/migrations/001_add_learning_tables.js.map +1 -0
- package/dist/reasoning/PatternExtractor.d.ts +25 -0
- package/dist/reasoning/PatternExtractor.d.ts.map +1 -1
- package/dist/reasoning/PatternExtractor.js +130 -0
- package/dist/reasoning/PatternExtractor.js.map +1 -1
- package/dist/reasoning/QEReasoningBank.d.ts +18 -2
- package/dist/reasoning/QEReasoningBank.d.ts.map +1 -1
- package/dist/reasoning/QEReasoningBank.js +75 -3
- package/dist/reasoning/QEReasoningBank.js.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/utils/Database.d.ts +107 -0
- package/dist/utils/Database.d.ts.map +1 -1
- package/dist/utils/Database.js +337 -1
- package/dist/utils/Database.js.map +1 -1
- package/dist/utils/__mocks__/Database.d.ts +18 -17
- package/dist/utils/__mocks__/Database.d.ts.map +1 -1
- package/dist/utils/__mocks__/Database.js +22 -55
- package/dist/utils/__mocks__/Database.js.map +1 -1
- package/package.json +4 -3
- package/.claude/aqe-fleet.json +0 -47
- package/.claude/helpers/checkpoint-manager.sh +0 -251
- package/.claude/helpers/github-safe.js +0 -106
- package/.claude/helpers/github-setup.sh +0 -28
- package/.claude/helpers/quick-start.sh +0 -19
- package/.claude/helpers/setup-mcp.sh +0 -18
- package/.claude/helpers/standard-checkpoint-hooks.sh +0 -179
- package/.claude/settings.json +0 -153
- package/.claude/settings.local.json +0 -10
- package/.claude/statusline-command.sh +0 -176
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Patterns Extract Command - Extract patterns from test files and save to database
|
|
4
|
+
*
|
|
5
|
+
* Analyzes test files, extracts patterns, and stores them in patterns.db.
|
|
6
|
+
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
19
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
20
|
+
}) : function(o, v) {
|
|
21
|
+
o["default"] = v;
|
|
22
|
+
});
|
|
23
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
24
|
+
var ownKeys = function(o) {
|
|
25
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
26
|
+
var ar = [];
|
|
27
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
28
|
+
return ar;
|
|
29
|
+
};
|
|
30
|
+
return ownKeys(o);
|
|
31
|
+
};
|
|
32
|
+
return function (mod) {
|
|
33
|
+
if (mod && mod.__esModule) return mod;
|
|
34
|
+
var result = {};
|
|
35
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
36
|
+
__setModuleDefault(result, mod);
|
|
37
|
+
return result;
|
|
38
|
+
};
|
|
39
|
+
})();
|
|
40
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
41
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
42
|
+
};
|
|
43
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
44
|
+
exports.patternsExtract = patternsExtract;
|
|
45
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
46
|
+
const ora_1 = __importDefault(require("ora"));
|
|
47
|
+
const fs = __importStar(require("fs-extra"));
|
|
48
|
+
const path = __importStar(require("path"));
|
|
49
|
+
const Database_1 = require("../../../utils/Database");
|
|
50
|
+
const PatternQualityScorer_1 = require("../../../reasoning/PatternQualityScorer");
|
|
51
|
+
async function patternsExtract(directory, options = {}) {
|
|
52
|
+
if (!directory) {
|
|
53
|
+
console.error(chalk_1.default.red('ā Directory is required'));
|
|
54
|
+
console.log(chalk_1.default.gray('Example: aqe patterns extract ./tests --framework jest'));
|
|
55
|
+
process.exit(1);
|
|
56
|
+
}
|
|
57
|
+
const spinner = (0, ora_1.default)(`Scanning ${directory}...`).start();
|
|
58
|
+
try {
|
|
59
|
+
if (!await fs.pathExists(directory)) {
|
|
60
|
+
spinner.fail('Directory not found');
|
|
61
|
+
console.log(chalk_1.default.red(`\nā Directory does not exist: ${directory}\n`));
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
spinner.text = 'Analyzing test files...';
|
|
65
|
+
// Find test files
|
|
66
|
+
const testFiles = await findTestFiles(directory, options.framework || 'jest');
|
|
67
|
+
if (testFiles.length === 0) {
|
|
68
|
+
spinner.info('No test files found');
|
|
69
|
+
console.log(chalk_1.default.yellow('\nā ļø No test files found in directory'));
|
|
70
|
+
console.log(chalk_1.default.gray('Make sure the directory contains test files\n'));
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
spinner.text = `Extracting patterns from ${testFiles.length} files...`;
|
|
74
|
+
// Extract patterns
|
|
75
|
+
const patterns = [];
|
|
76
|
+
const qualityScorer = new PatternQualityScorer_1.PatternQualityScorer();
|
|
77
|
+
for (const file of testFiles) {
|
|
78
|
+
const content = await fs.readFile(file, 'utf-8');
|
|
79
|
+
const extracted = extractPatternsFromFile(content, options.framework || 'jest');
|
|
80
|
+
for (const pattern of extracted) {
|
|
81
|
+
// Calculate quality score
|
|
82
|
+
const qualityScore = qualityScorer.calculateQuality({
|
|
83
|
+
id: pattern.id,
|
|
84
|
+
name: pattern.name,
|
|
85
|
+
code: pattern.template,
|
|
86
|
+
template: pattern.template,
|
|
87
|
+
description: pattern.description,
|
|
88
|
+
tags: pattern.metadata.tags,
|
|
89
|
+
usageCount: 0,
|
|
90
|
+
metadata: {}
|
|
91
|
+
});
|
|
92
|
+
pattern.quality = qualityScore.overall;
|
|
93
|
+
patterns.push(pattern);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
if (patterns.length === 0) {
|
|
97
|
+
spinner.info('No patterns extracted');
|
|
98
|
+
console.log(chalk_1.default.yellow('\nā ļø No recognizable patterns found'));
|
|
99
|
+
console.log(chalk_1.default.gray('The test files may not follow common patterns\n'));
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
if (options.dryRun) {
|
|
103
|
+
spinner.succeed(`Found ${patterns.length} patterns (dry run)`);
|
|
104
|
+
console.log(chalk_1.default.blue('\nš§Ŗ Dry Run - Patterns Found:\n'));
|
|
105
|
+
patterns.forEach((p, index) => {
|
|
106
|
+
console.log(`${index + 1}. ${chalk_1.default.cyan(p.name)}`);
|
|
107
|
+
console.log(` Type: ${p.category} | Framework: ${p.framework}`);
|
|
108
|
+
console.log(` Confidence: ${formatConfidence(p.confidence)}`);
|
|
109
|
+
console.log();
|
|
110
|
+
});
|
|
111
|
+
console.log(chalk_1.default.gray('Run without --dry-run to save to database\n'));
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
spinner.text = 'Saving patterns to database...';
|
|
115
|
+
// Save to database
|
|
116
|
+
const dbPath = '.agentic-qe/data/patterns.db';
|
|
117
|
+
const db = new Database_1.Database(dbPath);
|
|
118
|
+
await db.initialize();
|
|
119
|
+
let saved = 0;
|
|
120
|
+
let skipped = 0;
|
|
121
|
+
for (const pattern of patterns) {
|
|
122
|
+
try {
|
|
123
|
+
// Check if pattern already exists
|
|
124
|
+
const existing = await db.get('SELECT id FROM patterns WHERE id = ?', [pattern.id]);
|
|
125
|
+
if (existing) {
|
|
126
|
+
// Update existing pattern
|
|
127
|
+
await db.run(`
|
|
128
|
+
UPDATE patterns
|
|
129
|
+
SET usage_count = usage_count + 1,
|
|
130
|
+
updated_at = CURRENT_TIMESTAMP
|
|
131
|
+
WHERE id = ?
|
|
132
|
+
`, [pattern.id]);
|
|
133
|
+
skipped++;
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
// Insert new pattern
|
|
137
|
+
await db.run(`
|
|
138
|
+
INSERT INTO patterns (
|
|
139
|
+
id, name, description, category, framework, language,
|
|
140
|
+
template, examples, confidence, usage_count, success_rate,
|
|
141
|
+
quality, metadata, created_at, updated_at
|
|
142
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
|
|
143
|
+
`, [
|
|
144
|
+
pattern.id,
|
|
145
|
+
pattern.name,
|
|
146
|
+
pattern.description,
|
|
147
|
+
pattern.category,
|
|
148
|
+
pattern.framework,
|
|
149
|
+
pattern.language,
|
|
150
|
+
pattern.template,
|
|
151
|
+
JSON.stringify(pattern.examples),
|
|
152
|
+
pattern.confidence,
|
|
153
|
+
pattern.usageCount,
|
|
154
|
+
pattern.successRate,
|
|
155
|
+
pattern.quality,
|
|
156
|
+
JSON.stringify(pattern.metadata)
|
|
157
|
+
]);
|
|
158
|
+
saved++;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
catch (error) {
|
|
162
|
+
console.error(chalk_1.default.red(`Failed to save pattern ${pattern.id}:`), error);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
await db.close();
|
|
166
|
+
spinner.succeed('Pattern extraction completed');
|
|
167
|
+
console.log(chalk_1.default.green(`\nā
Extracted ${patterns.length} patterns from ${testFiles.length} files\n`));
|
|
168
|
+
console.log(` ${chalk_1.default.green('Saved:')} ${saved} new patterns`);
|
|
169
|
+
console.log(` ${chalk_1.default.yellow('Skipped:')} ${skipped} existing patterns`);
|
|
170
|
+
if (saved > 0) {
|
|
171
|
+
console.log(chalk_1.default.gray('\nUse "aqe patterns list" to view all patterns'));
|
|
172
|
+
}
|
|
173
|
+
console.log();
|
|
174
|
+
}
|
|
175
|
+
catch (error) {
|
|
176
|
+
spinner.fail('Extraction failed');
|
|
177
|
+
console.error(chalk_1.default.red('ā Error:'), error.message);
|
|
178
|
+
process.exit(1);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
// Helper functions
|
|
182
|
+
async function findTestFiles(directory, framework) {
|
|
183
|
+
const extensions = framework === 'playwright' ? ['.spec.ts', '.spec.js'] : ['.test.ts', '.test.js', '.spec.ts', '.spec.js'];
|
|
184
|
+
const files = [];
|
|
185
|
+
async function scan(dir) {
|
|
186
|
+
const entries = await fs.readdir(dir, { withFileTypes: true });
|
|
187
|
+
for (const entry of entries) {
|
|
188
|
+
const fullPath = path.join(dir, entry.name);
|
|
189
|
+
if (entry.isDirectory() && entry.name !== 'node_modules' && entry.name !== '.git') {
|
|
190
|
+
await scan(fullPath);
|
|
191
|
+
}
|
|
192
|
+
else if (entry.isFile()) {
|
|
193
|
+
if (extensions.some(ext => entry.name.endsWith(ext))) {
|
|
194
|
+
files.push(fullPath);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
await scan(directory);
|
|
200
|
+
return files;
|
|
201
|
+
}
|
|
202
|
+
function extractPatternsFromFile(content, framework) {
|
|
203
|
+
const patterns = [];
|
|
204
|
+
// Extract describe blocks
|
|
205
|
+
const describeRegex = /describe\(['"`]([^'"`]+)['"`]/g;
|
|
206
|
+
let match;
|
|
207
|
+
while ((match = describeRegex.exec(content)) !== null) {
|
|
208
|
+
const patternId = `pattern-${Date.now()}-${Math.random().toString(36).substring(7)}`;
|
|
209
|
+
patterns.push({
|
|
210
|
+
id: patternId,
|
|
211
|
+
name: match[1],
|
|
212
|
+
description: `Test suite for ${match[1]}`,
|
|
213
|
+
category: detectCategory(content, match[1]),
|
|
214
|
+
framework: framework,
|
|
215
|
+
language: content.includes('import') ? 'typescript' : 'javascript',
|
|
216
|
+
template: match[0],
|
|
217
|
+
examples: [match[0]],
|
|
218
|
+
confidence: 0.75,
|
|
219
|
+
usageCount: 0,
|
|
220
|
+
successRate: 1.0,
|
|
221
|
+
quality: 0.8,
|
|
222
|
+
metadata: {
|
|
223
|
+
createdAt: new Date(),
|
|
224
|
+
updatedAt: new Date(),
|
|
225
|
+
version: '1.0.0',
|
|
226
|
+
tags: extractTags(content, match[1])
|
|
227
|
+
}
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
// Extract test/it blocks
|
|
231
|
+
const testRegex = /(?:test|it)\(['"`]([^'"`]+)['"`]/g;
|
|
232
|
+
while ((match = testRegex.exec(content)) !== null) {
|
|
233
|
+
const patternId = `pattern-${Date.now()}-${Math.random().toString(36).substring(7)}`;
|
|
234
|
+
patterns.push({
|
|
235
|
+
id: patternId,
|
|
236
|
+
name: match[1],
|
|
237
|
+
description: `Test case: ${match[1]}`,
|
|
238
|
+
category: detectCategory(content, match[1]),
|
|
239
|
+
framework: framework,
|
|
240
|
+
language: content.includes('import') ? 'typescript' : 'javascript',
|
|
241
|
+
template: match[0],
|
|
242
|
+
examples: [match[0]],
|
|
243
|
+
confidence: 0.85,
|
|
244
|
+
usageCount: 0,
|
|
245
|
+
successRate: 1.0,
|
|
246
|
+
quality: 0.8,
|
|
247
|
+
metadata: {
|
|
248
|
+
createdAt: new Date(),
|
|
249
|
+
updatedAt: new Date(),
|
|
250
|
+
version: '1.0.0',
|
|
251
|
+
tags: extractTags(content, match[1])
|
|
252
|
+
}
|
|
253
|
+
});
|
|
254
|
+
}
|
|
255
|
+
return patterns;
|
|
256
|
+
}
|
|
257
|
+
function detectCategory(content, name) {
|
|
258
|
+
const nameLower = name.toLowerCase();
|
|
259
|
+
if (nameLower.includes('e2e') || nameLower.includes('end-to-end') || content.includes('@playwright/test')) {
|
|
260
|
+
return 'e2e';
|
|
261
|
+
}
|
|
262
|
+
if (nameLower.includes('performance') || nameLower.includes('load') || nameLower.includes('stress')) {
|
|
263
|
+
return 'performance';
|
|
264
|
+
}
|
|
265
|
+
if (nameLower.includes('security') || nameLower.includes('auth') || nameLower.includes('csrf')) {
|
|
266
|
+
return 'security';
|
|
267
|
+
}
|
|
268
|
+
if (nameLower.includes('integration') || content.includes('supertest') || content.includes('axios')) {
|
|
269
|
+
return 'integration';
|
|
270
|
+
}
|
|
271
|
+
return 'unit';
|
|
272
|
+
}
|
|
273
|
+
function extractTags(content, name) {
|
|
274
|
+
const tags = new Set();
|
|
275
|
+
const nameLower = name.toLowerCase();
|
|
276
|
+
if (nameLower.includes('api'))
|
|
277
|
+
tags.add('api');
|
|
278
|
+
if (nameLower.includes('controller'))
|
|
279
|
+
tags.add('controller');
|
|
280
|
+
if (nameLower.includes('service'))
|
|
281
|
+
tags.add('service');
|
|
282
|
+
if (nameLower.includes('util'))
|
|
283
|
+
tags.add('utility');
|
|
284
|
+
if (nameLower.includes('validate'))
|
|
285
|
+
tags.add('validation');
|
|
286
|
+
if (content.includes('mock'))
|
|
287
|
+
tags.add('mocking');
|
|
288
|
+
if (content.includes('async') || content.includes('await'))
|
|
289
|
+
tags.add('async');
|
|
290
|
+
if (content.includes('axios') || content.includes('fetch'))
|
|
291
|
+
tags.add('http');
|
|
292
|
+
return Array.from(tags);
|
|
293
|
+
}
|
|
294
|
+
function formatConfidence(confidence) {
|
|
295
|
+
const percentage = (confidence * 100).toFixed(0) + '%';
|
|
296
|
+
if (confidence >= 0.9)
|
|
297
|
+
return chalk_1.default.green(percentage);
|
|
298
|
+
if (confidence >= 0.7)
|
|
299
|
+
return chalk_1.default.cyan(percentage);
|
|
300
|
+
if (confidence >= 0.5)
|
|
301
|
+
return chalk_1.default.yellow(percentage);
|
|
302
|
+
return chalk_1.default.red(percentage);
|
|
303
|
+
}
|
|
304
|
+
//# sourceMappingURL=extract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extract.js","sourceRoot":"","sources":["../../../../src/cli/commands/patterns/extract.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Patterns Commands - Database-backed pattern management
|
|
3
|
+
*
|
|
4
|
+
* All commands query the actual patterns.db database.
|
|
5
|
+
*/
|
|
6
|
+
export { patternsList } from './list';
|
|
7
|
+
export { patternsSearch } from './search';
|
|
8
|
+
export { patternsShow } from './show';
|
|
9
|
+
export { patternsExtract } from './extract';
|
|
10
|
+
export { patternsStats } from './stats';
|
|
11
|
+
export declare function patternsCommand(subcommand: string, args: any[], options: any): Promise<void>;
|
|
12
|
+
//# sourceMappingURL=index-new.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-new.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/patterns/index-new.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAGxC,wBAAsB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAwClG"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Patterns Commands - Database-backed pattern management
|
|
4
|
+
*
|
|
5
|
+
* All commands query the actual patterns.db database.
|
|
6
|
+
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
19
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
20
|
+
}) : function(o, v) {
|
|
21
|
+
o["default"] = v;
|
|
22
|
+
});
|
|
23
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
24
|
+
var ownKeys = function(o) {
|
|
25
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
26
|
+
var ar = [];
|
|
27
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
28
|
+
return ar;
|
|
29
|
+
};
|
|
30
|
+
return ownKeys(o);
|
|
31
|
+
};
|
|
32
|
+
return function (mod) {
|
|
33
|
+
if (mod && mod.__esModule) return mod;
|
|
34
|
+
var result = {};
|
|
35
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
36
|
+
__setModuleDefault(result, mod);
|
|
37
|
+
return result;
|
|
38
|
+
};
|
|
39
|
+
})();
|
|
40
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
|
+
exports.patternsStats = exports.patternsExtract = exports.patternsShow = exports.patternsSearch = exports.patternsList = void 0;
|
|
42
|
+
exports.patternsCommand = patternsCommand;
|
|
43
|
+
var list_1 = require("./list");
|
|
44
|
+
Object.defineProperty(exports, "patternsList", { enumerable: true, get: function () { return list_1.patternsList; } });
|
|
45
|
+
var search_1 = require("./search");
|
|
46
|
+
Object.defineProperty(exports, "patternsSearch", { enumerable: true, get: function () { return search_1.patternsSearch; } });
|
|
47
|
+
var show_1 = require("./show");
|
|
48
|
+
Object.defineProperty(exports, "patternsShow", { enumerable: true, get: function () { return show_1.patternsShow; } });
|
|
49
|
+
var extract_1 = require("./extract");
|
|
50
|
+
Object.defineProperty(exports, "patternsExtract", { enumerable: true, get: function () { return extract_1.patternsExtract; } });
|
|
51
|
+
var stats_1 = require("./stats");
|
|
52
|
+
Object.defineProperty(exports, "patternsStats", { enumerable: true, get: function () { return stats_1.patternsStats; } });
|
|
53
|
+
// Main command router that uses database-backed implementations
|
|
54
|
+
async function patternsCommand(subcommand, args, options) {
|
|
55
|
+
const { patternsList } = await Promise.resolve().then(() => __importStar(require('./list')));
|
|
56
|
+
const { patternsSearch } = await Promise.resolve().then(() => __importStar(require('./search')));
|
|
57
|
+
const { patternsShow } = await Promise.resolve().then(() => __importStar(require('./show')));
|
|
58
|
+
const { patternsExtract } = await Promise.resolve().then(() => __importStar(require('./extract')));
|
|
59
|
+
const { patternsStats } = await Promise.resolve().then(() => __importStar(require('./stats')));
|
|
60
|
+
switch (subcommand) {
|
|
61
|
+
case 'list':
|
|
62
|
+
await patternsList(options);
|
|
63
|
+
break;
|
|
64
|
+
case 'search':
|
|
65
|
+
if (!args[0]) {
|
|
66
|
+
console.error('Search query required');
|
|
67
|
+
process.exit(1);
|
|
68
|
+
}
|
|
69
|
+
await patternsSearch(args[0], options);
|
|
70
|
+
break;
|
|
71
|
+
case 'show':
|
|
72
|
+
if (!args[0]) {
|
|
73
|
+
console.error('Pattern ID required');
|
|
74
|
+
process.exit(1);
|
|
75
|
+
}
|
|
76
|
+
await patternsShow(args[0]);
|
|
77
|
+
break;
|
|
78
|
+
case 'extract':
|
|
79
|
+
if (!args[0]) {
|
|
80
|
+
console.error('Directory path required');
|
|
81
|
+
process.exit(1);
|
|
82
|
+
}
|
|
83
|
+
await patternsExtract(args[0], options);
|
|
84
|
+
break;
|
|
85
|
+
case 'stats':
|
|
86
|
+
await patternsStats(options);
|
|
87
|
+
break;
|
|
88
|
+
default:
|
|
89
|
+
console.error(`Unknown patterns command: ${subcommand}`);
|
|
90
|
+
showHelp();
|
|
91
|
+
process.exit(1);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
function showHelp() {
|
|
95
|
+
console.log('\nAvailable commands:');
|
|
96
|
+
console.log(' aqe patterns list - List all patterns');
|
|
97
|
+
console.log(' aqe patterns search - Search patterns');
|
|
98
|
+
console.log(' aqe patterns show - Show pattern details');
|
|
99
|
+
console.log(' aqe patterns extract - Extract from tests');
|
|
100
|
+
console.log(' aqe patterns stats - Show statistics');
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=index-new.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-new.js","sourceRoot":"","sources":["../../../../src/cli/commands/patterns/index-new.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASH,0CAwCC;AA/CD,+BAAsC;AAA7B,oGAAA,YAAY,OAAA;AACrB,mCAA0C;AAAjC,wGAAA,cAAc,OAAA;AACvB,+BAAsC;AAA7B,oGAAA,YAAY,OAAA;AACrB,qCAA4C;AAAnC,0GAAA,eAAe,OAAA;AACxB,iCAAwC;AAA/B,sGAAA,aAAa,OAAA;AAEtB,gEAAgE;AACzD,KAAK,UAAU,eAAe,CAAC,UAAkB,EAAE,IAAW,EAAE,OAAY;IACjF,MAAM,EAAE,YAAY,EAAE,GAAG,wDAAa,QAAQ,GAAC,CAAC;IAChD,MAAM,EAAE,cAAc,EAAE,GAAG,wDAAa,UAAU,GAAC,CAAC;IACpD,MAAM,EAAE,YAAY,EAAE,GAAG,wDAAa,QAAQ,GAAC,CAAC;IAChD,MAAM,EAAE,eAAe,EAAE,GAAG,wDAAa,WAAW,GAAC,CAAC;IACtD,MAAM,EAAE,aAAa,EAAE,GAAG,wDAAa,SAAS,GAAC,CAAC;IAElD,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,MAAM;YACT,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;YAC5B,MAAM;QACR,KAAK,QAAQ;YACX,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;gBACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACvC,MAAM;QACR,KAAK,MAAM;YACT,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;gBACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5B,MAAM;QACR,KAAK,SAAS;YACZ,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;gBACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACxC,MAAM;QACR,KAAK,OAAO;YACV,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;YAC7B,MAAM;QACR;YACE,OAAO,CAAC,KAAK,CAAC,6BAA6B,UAAU,EAAE,CAAC,CAAC;YACzD,QAAQ,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACH,CAAC;AAED,SAAS,QAAQ;IACf,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;AAC5D,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Patterns List Command - Query database for test patterns
|
|
3
|
+
*
|
|
4
|
+
* Queries the actual patterns table in the database (not in-memory).
|
|
5
|
+
*/
|
|
6
|
+
export interface PatternListOptions {
|
|
7
|
+
framework?: string;
|
|
8
|
+
category?: string;
|
|
9
|
+
limit?: number;
|
|
10
|
+
format?: 'table' | 'json';
|
|
11
|
+
minConfidence?: number;
|
|
12
|
+
}
|
|
13
|
+
export declare function patternsList(options?: PatternListOptions): Promise<void>;
|
|
14
|
+
//# sourceMappingURL=list.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/patterns/list.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAsB,YAAY,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiHlF"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Patterns List Command - Query database for test patterns
|
|
4
|
+
*
|
|
5
|
+
* Queries the actual patterns table in the database (not in-memory).
|
|
6
|
+
*/
|
|
7
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
8
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
9
|
+
};
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.patternsList = patternsList;
|
|
12
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
13
|
+
const ora_1 = __importDefault(require("ora"));
|
|
14
|
+
const cli_table3_1 = __importDefault(require("cli-table3"));
|
|
15
|
+
const Database_1 = require("../../../utils/Database");
|
|
16
|
+
async function patternsList(options = {}) {
|
|
17
|
+
const spinner = (0, ora_1.default)('Loading patterns from database...').start();
|
|
18
|
+
try {
|
|
19
|
+
const dbPath = '.agentic-qe/data/patterns.db';
|
|
20
|
+
const db = new Database_1.Database(dbPath);
|
|
21
|
+
await db.initialize();
|
|
22
|
+
// Build query with filters
|
|
23
|
+
let sql = 'SELECT * FROM patterns WHERE 1=1';
|
|
24
|
+
const params = [];
|
|
25
|
+
if (options.framework) {
|
|
26
|
+
sql += ' AND framework = ?';
|
|
27
|
+
params.push(options.framework);
|
|
28
|
+
}
|
|
29
|
+
if (options.category) {
|
|
30
|
+
sql += ' AND category = ?';
|
|
31
|
+
params.push(options.category);
|
|
32
|
+
}
|
|
33
|
+
if (options.minConfidence !== undefined) {
|
|
34
|
+
sql += ' AND confidence >= ?';
|
|
35
|
+
params.push(options.minConfidence);
|
|
36
|
+
}
|
|
37
|
+
// Sort by confidence DESC, then usage_count DESC
|
|
38
|
+
sql += ' ORDER BY confidence DESC, usage_count DESC';
|
|
39
|
+
// Apply limit
|
|
40
|
+
const limit = options.limit || 20;
|
|
41
|
+
sql += ' LIMIT ?';
|
|
42
|
+
params.push(limit);
|
|
43
|
+
const patterns = await db.all(sql, params);
|
|
44
|
+
await db.close();
|
|
45
|
+
if (patterns.length === 0) {
|
|
46
|
+
spinner.info('No patterns found in database');
|
|
47
|
+
console.log(chalk_1.default.yellow('\nš” Tips:'));
|
|
48
|
+
console.log(chalk_1.default.gray(' ⢠Run "aqe patterns extract <dir>" to discover patterns from tests'));
|
|
49
|
+
console.log(chalk_1.default.gray(' ⢠Patterns are stored in: .agentic-qe/data/patterns.db'));
|
|
50
|
+
console.log(chalk_1.default.gray(' ⢠Use --framework and --category to filter results\n'));
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
spinner.succeed(`Found ${patterns.length} patterns`);
|
|
54
|
+
if (options.format === 'json') {
|
|
55
|
+
console.log(JSON.stringify(patterns, null, 2));
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
// Display as table
|
|
59
|
+
console.log(chalk_1.default.blue(`\nš¦ Test Patterns (${patterns.length} found)\n`));
|
|
60
|
+
const table = new cli_table3_1.default({
|
|
61
|
+
head: [
|
|
62
|
+
chalk_1.default.cyan('Name'),
|
|
63
|
+
chalk_1.default.cyan('Type'),
|
|
64
|
+
chalk_1.default.cyan('Framework'),
|
|
65
|
+
chalk_1.default.cyan('Confidence'),
|
|
66
|
+
chalk_1.default.cyan('Success'),
|
|
67
|
+
chalk_1.default.cyan('Usage')
|
|
68
|
+
],
|
|
69
|
+
colWidths: [30, 12, 12, 12, 10, 8],
|
|
70
|
+
style: {
|
|
71
|
+
head: [],
|
|
72
|
+
border: ['gray']
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
patterns.forEach((p) => {
|
|
76
|
+
const confidence = formatConfidence(p.confidence);
|
|
77
|
+
const successRate = formatPercentage(p.success_rate);
|
|
78
|
+
const usage = chalk_1.default.gray(p.usage_count.toString());
|
|
79
|
+
table.push([
|
|
80
|
+
truncate(p.name, 28),
|
|
81
|
+
p.category,
|
|
82
|
+
p.framework,
|
|
83
|
+
confidence,
|
|
84
|
+
successRate,
|
|
85
|
+
usage
|
|
86
|
+
]);
|
|
87
|
+
});
|
|
88
|
+
console.log(table.toString());
|
|
89
|
+
// Summary stats
|
|
90
|
+
const avgConfidence = patterns.reduce((sum, p) => sum + p.confidence, 0) / patterns.length;
|
|
91
|
+
const avgSuccess = patterns.reduce((sum, p) => sum + p.success_rate, 0) / patterns.length;
|
|
92
|
+
const totalUsage = patterns.reduce((sum, p) => sum + p.usage_count, 0);
|
|
93
|
+
console.log(chalk_1.default.blue('\nš Summary:\n'));
|
|
94
|
+
console.log(` Avg Confidence: ${formatConfidence(avgConfidence)}`);
|
|
95
|
+
console.log(` Avg Success: ${formatPercentage(avgSuccess)}`);
|
|
96
|
+
console.log(` Total Usage: ${chalk_1.default.cyan(totalUsage.toLocaleString())}`);
|
|
97
|
+
if (patterns.length === limit) {
|
|
98
|
+
console.log(chalk_1.default.gray(`\n š” Showing top ${limit} results. Use --limit to see more.`));
|
|
99
|
+
}
|
|
100
|
+
console.log();
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
spinner.fail('Failed to load patterns');
|
|
104
|
+
console.error(chalk_1.default.red('ā Error:'), error.message);
|
|
105
|
+
console.log(chalk_1.default.gray('\nš” Make sure database exists: .agentic-qe/data/patterns.db'));
|
|
106
|
+
process.exit(1);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
// Helper functions
|
|
110
|
+
function formatConfidence(confidence) {
|
|
111
|
+
const percentage = (confidence * 100).toFixed(0) + '%';
|
|
112
|
+
if (confidence >= 0.9)
|
|
113
|
+
return chalk_1.default.green(percentage);
|
|
114
|
+
if (confidence >= 0.7)
|
|
115
|
+
return chalk_1.default.cyan(percentage);
|
|
116
|
+
if (confidence >= 0.5)
|
|
117
|
+
return chalk_1.default.yellow(percentage);
|
|
118
|
+
return chalk_1.default.red(percentage);
|
|
119
|
+
}
|
|
120
|
+
function formatPercentage(value) {
|
|
121
|
+
const percentage = (value * 100).toFixed(0) + '%';
|
|
122
|
+
if (value >= 0.9)
|
|
123
|
+
return chalk_1.default.green(percentage);
|
|
124
|
+
if (value >= 0.7)
|
|
125
|
+
return chalk_1.default.cyan(percentage);
|
|
126
|
+
return chalk_1.default.yellow(percentage);
|
|
127
|
+
}
|
|
128
|
+
function truncate(str, maxLen) {
|
|
129
|
+
if (str.length <= maxLen)
|
|
130
|
+
return str;
|
|
131
|
+
return str.substring(0, maxLen - 3) + '...';
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../src/cli/commands/patterns/list.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Patterns Search Command - Full-text search in patterns
|
|
3
|
+
*
|
|
4
|
+
* Searches pattern names, descriptions, and tags using SQL LIKE.
|
|
5
|
+
*/
|
|
6
|
+
export interface PatternSearchOptions {
|
|
7
|
+
framework?: string;
|
|
8
|
+
minConfidence?: number;
|
|
9
|
+
limit?: number;
|
|
10
|
+
format?: 'table' | 'json';
|
|
11
|
+
}
|
|
12
|
+
export declare function patternsSearch(query: string, options?: PatternSearchOptions): Promise<void>;
|
|
13
|
+
//# sourceMappingURL=search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/patterns/search.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,MAAM,WAAW,oBAAoB;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CAC3B;AAED,wBAAsB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,oBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsGrG"}
|