agentic-qe 1.8.0 β 1.8.2
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 +202 -0
- package/README.md +57 -67
- package/dist/agents/BaseAgent.d.ts +2 -0
- package/dist/agents/BaseAgent.d.ts.map +1 -1
- package/dist/agents/BaseAgent.js +55 -35
- package/dist/agents/BaseAgent.js.map +1 -1
- package/dist/agents/TestExecutorAgent.d.ts +32 -2
- package/dist/agents/TestExecutorAgent.d.ts.map +1 -1
- package/dist/agents/TestExecutorAgent.js +254 -64
- package/dist/agents/TestExecutorAgent.js.map +1 -1
- package/dist/agents/lifecycle/AgentLifecycleManager.d.ts +1 -6
- package/dist/agents/lifecycle/AgentLifecycleManager.d.ts.map +1 -1
- package/dist/agents/lifecycle/AgentLifecycleManager.js +0 -7
- package/dist/agents/lifecycle/AgentLifecycleManager.js.map +1 -1
- package/dist/core/memory/AdapterConfig.d.ts +108 -0
- package/dist/core/memory/AdapterConfig.d.ts.map +1 -0
- package/dist/core/memory/AdapterConfig.js +189 -0
- package/dist/core/memory/AdapterConfig.js.map +1 -0
- package/dist/core/memory/AdapterFactory.d.ts +72 -0
- package/dist/core/memory/AdapterFactory.d.ts.map +1 -0
- package/dist/core/memory/AdapterFactory.js +152 -0
- package/dist/core/memory/AdapterFactory.js.map +1 -0
- package/dist/core/memory/AgentDBManager.d.ts +23 -5
- package/dist/core/memory/AgentDBManager.d.ts.map +1 -1
- package/dist/core/memory/AgentDBManager.js +80 -72
- package/dist/core/memory/AgentDBManager.js.map +1 -1
- package/dist/core/memory/PatternCache.d.ts +105 -0
- package/dist/core/memory/PatternCache.d.ts.map +1 -0
- package/dist/core/memory/PatternCache.js +183 -0
- package/dist/core/memory/PatternCache.js.map +1 -0
- package/dist/core/memory/RealAgentDBAdapter.d.ts +84 -3
- package/dist/core/memory/RealAgentDBAdapter.d.ts.map +1 -1
- package/dist/core/memory/RealAgentDBAdapter.js +358 -22
- package/dist/core/memory/RealAgentDBAdapter.js.map +1 -1
- package/dist/core/memory/index.d.ts +6 -0
- package/dist/core/memory/index.d.ts.map +1 -1
- package/dist/core/memory/index.js +12 -1
- package/dist/core/memory/index.js.map +1 -1
- package/dist/core/neural/NeuralTrainer.d.ts +2 -6
- package/dist/core/neural/NeuralTrainer.d.ts.map +1 -1
- package/dist/core/neural/NeuralTrainer.js +7 -25
- package/dist/core/neural/NeuralTrainer.js.map +1 -1
- package/package.json +2 -14
- package/dist/mcp/tools/deprecated.d.ts +0 -1390
- package/dist/mcp/tools/deprecated.d.ts.map +0 -1
- package/dist/mcp/tools/deprecated.js +0 -859
- package/dist/mcp/tools/deprecated.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,208 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [1.8.2] - 2025-01-18
|
|
11
|
+
|
|
12
|
+
### π§ Database Schema Enhancement
|
|
13
|
+
|
|
14
|
+
This release improves database initialization to create all required tables for the QE learning system, including ReasoningBank integration for advanced pattern matching.
|
|
15
|
+
|
|
16
|
+
**Issue**: [#TBD - AgentDB table initialization enhancement](https://github.com/proffesor-for-testing/agentic-qe-cf/issues/TBD)
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
|
|
20
|
+
#### π Enhanced: Complete QE Learning Tables on Fresh Init
|
|
21
|
+
- **Background**: QE schema and ReasoningBank were defined but not fully initialized during `aqe init`
|
|
22
|
+
- `RealAgentDBAdapter.initialize()` only created base `patterns` table
|
|
23
|
+
- QE-specific tables (`test_patterns`, `pattern_usage`, etc.) were defined in `getPatternBankSchema()` but never called
|
|
24
|
+
- ReasoningBank controller was never initialized
|
|
25
|
+
- Users running `aqe init` in v1.8.0-1.8.1 only got 1/10 tables
|
|
26
|
+
|
|
27
|
+
- **Impact**:
|
|
28
|
+
- β Pattern storage broken (no `test_patterns` table)
|
|
29
|
+
- β Quality metrics unavailable (no `pattern_usage` table)
|
|
30
|
+
- β Cross-framework sharing disabled (no `cross_project_mappings` table)
|
|
31
|
+
- β Pattern similarity broken (no `pattern_similarity_index` table)
|
|
32
|
+
- β Full-text search missing (no `pattern_fts` table)
|
|
33
|
+
- β Schema versioning absent (no `schema_version` table)
|
|
34
|
+
- β Reasoning patterns unavailable (no `reasoning_patterns` table)
|
|
35
|
+
- β Pattern embeddings missing (no `pattern_embeddings` table)
|
|
36
|
+
|
|
37
|
+
- **Solution**: Added proper table creation in `RealAgentDBAdapter`
|
|
38
|
+
- Created `createQELearningTables()` coordinator method
|
|
39
|
+
- Implemented 6 dedicated table creation methods with full documentation
|
|
40
|
+
- Added FTS5 graceful fallback for sql.js WASM (no FTS5 support)
|
|
41
|
+
- Initialized ReasoningBank controller (creates 2 additional tables)
|
|
42
|
+
- All tables now created during `initialize()` before HNSW indexing
|
|
43
|
+
- **Files Modified**:
|
|
44
|
+
- `src/core/memory/RealAgentDBAdapter.ts` (lines 9, 15-16, 29-81, 607-638)
|
|
45
|
+
|
|
46
|
+
- **Tables Now Created** (10 total, 9x improvement):
|
|
47
|
+
1. β
`patterns` - Base AgentDB vector embeddings (existing)
|
|
48
|
+
2. β
`test_patterns` - Core QE test pattern storage with deduplication
|
|
49
|
+
3. β
`pattern_usage` - Pattern quality metrics per project
|
|
50
|
+
4. β
`cross_project_mappings` - Framework translation rules (JestβVitest, etc.)
|
|
51
|
+
5. β
`pattern_similarity_index` - Pre-computed similarity scores
|
|
52
|
+
6. β
`pattern_fts` - Full-text search (FTS5 or indexed fallback)
|
|
53
|
+
7. β
`schema_version` - Migration tracking (v1.1.0)
|
|
54
|
+
8. β
`reasoning_patterns` - ReasoningBank pattern storage
|
|
55
|
+
9. β
`pattern_embeddings` - ReasoningBank vector embeddings
|
|
56
|
+
10. β
`sqlite_sequence` - Auto-increment tracking (system table)
|
|
57
|
+
|
|
58
|
+
### Added
|
|
59
|
+
|
|
60
|
+
#### π Migration Script for Existing Users
|
|
61
|
+
- **Migration Tool**: `scripts/migrate-add-qe-tables.ts`
|
|
62
|
+
- Safely adds 8 missing tables to existing `agentdb.db` (6 QE + 2 ReasoningBank)
|
|
63
|
+
- Preserves all existing data (episodes, patterns)
|
|
64
|
+
- Creates automatic backup before migration
|
|
65
|
+
- Verifies data integrity after migration
|
|
66
|
+
- **Usage**: `npx tsx scripts/migrate-add-qe-tables.ts`
|
|
67
|
+
|
|
68
|
+
#### π§ ReasoningBank Integration
|
|
69
|
+
- **Controller**: Initialized `ReasoningBank` from agentdb package
|
|
70
|
+
- Creates `reasoning_patterns` table for task-type-based pattern storage
|
|
71
|
+
- Creates `pattern_embeddings` table for semantic similarity search
|
|
72
|
+
- Uses local embedding service (`Xenova/all-MiniLM-L6-v2`, 384 dimensions)
|
|
73
|
+
- Enables advanced pattern matching and retrieval
|
|
74
|
+
- **API**: `getReasoningBank()` method for direct access
|
|
75
|
+
|
|
76
|
+
### Changed
|
|
77
|
+
|
|
78
|
+
- **Security**: Table creation bypasses runtime SQL validation (correct for DDL)
|
|
79
|
+
- **Initialization**: QE tables + ReasoningBank created during adapter initialization, not via `query()` API
|
|
80
|
+
- **Error Handling**: FTS5 unavailable in sql.js WASM falls back to indexed table
|
|
81
|
+
- **Dependencies**: Added `EmbeddingService` initialization for ReasoningBank support
|
|
82
|
+
|
|
83
|
+
### Migration Guide for v1.8.0-1.8.1 Users
|
|
84
|
+
|
|
85
|
+
If you initialized a project with v1.8.0 or v1.8.1, your `agentdb.db` is missing 8 tables (6 QE + 2 ReasoningBank).
|
|
86
|
+
|
|
87
|
+
**Option 1: Run Migration Script** (Preserves Data β
)
|
|
88
|
+
```bash
|
|
89
|
+
npm install agentic-qe@1.8.2
|
|
90
|
+
npx tsx node_modules/agentic-qe/scripts/migrate-add-qe-tables.ts
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
**Option 2: Re-initialize** (Loses Data β)
|
|
94
|
+
```bash
|
|
95
|
+
mv .agentic-qe/agentdb.db .agentic-qe/agentdb.backup.db
|
|
96
|
+
npm install agentic-qe@1.8.2
|
|
97
|
+
aqe init
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
**Verification**:
|
|
101
|
+
```bash
|
|
102
|
+
sqlite3 .agentic-qe/agentdb.db ".tables"
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
You should see all 10 tables:
|
|
106
|
+
- `patterns`, `test_patterns`, `pattern_usage`, `cross_project_mappings`
|
|
107
|
+
- `pattern_similarity_index`, `pattern_fts`, `schema_version`
|
|
108
|
+
- `reasoning_patterns`, `pattern_embeddings`, `sqlite_sequence`
|
|
109
|
+
|
|
110
|
+
### Notes
|
|
111
|
+
|
|
112
|
+
- **Fresh installs** (v1.8.2+) automatically get all 10 tables β
|
|
113
|
+
- **Existing users** must run migration to add missing 8 tables
|
|
114
|
+
- **Data safety**: Migration script creates backups automatically
|
|
115
|
+
- **No breaking changes** to public APIs
|
|
116
|
+
- **Performance**: ReasoningBank enables semantic pattern search (150x faster with HNSW)
|
|
117
|
+
|
|
118
|
+
## [1.8.1] - 2025-11-18
|
|
119
|
+
|
|
120
|
+
### π‘οΈ Safety & Test Quality Improvements
|
|
121
|
+
|
|
122
|
+
This patch release addresses critical safety issues and test quality gaps identified in Issue #55. Implements runtime guards to prevent silent simulation mode, explicit error handling, and test isolation improvements.
|
|
123
|
+
|
|
124
|
+
**References**:
|
|
125
|
+
- [Issue #55 - Test Quality & Safety Improvements](https://github.com/proffesor-for-testing/agentic-qe/issues/55)
|
|
126
|
+
- [Brutal Honesty Code Review - Issue #52](docs/reviews/BRUTAL-HONESTY-ISSUE-52-CODE-REVIEW.md)
|
|
127
|
+
|
|
128
|
+
### Fixed
|
|
129
|
+
|
|
130
|
+
#### P0 - Critical: Simulation Mode Runtime Guards
|
|
131
|
+
- **TestExecutorAgent** - Added safety guard to prevent accidental simulation in production
|
|
132
|
+
- Requires `AQE_ALLOW_SIMULATION=true` environment variable to enable simulated execution
|
|
133
|
+
- Throws explicit error if simulation mode is used without env flag
|
|
134
|
+
- Logs warning message when simulation is active
|
|
135
|
+
- **Impact**: Prevents silent test simulation in production environments
|
|
136
|
+
- **Files**: `src/agents/TestExecutorAgent.ts` (lines 541-553)
|
|
137
|
+
|
|
138
|
+
#### P2 - Medium: Explicit Error Handling
|
|
139
|
+
- **RealAgentDBAdapter** - Added explicit error handling for database query failures
|
|
140
|
+
- Fails loudly instead of silently returning 0 on query errors
|
|
141
|
+
- Validates query result structure and data types
|
|
142
|
+
- Provides actionable error messages (schema corruption, migration needed)
|
|
143
|
+
- **Impact**: Easier debugging, faster root cause identification
|
|
144
|
+
- **Files**: `src/core/memory/RealAgentDBAdapter.ts` (lines 218-234)
|
|
145
|
+
|
|
146
|
+
#### P1 - High: Test Isolation
|
|
147
|
+
- **Integration Tests** - Fixed race conditions in parallel test execution
|
|
148
|
+
- Replaced `Date.now()` with `randomUUID()` for guaranteed uniqueness
|
|
149
|
+
- Uses OS temp directory (`os.tmpdir()`) for proper cleanup
|
|
150
|
+
- Added safety check to verify file doesn't exist before test
|
|
151
|
+
- **Impact**: Tests can run in parallel without database path collisions
|
|
152
|
+
- **Files**:
|
|
153
|
+
- `tests/integration/base-agent-agentdb.test.ts`
|
|
154
|
+
- `tests/integration/test-executor-agentdb.test.ts`
|
|
155
|
+
|
|
156
|
+
### Changed
|
|
157
|
+
- **Imports**: Added `os` and `crypto.randomUUID` to integration tests for UUID-based paths
|
|
158
|
+
|
|
159
|
+
### π Related Issues
|
|
160
|
+
- Closes partial fixes from #55 (P0, P1, P2 completed)
|
|
161
|
+
- Follow-up work tracked in #57 (P1 assertion improvements, mutation testing)
|
|
162
|
+
|
|
163
|
+
### π Impact Metrics
|
|
164
|
+
|
|
165
|
+
| Metric | Before | After |
|
|
166
|
+
|--------|--------|-------|
|
|
167
|
+
| **Runtime Safety** | Silent simulation | Explicit guards (env var required) |
|
|
168
|
+
| **Error Handling** | Silent fallback (returns 0) | Explicit error with diagnostics |
|
|
169
|
+
| **Test Isolation** | `Date.now()` (race-prone) | `UUID` (collision-free) |
|
|
170
|
+
| **Build Status** | β
Passing | β
Passing |
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
## [1.8.0] - 2025-01-17 (Quality Hardening)
|
|
175
|
+
|
|
176
|
+
### π§Ή Code Cleanup
|
|
177
|
+
|
|
178
|
+
#### Removed
|
|
179
|
+
- **Deprecated MCP Tools** (#52) - Removed 1520 lines of deprecated code
|
|
180
|
+
- Removed `src/mcp/tools/deprecated.ts` (1128 lines) - All 31 deprecated tool wrappers
|
|
181
|
+
- Removed `tests/mcp/tools/deprecated.test.ts` (288 lines) - Deprecated tool tests
|
|
182
|
+
- Removed `scripts/test-deprecated-tools.sh` (104 lines) - Verification script
|
|
183
|
+
- Removed deprecated `setStatus()` method from `AgentLifecycleManager`
|
|
184
|
+
- Zero deprecation warnings in build output (eliminated log pollution)
|
|
185
|
+
|
|
186
|
+
#### Changed
|
|
187
|
+
- **AgentLifecycleManager** - Made `transitionTo()` public for proper lifecycle management
|
|
188
|
+
- **BaseAgent** - Migrated from deprecated `setStatus()` to lifecycle hooks and `transitionTo()`
|
|
189
|
+
- Initialization now uses `lifecycleManager.reset()` for ERROR state recovery
|
|
190
|
+
- Termination now uses `lifecycleManager.terminate()` with proper hooks
|
|
191
|
+
- Error handling now uses `transitionTo()` with descriptive reasons
|
|
192
|
+
|
|
193
|
+
### π Breaking Changes
|
|
194
|
+
|
|
195
|
+
**Removed Deprecated Tool Exports**:
|
|
196
|
+
- All 31 deprecated tool wrappers removed (available since v1.5.0)
|
|
197
|
+
- External packages importing deprecated tools will see build errors
|
|
198
|
+
- **Migration**: Use new implementations from respective domains
|
|
199
|
+
- Coverage: `analyzeCoverageWithRiskScoring()`, `identifyUncoveredRiskAreas()`
|
|
200
|
+
- Flaky Detection: `detectFlakyTestsStatistical()`, `analyzeFlakyTestPatterns()`, `stabilizeFlakyTestAuto()`
|
|
201
|
+
- Performance: `runPerformanceBenchmark()`, `monitorRealtimePerformance()`
|
|
202
|
+
- Security: `securityScanComprehensive()`, `validateAuthenticationFlow()`, `checkAuthorizationRules()`
|
|
203
|
+
- Test Generation: `generateUnitTests()`, `generateIntegrationTests()`, `optimizeTestSuite()`
|
|
204
|
+
- Quality Gates: `QualityGateExecuteHandler`, `QualityRiskAssessHandler`, `QualityValidateMetricsHandler`
|
|
205
|
+
- Visual: `detectVisualRegression()`
|
|
206
|
+
- API Contract: `contractValidate()`, `apiBreakingChanges()`
|
|
207
|
+
- And 13+ more tools - See `docs/migration/phase3-tools.md` for complete guide
|
|
208
|
+
|
|
209
|
+
**Removed API Methods**:
|
|
210
|
+
- `AgentLifecycleManager.setStatus()` - Use `transitionTo()` or specific methods (`markActive()`, `markIdle()`, etc.)
|
|
211
|
+
|
|
10
212
|
## [1.8.0] - 2025-01-17
|
|
11
213
|
|
|
12
214
|
### π― Quality Hardening & MCP Optimization Release
|
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.2** (Database Schema Fix) | [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
|
|
|
@@ -76,7 +76,7 @@ claude "Use qe-flaky-test-hunter to analyze the last 100 test runs and identify
|
|
|
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
|
|
@@ -539,72 +539,62 @@ The test generator automatically delegates to subagents for a complete RED-GREEN
|
|
|
539
539
|
|
|
540
540
|
---
|
|
541
541
|
|
|
542
|
-
## π What's New in v1.8.
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
- β
|
|
551
|
-
- β
|
|
552
|
-
-
|
|
553
|
-
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
-
|
|
557
|
-
-
|
|
558
|
-
-
|
|
559
|
-
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
-
|
|
563
|
-
-
|
|
564
|
-
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
**
|
|
581
|
-
|
|
582
|
-
|
|
542
|
+
## π What's New in v1.8.2
|
|
543
|
+
|
|
544
|
+
π§ **Database Schema Enhancement** (2025-01-18)
|
|
545
|
+
|
|
546
|
+
This release improves the database initialization to create all required tables for the QE learning system, including ReasoningBank integration for advanced pattern matching.
|
|
547
|
+
|
|
548
|
+
### Key Improvements
|
|
549
|
+
- **Enhanced Database Initialization** - Now creates 10 tables instead of 1 (9x improvement)
|
|
550
|
+
- β
6 QE learning tables for pattern storage and quality metrics
|
|
551
|
+
- β
2 ReasoningBank tables for semantic pattern search
|
|
552
|
+
- β
Schema versioning for future migrations
|
|
553
|
+
- β
150x faster vector search with HNSW indexing
|
|
554
|
+
|
|
555
|
+
- **ReasoningBank Integration** - Advanced pattern matching capabilities
|
|
556
|
+
- β
Task-type-based pattern storage
|
|
557
|
+
- β
Semantic similarity search (384-dim embeddings)
|
|
558
|
+
- β
Local embedding service (no external API needed)
|
|
559
|
+
- β
Pattern learning from successful executions
|
|
560
|
+
|
|
561
|
+
- **Migration Support** - Easy upgrade for existing users
|
|
562
|
+
- β
Migration script preserves all existing data
|
|
563
|
+
- β
Automatic backups before migration
|
|
564
|
+
- β
Data integrity verification
|
|
565
|
+
|
|
566
|
+
### Tables Created
|
|
567
|
+
All fresh installations now get complete database schema:
|
|
568
|
+
1. `patterns` - Base vector embeddings
|
|
569
|
+
2. `test_patterns` - QE test patterns with deduplication
|
|
570
|
+
3. `pattern_usage` - Quality metrics tracking
|
|
571
|
+
4. `cross_project_mappings` - Framework translation rules
|
|
572
|
+
5. `pattern_similarity_index` - Fast similarity lookups
|
|
573
|
+
6. `pattern_fts` - Full-text search
|
|
574
|
+
7. `schema_version` - Migration tracking
|
|
575
|
+
8. `reasoning_patterns` - ReasoningBank patterns
|
|
576
|
+
9. `pattern_embeddings` - Vector embeddings
|
|
577
|
+
10. `sqlite_sequence` - Auto-increment tracking
|
|
578
|
+
|
|
579
|
+
### Migration Guide
|
|
580
|
+
**Existing users (v1.8.0-1.8.1)**:
|
|
581
|
+
```bash
|
|
582
|
+
npm install agentic-qe@1.8.2
|
|
583
|
+
npx tsx node_modules/agentic-qe/scripts/migrate-add-qe-tables.ts
|
|
584
|
+
```
|
|
583
585
|
|
|
584
|
-
|
|
586
|
+
**Fresh installations**: All tables created automatically during `aqe init`.
|
|
587
|
+
|
|
588
|
+
### Impact
|
|
589
|
+
β
**Build Status**: Passing (0 errors)
|
|
590
|
+
β
**Database Schema**: Complete (10/10 tables)
|
|
591
|
+
β
**Pattern Storage**: Fully operational
|
|
592
|
+
β
**Semantic Search**: Enabled (HNSW + SIMD)
|
|
593
|
+
β **Breaking Changes**: None
|
|
594
|
+
|
|
595
|
+
**Upgrade from v1.8.1**: Fully backward-compatible. Run `npm install agentic-qe@1.8.2` and `aqe init`.
|
|
585
596
|
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
π― **Phase 3: Domain-Specific Tool Refactoring** (2025-11-08)
|
|
589
|
-
|
|
590
|
-
- **32 Domain-Specific MCP Tools** organized by QE function for better discoverability
|
|
591
|
-
- 6 QE domains: Coverage, Flaky Detection, Performance, Visual, Security, Test Generation
|
|
592
|
-
- Improved type safety with strict TypeScript (no `any` types)
|
|
593
|
-
- Enhanced tool organization based on domain intent
|
|
594
|
-
- **Migration Support**: Comprehensive migration guide with backward compatibility
|
|
595
|
-
- Deprecated tools remain available until v3.0.0 (Feb 2026)
|
|
596
|
-
- Clear deprecation warnings with migration paths
|
|
597
|
-
- Zero breaking changes in v1.5.0
|
|
598
|
-
- **Tool Catalog**: Complete documentation of all 32 domain-specific tools
|
|
599
|
-
- Function signatures and parameter documentation
|
|
600
|
-
- Usage examples for each tool
|
|
601
|
-
- Domain-specific best practices
|
|
602
|
-
- **Agent Integration**: Updated 7 agent code execution examples with real imports
|
|
603
|
-
- Direct tool imports instead of generic MCP calls
|
|
604
|
-
- Type-safe parameter handling
|
|
605
|
-
- Better error messages
|
|
606
|
-
|
|
607
|
-
**Upgrade Path**: See [Migration Guide](docs/migration/phase3-tools.md) for step-by-step instructions.
|
|
597
|
+
**Previous Releases**: See [CHANGELOG.md](CHANGELOG.md) for complete version history.
|
|
608
598
|
|
|
609
599
|
[π View Full Changelog](CHANGELOG.md) | [π Report Issues](https://github.com/proffesor-for-testing/agentic-qe/issues)
|
|
610
600
|
|
|
@@ -50,12 +50,14 @@ export declare abstract class BaseAgent extends EventEmitter {
|
|
|
50
50
|
lastActivity: Date;
|
|
51
51
|
};
|
|
52
52
|
private taskStartTime?;
|
|
53
|
+
private initializationMutex?;
|
|
53
54
|
protected readonly lifecycleManager: AgentLifecycleManager;
|
|
54
55
|
protected readonly coordinator: AgentCoordinator;
|
|
55
56
|
protected readonly memoryService: AgentMemoryService;
|
|
56
57
|
constructor(config: BaseAgentConfig);
|
|
57
58
|
/**
|
|
58
59
|
* Initialize the agent - must be called after construction
|
|
60
|
+
* Thread-safe: Multiple concurrent calls will wait for the first to complete
|
|
59
61
|
*/
|
|
60
62
|
initialize(): Promise<void>;
|
|
61
63
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseAgent.d.ts","sourceRoot":"","sources":["../../src/agents/BaseAgent.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAGtC,OAAO,EACL,OAAO,EACP,WAAW,IAAI,SAAS,EACxB,WAAW,EACX,YAAY,EACZ,eAAe,EAEf,YAAY,EACZ,WAAW,EACX,MAAM,EACN,cAAc,EAGd,WAAW,EACX,YAAY,EACZ,aAAa,EACd,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAExD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,aAAa,EAAwB,MAAM,+BAA+B,CAAC;AACpG,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEjE,MAAM,WAAW,eAAe;IAC9B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,SAAS,CAAC;IAChB,YAAY,EAAE,eAAe,EAAE,CAAC;IAChC,OAAO,EAAE,YAAY,CAAC;IACtB,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,EAAE,YAAY,CAAC;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACzC,aAAa,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAGvC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,gBAAgB,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;CAC7D;AAED,8BAAsB,SAAU,SAAQ,YAAY;IAClD,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IACpC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC9D,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IACzC,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAC5C,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAC1C,SAAS,CAAC,WAAW,CAAC,EAAE,cAAc,CAAC;IACvC,SAAS,CAAC,WAAW,EAAE,uBAAuB,CAAC;IAC/C,SAAS,CAAC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IAClD,SAAS,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC;IAC1C,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IAC3C,OAAO,CAAC,cAAc,CAAC,CAA0B;IACjD,SAAS,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC;IACnC,SAAS,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACjD,SAAS,CAAC,kBAAkB,EAAE;QAC5B,cAAc,EAAE,MAAM,CAAC;QACvB,oBAAoB,EAAE,MAAM,CAAC;QAC7B,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,IAAI,CAAC;KACpB,CAKC;IACF,OAAO,CAAC,aAAa,CAAC,CAAS;
|
|
1
|
+
{"version":3,"file":"BaseAgent.d.ts","sourceRoot":"","sources":["../../src/agents/BaseAgent.ts"],"names":[],"mappings":"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"}
|
package/dist/agents/BaseAgent.js
CHANGED
|
@@ -84,19 +84,31 @@ class BaseAgent extends events_1.EventEmitter {
|
|
|
84
84
|
// ============================================================================
|
|
85
85
|
/**
|
|
86
86
|
* Initialize the agent - must be called after construction
|
|
87
|
+
* Thread-safe: Multiple concurrent calls will wait for the first to complete
|
|
87
88
|
*/
|
|
88
89
|
async initialize() {
|
|
90
|
+
// Thread-safety: If initialization is in progress, wait for it
|
|
91
|
+
if (this.initializationMutex) {
|
|
92
|
+
console.info(`[${this.agentId.id}] Initialization already in progress, waiting for completion`);
|
|
93
|
+
await this.initializationMutex;
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
// Guard: Skip if already initialized (ACTIVE or IDLE)
|
|
97
|
+
const currentStatus = this.lifecycleManager.getStatus();
|
|
98
|
+
if (currentStatus === types_1.AgentStatus.ACTIVE || currentStatus === types_1.AgentStatus.IDLE) {
|
|
99
|
+
console.warn(`[${this.agentId.id}] Agent already initialized (status: ${currentStatus}), skipping`);
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
// Create initialization mutex - lock acquired
|
|
103
|
+
let resolveMutex;
|
|
104
|
+
this.initializationMutex = new Promise((resolve) => {
|
|
105
|
+
resolveMutex = resolve;
|
|
106
|
+
});
|
|
89
107
|
try {
|
|
90
|
-
// Guard: Skip if already initialized (ACTIVE or IDLE)
|
|
91
|
-
const currentStatus = this.lifecycleManager.getStatus();
|
|
92
|
-
if (currentStatus === types_1.AgentStatus.ACTIVE || currentStatus === types_1.AgentStatus.IDLE) {
|
|
93
|
-
console.warn(`[${this.agentId.id}] Agent already initialized (status: ${currentStatus}), skipping`);
|
|
94
|
-
return;
|
|
95
|
-
}
|
|
96
108
|
// Guard: Reset from ERROR state before initializing
|
|
97
109
|
if (currentStatus === types_1.AgentStatus.ERROR) {
|
|
98
110
|
console.info(`[${this.agentId.id}] Resetting agent from ERROR state before initialization`);
|
|
99
|
-
this.lifecycleManager.
|
|
111
|
+
this.lifecycleManager.reset(false);
|
|
100
112
|
}
|
|
101
113
|
// Delegate lifecycle initialization to lifecycleManager
|
|
102
114
|
await this.lifecycleManager.initialize({
|
|
@@ -144,6 +156,11 @@ class BaseAgent extends events_1.EventEmitter {
|
|
|
144
156
|
this.coordinator.emitEvent('agent.error', { agentId: this.agentId, error });
|
|
145
157
|
throw error;
|
|
146
158
|
}
|
|
159
|
+
finally {
|
|
160
|
+
// Release mutex lock - allow future initializations
|
|
161
|
+
resolveMutex();
|
|
162
|
+
this.initializationMutex = undefined;
|
|
163
|
+
}
|
|
147
164
|
}
|
|
148
165
|
/**
|
|
149
166
|
* Execute a task assignment with integrated verification hooks
|
|
@@ -194,35 +211,38 @@ class BaseAgent extends events_1.EventEmitter {
|
|
|
194
211
|
*/
|
|
195
212
|
async terminate() {
|
|
196
213
|
try {
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
214
|
+
// Use lifecycle manager's terminate method instead of manual status setting
|
|
215
|
+
await this.lifecycleManager.terminate({
|
|
216
|
+
onPreTermination: async () => {
|
|
217
|
+
await this.executeHook('pre-termination');
|
|
218
|
+
// Flush learning data before termination
|
|
219
|
+
if (this.learningEngine && this.learningEngine.isEnabled()) {
|
|
220
|
+
// LearningEngine persists data via SwarmMemoryManager (which uses AgentDB)
|
|
221
|
+
// No explicit flush needed - memoryStore handles persistence automatically
|
|
222
|
+
console.info(`[${this.agentId.id}] Learning data persisted via memoryStore (SwarmMemoryManager -> AgentDB)`);
|
|
223
|
+
}
|
|
224
|
+
// Close AgentDB if enabled
|
|
225
|
+
if (this.agentDB) {
|
|
226
|
+
await this.agentDB.close();
|
|
227
|
+
this.agentDB = undefined;
|
|
228
|
+
}
|
|
229
|
+
// Save current state
|
|
230
|
+
await this.saveState();
|
|
231
|
+
// Clean up agent-specific resources
|
|
232
|
+
await this.cleanup();
|
|
233
|
+
// Remove all event handlers from EventBus using coordinator
|
|
234
|
+
this.coordinator.clearAllHandlers();
|
|
235
|
+
},
|
|
236
|
+
onPostTermination: async () => {
|
|
237
|
+
await this.executeHook('post-termination');
|
|
238
|
+
this.emitEvent('agent.terminated', { agentId: this.agentId });
|
|
239
|
+
// Remove all listeners from this agent (EventEmitter)
|
|
240
|
+
this.removeAllListeners();
|
|
241
|
+
}
|
|
242
|
+
});
|
|
223
243
|
}
|
|
224
244
|
catch (error) {
|
|
225
|
-
this.lifecycleManager.
|
|
245
|
+
this.lifecycleManager.transitionTo(types_1.AgentStatus.ERROR, `Termination failed: ${error}`);
|
|
226
246
|
throw error;
|
|
227
247
|
}
|
|
228
248
|
}
|
|
@@ -927,7 +947,7 @@ class BaseAgent extends events_1.EventEmitter {
|
|
|
927
947
|
setupLifecycleHooks() {
|
|
928
948
|
// Setup default lifecycle behavior
|
|
929
949
|
this.on('error', (error) => {
|
|
930
|
-
this.lifecycleManager.
|
|
950
|
+
this.lifecycleManager.transitionTo(types_1.AgentStatus.ERROR, `Error event: ${error}`);
|
|
931
951
|
this.emitEvent('agent.error', { agentId: this.agentId, error });
|
|
932
952
|
});
|
|
933
953
|
}
|