agentic-qe 1.7.0 → 1.8.0
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/skills/sherlock-review/SKILL.md +786 -0
- package/CHANGELOG.md +531 -0
- package/README.md +37 -21
- package/dist/agents/BaseAgent.d.ts +8 -10
- package/dist/agents/BaseAgent.d.ts.map +1 -1
- package/dist/agents/BaseAgent.js +41 -43
- package/dist/agents/BaseAgent.js.map +1 -1
- package/dist/agents/CoverageAnalyzerAgent.js +2 -2
- package/dist/agents/CoverageAnalyzerAgent.js.map +1 -1
- package/dist/agents/LearningAgent.d.ts +2 -2
- package/dist/agents/LearningAgent.d.ts.map +1 -1
- package/dist/agents/LearningAgent.js +4 -4
- package/dist/agents/LearningAgent.js.map +1 -1
- package/dist/agents/TestExecutorAgent.d.ts +9 -0
- package/dist/agents/TestExecutorAgent.d.ts.map +1 -1
- package/dist/agents/TestExecutorAgent.js +60 -0
- package/dist/agents/TestExecutorAgent.js.map +1 -1
- package/dist/agents/examples/batchAnalyze.d.ts +252 -0
- package/dist/agents/examples/batchAnalyze.d.ts.map +1 -0
- package/dist/agents/examples/batchAnalyze.js +259 -0
- package/dist/agents/examples/batchAnalyze.js.map +1 -0
- package/dist/agents/examples/batchGenerate.d.ts +153 -0
- package/dist/agents/examples/batchGenerate.d.ts.map +1 -0
- package/dist/agents/examples/batchGenerate.js +166 -0
- package/dist/agents/examples/batchGenerate.js.map +1 -0
- package/dist/agents/generateWithPII.d.ts +128 -0
- package/dist/agents/generateWithPII.d.ts.map +1 -0
- package/dist/agents/generateWithPII.js +175 -0
- package/dist/agents/generateWithPII.js.map +1 -0
- package/dist/cli/commands/init.d.ts +6 -3
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +51 -46
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/learn/index.d.ts +4 -0
- package/dist/cli/commands/learn/index.d.ts.map +1 -1
- package/dist/cli/commands/learn/index.js +57 -0
- package/dist/cli/commands/learn/index.js.map +1 -1
- package/dist/cli/index.js +14 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/core/memory/AgentDBManager.d.ts +5 -0
- package/dist/core/memory/AgentDBManager.d.ts.map +1 -1
- package/dist/core/memory/AgentDBManager.js +19 -1
- package/dist/core/memory/AgentDBManager.js.map +1 -1
- package/dist/core/memory/RealAgentDBAdapter.d.ts +8 -0
- package/dist/core/memory/RealAgentDBAdapter.d.ts.map +1 -1
- package/dist/core/memory/RealAgentDBAdapter.js +74 -17
- package/dist/core/memory/RealAgentDBAdapter.js.map +1 -1
- package/dist/core/memory/ReasoningBankAdapter.d.ts +4 -0
- package/dist/core/memory/ReasoningBankAdapter.d.ts.map +1 -1
- package/dist/core/memory/ReasoningBankAdapter.js +20 -0
- package/dist/core/memory/ReasoningBankAdapter.js.map +1 -1
- package/dist/core/memory/SwarmMemoryManager.d.ts +8 -0
- package/dist/core/memory/SwarmMemoryManager.d.ts.map +1 -1
- package/dist/core/memory/SwarmMemoryManager.js +33 -0
- package/dist/core/memory/SwarmMemoryManager.js.map +1 -1
- package/dist/learning/ImprovementLoop.js +2 -2
- package/dist/learning/ImprovementLoop.js.map +1 -1
- package/dist/learning/LearningEngine.d.ts +11 -7
- package/dist/learning/LearningEngine.d.ts.map +1 -1
- package/dist/learning/LearningEngine.js +156 -72
- package/dist/learning/LearningEngine.js.map +1 -1
- package/dist/mcp/handlers/filtered/coverage-analyzer-filtered.d.ts +83 -0
- package/dist/mcp/handlers/filtered/coverage-analyzer-filtered.d.ts.map +1 -0
- package/dist/mcp/handlers/filtered/coverage-analyzer-filtered.js +130 -0
- package/dist/mcp/handlers/filtered/coverage-analyzer-filtered.js.map +1 -0
- package/dist/mcp/handlers/filtered/flaky-detector-filtered.d.ts +58 -0
- package/dist/mcp/handlers/filtered/flaky-detector-filtered.d.ts.map +1 -0
- package/dist/mcp/handlers/filtered/flaky-detector-filtered.js +84 -0
- package/dist/mcp/handlers/filtered/flaky-detector-filtered.js.map +1 -0
- package/dist/mcp/handlers/filtered/index.d.ts +47 -0
- package/dist/mcp/handlers/filtered/index.d.ts.map +1 -0
- package/dist/mcp/handlers/filtered/index.js +63 -0
- package/dist/mcp/handlers/filtered/index.js.map +1 -0
- package/dist/mcp/handlers/filtered/performance-tester-filtered.d.ts +57 -0
- package/dist/mcp/handlers/filtered/performance-tester-filtered.d.ts.map +1 -0
- package/dist/mcp/handlers/filtered/performance-tester-filtered.js +83 -0
- package/dist/mcp/handlers/filtered/performance-tester-filtered.js.map +1 -0
- package/dist/mcp/handlers/filtered/quality-assessor-filtered.d.ts +57 -0
- package/dist/mcp/handlers/filtered/quality-assessor-filtered.d.ts.map +1 -0
- package/dist/mcp/handlers/filtered/quality-assessor-filtered.js +93 -0
- package/dist/mcp/handlers/filtered/quality-assessor-filtered.js.map +1 -0
- package/dist/mcp/handlers/filtered/security-scanner-filtered.d.ts +54 -0
- package/dist/mcp/handlers/filtered/security-scanner-filtered.d.ts.map +1 -0
- package/dist/mcp/handlers/filtered/security-scanner-filtered.js +73 -0
- package/dist/mcp/handlers/filtered/security-scanner-filtered.js.map +1 -0
- package/dist/mcp/handlers/filtered/test-executor-filtered.d.ts +61 -0
- package/dist/mcp/handlers/filtered/test-executor-filtered.d.ts.map +1 -0
- package/dist/mcp/handlers/filtered/test-executor-filtered.js +117 -0
- package/dist/mcp/handlers/filtered/test-executor-filtered.js.map +1 -0
- package/dist/mcp/handlers/phase2/Phase2Tools.js +2 -2
- package/dist/mcp/handlers/phase2/Phase2Tools.js.map +1 -1
- package/dist/mcp/tools/deprecated.d.ts +8 -8
- package/dist/scripts/backup-helper.d.ts +64 -0
- package/dist/scripts/backup-helper.d.ts.map +1 -0
- package/dist/scripts/backup-helper.js +251 -0
- package/dist/scripts/backup-helper.js.map +1 -0
- package/dist/scripts/migrate-with-backup.d.ts +15 -0
- package/dist/scripts/migrate-with-backup.d.ts.map +1 -0
- package/dist/scripts/migrate-with-backup.js +194 -0
- package/dist/scripts/migrate-with-backup.js.map +1 -0
- package/dist/security/pii-tokenization.d.ts +216 -0
- package/dist/security/pii-tokenization.d.ts.map +1 -0
- package/dist/security/pii-tokenization.js +325 -0
- package/dist/security/pii-tokenization.js.map +1 -0
- package/dist/utils/EmbeddingGenerator.d.ts +35 -0
- package/dist/utils/EmbeddingGenerator.d.ts.map +1 -0
- package/dist/utils/EmbeddingGenerator.js +72 -0
- package/dist/utils/EmbeddingGenerator.js.map +1 -0
- package/dist/utils/batch-operations.d.ts +215 -0
- package/dist/utils/batch-operations.d.ts.map +1 -0
- package/dist/utils/batch-operations.js +266 -0
- package/dist/utils/batch-operations.js.map +1 -0
- package/dist/utils/filtering.d.ts +180 -0
- package/dist/utils/filtering.d.ts.map +1 -0
- package/dist/utils/filtering.js +288 -0
- package/dist/utils/filtering.js.map +1 -0
- package/dist/utils/prompt-cache-examples.d.ts +111 -0
- package/dist/utils/prompt-cache-examples.d.ts.map +1 -0
- package/dist/utils/prompt-cache-examples.js +416 -0
- package/dist/utils/prompt-cache-examples.js.map +1 -0
- package/dist/utils/prompt-cache.d.ts +305 -0
- package/dist/utils/prompt-cache.d.ts.map +1 -0
- package/dist/utils/prompt-cache.js +448 -0
- package/dist/utils/prompt-cache.js.map +1 -0
- package/package.json +6 -3
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test Generator with PII Tokenization
|
|
3
|
+
*
|
|
4
|
+
* Integrates PIITokenizer with TestGeneratorAgent to ensure GDPR/CCPA compliance
|
|
5
|
+
* when generating tests with realistic data.
|
|
6
|
+
*
|
|
7
|
+
* @module agents/generateWithPII
|
|
8
|
+
* @compliance GDPR Article 25, CCPA Section 1798.100, PCI-DSS 3.4
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Test generation result with PII tracking
|
|
12
|
+
*/
|
|
13
|
+
export interface TestGenerationWithPIIResult {
|
|
14
|
+
/** Generated test file path */
|
|
15
|
+
testFile: string;
|
|
16
|
+
/** Final test code with original PII (for file output only) */
|
|
17
|
+
testCode: string;
|
|
18
|
+
/** Tokenized version (safe for logs/database) */
|
|
19
|
+
tokenizedCode: string;
|
|
20
|
+
/** PII statistics for audit trail */
|
|
21
|
+
piiStats: {
|
|
22
|
+
emails: number;
|
|
23
|
+
phones: number;
|
|
24
|
+
ssns: number;
|
|
25
|
+
creditCards: number;
|
|
26
|
+
names: number;
|
|
27
|
+
total: number;
|
|
28
|
+
};
|
|
29
|
+
/** Framework used */
|
|
30
|
+
framework: 'jest' | 'vitest';
|
|
31
|
+
/** Success indicator */
|
|
32
|
+
success: boolean;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Generate test code with PII tokenization for compliance
|
|
36
|
+
*
|
|
37
|
+
* **WORKFLOW:**
|
|
38
|
+
* 1. Generate test code using TestGeneratorAgent
|
|
39
|
+
* 2. Tokenize PII before logging or storing
|
|
40
|
+
* 3. Store tokenized version in database (GDPR compliant)
|
|
41
|
+
* 4. Return detokenized version for file writing (user-controlled)
|
|
42
|
+
* 5. Clear reverse map to minimize data retention
|
|
43
|
+
*
|
|
44
|
+
* @param params - Test generation parameters
|
|
45
|
+
* @returns Test generation result with PII tracking
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* ```typescript
|
|
49
|
+
* const result = await generateTestWithRealisticData({
|
|
50
|
+
* sourceFile: '/src/UserService.ts',
|
|
51
|
+
* framework: 'jest',
|
|
52
|
+
* includeRealisticData: true
|
|
53
|
+
* });
|
|
54
|
+
*
|
|
55
|
+
* // Tokenized version stored in database (GDPR compliant)
|
|
56
|
+
* await db.storeTest({
|
|
57
|
+
* sourceFile: result.testFile,
|
|
58
|
+
* testCode: result.tokenizedCode,
|
|
59
|
+
* framework: result.framework
|
|
60
|
+
* });
|
|
61
|
+
*
|
|
62
|
+
* // Original PII written to file (user-controlled)
|
|
63
|
+
* await fs.writeFile(result.testFile, result.testCode);
|
|
64
|
+
*
|
|
65
|
+
* console.log(`Generated test with ${result.piiStats.total} PII instances`);
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
68
|
+
export declare function generateTestWithRealisticData(params: {
|
|
69
|
+
sourceFile: string;
|
|
70
|
+
framework: 'jest' | 'vitest';
|
|
71
|
+
includeRealisticData?: boolean;
|
|
72
|
+
}): Promise<TestGenerationWithPIIResult>;
|
|
73
|
+
/**
|
|
74
|
+
* Batch generate tests with PII tokenization
|
|
75
|
+
*
|
|
76
|
+
* Processes multiple source files concurrently while maintaining PII compliance.
|
|
77
|
+
*
|
|
78
|
+
* @param files - Source files to generate tests for
|
|
79
|
+
* @param framework - Testing framework to use
|
|
80
|
+
* @returns Array of test generation results
|
|
81
|
+
*
|
|
82
|
+
* @example
|
|
83
|
+
* ```typescript
|
|
84
|
+
* const results = await batchGenerateTestsWithPII(
|
|
85
|
+
* ['/src/UserService.ts', '/src/PaymentService.ts'],
|
|
86
|
+
* 'jest'
|
|
87
|
+
* );
|
|
88
|
+
*
|
|
89
|
+
* // Store all tokenized versions
|
|
90
|
+
* await Promise.all(results.map(r => db.storeTest({
|
|
91
|
+
* sourceFile: r.testFile,
|
|
92
|
+
* testCode: r.tokenizedCode
|
|
93
|
+
* })));
|
|
94
|
+
*
|
|
95
|
+
* // Write original versions to files
|
|
96
|
+
* await Promise.all(results.map(r =>
|
|
97
|
+
* fs.writeFile(r.testFile, r.testCode)
|
|
98
|
+
* ));
|
|
99
|
+
*
|
|
100
|
+
* const totalPII = results.reduce((sum, r) => sum + r.piiStats.total, 0);
|
|
101
|
+
* console.log(`Total PII instances across all tests: ${totalPII}`);
|
|
102
|
+
* ```
|
|
103
|
+
*/
|
|
104
|
+
export declare function batchGenerateTestsWithPII(files: string[], framework: 'jest' | 'vitest'): Promise<TestGenerationWithPIIResult[]>;
|
|
105
|
+
/**
|
|
106
|
+
* Validate PII tokenization compliance
|
|
107
|
+
*
|
|
108
|
+
* Ensures that tokenized content contains no PII for audit purposes.
|
|
109
|
+
*
|
|
110
|
+
* @param tokenizedContent - Content to validate
|
|
111
|
+
* @returns Validation result with any detected PII
|
|
112
|
+
*
|
|
113
|
+
* @example
|
|
114
|
+
* ```typescript
|
|
115
|
+
* const { tokenized } = tokenizer.tokenize(testCode);
|
|
116
|
+
* const validation = validateNoLeakedPII(tokenized);
|
|
117
|
+
*
|
|
118
|
+
* if (!validation.compliant) {
|
|
119
|
+
* console.error('PII leak detected!', validation.leakedPII);
|
|
120
|
+
* throw new Error('GDPR compliance violation');
|
|
121
|
+
* }
|
|
122
|
+
* ```
|
|
123
|
+
*/
|
|
124
|
+
export declare function validateNoLeakedPII(tokenizedContent: string): {
|
|
125
|
+
compliant: boolean;
|
|
126
|
+
leakedPII: string[];
|
|
127
|
+
};
|
|
128
|
+
//# sourceMappingURL=generateWithPII.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateWithPII.d.ts","sourceRoot":"","sources":["../../src/agents/generateWithPII.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,+BAA+B;IAC/B,QAAQ,EAAE,MAAM,CAAC;IAEjB,+DAA+D;IAC/D,QAAQ,EAAE,MAAM,CAAC;IAEjB,iDAAiD;IACjD,aAAa,EAAE,MAAM,CAAC;IAEtB,qCAAqC;IACrC,QAAQ,EAAE;QACR,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IAEF,qBAAqB;IACrB,SAAS,EAAE,MAAM,GAAG,QAAQ,CAAC;IAE7B,wBAAwB;IACxB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAsB,6BAA6B,CAAC,MAAM,EAAE;IAC1D,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC7B,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAqDvC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAsB,yBAAyB,CAC7C,KAAK,EAAE,MAAM,EAAE,EACf,SAAS,EAAE,MAAM,GAAG,QAAQ,GAC3B,OAAO,CAAC,2BAA2B,EAAE,CAAC,CAUxC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,mBAAmB,CAAC,gBAAgB,EAAE,MAAM,GAAG;IAC7D,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB,CAgBA"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Test Generator with PII Tokenization
|
|
4
|
+
*
|
|
5
|
+
* Integrates PIITokenizer with TestGeneratorAgent to ensure GDPR/CCPA compliance
|
|
6
|
+
* when generating tests with realistic data.
|
|
7
|
+
*
|
|
8
|
+
* @module agents/generateWithPII
|
|
9
|
+
* @compliance GDPR Article 25, CCPA Section 1798.100, PCI-DSS 3.4
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.generateTestWithRealisticData = generateTestWithRealisticData;
|
|
13
|
+
exports.batchGenerateTestsWithPII = batchGenerateTestsWithPII;
|
|
14
|
+
exports.validateNoLeakedPII = validateNoLeakedPII;
|
|
15
|
+
const pii_tokenization_1 = require("../security/pii-tokenization");
|
|
16
|
+
/**
|
|
17
|
+
* Generate test code with PII tokenization for compliance
|
|
18
|
+
*
|
|
19
|
+
* **WORKFLOW:**
|
|
20
|
+
* 1. Generate test code using TestGeneratorAgent
|
|
21
|
+
* 2. Tokenize PII before logging or storing
|
|
22
|
+
* 3. Store tokenized version in database (GDPR compliant)
|
|
23
|
+
* 4. Return detokenized version for file writing (user-controlled)
|
|
24
|
+
* 5. Clear reverse map to minimize data retention
|
|
25
|
+
*
|
|
26
|
+
* @param params - Test generation parameters
|
|
27
|
+
* @returns Test generation result with PII tracking
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```typescript
|
|
31
|
+
* const result = await generateTestWithRealisticData({
|
|
32
|
+
* sourceFile: '/src/UserService.ts',
|
|
33
|
+
* framework: 'jest',
|
|
34
|
+
* includeRealisticData: true
|
|
35
|
+
* });
|
|
36
|
+
*
|
|
37
|
+
* // Tokenized version stored in database (GDPR compliant)
|
|
38
|
+
* await db.storeTest({
|
|
39
|
+
* sourceFile: result.testFile,
|
|
40
|
+
* testCode: result.tokenizedCode,
|
|
41
|
+
* framework: result.framework
|
|
42
|
+
* });
|
|
43
|
+
*
|
|
44
|
+
* // Original PII written to file (user-controlled)
|
|
45
|
+
* await fs.writeFile(result.testFile, result.testCode);
|
|
46
|
+
*
|
|
47
|
+
* console.log(`Generated test with ${result.piiStats.total} PII instances`);
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
async function generateTestWithRealisticData(params) {
|
|
51
|
+
const tokenizer = new pii_tokenization_1.PIITokenizer();
|
|
52
|
+
try {
|
|
53
|
+
// Step 1: Generate test code using TestGeneratorAgent
|
|
54
|
+
// Note: This is a simplified example - actual TestGeneratorAgent construction
|
|
55
|
+
// would require proper context, memoryStore, and eventBus setup
|
|
56
|
+
const testCode = `
|
|
57
|
+
// Generated test with realistic data
|
|
58
|
+
import { describe, it, expect } from '${params.framework}';
|
|
59
|
+
|
|
60
|
+
describe('User Service Tests', () => {
|
|
61
|
+
it('should handle user creation', () => {
|
|
62
|
+
const user = {
|
|
63
|
+
email: 'test@example.com',
|
|
64
|
+
phone: '555-1234',
|
|
65
|
+
// PII data would be here in actual generation
|
|
66
|
+
};
|
|
67
|
+
expect(user).toBeDefined();
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
`.trim();
|
|
71
|
+
// Step 2: Tokenize PII before logging or storing
|
|
72
|
+
const { tokenized, reverseMap, piiCount, piiBreakdown } = tokenizer.tokenize(testCode);
|
|
73
|
+
// Step 3: Log tokenized version (safe, GDPR compliant)
|
|
74
|
+
console.log(`[PII Tokenization] Generated test with ${piiCount} PII instances (tokenized)`);
|
|
75
|
+
console.log('[PII Breakdown]', piiBreakdown);
|
|
76
|
+
// Tokenized content is safe for logging
|
|
77
|
+
if (process.env.DEBUG_TESTS === 'true') {
|
|
78
|
+
console.log('[Tokenized Content]', tokenized.substring(0, 500));
|
|
79
|
+
}
|
|
80
|
+
// Step 4: Restore original PII for file writing
|
|
81
|
+
const finalCode = tokenizer.detokenize(tokenized, reverseMap);
|
|
82
|
+
return {
|
|
83
|
+
testFile: params.sourceFile.replace(/\.ts$/, '.test.ts'),
|
|
84
|
+
testCode: finalCode, // Original PII for file output
|
|
85
|
+
tokenizedCode: tokenized, // PII-free version for database/logs
|
|
86
|
+
piiStats: {
|
|
87
|
+
...piiBreakdown,
|
|
88
|
+
total: piiCount,
|
|
89
|
+
},
|
|
90
|
+
framework: params.framework,
|
|
91
|
+
success: true,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
finally {
|
|
95
|
+
// Step 5: CRITICAL - Clear reverse map to minimize data retention (GDPR Article 5(1)(e))
|
|
96
|
+
tokenizer.clear();
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Batch generate tests with PII tokenization
|
|
101
|
+
*
|
|
102
|
+
* Processes multiple source files concurrently while maintaining PII compliance.
|
|
103
|
+
*
|
|
104
|
+
* @param files - Source files to generate tests for
|
|
105
|
+
* @param framework - Testing framework to use
|
|
106
|
+
* @returns Array of test generation results
|
|
107
|
+
*
|
|
108
|
+
* @example
|
|
109
|
+
* ```typescript
|
|
110
|
+
* const results = await batchGenerateTestsWithPII(
|
|
111
|
+
* ['/src/UserService.ts', '/src/PaymentService.ts'],
|
|
112
|
+
* 'jest'
|
|
113
|
+
* );
|
|
114
|
+
*
|
|
115
|
+
* // Store all tokenized versions
|
|
116
|
+
* await Promise.all(results.map(r => db.storeTest({
|
|
117
|
+
* sourceFile: r.testFile,
|
|
118
|
+
* testCode: r.tokenizedCode
|
|
119
|
+
* })));
|
|
120
|
+
*
|
|
121
|
+
* // Write original versions to files
|
|
122
|
+
* await Promise.all(results.map(r =>
|
|
123
|
+
* fs.writeFile(r.testFile, r.testCode)
|
|
124
|
+
* ));
|
|
125
|
+
*
|
|
126
|
+
* const totalPII = results.reduce((sum, r) => sum + r.piiStats.total, 0);
|
|
127
|
+
* console.log(`Total PII instances across all tests: ${totalPII}`);
|
|
128
|
+
* ```
|
|
129
|
+
*/
|
|
130
|
+
async function batchGenerateTestsWithPII(files, framework) {
|
|
131
|
+
return Promise.all(files.map(sourceFile => generateTestWithRealisticData({
|
|
132
|
+
sourceFile,
|
|
133
|
+
framework,
|
|
134
|
+
includeRealisticData: true,
|
|
135
|
+
})));
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Validate PII tokenization compliance
|
|
139
|
+
*
|
|
140
|
+
* Ensures that tokenized content contains no PII for audit purposes.
|
|
141
|
+
*
|
|
142
|
+
* @param tokenizedContent - Content to validate
|
|
143
|
+
* @returns Validation result with any detected PII
|
|
144
|
+
*
|
|
145
|
+
* @example
|
|
146
|
+
* ```typescript
|
|
147
|
+
* const { tokenized } = tokenizer.tokenize(testCode);
|
|
148
|
+
* const validation = validateNoLeakedPII(tokenized);
|
|
149
|
+
*
|
|
150
|
+
* if (!validation.compliant) {
|
|
151
|
+
* console.error('PII leak detected!', validation.leakedPII);
|
|
152
|
+
* throw new Error('GDPR compliance violation');
|
|
153
|
+
* }
|
|
154
|
+
* ```
|
|
155
|
+
*/
|
|
156
|
+
function validateNoLeakedPII(tokenizedContent) {
|
|
157
|
+
const detector = new pii_tokenization_1.PIITokenizer();
|
|
158
|
+
const { piiCount, piiBreakdown } = detector.tokenize(tokenizedContent);
|
|
159
|
+
const leakedPII = [];
|
|
160
|
+
if (piiBreakdown.emails > 0)
|
|
161
|
+
leakedPII.push(`${piiBreakdown.emails} emails`);
|
|
162
|
+
if (piiBreakdown.phones > 0)
|
|
163
|
+
leakedPII.push(`${piiBreakdown.phones} phones`);
|
|
164
|
+
if (piiBreakdown.ssns > 0)
|
|
165
|
+
leakedPII.push(`${piiBreakdown.ssns} SSNs`);
|
|
166
|
+
if (piiBreakdown.creditCards > 0)
|
|
167
|
+
leakedPII.push(`${piiBreakdown.creditCards} credit cards`);
|
|
168
|
+
if (piiBreakdown.names > 0)
|
|
169
|
+
leakedPII.push(`${piiBreakdown.names} names`);
|
|
170
|
+
return {
|
|
171
|
+
compliant: piiCount === 0,
|
|
172
|
+
leakedPII,
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=generateWithPII.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateWithPII.js","sourceRoot":"","sources":["../../src/agents/generateWithPII.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ export declare class InitCommand {
|
|
|
7
7
|
private static createMissingAgents;
|
|
8
8
|
private static countAgentFiles;
|
|
9
9
|
/**
|
|
10
|
-
* Copy all
|
|
10
|
+
* Copy all 38 QE Fleet skills (filters out Claude Flow skills)
|
|
11
11
|
*/
|
|
12
12
|
private static copySkillTemplates;
|
|
13
13
|
/**
|
|
@@ -36,9 +36,12 @@ export declare class InitCommand {
|
|
|
36
36
|
private static initializeCoordination;
|
|
37
37
|
private static createClaudeMd;
|
|
38
38
|
/**
|
|
39
|
-
* Initialize
|
|
39
|
+
* Initialize AgentDB for Learning (v1.8.0 - replaces patterns.db)
|
|
40
|
+
*
|
|
41
|
+
* Consolidated learning storage for all QE agents using AgentDB.
|
|
42
|
+
* Replaces the deprecated patterns.db with vector-based learning storage.
|
|
40
43
|
*/
|
|
41
|
-
private static
|
|
44
|
+
private static initializeAgentDB;
|
|
42
45
|
/**
|
|
43
46
|
* Initialize Phase 2 Memory Database (SwarmMemoryManager)
|
|
44
47
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,WAAW,EAAe,MAAM,aAAa,CAAC;AAOvD,qBAAa,WAAW;WACT,OAAO,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,WAAW,EAAe,MAAM,aAAa,CAAC;AAOvD,qBAAa,WAAW;WACT,OAAO,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;mBA2NpC,wBAAwB;mBAwCxB,kBAAkB;mBA6HlB,iBAAiB;mBAqTjB,mBAAmB;mBAuGnB,eAAe;IAMpC;;OAEG;mBACkB,kBAAkB;IAkKvC;;OAEG;mBACkB,cAAc;IAkBnC;;OAEG;mBACkB,oBAAoB;IAoFzC;;OAEG;mBACkB,iBAAiB;mBAMjB,gBAAgB;IAyBrC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;mBA4BR,kBAAkB;IAkDvC,OAAO,CAAC,MAAM,CAAC,oBAAoB;IA0BnC,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAWnC,OAAO,CAAC,MAAM,CAAC,0BAA0B;mBAwBpB,0BAA0B;mBAoC1B,kBAAkB;mBAclB,sBAAsB;mBA6EtB,cAAc;IAyhBnC;;;;;OAKG;mBACkB,iBAAiB;IAiCtC;;OAEG;mBACkB,wBAAwB;IAsB7C;;OAEG;mBACkB,wBAAwB;IAqC7C;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;IA8GnC;;OAEG;mBACkB,yBAAyB;IA2C9C;;OAEG;mBACkB,yBAAyB;IA6F9C;;OAEG;mBACkB,2BAA2B;IAoGhD;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAwBlC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAwB7B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;CAoBrC"}
|
|
@@ -192,15 +192,10 @@ class InitCommand {
|
|
|
192
192
|
// Phase 2: Initialize memory database FIRST (required for agents)
|
|
193
193
|
spinner.text = 'Initializing memory database...';
|
|
194
194
|
await this.initializeMemoryDatabase();
|
|
195
|
-
// Phase 2: Initialize
|
|
196
|
-
if (options.enablePatterns !== false) {
|
|
197
|
-
spinner.text = 'Initializing pattern bank database...';
|
|
198
|
-
await this.initializePatternDatabase(fleetConfig);
|
|
199
|
-
}
|
|
200
|
-
// Phase 2: Initialize learning system
|
|
195
|
+
// Phase 2: Initialize AgentDB for learning (v1.8.0 - replaces patterns.db)
|
|
201
196
|
if (options.enableLearning !== false) {
|
|
202
|
-
spinner.text = 'Initializing learning system...';
|
|
203
|
-
await this.
|
|
197
|
+
spinner.text = 'Initializing AgentDB learning system...';
|
|
198
|
+
await this.initializeAgentDB(fleetConfig);
|
|
204
199
|
}
|
|
205
200
|
// Phase 2: Initialize improvement loop
|
|
206
201
|
if (options.enableImprovement !== false) {
|
|
@@ -783,11 +778,11 @@ For full capabilities, install the complete agentic-qe package.
|
|
|
783
778
|
return files.filter(f => f.endsWith('.md')).length;
|
|
784
779
|
}
|
|
785
780
|
/**
|
|
786
|
-
* Copy all
|
|
781
|
+
* Copy all 38 QE Fleet skills (filters out Claude Flow skills)
|
|
787
782
|
*/
|
|
788
783
|
static async copySkillTemplates() {
|
|
789
784
|
console.log(chalk_1.default.cyan(' 🎯 Initializing QE Fleet skills...'));
|
|
790
|
-
// Define all
|
|
785
|
+
// Define all 38 QE Fleet skills (Phase 1: 18 + Phase 2: 16 + Phase 3: 4 = 38 total)
|
|
791
786
|
const QE_FLEET_SKILLS = [
|
|
792
787
|
// Phase 1: Original Quality Practices (18 skills)
|
|
793
788
|
// Core Quality Practices (3)
|
|
@@ -833,10 +828,11 @@ For full capabilities, install the complete agentic-qe package.
|
|
|
833
828
|
// Testing Infrastructure (1)
|
|
834
829
|
'test-environment-management',
|
|
835
830
|
'test-reporting-analytics',
|
|
836
|
-
// Phase 3: Advanced Quality Engineering Skills (
|
|
837
|
-
// Strategic Testing Methodologies (
|
|
831
|
+
// Phase 3: Advanced Quality Engineering Skills (4 skills)
|
|
832
|
+
// Strategic Testing Methodologies (4)
|
|
838
833
|
'six-thinking-hats',
|
|
839
834
|
'brutal-honesty-review',
|
|
835
|
+
'sherlock-review',
|
|
840
836
|
'cicd-pipeline-qe-orchestrator'
|
|
841
837
|
];
|
|
842
838
|
// Find the agentic-qe package location
|
|
@@ -904,12 +900,12 @@ For full capabilities, install the complete agentic-qe package.
|
|
|
904
900
|
console.log(chalk_1.default.green(' ✓ All QE skills already present'));
|
|
905
901
|
}
|
|
906
902
|
console.log(chalk_1.default.cyan(` 📋 Total QE skills initialized: ${finalSkillCount}`));
|
|
907
|
-
// Verify we have exactly
|
|
908
|
-
if (finalSkillCount ===
|
|
909
|
-
console.log(chalk_1.default.green(' ✅ All
|
|
903
|
+
// Verify we have exactly 38 QE skills
|
|
904
|
+
if (finalSkillCount === 38) {
|
|
905
|
+
console.log(chalk_1.default.green(' ✅ All 38 QE Fleet skills successfully initialized'));
|
|
910
906
|
}
|
|
911
|
-
else if (finalSkillCount <
|
|
912
|
-
console.warn(chalk_1.default.yellow(` ⚠️ Expected
|
|
907
|
+
else if (finalSkillCount < 38) {
|
|
908
|
+
console.warn(chalk_1.default.yellow(` ⚠️ Expected 38 QE skills, found ${finalSkillCount}`));
|
|
913
909
|
// Check missing skills asynchronously
|
|
914
910
|
const missingSkills = [];
|
|
915
911
|
for (const skill of QE_FLEET_SKILLS) {
|
|
@@ -1595,7 +1591,7 @@ echo "[AQE] Post-execution coordination complete"
|
|
|
1595
1591
|
|
|
1596
1592
|
## 🎯 Claude Code Skills Integration
|
|
1597
1593
|
|
|
1598
|
-
This fleet includes **
|
|
1594
|
+
This fleet includes **38 specialized QE skills** that agents can use:
|
|
1599
1595
|
|
|
1600
1596
|
### Phase 1: Original Quality Engineering Skills (18 skills)
|
|
1601
1597
|
|
|
@@ -1651,6 +1647,14 @@ echo "[AQE] Post-execution coordination complete"
|
|
|
1651
1647
|
- **test-environment-management**: Manage test environments, infrastructure as code, and environment provisioning
|
|
1652
1648
|
- **test-reporting-analytics**: Comprehensive test reporting with metrics, trends, and actionable insights
|
|
1653
1649
|
|
|
1650
|
+
### Phase 3: Advanced Quality Engineering Skills (4 skills)
|
|
1651
|
+
|
|
1652
|
+
#### Strategic Testing Methodologies (4 skills)
|
|
1653
|
+
- **six-thinking-hats**: Apply De Bono's Six Thinking Hats methodology to quality engineering for comprehensive analysis from multiple perspectives
|
|
1654
|
+
- **brutal-honesty-review**: Unvarnished technical criticism combining Linus Torvalds' precision, Gordon Ramsay's standards, and James Bach's BS-detection
|
|
1655
|
+
- **sherlock-review**: Evidence-based investigative code review using deductive reasoning to determine what actually happened versus what was claimed
|
|
1656
|
+
- **cicd-pipeline-qe-orchestrator**: Orchestrate comprehensive quality engineering across CI/CD pipeline phases with intelligent agent coordination
|
|
1657
|
+
|
|
1654
1658
|
### Using Skills
|
|
1655
1659
|
|
|
1656
1660
|
#### Via CLI
|
|
@@ -1728,7 +1732,7 @@ echo "[AQE] Post-execution coordination complete"
|
|
|
1728
1732
|
|
|
1729
1733
|
- **Agent Definitions**: \\\`.claude/agents/\\\` - ${agentCount} specialized QE agents (18 main + 8 TDD subagents)
|
|
1730
1734
|
- **Subagent Definitions**: \\\`.claude/agents/subagents/\\\` - 8 specialized TDD subagents for test generation workflow
|
|
1731
|
-
- **Skills**: \\\`.claude/skills/\\\` -
|
|
1735
|
+
- **Skills**: \\\`.claude/skills/\\\` - 38 specialized QE skills for agents (Phase 1: 18 + Phase 2: 16 + Phase 3: 4)
|
|
1732
1736
|
- **Fleet Config**: \\\`.agentic-qe/config/fleet.json\\\`
|
|
1733
1737
|
- **Routing Config**: \\\`.agentic-qe/config/routing.json\\\` (Multi-Model Router settings)
|
|
1734
1738
|
- **AQE Hooks Config**: \\\`.agentic-qe/config/aqe-hooks.json\\\` (zero dependencies, 100-500x faster)
|
|
@@ -1816,35 +1820,36 @@ echo "[AQE] Post-execution coordination complete"
|
|
|
1816
1820
|
// Phase 2 Initialization Methods (v1.1.0)
|
|
1817
1821
|
// ============================================================================
|
|
1818
1822
|
/**
|
|
1819
|
-
* Initialize
|
|
1823
|
+
* Initialize AgentDB for Learning (v1.8.0 - replaces patterns.db)
|
|
1824
|
+
*
|
|
1825
|
+
* Consolidated learning storage for all QE agents using AgentDB.
|
|
1826
|
+
* Replaces the deprecated patterns.db with vector-based learning storage.
|
|
1820
1827
|
*/
|
|
1821
|
-
static async
|
|
1822
|
-
const
|
|
1823
|
-
|
|
1824
|
-
|
|
1825
|
-
const
|
|
1826
|
-
//
|
|
1827
|
-
|
|
1828
|
-
|
|
1829
|
-
|
|
1830
|
-
|
|
1831
|
-
|
|
1832
|
-
|
|
1833
|
-
|
|
1834
|
-
|
|
1835
|
-
|
|
1836
|
-
|
|
1837
|
-
|
|
1838
|
-
|
|
1839
|
-
|
|
1840
|
-
// Execute schema
|
|
1841
|
-
db.exec(schema);
|
|
1842
|
-
db.close();
|
|
1843
|
-
console.log(chalk_1.default.green(' ✓ Pattern Bank initialized'));
|
|
1828
|
+
static async initializeAgentDB(config) {
|
|
1829
|
+
const dbPath = path.join(process.cwd(), '.agentic-qe', 'agentdb.db');
|
|
1830
|
+
console.log(chalk_1.default.cyan(' 🧠 Initializing AgentDB learning system...'));
|
|
1831
|
+
// Import AgentDB dynamically
|
|
1832
|
+
const { createAgentDBManager } = await Promise.resolve().then(() => __importStar(require('../../core/memory/AgentDBManager')));
|
|
1833
|
+
// Initialize AgentDB with learning configuration
|
|
1834
|
+
const agentDB = await createAgentDBManager({
|
|
1835
|
+
dbPath,
|
|
1836
|
+
enableLearning: true,
|
|
1837
|
+
enableReasoning: true,
|
|
1838
|
+
cacheSize: 1000,
|
|
1839
|
+
quantizationType: 'scalar'
|
|
1840
|
+
});
|
|
1841
|
+
// CRITICAL: Must initialize before calling getStats()
|
|
1842
|
+
await agentDB.initialize();
|
|
1843
|
+
// Verify initialization
|
|
1844
|
+
const stats = await agentDB.getStats();
|
|
1845
|
+
await agentDB.close();
|
|
1846
|
+
console.log(chalk_1.default.green(' ✓ AgentDB learning system initialized'));
|
|
1844
1847
|
console.log(chalk_1.default.gray(` • Database: ${dbPath}`));
|
|
1845
|
-
console.log(chalk_1.default.gray(` •
|
|
1846
|
-
console.log(chalk_1.default.gray(` •
|
|
1847
|
-
console.log(chalk_1.default.gray(` •
|
|
1848
|
+
console.log(chalk_1.default.gray(` • Episodes stored: ${stats.episodeCount || 0}`));
|
|
1849
|
+
console.log(chalk_1.default.gray(` • Vector search: HNSW enabled (150x faster)`));
|
|
1850
|
+
console.log(chalk_1.default.gray(` • Learning: Reflexion pattern + Q-values`));
|
|
1851
|
+
console.log(chalk_1.default.gray(` • Used by: All 19 QE agents`));
|
|
1852
|
+
console.log(chalk_1.default.yellow(` ⓘ patterns.db deprecated - using AgentDB for all learning`));
|
|
1848
1853
|
}
|
|
1849
1854
|
/**
|
|
1850
1855
|
* Initialize Phase 2 Memory Database (SwarmMemoryManager)
|