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.
- package/.claude/skills/qe-code-intelligence/SKILL.md +29 -20
- package/.claude/skills/qe-code-intelligence/evals/qe-code-intelligence.yaml +3 -3
- package/.claude/skills/qe-quality-assessment/SKILL.md +1 -1
- package/.claude/skills/qe-test-generation/SKILL.md +1 -1
- package/.claude/skills/skills-manifest.json +1 -1
- package/CHANGELOG.md +41 -0
- package/README.md +9 -0
- package/assets/skills/qe-code-intelligence/SKILL.md +29 -20
- package/assets/skills/qe-code-intelligence/evals/qe-code-intelligence.yaml +3 -3
- package/assets/skills/qe-quality-assessment/SKILL.md +1 -1
- package/assets/skills/qe-test-generation/SKILL.md +1 -1
- package/dist/audit/witness-chain.js +15 -3
- package/dist/cli/bundle.js +815 -795
- package/dist/cli/commands/code.js +149 -11
- package/dist/cli/commands/init.js +3 -2
- package/dist/cli/handlers/init-handler.d.ts +1 -0
- package/dist/cli/handlers/init-handler.js +15 -10
- package/dist/cli/utils/file-discovery.d.ts +1 -0
- package/dist/cli/utils/file-discovery.js +1 -1
- package/dist/domains/test-generation/generators/base-test-generator.d.ts +1 -1
- package/dist/domains/test-generation/generators/base-test-generator.js +11 -11
- package/dist/domains/test-generation/generators/go-test-generator.js +12 -12
- package/dist/domains/test-generation/generators/junit5-generator.js +9 -9
- package/dist/domains/test-generation/generators/kotlin-junit-generator.js +10 -10
- package/dist/domains/test-generation/generators/pytest-generator.js +8 -8
- package/dist/domains/test-generation/generators/swift-testing-generator.js +8 -8
- package/dist/domains/test-generation/generators/test-value-helpers.d.ts +20 -0
- package/dist/domains/test-generation/generators/test-value-helpers.js +48 -0
- package/dist/domains/test-generation/generators/xunit-generator.js +11 -11
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -2
- package/dist/init/init-wizard-hooks.js +15 -1
- package/dist/init/orchestrator.js +1 -0
- package/dist/init/phases/07-hooks.js +2 -2
- package/dist/init/phases/08-mcp.js +4 -4
- package/dist/init/phases/phase-interface.d.ts +3 -1
- package/dist/init/settings-merge.js +3 -7
- package/dist/mcp/bundle.js +327 -327
- package/dist/mcp/http-server.js +4 -1
- package/dist/mcp/index.d.ts +2 -2
- package/dist/mcp/index.js +5 -4
- package/dist/mcp/protocol-server.d.ts +5 -0
- package/dist/mcp/protocol-server.js +10 -1
- package/package.json +1 -1
- package/dist/mcp/server.d.ts +0 -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
|
|
29
|
+
aqe code index src/ --incremental
|
|
30
30
|
|
|
31
31
|
# Semantic code search
|
|
32
|
-
aqe
|
|
32
|
+
aqe code search "authentication middleware"
|
|
33
33
|
|
|
34
|
-
#
|
|
35
|
-
aqe
|
|
34
|
+
# Analyze change impact
|
|
35
|
+
aqe code impact src/services/UserService.ts --depth 3
|
|
36
36
|
|
|
37
|
-
#
|
|
38
|
-
aqe
|
|
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-
|
|
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-
|
|
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
|
|
198
|
+
aqe code index src/
|
|
199
|
+
|
|
200
|
+
# Incremental index (changed files only)
|
|
201
|
+
aqe code index src/ --incremental
|
|
196
202
|
|
|
197
|
-
#
|
|
198
|
-
aqe
|
|
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
|
-
#
|
|
201
|
-
aqe
|
|
209
|
+
# Change impact analysis
|
|
210
|
+
aqe code impact src/services/UserService.ts
|
|
202
211
|
|
|
203
|
-
#
|
|
204
|
-
aqe
|
|
212
|
+
# Dependency mapping
|
|
213
|
+
aqe code deps src/ --depth 5
|
|
205
214
|
|
|
206
|
-
#
|
|
207
|
-
aqe
|
|
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 `
|
|
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-
|
|
221
|
-
**Coordinator**: qe-code-intelligence
|
|
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-
|
|
54
|
-
- qe-
|
|
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-
|
|
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 `
|
|
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 `
|
|
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
|
|
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
|
|
29
|
+
aqe code index src/ --incremental
|
|
30
30
|
|
|
31
31
|
# Semantic code search
|
|
32
|
-
aqe
|
|
32
|
+
aqe code search "authentication middleware"
|
|
33
33
|
|
|
34
|
-
#
|
|
35
|
-
aqe
|
|
34
|
+
# Analyze change impact
|
|
35
|
+
aqe code impact src/services/UserService.ts --depth 3
|
|
36
36
|
|
|
37
|
-
#
|
|
38
|
-
aqe
|
|
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-
|
|
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-
|
|
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
|
|
198
|
+
aqe code index src/
|
|
199
|
+
|
|
200
|
+
# Incremental index (changed files only)
|
|
201
|
+
aqe code index src/ --incremental
|
|
196
202
|
|
|
197
|
-
#
|
|
198
|
-
aqe
|
|
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
|
-
#
|
|
201
|
-
aqe
|
|
209
|
+
# Change impact analysis
|
|
210
|
+
aqe code impact src/services/UserService.ts
|
|
202
211
|
|
|
203
|
-
#
|
|
204
|
-
aqe
|
|
212
|
+
# Dependency mapping
|
|
213
|
+
aqe code deps src/ --depth 5
|
|
205
214
|
|
|
206
|
-
#
|
|
207
|
-
aqe
|
|
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 `
|
|
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-
|
|
221
|
-
**Coordinator**: qe-code-intelligence
|
|
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-
|
|
54
|
-
- qe-
|
|
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-
|
|
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 `
|
|
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 `
|
|
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
|
|
194
|
-
const
|
|
195
|
-
|
|
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) {
|