agentic-qe 3.8.12 → 3.8.14

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.
Files changed (46) hide show
  1. package/.claude/skills/qe-code-intelligence/SKILL.md +29 -20
  2. package/.claude/skills/qe-code-intelligence/evals/qe-code-intelligence.yaml +3 -3
  3. package/.claude/skills/qe-quality-assessment/SKILL.md +1 -1
  4. package/.claude/skills/qe-test-generation/SKILL.md +1 -1
  5. package/.claude/skills/skills-manifest.json +1 -1
  6. package/CHANGELOG.md +41 -0
  7. package/README.md +9 -0
  8. package/assets/skills/qe-code-intelligence/SKILL.md +29 -20
  9. package/assets/skills/qe-code-intelligence/evals/qe-code-intelligence.yaml +3 -3
  10. package/assets/skills/qe-quality-assessment/SKILL.md +1 -1
  11. package/assets/skills/qe-test-generation/SKILL.md +1 -1
  12. package/dist/audit/witness-chain.js +15 -3
  13. package/dist/cli/bundle.js +815 -795
  14. package/dist/cli/commands/code.js +149 -11
  15. package/dist/cli/commands/init.js +3 -2
  16. package/dist/cli/handlers/init-handler.d.ts +1 -0
  17. package/dist/cli/handlers/init-handler.js +15 -10
  18. package/dist/cli/utils/file-discovery.d.ts +1 -0
  19. package/dist/cli/utils/file-discovery.js +1 -1
  20. package/dist/domains/test-generation/generators/base-test-generator.d.ts +1 -1
  21. package/dist/domains/test-generation/generators/base-test-generator.js +11 -11
  22. package/dist/domains/test-generation/generators/go-test-generator.js +12 -12
  23. package/dist/domains/test-generation/generators/junit5-generator.js +9 -9
  24. package/dist/domains/test-generation/generators/kotlin-junit-generator.js +10 -10
  25. package/dist/domains/test-generation/generators/pytest-generator.js +8 -8
  26. package/dist/domains/test-generation/generators/swift-testing-generator.js +8 -8
  27. package/dist/domains/test-generation/generators/test-value-helpers.d.ts +20 -0
  28. package/dist/domains/test-generation/generators/test-value-helpers.js +48 -0
  29. package/dist/domains/test-generation/generators/xunit-generator.js +11 -11
  30. package/dist/index.d.ts +1 -1
  31. package/dist/index.js +1 -2
  32. package/dist/init/init-wizard-hooks.js +15 -1
  33. package/dist/init/orchestrator.js +1 -0
  34. package/dist/init/phases/07-hooks.js +2 -2
  35. package/dist/init/phases/08-mcp.js +4 -4
  36. package/dist/init/phases/phase-interface.d.ts +3 -1
  37. package/dist/init/settings-merge.js +3 -7
  38. package/dist/mcp/bundle.js +327 -327
  39. package/dist/mcp/http-server.js +4 -1
  40. package/dist/mcp/index.d.ts +2 -2
  41. package/dist/mcp/index.js +5 -4
  42. package/dist/mcp/protocol-server.d.ts +5 -0
  43. package/dist/mcp/protocol-server.js +10 -1
  44. package/package.json +1 -1
  45. package/dist/mcp/server.d.ts +0 -46
  46. package/dist/mcp/server.js +0 -802
@@ -26,16 +26,19 @@ Guide the use of v3's code intelligence capabilities including knowledge graph c
26
26
 
27
27
  ```bash
28
28
  # Index codebase into knowledge graph
29
- aqe kg index --source src/ --incremental
29
+ aqe code index src/ --incremental
30
30
 
31
31
  # Semantic code search
32
- aqe kg search "authentication middleware" --limit 10
32
+ aqe code search "authentication middleware"
33
33
 
34
- # Query dependencies
35
- aqe kg deps --file src/services/UserService.ts --depth 3
34
+ # Analyze change impact
35
+ aqe code impact src/services/UserService.ts --depth 3
36
36
 
37
- # Get intelligent context
38
- aqe kg context --query "how does payment processing work"
37
+ # Map dependencies
38
+ aqe code deps src/
39
+
40
+ # Analyze complexity and find hotspots
41
+ aqe code complexity src/
39
42
  ```
40
43
 
41
44
  ## Agent Workflow
@@ -49,7 +52,7 @@ Task("Index codebase", `
49
52
  - Map relationships (imports, calls, inheritance)
50
53
  - Generate embeddings for semantic search
51
54
  Store in AgentDB vector database.
52
- `, "qe-knowledge-graph")
55
+ `, "qe-kg-builder")
53
56
 
54
57
  // Semantic search
55
58
  Task("Find relevant code", `
@@ -58,7 +61,7 @@ Task("Find relevant code", `
58
61
  - Include related functions and types
59
62
  - Rank by relevance score
60
63
  - Return with minimal context (80% token reduction)
61
- `, "qe-semantic-searcher")
64
+ `, "qe-code-intelligence")
62
65
  ```
63
66
 
64
67
  ## Knowledge Graph Operations
@@ -192,19 +195,25 @@ interface SearchResult {
192
195
 
193
196
  ```bash
194
197
  # Full reindex
195
- aqe kg index --source src/ --force
198
+ aqe code index src/
199
+
200
+ # Incremental index (changed files only)
201
+ aqe code index src/ --incremental
196
202
 
197
- # Search with filters
198
- aqe kg search "database connection" --type function --file "*.service.ts"
203
+ # Index only files changed since a git ref
204
+ aqe code index . --git-since HEAD~5
205
+
206
+ # Semantic code search
207
+ aqe code search "database connection"
199
208
 
200
- # Show entity details
201
- aqe kg show --entity UserService --relations
209
+ # Change impact analysis
210
+ aqe code impact src/services/UserService.ts
202
211
 
203
- # Export graph
204
- aqe kg export --format dot --output codebase.dot
212
+ # Dependency mapping
213
+ aqe code deps src/ --depth 5
205
214
 
206
- # Statistics
207
- aqe kg stats
215
+ # Complexity metrics and hotspots
216
+ aqe code complexity src/ --format json
208
217
  ```
209
218
 
210
219
  ## Gotchas
@@ -213,10 +222,10 @@ aqe kg stats
213
222
  - Knowledge graph construction fails on repos >50K LOC — scope to specific modules
214
223
  - Semantic search returns irrelevant results without domain-specific embeddings — always verify search results manually
215
224
  - Agent claims "80% token reduction" but may skip critical context — verify key files are included in results
216
- - Fleet must be initialized before using: run `npx ruflo doctor --fix` if you get initialization errors
225
+ - Fleet must be initialized before using: run `aqe health` to diagnose, or `aqe init` to re-initialize if you get initialization errors
217
226
 
218
227
  ## Coordination
219
228
 
220
- **Primary Agents**: qe-knowledge-graph, qe-semantic-searcher, qe-dependency-mapper
221
- **Coordinator**: qe-code-intelligence-coordinator
229
+ **Primary Agents**: qe-kg-builder, qe-dependency-mapper, qe-impact-analyzer, qe-code-complexity
230
+ **Coordinator**: qe-code-intelligence
222
231
  **Related Skills**: qe-test-generation, qe-defect-intelligence
@@ -50,8 +50,8 @@ mcp_integration:
50
50
  target_agents:
51
51
  - qe-learning-coordinator
52
52
  - qe-queen-coordinator
53
- - qe-knowledge-graph
54
- - qe-semantic-searcher
53
+ - qe-code-intelligence
54
+ - qe-kg-builder
55
55
 
56
56
  # =============================================================================
57
57
  # ReasoningBank Learning Configuration
@@ -449,7 +449,7 @@ success_criteria:
449
449
  # =============================================================================
450
450
 
451
451
  metadata:
452
- author: "qe-knowledge-graph"
452
+ author: "qe-code-intelligence"
453
453
  created: "2026-02-02"
454
454
  last_updated: "2026-02-02"
455
455
  coverage_target: >
@@ -236,7 +236,7 @@ Read `run-history.json` before each run — alert if quality gate failed 3 of la
236
236
  - Completion theater: agent hardcoded version '3.0.0' instead of reading from package.json — verify actual values in output
237
237
  - Fix issues in priority waves (P0 → P1 → P2) with verification between each wave — don't fix everything in parallel
238
238
  - quality-assessment domain has 53.7% success rate — expect failures and have fallback
239
- - If HybridMemoryBackend initialization fails, run `npx ruflo doctor --fix` first
239
+ - If HybridMemoryBackend initialization fails, run `aqe health` to diagnose, or `aqe init` to re-initialize
240
240
 
241
241
  ## Coordination
242
242
 
@@ -151,7 +151,7 @@ quality_checks:
151
151
  - Components that pass unit tests individually may have zero integration wiring — always generate at least one integration test per module boundary
152
152
  - When generating tests for a new codebase, check which framework is installed (jest vs vitest vs mocha) — they have different mock APIs and Claude will use the wrong one
153
153
  - Completion theater: agent may claim "comprehensive tests generated" but leave stubs or hardcoded values — always run the generated tests before accepting
154
- - Fleet must be initialized before using QE agents: run `npx ruflo doctor --fix` if you get "Fleet not initialized"
154
+ - Fleet must be initialized before using QE agents: run `aqe health` to diagnose, or `aqe init` to re-initialize if you get "Fleet not initialized"
155
155
 
156
156
  ## Coordination
157
157
 
@@ -932,7 +932,7 @@
932
932
  },
933
933
  "metadata": {
934
934
  "generatedBy": "Agentic QE Fleet",
935
- "fleetVersion": "3.8.12",
935
+ "fleetVersion": "3.8.14",
936
936
  "manifestVersion": "1.3.0",
937
937
  "lastUpdated": "2026-02-04T00:00:00.000Z",
938
938
  "contributors": [
package/CHANGELOG.md CHANGED
@@ -5,6 +5,47 @@ All notable changes to the Agentic QE project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [3.8.14] - 2026-03-31
9
+
10
+ ### Fixed
11
+
12
+ - **Security: SQL injection in witness-chain LIMIT/OFFSET** — Parameterized LIMIT and OFFSET values in `getEntries()` query instead of string interpolation. Also handles offset-without-limit correctly via SQLite `LIMIT -1` idiom, and `limit=0` now properly returns zero rows.
13
+ - **Removed `@faker-js/faker` from 7 production generator files** — Replaced with lightweight `test-value-helpers.ts` using only `node:crypto`. Eliminates ~6 MB runtime dependency for npm consumers. Generators now work without devDependencies installed.
14
+ - **`aqe init` hook paths break from subfolders** — Adopted `CLAUDE_PROJECT_DIR` pattern so hook commands resolve correctly regardless of working directory.
15
+ - **Removed ruflo permissions from `aqe init`** — Only AQE-specific entries are injected into user settings; third-party tool permissions no longer leak in.
16
+ - **Dead MCP `server.ts` removed (911 lines)** — Eliminated unused dual-server divergence risk; production uses `MCPProtocolServer` via `entry.ts`.
17
+ - **CI publishes without test gate** — Added mandatory unit test pass gate to `npm-publish.yml`. Removed `continue-on-error` from `optimized-ci.yml` test steps.
18
+ - **ESLint broken in ESM project** — Renamed `.eslintrc.js` to `.eslintrc.cjs` for CommonJS compatibility.
19
+ - **Hardcoded version `3.0.0` in MCP servers** — `protocol-server.ts` and `http-server.ts` now read version dynamically from `package.json`.
20
+ - **Vitest process hang on native modules** — Added worker-level `afterAll` force-exit and global teardown safety net for `better-sqlite3` / `hnswlib-node` handles.
21
+
22
+ ### Added
23
+
24
+ - **`test-value-helpers.ts`** — Zero-dependency test data generator for test-generation domain using `node:crypto` built-ins with range guards for edge cases.
25
+ - **Pagination edge case tests** — `limit=0`, offset-without-limit, and offset-beyond-total coverage in witness-chain tests.
26
+ - **17 unit tests for test-value-helpers** — Covers all value generators including boundary inputs and inverted ranges.
27
+
28
+ ## [3.8.13] - 2026-03-30
29
+
30
+ ### Added
31
+
32
+ - **Code intelligence CLI commands** — New `aqe code complexity` action with cyclomatic, cognitive, and Halstead metrics, hotspot detection, and JSON output. New `--incremental` and `--git-since <ref>` flags for `aqe code index` enabling git-aware incremental indexing.
33
+ - **Code intelligence section in README** — CLI Reference now documents all 7 `aqe code` commands with usage examples.
34
+
35
+ ### Fixed
36
+
37
+ - **Security: command injection in `--git-since`** — Replaced `execSync` with `execFileSync` to prevent shell injection via user-supplied git refs (CWE-78).
38
+ - **Control flow bug in complexity action** — Added missing `return` after `cleanupAndExit()` calls that could cause null-pointer crashes.
39
+ - **Stale CLI references across 20 files** — Replaced non-existent `aqe kg` commands with correct `aqe code` syntax in all skill files, eval configs, docs, and catalogs. Fixed phantom agent names (`qe-knowledge-graph`, `qe-semantic-searcher`) with actual agents (`qe-kg-builder`, `qe-code-intelligence`, `qe-impact-analyzer`, `qe-code-complexity`). Replaced `ruflo doctor --fix` with `aqe health` / `aqe init` across CLAUDE.md, skills, and docs.
40
+ - **`aqe init` MCP server setup** — Restored MCP server initialization as default behavior during `aqe init --auto`.
41
+ - **Tool-scoping tests** — Added `hypergraph_query` to all 5 scoped agent roles to match source of truth. Fixed queen-dependency test expectations for agents without inline MCP references.
42
+ - **`--depth` validation** — Now validates the `--depth` flag is a positive integer instead of silently passing `NaN`.
43
+
44
+ ### Changed
45
+
46
+ - **Batched complexity analysis** — File analysis uses `Promise.all` with batch size of 8 instead of sequential processing.
47
+ - **Shared source extensions** — Exported `SOURCE_EXTENSIONS` from `file-discovery.ts` to prevent divergence between full scan and `--git-since` paths.
48
+
8
49
  ## [3.8.12] - 2026-03-29
9
50
 
10
51
  ### Added
package/README.md CHANGED
@@ -244,6 +244,15 @@ aqe learning dream # Trigger dream cycle
244
244
  aqe brain export/import # Portable intelligence
245
245
  aqe platform list/setup/verify # Manage coding agent platforms
246
246
  aqe health # System health check
247
+
248
+ # Code intelligence
249
+ aqe code index src/ # Index codebase into knowledge graph
250
+ aqe code index src/ --incremental # Incremental index (changed files only)
251
+ aqe code index . --git-since HEAD~5 # Index files changed in last 5 commits
252
+ aqe code search "authentication" # Semantic code search
253
+ aqe code impact src/ # Change impact analysis
254
+ aqe code deps src/ # Dependency mapping
255
+ aqe code complexity src/ # Complexity metrics and hotspots
247
256
  ```
248
257
 
249
258
  ---
@@ -26,16 +26,19 @@ Guide the use of v3's code intelligence capabilities including knowledge graph c
26
26
 
27
27
  ```bash
28
28
  # Index codebase into knowledge graph
29
- aqe kg index --source src/ --incremental
29
+ aqe code index src/ --incremental
30
30
 
31
31
  # Semantic code search
32
- aqe kg search "authentication middleware" --limit 10
32
+ aqe code search "authentication middleware"
33
33
 
34
- # Query dependencies
35
- aqe kg deps --file src/services/UserService.ts --depth 3
34
+ # Analyze change impact
35
+ aqe code impact src/services/UserService.ts --depth 3
36
36
 
37
- # Get intelligent context
38
- aqe kg context --query "how does payment processing work"
37
+ # Map dependencies
38
+ aqe code deps src/
39
+
40
+ # Analyze complexity and find hotspots
41
+ aqe code complexity src/
39
42
  ```
40
43
 
41
44
  ## Agent Workflow
@@ -49,7 +52,7 @@ Task("Index codebase", `
49
52
  - Map relationships (imports, calls, inheritance)
50
53
  - Generate embeddings for semantic search
51
54
  Store in AgentDB vector database.
52
- `, "qe-knowledge-graph")
55
+ `, "qe-kg-builder")
53
56
 
54
57
  // Semantic search
55
58
  Task("Find relevant code", `
@@ -58,7 +61,7 @@ Task("Find relevant code", `
58
61
  - Include related functions and types
59
62
  - Rank by relevance score
60
63
  - Return with minimal context (80% token reduction)
61
- `, "qe-semantic-searcher")
64
+ `, "qe-code-intelligence")
62
65
  ```
63
66
 
64
67
  ## Knowledge Graph Operations
@@ -192,19 +195,25 @@ interface SearchResult {
192
195
 
193
196
  ```bash
194
197
  # Full reindex
195
- aqe kg index --source src/ --force
198
+ aqe code index src/
199
+
200
+ # Incremental index (changed files only)
201
+ aqe code index src/ --incremental
196
202
 
197
- # Search with filters
198
- aqe kg search "database connection" --type function --file "*.service.ts"
203
+ # Index only files changed since a git ref
204
+ aqe code index . --git-since HEAD~5
205
+
206
+ # Semantic code search
207
+ aqe code search "database connection"
199
208
 
200
- # Show entity details
201
- aqe kg show --entity UserService --relations
209
+ # Change impact analysis
210
+ aqe code impact src/services/UserService.ts
202
211
 
203
- # Export graph
204
- aqe kg export --format dot --output codebase.dot
212
+ # Dependency mapping
213
+ aqe code deps src/ --depth 5
205
214
 
206
- # Statistics
207
- aqe kg stats
215
+ # Complexity metrics and hotspots
216
+ aqe code complexity src/ --format json
208
217
  ```
209
218
 
210
219
  ## Gotchas
@@ -213,10 +222,10 @@ aqe kg stats
213
222
  - Knowledge graph construction fails on repos >50K LOC — scope to specific modules
214
223
  - Semantic search returns irrelevant results without domain-specific embeddings — always verify search results manually
215
224
  - Agent claims "80% token reduction" but may skip critical context — verify key files are included in results
216
- - Fleet must be initialized before using: run `npx ruflo doctor --fix` if you get initialization errors
225
+ - Fleet must be initialized before using: run `aqe health` to diagnose, or `aqe init` to re-initialize if you get initialization errors
217
226
 
218
227
  ## Coordination
219
228
 
220
- **Primary Agents**: qe-knowledge-graph, qe-semantic-searcher, qe-dependency-mapper
221
- **Coordinator**: qe-code-intelligence-coordinator
229
+ **Primary Agents**: qe-kg-builder, qe-dependency-mapper, qe-impact-analyzer, qe-code-complexity
230
+ **Coordinator**: qe-code-intelligence
222
231
  **Related Skills**: qe-test-generation, qe-defect-intelligence
@@ -50,8 +50,8 @@ mcp_integration:
50
50
  target_agents:
51
51
  - qe-learning-coordinator
52
52
  - qe-queen-coordinator
53
- - qe-knowledge-graph
54
- - qe-semantic-searcher
53
+ - qe-code-intelligence
54
+ - qe-kg-builder
55
55
 
56
56
  # =============================================================================
57
57
  # ReasoningBank Learning Configuration
@@ -449,7 +449,7 @@ success_criteria:
449
449
  # =============================================================================
450
450
 
451
451
  metadata:
452
- author: "qe-knowledge-graph"
452
+ author: "qe-code-intelligence"
453
453
  created: "2026-02-02"
454
454
  last_updated: "2026-02-02"
455
455
  coverage_target: >
@@ -236,7 +236,7 @@ Read `run-history.json` before each run — alert if quality gate failed 3 of la
236
236
  - Completion theater: agent hardcoded version '3.0.0' instead of reading from package.json — verify actual values in output
237
237
  - Fix issues in priority waves (P0 → P1 → P2) with verification between each wave — don't fix everything in parallel
238
238
  - quality-assessment domain has 53.7% success rate — expect failures and have fallback
239
- - If HybridMemoryBackend initialization fails, run `npx ruflo doctor --fix` first
239
+ - If HybridMemoryBackend initialization fails, run `aqe health` to diagnose, or `aqe init` to re-initialize
240
240
 
241
241
  ## Coordination
242
242
 
@@ -151,7 +151,7 @@ quality_checks:
151
151
  - Components that pass unit tests individually may have zero integration wiring — always generate at least one integration test per module boundary
152
152
  - When generating tests for a new codebase, check which framework is installed (jest vs vitest vs mocha) — they have different mock APIs and Claude will use the wrong one
153
153
  - Completion theater: agent may claim "comprehensive tests generated" but leave stubs or hardcoded values — always run the generated tests before accepting
154
- - Fleet must be initialized before using QE agents: run `npx ruflo doctor --fix` if you get "Fleet not initialized"
154
+ - Fleet must be initialized before using QE agents: run `aqe health` to diagnose, or `aqe init` to re-initialize if you get "Fleet not initialized"
155
155
 
156
156
  ## Coordination
157
157
 
@@ -190,9 +190,21 @@ export class WitnessChain {
190
190
  params.push(filter.actor);
191
191
  }
192
192
  const where = conditions.length > 0 ? `WHERE ${conditions.join(' AND ')}` : '';
193
- const limit = filter?.limit ? `LIMIT ${filter.limit}` : '';
194
- const offset = filter?.offset ? `OFFSET ${filter.offset}` : '';
195
- return this.db.prepare(`SELECT * FROM witness_chain ${where} ORDER BY id ASC ${limit} ${offset}`).all(...params);
193
+ const hasLimit = filter?.limit != null;
194
+ const hasOffset = filter?.offset != null;
195
+ // SQLite requires LIMIT before OFFSET; use LIMIT -1 ("all rows") when only offset is given
196
+ const limitClause = hasLimit ? 'LIMIT ?' : (hasOffset ? 'LIMIT ?' : '');
197
+ const offsetClause = hasOffset ? 'OFFSET ?' : '';
198
+ if (hasLimit) {
199
+ params.push(filter.limit);
200
+ }
201
+ else if (hasOffset) {
202
+ params.push(-1);
203
+ }
204
+ if (hasOffset) {
205
+ params.push(filter.offset);
206
+ }
207
+ return this.db.prepare(`SELECT * FROM witness_chain ${where} ORDER BY id ASC ${limitClause} ${offsetClause}`).all(...params);
196
208
  }
197
209
  /** Get all witness entries for a pattern by ID (checks both patternId and pattern_id keys). */
198
210
  getPatternLineage(patternId) {