agentic-qe 1.8.1 → 1.8.3
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/qe-test-generator.md +580 -0
- package/.claude/agents/subagents/qe-code-reviewer.md +86 -0
- package/.claude/agents/subagents/qe-coverage-gap-analyzer.md +485 -0
- package/.claude/agents/subagents/qe-data-generator.md +86 -0
- package/.claude/agents/subagents/qe-flaky-investigator.md +416 -0
- package/.claude/agents/subagents/qe-integration-tester.md +87 -0
- package/.claude/agents/subagents/qe-performance-validator.md +98 -0
- package/.claude/agents/subagents/qe-security-auditor.md +86 -0
- package/.claude/agents/subagents/qe-test-data-architect-sub.md +553 -0
- package/.claude/agents/subagents/qe-test-implementer.md +229 -15
- package/.claude/agents/subagents/qe-test-refactorer.md +265 -15
- package/.claude/agents/subagents/qe-test-writer.md +180 -20
- package/CHANGELOG.md +182 -0
- package/README.md +52 -35
- package/dist/core/hooks/validators/TDDPhaseValidator.d.ts +110 -0
- package/dist/core/hooks/validators/TDDPhaseValidator.d.ts.map +1 -0
- package/dist/core/hooks/validators/TDDPhaseValidator.js +287 -0
- package/dist/core/hooks/validators/TDDPhaseValidator.js.map +1 -0
- package/dist/core/hooks/validators/index.d.ts +3 -1
- package/dist/core/hooks/validators/index.d.ts.map +1 -1
- package/dist/core/hooks/validators/index.js +4 -2
- package/dist/core/hooks/validators/index.js.map +1 -1
- package/dist/core/memory/RealAgentDBAdapter.d.ts +77 -2
- package/dist/core/memory/RealAgentDBAdapter.d.ts.map +1 -1
- package/dist/core/memory/RealAgentDBAdapter.js +259 -3
- package/dist/core/memory/RealAgentDBAdapter.js.map +1 -1
- package/package.json +1 -1
|
@@ -402,37 +402,197 @@ describe('Pagination - Boundary Tests', () => {
|
|
|
402
402
|
});
|
|
403
403
|
```
|
|
404
404
|
|
|
405
|
+
## TDD Coordination Protocol
|
|
406
|
+
|
|
407
|
+
### Cycle-Based Memory Namespace
|
|
408
|
+
|
|
409
|
+
All TDD subagents share context through a cycle-specific namespace:
|
|
410
|
+
|
|
411
|
+
```
|
|
412
|
+
aqe/tdd/cycle-{cycleId}/
|
|
413
|
+
├── context # Shared workflow context (created by parent)
|
|
414
|
+
├── red/
|
|
415
|
+
│ ├── tests # Test file content from RED phase
|
|
416
|
+
│ └── validation # RED phase validation results
|
|
417
|
+
├── green/
|
|
418
|
+
│ ├── impl # Implementation from GREEN phase
|
|
419
|
+
│ └── validation # GREEN phase validation results
|
|
420
|
+
└── refactor/
|
|
421
|
+
├── result # Final refactored code
|
|
422
|
+
└── validation # REFACTOR phase validation results
|
|
423
|
+
```
|
|
424
|
+
|
|
425
|
+
### Input Protocol (from Parent qe-test-generator)
|
|
426
|
+
|
|
427
|
+
**Required Input Structure:**
|
|
428
|
+
```typescript
|
|
429
|
+
interface TDDCycleContext {
|
|
430
|
+
cycleId: string; // Unique identifier for this TDD cycle
|
|
431
|
+
module: {
|
|
432
|
+
path: string; // e.g., 'src/services/user-authentication.ts'
|
|
433
|
+
name: string; // e.g., 'UserAuthenticationService'
|
|
434
|
+
};
|
|
435
|
+
requirements: {
|
|
436
|
+
functionality: string; // What should be implemented
|
|
437
|
+
acceptanceCriteria: string[]; // Success conditions
|
|
438
|
+
edgeCases: string[]; // Edge cases to cover
|
|
439
|
+
};
|
|
440
|
+
constraints: {
|
|
441
|
+
framework: 'jest' | 'mocha' | 'vitest' | 'playwright';
|
|
442
|
+
coverageTarget: number; // e.g., 0.95
|
|
443
|
+
testTypes: ('unit' | 'integration' | 'e2e')[];
|
|
444
|
+
};
|
|
445
|
+
testFilePath: string; // Where test file will be created
|
|
446
|
+
implFilePath: string; // Where implementation will be created
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
// Parent stores this before invoking test-writer
|
|
450
|
+
await this.memoryStore.store(`aqe/tdd/cycle-${cycleId}/context`, context, {
|
|
451
|
+
partition: 'coordination',
|
|
452
|
+
ttl: 86400
|
|
453
|
+
});
|
|
454
|
+
```
|
|
455
|
+
|
|
456
|
+
### Output Protocol (for qe-test-implementer)
|
|
457
|
+
|
|
458
|
+
**Required Output Structure:**
|
|
459
|
+
```typescript
|
|
460
|
+
interface REDPhaseOutput {
|
|
461
|
+
cycleId: string; // Must match input cycleId
|
|
462
|
+
phase: 'RED';
|
|
463
|
+
timestamp: number;
|
|
464
|
+
testFile: {
|
|
465
|
+
path: string; // Absolute path to test file
|
|
466
|
+
content: string; // Full test file content
|
|
467
|
+
hash: string; // SHA256 hash for validation
|
|
468
|
+
};
|
|
469
|
+
tests: Array<{
|
|
470
|
+
name: string; // Test description
|
|
471
|
+
type: 'unit' | 'integration' | 'e2e';
|
|
472
|
+
assertion: string; // What it asserts
|
|
473
|
+
givenWhenThen: {
|
|
474
|
+
given: string;
|
|
475
|
+
when: string;
|
|
476
|
+
then: string;
|
|
477
|
+
};
|
|
478
|
+
}>;
|
|
479
|
+
validation: {
|
|
480
|
+
allTestsFailing: boolean; // MUST be true
|
|
481
|
+
failureCount: number;
|
|
482
|
+
errorMessages: string[]; // Actual error messages from run
|
|
483
|
+
};
|
|
484
|
+
nextPhase: 'GREEN';
|
|
485
|
+
readyForHandoff: boolean; // MUST be true to proceed
|
|
486
|
+
}
|
|
487
|
+
|
|
488
|
+
// Store RED phase output
|
|
489
|
+
await this.memoryStore.store(`aqe/tdd/cycle-${cycleId}/red/tests`, output, {
|
|
490
|
+
partition: 'coordination',
|
|
491
|
+
ttl: 86400
|
|
492
|
+
});
|
|
493
|
+
```
|
|
494
|
+
|
|
495
|
+
### Handoff Validation
|
|
496
|
+
|
|
497
|
+
Before emitting completion, validate handoff readiness:
|
|
498
|
+
|
|
499
|
+
```typescript
|
|
500
|
+
async function validateREDHandoff(output: REDPhaseOutput): Promise<boolean> {
|
|
501
|
+
const errors: string[] = [];
|
|
502
|
+
|
|
503
|
+
// 1. Verify test file exists and matches content
|
|
504
|
+
if (!existsSync(output.testFile.path)) {
|
|
505
|
+
errors.push(`Test file not found: ${output.testFile.path}`);
|
|
506
|
+
} else {
|
|
507
|
+
const actualContent = readFileSync(output.testFile.path, 'utf-8');
|
|
508
|
+
const actualHash = createHash('sha256').update(actualContent).digest('hex');
|
|
509
|
+
if (actualHash !== output.testFile.hash) {
|
|
510
|
+
errors.push(`Test file content mismatch: hash differs`);
|
|
511
|
+
}
|
|
512
|
+
}
|
|
513
|
+
|
|
514
|
+
// 2. Verify all tests are failing
|
|
515
|
+
if (!output.validation.allTestsFailing) {
|
|
516
|
+
errors.push('RED phase violation: some tests are passing');
|
|
517
|
+
}
|
|
518
|
+
|
|
519
|
+
// 3. Verify tests cover requirements
|
|
520
|
+
if (output.tests.length === 0) {
|
|
521
|
+
errors.push('No tests generated');
|
|
522
|
+
}
|
|
523
|
+
|
|
524
|
+
// 4. Set handoff readiness
|
|
525
|
+
output.readyForHandoff = errors.length === 0;
|
|
526
|
+
|
|
527
|
+
if (errors.length > 0) {
|
|
528
|
+
console.error('RED phase handoff validation failed:', errors);
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
return output.readyForHandoff;
|
|
532
|
+
}
|
|
533
|
+
```
|
|
534
|
+
|
|
405
535
|
## Integration with Parent Agents
|
|
406
536
|
|
|
407
537
|
### Memory Coordination
|
|
408
538
|
|
|
409
539
|
**Input from Parent** (Read):
|
|
410
540
|
```typescript
|
|
411
|
-
//
|
|
412
|
-
await this.memoryStore.
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
541
|
+
// Retrieve cycle context created by parent
|
|
542
|
+
const context = await this.memoryStore.retrieve(`aqe/tdd/cycle-${cycleId}/context`, {
|
|
543
|
+
partition: 'coordination'
|
|
544
|
+
});
|
|
545
|
+
|
|
546
|
+
// Validate required fields
|
|
547
|
+
if (!context.cycleId || !context.module.path || !context.testFilePath) {
|
|
548
|
+
throw new Error('Invalid TDD cycle context: missing required fields');
|
|
549
|
+
}
|
|
417
550
|
```
|
|
418
551
|
|
|
419
|
-
**Output to
|
|
552
|
+
**Output to GREEN Phase** (Write):
|
|
420
553
|
```typescript
|
|
421
|
-
//
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
554
|
+
// Store complete RED phase output with file references
|
|
555
|
+
const redOutput: REDPhaseOutput = {
|
|
556
|
+
cycleId: context.cycleId,
|
|
557
|
+
phase: 'RED',
|
|
558
|
+
timestamp: Date.now(),
|
|
559
|
+
testFile: {
|
|
560
|
+
path: context.testFilePath,
|
|
561
|
+
content: generatedTestContent,
|
|
562
|
+
hash: createHash('sha256').update(generatedTestContent).digest('hex')
|
|
563
|
+
},
|
|
564
|
+
tests: testCases.map(tc => ({
|
|
565
|
+
name: tc.name,
|
|
566
|
+
type: tc.type,
|
|
567
|
+
assertion: tc.assertion,
|
|
568
|
+
givenWhenThen: tc.givenWhenThen
|
|
569
|
+
})),
|
|
570
|
+
validation: {
|
|
571
|
+
allTestsFailing: true,
|
|
572
|
+
failureCount: testCases.length,
|
|
573
|
+
errorMessages: testRunErrors
|
|
574
|
+
},
|
|
575
|
+
nextPhase: 'GREEN',
|
|
576
|
+
readyForHandoff: true
|
|
577
|
+
};
|
|
578
|
+
|
|
579
|
+
// Validate before storing
|
|
580
|
+
await validateREDHandoff(redOutput);
|
|
581
|
+
|
|
582
|
+
// Store for GREEN phase
|
|
583
|
+
await this.memoryStore.store(`aqe/tdd/cycle-${cycleId}/red/tests`, redOutput, {
|
|
584
|
+
partition: 'coordination',
|
|
585
|
+
ttl: 86400
|
|
586
|
+
});
|
|
587
|
+
|
|
588
|
+
// Emit completion event with cycle reference
|
|
432
589
|
this.eventBus.emit('test-writer:completed', {
|
|
433
590
|
agentId: this.agentId,
|
|
434
|
-
|
|
435
|
-
|
|
591
|
+
cycleId: context.cycleId,
|
|
592
|
+
testsGenerated: testCases.length,
|
|
593
|
+
testFilePath: context.testFilePath,
|
|
594
|
+
nextPhase: 'GREEN',
|
|
595
|
+
readyForHandoff: redOutput.readyForHandoff
|
|
436
596
|
});
|
|
437
597
|
```
|
|
438
598
|
|
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,188 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [1.8.3] - 2025-01-19
|
|
11
|
+
|
|
12
|
+
### 🔄 Phase 4: Subagent Workflows for TDD
|
|
13
|
+
|
|
14
|
+
This release implements comprehensive TDD subagent coordination, solving the disconnected tests/code/refactor issue where RED-GREEN-REFACTOR cycle agents were producing inconsistent outputs.
|
|
15
|
+
|
|
16
|
+
**References**:
|
|
17
|
+
- [Issue #43 - Phase 4: Implement Subagent Workflows for TDD](https://github.com/proffesor-for-testing/agentic-qe/issues/43)
|
|
18
|
+
|
|
19
|
+
### Added
|
|
20
|
+
|
|
21
|
+
#### 🧪 TDD Coordination Protocol
|
|
22
|
+
- **Memory-based coordination** using `aqe/tdd/cycle-{cycleId}/*` namespace
|
|
23
|
+
- **File hash validation** - SHA256 ensures test file integrity across RED→GREEN→REFACTOR phases
|
|
24
|
+
- **Handoff gates** - `readyForHandoff` boolean prevents premature phase transitions
|
|
25
|
+
- **Phase output interfaces** - Typed contracts for RED, GREEN, REFACTOR outputs
|
|
26
|
+
|
|
27
|
+
#### 📦 New Subagents (3)
|
|
28
|
+
- **qe-flaky-investigator** - Detects flaky tests, analyzes root causes, suggests stabilization
|
|
29
|
+
- **qe-coverage-gap-analyzer** - Identifies coverage gaps, risk-scores untested code
|
|
30
|
+
- **qe-test-data-architect-sub** - High-volume test data generation with relationship preservation
|
|
31
|
+
|
|
32
|
+
#### 🔧 Runtime Enforcement
|
|
33
|
+
- **TDDPhaseValidator** class at `src/core/hooks/validators/TDDPhaseValidator.ts`
|
|
34
|
+
- Validates memory keys exist before phase transitions
|
|
35
|
+
- Enforces output schema compliance
|
|
36
|
+
- Checks file hash integrity across phases
|
|
37
|
+
- Methods: `validateREDPhase()`, `validateGREENPhase()`, `validateREFACTORPhase()`, `validateCompleteCycle()`
|
|
38
|
+
|
|
39
|
+
#### ✅ Integration Tests
|
|
40
|
+
- **27 test cases** at `tests/integration/tdd-coordination.test.ts`
|
|
41
|
+
- RED phase validation (passing tests rejection, memory key missing, handoff readiness)
|
|
42
|
+
- GREEN phase validation (hash changes from RED, tests not passing)
|
|
43
|
+
- REFACTOR phase validation (hash integrity, coverage regression warnings)
|
|
44
|
+
- Complete cycle validation
|
|
45
|
+
|
|
46
|
+
#### 📚 Documentation
|
|
47
|
+
- **Coordination guide** at `docs/subagents/coordination-guide.md`
|
|
48
|
+
- Memory namespace conventions
|
|
49
|
+
- Spawning patterns with Task tool
|
|
50
|
+
- TDD workflow examples with ASCII diagrams
|
|
51
|
+
- Error handling and best practices
|
|
52
|
+
|
|
53
|
+
### Changed
|
|
54
|
+
|
|
55
|
+
#### 🔄 Updated Subagents (8)
|
|
56
|
+
All existing subagents now include coordination protocol:
|
|
57
|
+
- `qe-test-writer` - RED phase output with cycle context
|
|
58
|
+
- `qe-test-implementer` - GREEN phase with hash validation
|
|
59
|
+
- `qe-test-refactorer` - REFACTOR with full cycle validation
|
|
60
|
+
- `qe-code-reviewer` - Quality workflow coordination
|
|
61
|
+
- `qe-integration-tester` - Integration workflow coordination
|
|
62
|
+
- `qe-performance-validator` - Performance workflow coordination
|
|
63
|
+
- `qe-security-auditor` - Security workflow coordination
|
|
64
|
+
- `qe-data-generator` - Test data workflow coordination
|
|
65
|
+
|
|
66
|
+
#### 📊 Updated Counts
|
|
67
|
+
- Subagents: 8 → 11 (added 3 specialized subagents)
|
|
68
|
+
- Example orchestrator now uses real MCP patterns instead of simulation
|
|
69
|
+
|
|
70
|
+
### Files Created
|
|
71
|
+
- `src/core/hooks/validators/TDDPhaseValidator.ts`
|
|
72
|
+
- `tests/integration/tdd-coordination.test.ts`
|
|
73
|
+
- `docs/subagents/coordination-guide.md`
|
|
74
|
+
- `.claude/agents/subagents/qe-flaky-investigator.md`
|
|
75
|
+
- `.claude/agents/subagents/qe-coverage-gap-analyzer.md`
|
|
76
|
+
- `.claude/agents/subagents/qe-test-data-architect-sub.md`
|
|
77
|
+
|
|
78
|
+
### Files Modified
|
|
79
|
+
- `.claude/agents/subagents/*.md` (8 files - coordination protocol)
|
|
80
|
+
- `.claude/agents/qe-test-generator.md` (orchestration example)
|
|
81
|
+
- `examples/tdd-workflow-orchestration.ts` (real MCP patterns)
|
|
82
|
+
- `README.md` (updated counts)
|
|
83
|
+
|
|
84
|
+
## [1.8.2] - 2025-01-18
|
|
85
|
+
|
|
86
|
+
### 🔧 Database Schema Enhancement
|
|
87
|
+
|
|
88
|
+
This release improves database initialization to create all required tables for the QE learning system, including ReasoningBank integration for advanced pattern matching.
|
|
89
|
+
|
|
90
|
+
**Issue**: [#TBD - AgentDB table initialization enhancement](https://github.com/proffesor-for-testing/agentic-qe-cf/issues/TBD)
|
|
91
|
+
|
|
92
|
+
### Fixed
|
|
93
|
+
|
|
94
|
+
#### 🐛 Enhanced: Complete QE Learning Tables on Fresh Init
|
|
95
|
+
- **Background**: QE schema and ReasoningBank were defined but not fully initialized during `aqe init`
|
|
96
|
+
- `RealAgentDBAdapter.initialize()` only created base `patterns` table
|
|
97
|
+
- QE-specific tables (`test_patterns`, `pattern_usage`, etc.) were defined in `getPatternBankSchema()` but never called
|
|
98
|
+
- ReasoningBank controller was never initialized
|
|
99
|
+
- Users running `aqe init` in v1.8.0-1.8.1 only got 1/10 tables
|
|
100
|
+
|
|
101
|
+
- **Impact**:
|
|
102
|
+
- ❌ Pattern storage broken (no `test_patterns` table)
|
|
103
|
+
- ❌ Quality metrics unavailable (no `pattern_usage` table)
|
|
104
|
+
- ❌ Cross-framework sharing disabled (no `cross_project_mappings` table)
|
|
105
|
+
- ❌ Pattern similarity broken (no `pattern_similarity_index` table)
|
|
106
|
+
- ❌ Full-text search missing (no `pattern_fts` table)
|
|
107
|
+
- ❌ Schema versioning absent (no `schema_version` table)
|
|
108
|
+
- ❌ Reasoning patterns unavailable (no `reasoning_patterns` table)
|
|
109
|
+
- ❌ Pattern embeddings missing (no `pattern_embeddings` table)
|
|
110
|
+
|
|
111
|
+
- **Solution**: Added proper table creation in `RealAgentDBAdapter`
|
|
112
|
+
- Created `createQELearningTables()` coordinator method
|
|
113
|
+
- Implemented 6 dedicated table creation methods with full documentation
|
|
114
|
+
- Added FTS5 graceful fallback for sql.js WASM (no FTS5 support)
|
|
115
|
+
- Initialized ReasoningBank controller (creates 2 additional tables)
|
|
116
|
+
- All tables now created during `initialize()` before HNSW indexing
|
|
117
|
+
- **Files Modified**:
|
|
118
|
+
- `src/core/memory/RealAgentDBAdapter.ts` (lines 9, 15-16, 29-81, 607-638)
|
|
119
|
+
|
|
120
|
+
- **Tables Now Created** (10 total, 9x improvement):
|
|
121
|
+
1. ✅ `patterns` - Base AgentDB vector embeddings (existing)
|
|
122
|
+
2. ✅ `test_patterns` - Core QE test pattern storage with deduplication
|
|
123
|
+
3. ✅ `pattern_usage` - Pattern quality metrics per project
|
|
124
|
+
4. ✅ `cross_project_mappings` - Framework translation rules (Jest↔Vitest, etc.)
|
|
125
|
+
5. ✅ `pattern_similarity_index` - Pre-computed similarity scores
|
|
126
|
+
6. ✅ `pattern_fts` - Full-text search (FTS5 or indexed fallback)
|
|
127
|
+
7. ✅ `schema_version` - Migration tracking (v1.1.0)
|
|
128
|
+
8. ✅ `reasoning_patterns` - ReasoningBank pattern storage
|
|
129
|
+
9. ✅ `pattern_embeddings` - ReasoningBank vector embeddings
|
|
130
|
+
10. ✅ `sqlite_sequence` - Auto-increment tracking (system table)
|
|
131
|
+
|
|
132
|
+
### Added
|
|
133
|
+
|
|
134
|
+
#### 🔄 Migration Script for Existing Users
|
|
135
|
+
- **Migration Tool**: `scripts/migrate-add-qe-tables.ts`
|
|
136
|
+
- Safely adds 8 missing tables to existing `agentdb.db` (6 QE + 2 ReasoningBank)
|
|
137
|
+
- Preserves all existing data (episodes, patterns)
|
|
138
|
+
- Creates automatic backup before migration
|
|
139
|
+
- Verifies data integrity after migration
|
|
140
|
+
- **Usage**: `npx tsx scripts/migrate-add-qe-tables.ts`
|
|
141
|
+
|
|
142
|
+
#### 🧠 ReasoningBank Integration
|
|
143
|
+
- **Controller**: Initialized `ReasoningBank` from agentdb package
|
|
144
|
+
- Creates `reasoning_patterns` table for task-type-based pattern storage
|
|
145
|
+
- Creates `pattern_embeddings` table for semantic similarity search
|
|
146
|
+
- Uses local embedding service (`Xenova/all-MiniLM-L6-v2`, 384 dimensions)
|
|
147
|
+
- Enables advanced pattern matching and retrieval
|
|
148
|
+
- **API**: `getReasoningBank()` method for direct access
|
|
149
|
+
|
|
150
|
+
### Changed
|
|
151
|
+
|
|
152
|
+
- **Security**: Table creation bypasses runtime SQL validation (correct for DDL)
|
|
153
|
+
- **Initialization**: QE tables + ReasoningBank created during adapter initialization, not via `query()` API
|
|
154
|
+
- **Error Handling**: FTS5 unavailable in sql.js WASM falls back to indexed table
|
|
155
|
+
- **Dependencies**: Added `EmbeddingService` initialization for ReasoningBank support
|
|
156
|
+
|
|
157
|
+
### Migration Guide for v1.8.0-1.8.1 Users
|
|
158
|
+
|
|
159
|
+
If you initialized a project with v1.8.0 or v1.8.1, your `agentdb.db` is missing 8 tables (6 QE + 2 ReasoningBank).
|
|
160
|
+
|
|
161
|
+
**Option 1: Run Migration Script** (Preserves Data ✅)
|
|
162
|
+
```bash
|
|
163
|
+
npm install agentic-qe@1.8.2
|
|
164
|
+
npx tsx node_modules/agentic-qe/scripts/migrate-add-qe-tables.ts
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
**Option 2: Re-initialize** (Loses Data ❌)
|
|
168
|
+
```bash
|
|
169
|
+
mv .agentic-qe/agentdb.db .agentic-qe/agentdb.backup.db
|
|
170
|
+
npm install agentic-qe@1.8.2
|
|
171
|
+
aqe init
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
**Verification**:
|
|
175
|
+
```bash
|
|
176
|
+
sqlite3 .agentic-qe/agentdb.db ".tables"
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
You should see all 10 tables:
|
|
180
|
+
- `patterns`, `test_patterns`, `pattern_usage`, `cross_project_mappings`
|
|
181
|
+
- `pattern_similarity_index`, `pattern_fts`, `schema_version`
|
|
182
|
+
- `reasoning_patterns`, `pattern_embeddings`, `sqlite_sequence`
|
|
183
|
+
|
|
184
|
+
### Notes
|
|
185
|
+
|
|
186
|
+
- **Fresh installs** (v1.8.2+) automatically get all 10 tables ✅
|
|
187
|
+
- **Existing users** must run migration to add missing 8 tables
|
|
188
|
+
- **Data safety**: Migration script creates backups automatically
|
|
189
|
+
- **No breaking changes** to public APIs
|
|
190
|
+
- **Performance**: ReasoningBank enables semantic pattern search (150x faster with HNSW)
|
|
191
|
+
|
|
10
192
|
## [1.8.1] - 2025-11-18
|
|
11
193
|
|
|
12
194
|
### 🛡️ Safety & Test Quality Improvements
|
package/README.md
CHANGED
|
@@ -9,11 +9,11 @@
|
|
|
9
9
|
<img alt="NPM Downloads" src="https://img.shields.io/npm/dw/agentic-qe">
|
|
10
10
|
|
|
11
11
|
|
|
12
|
-
**Version 1.8.
|
|
12
|
+
**Version 1.8.3** (TDD Subagent Coordination) | [Changelog](CHANGELOG.md) | [Issues](https://github.com/proffesor-for-testing/agentic-qe/issues) | [Discussions](https://github.com/proffesor-for-testing/agentic-qe/discussions)
|
|
13
13
|
|
|
14
14
|
> Enterprise-grade test automation with AI learning, comprehensive skills library (38 QE skills), and intelligent model routing.
|
|
15
15
|
|
|
16
|
-
🧠 **
|
|
16
|
+
🧠 **QE Agent Learning System** | 📚 **38 World-Class QE Skills** | 🎯 **Advanced Flaky Detection** | 💰 **Multi-Model Router** | 🔧 **32 Domain-Specific Tools**
|
|
17
17
|
|
|
18
18
|
</div>
|
|
19
19
|
|
|
@@ -59,7 +59,7 @@ claude "Use qe-flaky-test-hunter to analyze the last 100 test runs and identify
|
|
|
59
59
|
- ✅ Pattern Bank (cross-project reuse)
|
|
60
60
|
- ✅ ML Flaky Detection (100% accuracy)
|
|
61
61
|
- ✅ 18 Specialized agent definitions (including qe-code-complexity)
|
|
62
|
-
- ✅
|
|
62
|
+
- ✅ 11 TDD subagent definitions (RED/GREEN/REFACTOR phases + specialized)
|
|
63
63
|
- ✅ 38 World-class QE skills library
|
|
64
64
|
- ✅ 8 AQE slash commands
|
|
65
65
|
- ✅ Configuration directory
|
|
@@ -70,13 +70,13 @@ claude "Use qe-flaky-test-hunter to analyze the last 100 test runs and identify
|
|
|
70
70
|
|
|
71
71
|
### 🤖 Autonomous Agent Fleet
|
|
72
72
|
- **18 Specialized Agents**: Expert agents for every QE domain (test generation, coverage analysis, security scanning, performance testing, code complexity analysis)
|
|
73
|
-
- **
|
|
73
|
+
- **11 TDD Subagents**: Specialized subagents for Test-Driven Development workflow (RED/GREEN/REFACTOR phases + quality validation + analysis)
|
|
74
74
|
- **AI-Powered Coordination**: Event-driven architecture with intelligent task distribution
|
|
75
75
|
- **Zero External Dependencies**: Native AQE hooks system (100-500x faster than external coordination)
|
|
76
76
|
- **Scalable**: From single developer projects to enterprise-scale testing infrastructure
|
|
77
77
|
|
|
78
78
|
### 🧠 Intelligence & Learning (v1.1.0)
|
|
79
|
-
- **
|
|
79
|
+
- **QE Agent Learning System**: Q-Learning integrated with AgentDB's 9 RL algorithms, 20% improvement target with automatic strategy optimization
|
|
80
80
|
- **Pattern Bank**: 85%+ matching accuracy across 6 test frameworks (Jest, Mocha, Cypress, Vitest, Jasmine, AVA)
|
|
81
81
|
- **ML Flaky Detection**: 100% accuracy with root cause analysis and automated fix recommendations
|
|
82
82
|
- **Continuous Improvement**: A/B testing framework with 95%+ statistical confidence
|
|
@@ -436,9 +436,9 @@ Model Usage:
|
|
|
436
436
|
|
|
437
437
|
</details>
|
|
438
438
|
|
|
439
|
-
**Total:
|
|
439
|
+
**Total: 29 Agents** (18 main agents + 11 TDD subagents)
|
|
440
440
|
|
|
441
|
-
### TDD Subagents (
|
|
441
|
+
### TDD Subagents (11 specialized)
|
|
442
442
|
|
|
443
443
|
<details>
|
|
444
444
|
<summary><b>Test-Driven Development Subagents</b></summary>
|
|
@@ -455,6 +455,12 @@ The test generator orchestrates a complete TDD workflow through specialized suba
|
|
|
455
455
|
| **qe-data-generator** | GENERATION | Test data creation | Realistic data generation, constraint satisfaction, edge cases |
|
|
456
456
|
| **qe-performance-validator** | VALIDATION | Performance checks | SLA validation, benchmark comparison, threshold enforcement |
|
|
457
457
|
| **qe-security-auditor** | AUDIT | Security validation | Vulnerability detection, compliance checking, threat modeling |
|
|
458
|
+
| **qe-flaky-investigator** | ANALYSIS | Flaky test detection | Pattern detection, timing analysis, stabilization fixes |
|
|
459
|
+
| **qe-coverage-gap-analyzer** | ANALYSIS | Coverage gaps | Risk scoring, gap detection, test recommendations |
|
|
460
|
+
| **qe-test-data-architect-sub** | GENERATION | High-volume data | Schema-aware generation, relationship preservation |
|
|
461
|
+
|
|
462
|
+
**Coordination Protocol:**
|
|
463
|
+
All subagents use a unified coordination protocol with cycle-based memory namespaces (`aqe/tdd/cycle-{id}/*`) ensuring tests written in RED are the same tests validated in GREEN and refactored in REFACTOR. See [Coordination Guide](docs/subagents/coordination-guide.md).
|
|
458
464
|
|
|
459
465
|
**Usage Example:**
|
|
460
466
|
```bash
|
|
@@ -539,43 +545,54 @@ The test generator automatically delegates to subagents for a complete RED-GREEN
|
|
|
539
545
|
|
|
540
546
|
---
|
|
541
547
|
|
|
542
|
-
## 📝 What's New in v1.8.
|
|
548
|
+
## 📝 What's New in v1.8.3
|
|
543
549
|
|
|
544
|
-
|
|
550
|
+
🔄 **Phase 4: TDD Subagent Coordination** (2025-01-19)
|
|
545
551
|
|
|
546
|
-
This
|
|
552
|
+
This release implements comprehensive TDD subagent coordination, solving the disconnected tests/code/refactor issue where RED-GREEN-REFACTOR cycle agents were producing inconsistent outputs.
|
|
547
553
|
|
|
548
554
|
### Key Improvements
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
- ✅
|
|
552
|
-
- ✅
|
|
553
|
-
|
|
554
|
-
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
- ✅
|
|
558
|
-
|
|
559
|
-
-
|
|
560
|
-
- ✅
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
-
|
|
566
|
-
|
|
567
|
-
|
|
555
|
+
|
|
556
|
+
- **TDD Coordination Protocol** - Memory-based coordination for consistent TDD cycles
|
|
557
|
+
- ✅ Cycle-based memory namespace (`aqe/tdd/cycle-{cycleId}/*`)
|
|
558
|
+
- ✅ File hash validation ensures test file integrity across phases
|
|
559
|
+
- ✅ Handoff gates prevent premature phase transitions
|
|
560
|
+
- ✅ Phase output interfaces for typed contracts
|
|
561
|
+
|
|
562
|
+
- **Runtime Enforcement** - TDDPhaseValidator class validates memory state
|
|
563
|
+
- ✅ Validates memory keys exist before phase transitions
|
|
564
|
+
- ✅ Enforces output schema compliance
|
|
565
|
+
- ✅ Checks file hash integrity across RED→GREEN→REFACTOR
|
|
566
|
+
- ✅ Coverage comparison warnings
|
|
567
|
+
|
|
568
|
+
- **New Subagents (3)** - Specialized quality engineering agents
|
|
569
|
+
- ✅ `qe-flaky-investigator` - Detects flaky tests, analyzes root causes
|
|
570
|
+
- ✅ `qe-coverage-gap-analyzer` - Identifies coverage gaps, risk-scores untested code
|
|
571
|
+
- ✅ `qe-test-data-architect-sub` - High-volume test data generation
|
|
572
|
+
|
|
573
|
+
### Updated Subagents (8)
|
|
574
|
+
All existing subagents now include coordination protocol:
|
|
575
|
+
- `qe-test-writer`, `qe-test-implementer`, `qe-test-refactorer` (TDD phases)
|
|
576
|
+
- `qe-code-reviewer`, `qe-integration-tester`, `qe-performance-validator`
|
|
577
|
+
- `qe-security-auditor`, `qe-data-generator`
|
|
578
|
+
|
|
579
|
+
### Testing
|
|
580
|
+
- 22 integration tests for TDD coordination
|
|
581
|
+
- All tests passing
|
|
582
|
+
|
|
583
|
+
### Documentation
|
|
584
|
+
- Coordination guide at `docs/subagents/coordination-guide.md`
|
|
568
585
|
|
|
569
586
|
### Impact
|
|
570
587
|
✅ **Build Status**: Passing (0 errors)
|
|
571
|
-
✅ **
|
|
572
|
-
✅ **
|
|
573
|
-
✅ **
|
|
588
|
+
✅ **TDD Coordination**: Fully operational
|
|
589
|
+
✅ **Subagents**: 11 total (3 new, 8 updated)
|
|
590
|
+
✅ **Integration Tests**: 22 passing
|
|
574
591
|
❌ **Breaking Changes**: None
|
|
575
592
|
|
|
576
|
-
**Upgrade
|
|
593
|
+
**Upgrade**: `npm install agentic-qe@1.8.3`
|
|
577
594
|
|
|
578
|
-
**Previous Releases**: See [
|
|
595
|
+
**Previous Releases**: See [CHANGELOG.md](CHANGELOG.md) for complete version history.
|
|
579
596
|
|
|
580
597
|
[📖 View Full Changelog](CHANGELOG.md) | [🐛 Report Issues](https://github.com/proffesor-for-testing/agentic-qe/issues)
|
|
581
598
|
|
|
@@ -681,7 +698,7 @@ We welcome contributions! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for deta
|
|
|
681
698
|
- ✅ Pattern Bank with cross-project sharing
|
|
682
699
|
- ✅ ML Flaky Detection (100% accuracy)
|
|
683
700
|
- ✅ Continuous Improvement Loop
|
|
684
|
-
- ✅ 18 specialized agents +
|
|
701
|
+
- ✅ 18 specialized agents + 11 TDD subagents
|
|
685
702
|
- ✅ Complete TDD workflow automation (RED/GREEN/REFACTOR/REVIEW)
|
|
686
703
|
- ✅ Multi-framework test execution
|
|
687
704
|
- ✅ Real-time coverage analysis
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TDD Phase Validator - Runtime enforcement for TDD subagent coordination
|
|
3
|
+
*
|
|
4
|
+
* Validates that each phase of the TDD cycle produces correct output
|
|
5
|
+
* in the memory store before allowing transition to next phase.
|
|
6
|
+
*/
|
|
7
|
+
export interface TDDValidationResult {
|
|
8
|
+
valid: boolean;
|
|
9
|
+
phase: 'RED' | 'GREEN' | 'REFACTOR';
|
|
10
|
+
cycleId: string;
|
|
11
|
+
errors: string[];
|
|
12
|
+
warnings: string[];
|
|
13
|
+
metrics: {
|
|
14
|
+
memoryKeyExists: boolean;
|
|
15
|
+
outputSchemaValid: boolean;
|
|
16
|
+
handoffReady: boolean;
|
|
17
|
+
fileIntegrityValid: boolean;
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export interface REDPhaseOutput {
|
|
21
|
+
cycleId: string;
|
|
22
|
+
phase: 'RED';
|
|
23
|
+
testFile: {
|
|
24
|
+
path: string;
|
|
25
|
+
content: string;
|
|
26
|
+
hash: string;
|
|
27
|
+
};
|
|
28
|
+
validation: {
|
|
29
|
+
allTestsFailing: boolean;
|
|
30
|
+
failureCount: number;
|
|
31
|
+
};
|
|
32
|
+
readyForHandoff: boolean;
|
|
33
|
+
}
|
|
34
|
+
export interface GREENPhaseOutput {
|
|
35
|
+
cycleId: string;
|
|
36
|
+
phase: 'GREEN';
|
|
37
|
+
testFile: {
|
|
38
|
+
path: string;
|
|
39
|
+
hash: string;
|
|
40
|
+
};
|
|
41
|
+
implFile: {
|
|
42
|
+
path: string;
|
|
43
|
+
content: string;
|
|
44
|
+
hash: string;
|
|
45
|
+
};
|
|
46
|
+
validation: {
|
|
47
|
+
allTestsPassing: boolean;
|
|
48
|
+
passCount: number;
|
|
49
|
+
coverage: number;
|
|
50
|
+
};
|
|
51
|
+
readyForHandoff: boolean;
|
|
52
|
+
}
|
|
53
|
+
export interface REFACTORPhaseOutput {
|
|
54
|
+
cycleId: string;
|
|
55
|
+
phase: 'REFACTOR';
|
|
56
|
+
testFile: {
|
|
57
|
+
path: string;
|
|
58
|
+
hash: string;
|
|
59
|
+
};
|
|
60
|
+
implFile: {
|
|
61
|
+
path: string;
|
|
62
|
+
content: string;
|
|
63
|
+
hash: string;
|
|
64
|
+
originalHash: string;
|
|
65
|
+
};
|
|
66
|
+
validation: {
|
|
67
|
+
allTestsPassing: boolean;
|
|
68
|
+
coverage: number;
|
|
69
|
+
};
|
|
70
|
+
readyForReview: boolean;
|
|
71
|
+
}
|
|
72
|
+
export interface MemoryClient {
|
|
73
|
+
retrieve(key: string, options?: {
|
|
74
|
+
partition?: string;
|
|
75
|
+
}): Promise<any>;
|
|
76
|
+
}
|
|
77
|
+
export declare class TDDPhaseValidator {
|
|
78
|
+
private memoryClient;
|
|
79
|
+
constructor(memoryClient: MemoryClient);
|
|
80
|
+
/**
|
|
81
|
+
* Validate RED phase output before transitioning to GREEN
|
|
82
|
+
*/
|
|
83
|
+
validateREDPhase(cycleId: string): Promise<TDDValidationResult>;
|
|
84
|
+
/**
|
|
85
|
+
* Validate GREEN phase output before transitioning to REFACTOR
|
|
86
|
+
*/
|
|
87
|
+
validateGREENPhase(cycleId: string): Promise<TDDValidationResult>;
|
|
88
|
+
/**
|
|
89
|
+
* Validate REFACTOR phase output (final validation)
|
|
90
|
+
*/
|
|
91
|
+
validateREFACTORPhase(cycleId: string): Promise<TDDValidationResult>;
|
|
92
|
+
/**
|
|
93
|
+
* Validate complete TDD cycle
|
|
94
|
+
*/
|
|
95
|
+
validateCompleteCycle(cycleId: string): Promise<{
|
|
96
|
+
valid: boolean;
|
|
97
|
+
phases: TDDValidationResult[];
|
|
98
|
+
summary: string;
|
|
99
|
+
}>;
|
|
100
|
+
/**
|
|
101
|
+
* Calculate SHA256 hash of a file
|
|
102
|
+
*/
|
|
103
|
+
static calculateFileHash(filePath: string): string;
|
|
104
|
+
/**
|
|
105
|
+
* Validate file hash matches expected
|
|
106
|
+
*/
|
|
107
|
+
private validateFileHash;
|
|
108
|
+
}
|
|
109
|
+
export default TDDPhaseValidator;
|
|
110
|
+
//# sourceMappingURL=TDDPhaseValidator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TDDPhaseValidator.d.ts","sourceRoot":"","sources":["../../../../src/core/hooks/validators/TDDPhaseValidator.ts"],"names":[],"mappings":"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"}
|