agentic-qe 3.8.7 → 3.8.8

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 (216) hide show
  1. package/.claude/agents/n8n/n8n-base-agent.md +4 -35
  2. package/.claude/agents/n8n/n8n-bdd-scenario-tester.md +4 -25
  3. package/.claude/agents/n8n/n8n-chaos-tester.md +4 -26
  4. package/.claude/agents/n8n/n8n-ci-orchestrator.md +4 -27
  5. package/.claude/agents/n8n/n8n-compliance-validator.md +4 -25
  6. package/.claude/agents/n8n/n8n-expression-validator.md +4 -25
  7. package/.claude/agents/n8n/n8n-integration-test.md +4 -27
  8. package/.claude/agents/n8n/n8n-monitoring-validator.md +4 -26
  9. package/.claude/agents/n8n/n8n-node-validator.md +4 -25
  10. package/.claude/agents/n8n/n8n-performance-tester.md +4 -29
  11. package/.claude/agents/n8n/n8n-security-auditor.md +4 -26
  12. package/.claude/agents/n8n/n8n-trigger-test.md +4 -27
  13. package/.claude/agents/n8n/n8n-unit-tester.md +4 -25
  14. package/.claude/agents/n8n/n8n-version-comparator.md +4 -26
  15. package/.claude/agents/n8n/n8n-workflow-executor.md +4 -26
  16. package/.claude/agents/v3/qe-accessibility-auditor.md +21 -55
  17. package/.claude/agents/v3/qe-bdd-generator.md +23 -58
  18. package/.claude/agents/v3/qe-chaos-engineer.md +21 -54
  19. package/.claude/agents/v3/qe-code-complexity.md +21 -54
  20. package/.claude/agents/v3/qe-code-intelligence.md +21 -54
  21. package/.claude/agents/v3/qe-contract-validator.md +21 -53
  22. package/.claude/agents/v3/qe-coverage-specialist.md +23 -79
  23. package/.claude/agents/v3/qe-defect-predictor.md +23 -76
  24. package/.claude/agents/v3/qe-dependency-mapper.md +21 -53
  25. package/.claude/agents/v3/qe-deployment-advisor.md +21 -54
  26. package/.claude/agents/v3/qe-devils-advocate.md +212 -238
  27. package/.claude/agents/v3/qe-flaky-hunter.md +21 -53
  28. package/.claude/agents/v3/qe-fleet-commander.md +21 -54
  29. package/.claude/agents/v3/qe-gap-detector.md +23 -79
  30. package/.claude/agents/v3/qe-graphql-tester.md +21 -54
  31. package/.claude/agents/v3/qe-impact-analyzer.md +21 -53
  32. package/.claude/agents/v3/qe-integration-architect.md +2 -2
  33. package/.claude/agents/v3/qe-integration-tester.md +15 -36
  34. package/.claude/agents/v3/qe-kg-builder.md +21 -53
  35. package/.claude/agents/v3/qe-learning-coordinator.md +21 -51
  36. package/.claude/agents/v3/qe-load-tester.md +21 -55
  37. package/.claude/agents/v3/qe-message-broker-tester.md +345 -385
  38. package/.claude/agents/v3/qe-metrics-optimizer.md +21 -54
  39. package/.claude/agents/v3/qe-middleware-validator.md +389 -428
  40. package/.claude/agents/v3/qe-mutation-tester.md +21 -54
  41. package/.claude/agents/v3/qe-odata-contract-tester.md +443 -489
  42. package/.claude/agents/v3/qe-parallel-executor.md +21 -52
  43. package/.claude/agents/v3/qe-pattern-learner.md +23 -70
  44. package/.claude/agents/v3/qe-pentest-validator.md +322 -359
  45. package/.claude/agents/v3/qe-performance-tester.md +21 -54
  46. package/.claude/agents/v3/qe-product-factors-assessor.md +339 -376
  47. package/.claude/agents/v3/qe-property-tester.md +21 -53
  48. package/.claude/agents/v3/qe-quality-criteria-recommender.md +379 -410
  49. package/.claude/agents/v3/qe-quality-gate.md +17 -64
  50. package/.claude/agents/v3/qe-queen-coordinator.md +71 -121
  51. package/.claude/agents/v3/qe-qx-partner.md +23 -64
  52. package/.claude/agents/v3/qe-regression-analyzer.md +21 -54
  53. package/.claude/agents/v3/qe-requirements-validator.md +23 -66
  54. package/.claude/agents/v3/qe-responsive-tester.md +21 -54
  55. package/.claude/agents/v3/qe-retry-handler.md +21 -53
  56. package/.claude/agents/v3/qe-risk-assessor.md +23 -58
  57. package/.claude/agents/v3/qe-root-cause-analyzer.md +21 -53
  58. package/.claude/agents/v3/qe-sap-idoc-tester.md +371 -412
  59. package/.claude/agents/v3/qe-sap-rfc-tester.md +323 -362
  60. package/.claude/agents/v3/qe-security-auditor.md +21 -54
  61. package/.claude/agents/v3/qe-security-scanner.md +21 -58
  62. package/.claude/agents/v3/qe-soap-tester.md +307 -345
  63. package/.claude/agents/v3/qe-sod-analyzer.md +486 -533
  64. package/.claude/agents/v3/qe-tdd-specialist.md +17 -42
  65. package/.claude/agents/v3/qe-test-architect.md +23 -58
  66. package/.claude/agents/v3/qe-test-idea-rewriter.md +351 -375
  67. package/.claude/agents/v3/qe-transfer-specialist.md +21 -55
  68. package/.claude/agents/v3/qe-visual-tester.md +15 -37
  69. package/.claude/agents/v3/subagents/qe-code-reviewer.md +21 -54
  70. package/.claude/agents/v3/subagents/qe-integration-reviewer.md +21 -54
  71. package/.claude/agents/v3/subagents/qe-performance-reviewer.md +21 -54
  72. package/.claude/agents/v3/subagents/qe-security-reviewer.md +21 -54
  73. package/.claude/agents/v3/subagents/qe-tdd-green.md +21 -53
  74. package/.claude/agents/v3/subagents/qe-tdd-red.md +21 -53
  75. package/.claude/agents/v3/subagents/qe-tdd-refactor.md +21 -53
  76. package/.claude/skills/.validation/schemas/skill-eval.schema.json +5 -5
  77. package/.claude/skills/.validation/skill-validation-mcp-integration.md +32 -81
  78. package/.claude/skills/agentic-quality-engineering/SKILL.md +31 -60
  79. package/.claude/skills/iterative-loop/SKILL.md +2 -2
  80. package/.claude/skills/pair-programming/SKILL.md +2 -2
  81. package/.claude/skills/performance-testing/SKILL.md +1 -1
  82. package/.claude/skills/qcsd-cicd-swarm/steps/01-flag-detection.md +2 -2
  83. package/.claude/skills/qcsd-cicd-swarm/steps/07-learning-persistence.md +6 -6
  84. package/.claude/skills/qcsd-development-swarm/steps/01-flag-detection.md +2 -2
  85. package/.claude/skills/qcsd-development-swarm/steps/07-learning-persistence.md +6 -6
  86. package/.claude/skills/qcsd-ideation-swarm/steps/07-learning-persistence.md +6 -6
  87. package/.claude/skills/qcsd-production-swarm/steps/01-flag-detection.md +202 -206
  88. package/.claude/skills/qcsd-production-swarm/steps/07-learning-persistence.md +157 -185
  89. package/.claude/skills/qcsd-refinement-swarm/steps/01-flag-detection.md +87 -91
  90. package/.claude/skills/qcsd-refinement-swarm/steps/07-learning-persistence.md +49 -53
  91. package/.claude/skills/qe-chaos-resilience/SKILL.md +2 -2
  92. package/.claude/skills/qe-code-intelligence/SKILL.md +2 -2
  93. package/.claude/skills/qe-coverage-analysis/SKILL.md +2 -2
  94. package/.claude/skills/qe-defect-intelligence/SKILL.md +2 -2
  95. package/.claude/skills/qe-iterative-loop/SKILL.md +12 -12
  96. package/.claude/skills/qe-learning-optimization/SKILL.md +2 -2
  97. package/.claude/skills/qe-quality-assessment/SKILL.md +2 -2
  98. package/.claude/skills/qe-requirements-validation/SKILL.md +2 -2
  99. package/.claude/skills/qe-test-execution/SKILL.md +2 -2
  100. package/.claude/skills/qe-test-generation/SKILL.md +2 -2
  101. package/.claude/skills/qe-visual-accessibility/SKILL.md +2 -2
  102. package/.claude/skills/quality-metrics/SKILL.md +1 -1
  103. package/.claude/skills/security-testing/SKILL.md +1 -1
  104. package/.claude/skills/skills-manifest.json +1 -1
  105. package/.claude/skills/validation-pipeline/SKILL.md +2 -2
  106. package/.claude/skills/verification-quality/SKILL.md +2 -2
  107. package/CHANGELOG.md +15 -0
  108. package/assets/agents/v3/qe-accessibility-auditor.md +21 -55
  109. package/assets/agents/v3/qe-bdd-generator.md +23 -58
  110. package/assets/agents/v3/qe-chaos-engineer.md +21 -54
  111. package/assets/agents/v3/qe-code-complexity.md +21 -54
  112. package/assets/agents/v3/qe-code-intelligence.md +21 -54
  113. package/assets/agents/v3/qe-contract-validator.md +21 -53
  114. package/assets/agents/v3/qe-coverage-specialist.md +23 -79
  115. package/assets/agents/v3/qe-defect-predictor.md +23 -76
  116. package/assets/agents/v3/qe-dependency-mapper.md +21 -53
  117. package/assets/agents/v3/qe-deployment-advisor.md +21 -54
  118. package/assets/agents/v3/qe-devils-advocate.md +212 -238
  119. package/assets/agents/v3/qe-flaky-hunter.md +21 -53
  120. package/assets/agents/v3/qe-fleet-commander.md +21 -54
  121. package/assets/agents/v3/qe-gap-detector.md +23 -79
  122. package/assets/agents/v3/qe-graphql-tester.md +21 -54
  123. package/assets/agents/v3/qe-impact-analyzer.md +21 -53
  124. package/assets/agents/v3/qe-integration-architect.md +2 -2
  125. package/assets/agents/v3/qe-integration-tester.md +15 -36
  126. package/assets/agents/v3/qe-kg-builder.md +21 -53
  127. package/assets/agents/v3/qe-learning-coordinator.md +21 -51
  128. package/assets/agents/v3/qe-load-tester.md +21 -55
  129. package/assets/agents/v3/qe-message-broker-tester.md +345 -385
  130. package/assets/agents/v3/qe-metrics-optimizer.md +21 -54
  131. package/assets/agents/v3/qe-middleware-validator.md +389 -428
  132. package/assets/agents/v3/qe-mutation-tester.md +21 -54
  133. package/assets/agents/v3/qe-odata-contract-tester.md +443 -489
  134. package/assets/agents/v3/qe-parallel-executor.md +21 -52
  135. package/assets/agents/v3/qe-pattern-learner.md +23 -70
  136. package/assets/agents/v3/qe-pentest-validator.md +322 -359
  137. package/assets/agents/v3/qe-performance-tester.md +21 -54
  138. package/assets/agents/v3/qe-product-factors-assessor.md +339 -376
  139. package/assets/agents/v3/qe-property-tester.md +21 -53
  140. package/assets/agents/v3/qe-quality-criteria-recommender.md +379 -410
  141. package/assets/agents/v3/qe-quality-gate.md +17 -64
  142. package/assets/agents/v3/qe-queen-coordinator.md +71 -121
  143. package/assets/agents/v3/qe-qx-partner.md +23 -64
  144. package/assets/agents/v3/qe-regression-analyzer.md +21 -54
  145. package/assets/agents/v3/qe-requirements-validator.md +23 -66
  146. package/assets/agents/v3/qe-responsive-tester.md +21 -54
  147. package/assets/agents/v3/qe-retry-handler.md +21 -53
  148. package/assets/agents/v3/qe-risk-assessor.md +23 -58
  149. package/assets/agents/v3/qe-root-cause-analyzer.md +21 -53
  150. package/assets/agents/v3/qe-sap-idoc-tester.md +371 -412
  151. package/assets/agents/v3/qe-sap-rfc-tester.md +323 -362
  152. package/assets/agents/v3/qe-security-auditor.md +21 -54
  153. package/assets/agents/v3/qe-security-scanner.md +21 -58
  154. package/assets/agents/v3/qe-soap-tester.md +307 -345
  155. package/assets/agents/v3/qe-sod-analyzer.md +486 -533
  156. package/assets/agents/v3/qe-tdd-specialist.md +17 -42
  157. package/assets/agents/v3/qe-test-architect.md +23 -58
  158. package/assets/agents/v3/qe-test-idea-rewriter.md +351 -375
  159. package/assets/agents/v3/qe-transfer-specialist.md +21 -55
  160. package/assets/agents/v3/qe-visual-tester.md +15 -37
  161. package/assets/agents/v3/subagents/qe-code-reviewer.md +21 -54
  162. package/assets/agents/v3/subagents/qe-integration-reviewer.md +21 -54
  163. package/assets/agents/v3/subagents/qe-performance-reviewer.md +21 -54
  164. package/assets/agents/v3/subagents/qe-security-reviewer.md +21 -54
  165. package/assets/agents/v3/subagents/qe-tdd-green.md +21 -53
  166. package/assets/agents/v3/subagents/qe-tdd-red.md +21 -53
  167. package/assets/agents/v3/subagents/qe-tdd-refactor.md +21 -53
  168. package/assets/grammars/tree-sitter-c_sharp.wasm +0 -0
  169. package/assets/grammars/tree-sitter-java.wasm +0 -0
  170. package/assets/grammars/tree-sitter-python.wasm +0 -0
  171. package/assets/grammars/tree-sitter-rust.wasm +0 -0
  172. package/assets/grammars/tree-sitter-swift.wasm +0 -0
  173. package/assets/skills/.validation/schemas/skill-eval.schema.json +5 -5
  174. package/assets/skills/.validation/skill-validation-mcp-integration.md +32 -81
  175. package/assets/skills/agentic-quality-engineering/SKILL.md +31 -60
  176. package/assets/skills/pair-programming/SKILL.md +2 -2
  177. package/assets/skills/performance-testing/SKILL.md +1 -1
  178. package/assets/skills/qcsd-cicd-swarm/steps/01-flag-detection.md +2 -2
  179. package/assets/skills/qcsd-cicd-swarm/steps/07-learning-persistence.md +6 -6
  180. package/assets/skills/qcsd-development-swarm/steps/01-flag-detection.md +2 -2
  181. package/assets/skills/qcsd-development-swarm/steps/07-learning-persistence.md +6 -6
  182. package/assets/skills/qcsd-ideation-swarm/steps/07-learning-persistence.md +6 -6
  183. package/assets/skills/qcsd-production-swarm/steps/01-flag-detection.md +202 -206
  184. package/assets/skills/qcsd-production-swarm/steps/07-learning-persistence.md +157 -185
  185. package/assets/skills/qcsd-refinement-swarm/steps/01-flag-detection.md +87 -91
  186. package/assets/skills/qcsd-refinement-swarm/steps/07-learning-persistence.md +49 -53
  187. package/assets/skills/qe-chaos-resilience/SKILL.md +2 -2
  188. package/assets/skills/qe-code-intelligence/SKILL.md +2 -2
  189. package/assets/skills/qe-coverage-analysis/SKILL.md +2 -2
  190. package/assets/skills/qe-defect-intelligence/SKILL.md +2 -2
  191. package/assets/skills/qe-iterative-loop/SKILL.md +12 -12
  192. package/assets/skills/qe-learning-optimization/SKILL.md +2 -2
  193. package/assets/skills/qe-quality-assessment/SKILL.md +2 -2
  194. package/assets/skills/qe-requirements-validation/SKILL.md +2 -2
  195. package/assets/skills/qe-test-execution/SKILL.md +2 -2
  196. package/assets/skills/qe-test-generation/SKILL.md +2 -2
  197. package/assets/skills/qe-visual-accessibility/SKILL.md +2 -2
  198. package/assets/skills/quality-metrics/SKILL.md +1 -1
  199. package/assets/skills/security-testing/SKILL.md +1 -1
  200. package/assets/skills/validation-pipeline/SKILL.md +2 -2
  201. package/assets/skills/verification-quality/SKILL.md +2 -2
  202. package/dist/cli/bundle.js +5168 -4631
  203. package/dist/cli/commands/init.js +2 -0
  204. package/dist/cli/commands/memory.d.ts +11 -0
  205. package/dist/cli/commands/memory.js +333 -0
  206. package/dist/cli/handlers/init-handler.d.ts +1 -0
  207. package/dist/cli/handlers/init-handler.js +18 -6
  208. package/dist/cli/index.js +2 -0
  209. package/dist/init/phases/08-mcp.js +10 -0
  210. package/dist/init/phases/phase-interface.d.ts +2 -0
  211. package/dist/mcp/bundle.js +1070 -1070
  212. package/dist/shared/parsers/multi-language-parser.d.ts +4 -1
  213. package/dist/shared/parsers/multi-language-parser.js +73 -1
  214. package/dist/shared/parsers/tree-sitter-wasm-parser.d.ts +32 -0
  215. package/dist/shared/parsers/tree-sitter-wasm-parser.js +1034 -0
  216. package/package.json +2 -1
@@ -41,6 +41,7 @@ export function createInitCommand() {
41
41
  .option('--with-codex', 'Include OpenAI Codex CLI MCP config and AGENTS.md')
42
42
  .option('--with-windsurf', 'Include Windsurf MCP config and rules')
43
43
  .option('--with-continuedev', 'Include Continue.dev MCP config and rules')
44
+ .option('--with-mcp', 'Include MCP server config in .mcp.json (opt-in — CLI works without MCP)')
44
45
  .option('--with-all-platforms', 'Include all coding agent platform configurations')
45
46
  .option('--with-claude-flow', 'Force Claude Flow integration setup')
46
47
  .option('--skip-claude-flow', 'Skip Claude Flow integration')
@@ -113,6 +114,7 @@ async function runInit(options) {
113
114
  withCodex: options.withCodex,
114
115
  withWindsurf: options.withWindsurf,
115
116
  withContinueDev: options.withContinuedev,
117
+ withMcp: options.withMcp,
116
118
  noGovernance: options.noGovernance,
117
119
  });
118
120
  // Run initialization
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Agentic QE v3 - Memory CLI Commands
3
+ *
4
+ * CLI interface for memory store/get/search/delete/share operations.
5
+ * Provides CLI parity with MCP memory_store, memory_retrieve, memory_query,
6
+ * memory_delete, and memory_share tools to reduce MCP dependency in agents/skills.
7
+ */
8
+ import { Command } from 'commander';
9
+ import type { CLIContext } from '../handlers/interfaces.js';
10
+ export declare function createMemoryCommand(context: CLIContext, cleanupAndExit: (code: number) => Promise<never>, ensureInitialized: () => Promise<boolean>): Command;
11
+ //# sourceMappingURL=memory.d.ts.map
@@ -0,0 +1,333 @@
1
+ /**
2
+ * Agentic QE v3 - Memory CLI Commands
3
+ *
4
+ * CLI interface for memory store/get/search/delete/share operations.
5
+ * Provides CLI parity with MCP memory_store, memory_retrieve, memory_query,
6
+ * memory_delete, and memory_share tools to reduce MCP dependency in agents/skills.
7
+ */
8
+ import { Command } from 'commander';
9
+ import chalk from 'chalk';
10
+ import { toErrorMessage } from '../../shared/error-utils.js';
11
+ export function createMemoryCommand(context, cleanupAndExit, ensureInitialized) {
12
+ const memory = new Command('memory')
13
+ .description('Memory store, retrieve, search, and delete operations')
14
+ .addHelpText('after', `
15
+ Examples:
16
+ # Store a value
17
+ aqe memory store --key "auth-pattern" --value "JWT with refresh tokens" --namespace patterns
18
+
19
+ # Retrieve a value
20
+ aqe memory get --key "auth-pattern" --namespace patterns
21
+
22
+ # Search by pattern (glob)
23
+ aqe memory search --pattern "auth*" --namespace patterns
24
+
25
+ # Search semantically (natural language)
26
+ aqe memory search --query "authentication patterns" --semantic
27
+
28
+ # List all entries in a namespace
29
+ aqe memory list --namespace patterns --limit 20
30
+
31
+ # Delete a key
32
+ aqe memory delete --key "auth-pattern" --namespace patterns
33
+
34
+ # Share knowledge between agents
35
+ aqe memory share --from agent-1 --to agent-2,agent-3 --domain testing --content '{"finding": "flaky"}'
36
+
37
+ # Show usage stats
38
+ aqe memory usage
39
+ `);
40
+ // ── store ──────────────────────────────────────────────────────────────
41
+ memory
42
+ .command('store')
43
+ .description('Store a key-value pair in memory')
44
+ .requiredOption('--key <key>', 'Memory key')
45
+ .requiredOption('--value <value>', 'Value to store (string or JSON)')
46
+ .option('--namespace <ns>', 'Namespace for grouping', 'default')
47
+ .option('--ttl <seconds>', 'Time-to-live in seconds')
48
+ .option('--json', 'Output as JSON')
49
+ .action(async (options) => {
50
+ if (!await ensureInitialized())
51
+ return;
52
+ try {
53
+ const { handleMemoryStore } = await import('../../mcp/handlers/memory-handlers.js');
54
+ // Try to parse value as JSON, otherwise store as string
55
+ let value = options.value;
56
+ try {
57
+ value = JSON.parse(options.value);
58
+ }
59
+ catch { /* keep as string */ }
60
+ const result = await handleMemoryStore({
61
+ key: options.key,
62
+ value,
63
+ namespace: options.namespace,
64
+ ttl: options.ttl ? parseInt(options.ttl, 10) : undefined,
65
+ });
66
+ if (options.json) {
67
+ console.log(JSON.stringify(result, null, 2));
68
+ }
69
+ else if (result.success) {
70
+ console.log(chalk.green(` ✓ Stored "${options.key}" in namespace "${options.namespace}"`));
71
+ }
72
+ else {
73
+ console.error(chalk.red(` ✗ ${result.error}`));
74
+ await cleanupAndExit(1);
75
+ }
76
+ }
77
+ catch (error) {
78
+ console.error(chalk.red(` Error: ${toErrorMessage(error)}`));
79
+ await cleanupAndExit(1);
80
+ }
81
+ });
82
+ // ── get ─────────────────────────────────────────────────────────────────
83
+ memory
84
+ .command('get')
85
+ .description('Retrieve a value by key')
86
+ .requiredOption('--key <key>', 'Memory key to retrieve')
87
+ .option('--namespace <ns>', 'Namespace', 'default')
88
+ .option('--include-metadata', 'Include metadata in response')
89
+ .option('--json', 'Output as JSON')
90
+ .action(async (options) => {
91
+ if (!await ensureInitialized())
92
+ return;
93
+ try {
94
+ const { handleMemoryRetrieve } = await import('../../mcp/handlers/memory-handlers.js');
95
+ const result = await handleMemoryRetrieve({
96
+ key: options.key,
97
+ namespace: options.namespace,
98
+ includeMetadata: options.includeMetadata,
99
+ });
100
+ if (options.json) {
101
+ console.log(JSON.stringify(result, null, 2));
102
+ }
103
+ else if (result.success && result.data) {
104
+ if (result.data.found) {
105
+ const val = typeof result.data.value === 'string'
106
+ ? result.data.value
107
+ : JSON.stringify(result.data.value, null, 2);
108
+ console.log(chalk.green(` ${options.key}`) + chalk.gray(` [${options.namespace}]`));
109
+ console.log(` ${val}`);
110
+ }
111
+ else {
112
+ console.log(chalk.yellow(` Key "${options.key}" not found in namespace "${options.namespace}"`));
113
+ }
114
+ }
115
+ else {
116
+ console.error(chalk.red(` ✗ ${result.error}`));
117
+ await cleanupAndExit(1);
118
+ }
119
+ }
120
+ catch (error) {
121
+ console.error(chalk.red(` Error: ${toErrorMessage(error)}`));
122
+ await cleanupAndExit(1);
123
+ }
124
+ });
125
+ // ── search ──────────────────────────────────────────────────────────────
126
+ memory
127
+ .command('search')
128
+ .description('Search memory by pattern (glob) or semantic query')
129
+ .option('--pattern <glob>', 'Glob pattern to match keys (e.g., "auth*")')
130
+ .option('--query <text>', 'Natural language query (implies --semantic)')
131
+ .option('--semantic', 'Use HNSW vector search for semantic matching')
132
+ .option('--namespace <ns>', 'Namespace to search in', 'default')
133
+ .option('--limit <n>', 'Maximum results', '20')
134
+ .option('--offset <n>', 'Skip first N results', '0')
135
+ .option('--json', 'Output as JSON')
136
+ .action(async (options) => {
137
+ if (!options.pattern && !options.query) {
138
+ console.error(chalk.red(' Either --pattern or --query is required'));
139
+ await cleanupAndExit(1);
140
+ }
141
+ if (!await ensureInitialized())
142
+ return;
143
+ try {
144
+ const { handleMemoryQuery } = await import('../../mcp/handlers/memory-handlers.js');
145
+ const searchPattern = options.query || options.pattern;
146
+ const useSemantic = options.semantic || !!options.query;
147
+ const result = await handleMemoryQuery({
148
+ pattern: searchPattern,
149
+ namespace: options.namespace,
150
+ limit: parseInt(options.limit, 10),
151
+ offset: parseInt(options.offset, 10),
152
+ semantic: useSemantic,
153
+ });
154
+ if (options.json) {
155
+ console.log(JSON.stringify(result, null, 2));
156
+ }
157
+ else if (result.success && result.data) {
158
+ const { entries, total, searchType } = result.data;
159
+ console.log(chalk.blue(` ${total} result(s) via ${searchType} search\n`));
160
+ for (const entry of entries) {
161
+ const score = entry.score !== undefined ? chalk.gray(` (score: ${entry.score.toFixed(3)})`) : '';
162
+ console.log(` ${chalk.green(entry.key)} ${chalk.gray(`[${entry.namespace}]`)}${score}`);
163
+ }
164
+ if (result.data.hasMore) {
165
+ console.log(chalk.gray(`\n ... and more. Use --offset ${parseInt(options.offset, 10) + parseInt(options.limit, 10)} to see next page`));
166
+ }
167
+ }
168
+ else {
169
+ console.error(chalk.red(` ✗ ${result.error}`));
170
+ await cleanupAndExit(1);
171
+ }
172
+ }
173
+ catch (error) {
174
+ console.error(chalk.red(` Error: ${toErrorMessage(error)}`));
175
+ await cleanupAndExit(1);
176
+ }
177
+ });
178
+ // ── list ────────────────────────────────────────────────────────────────
179
+ memory
180
+ .command('list')
181
+ .description('List all memory entries in a namespace')
182
+ .option('--namespace <ns>', 'Namespace to list', 'default')
183
+ .option('--limit <n>', 'Maximum results', '50')
184
+ .option('--json', 'Output as JSON')
185
+ .action(async (options) => {
186
+ if (!await ensureInitialized())
187
+ return;
188
+ try {
189
+ const { handleMemoryQuery } = await import('../../mcp/handlers/memory-handlers.js');
190
+ const result = await handleMemoryQuery({
191
+ pattern: '*',
192
+ namespace: options.namespace,
193
+ limit: parseInt(options.limit, 10),
194
+ });
195
+ if (options.json) {
196
+ console.log(JSON.stringify(result, null, 2));
197
+ }
198
+ else if (result.success && result.data) {
199
+ console.log(chalk.blue(` ${result.data.total} entries in namespace "${options.namespace}"\n`));
200
+ for (const entry of result.data.entries) {
201
+ console.log(` ${chalk.green(entry.key)}`);
202
+ }
203
+ if (result.data.hasMore) {
204
+ console.log(chalk.gray(`\n ... more entries exist. Use --limit to see more.`));
205
+ }
206
+ }
207
+ else {
208
+ console.error(chalk.red(` ✗ ${result.error}`));
209
+ await cleanupAndExit(1);
210
+ }
211
+ }
212
+ catch (error) {
213
+ console.error(chalk.red(` Error: ${toErrorMessage(error)}`));
214
+ await cleanupAndExit(1);
215
+ }
216
+ });
217
+ // ── delete ──────────────────────────────────────────────────────────────
218
+ memory
219
+ .command('delete')
220
+ .description('Delete a memory entry by key')
221
+ .requiredOption('--key <key>', 'Memory key to delete')
222
+ .option('--namespace <ns>', 'Namespace', 'default')
223
+ .option('--json', 'Output as JSON')
224
+ .action(async (options) => {
225
+ if (!await ensureInitialized())
226
+ return;
227
+ try {
228
+ const { handleMemoryDelete } = await import('../../mcp/handlers/memory-handlers.js');
229
+ const result = await handleMemoryDelete({
230
+ key: options.key,
231
+ namespace: options.namespace,
232
+ });
233
+ if (options.json) {
234
+ console.log(JSON.stringify(result, null, 2));
235
+ }
236
+ else if (result.success && result.data) {
237
+ if (result.data.deleted) {
238
+ console.log(chalk.green(` ✓ Deleted "${options.key}" from namespace "${options.namespace}"`));
239
+ }
240
+ else {
241
+ console.log(chalk.yellow(` Key "${options.key}" not found in namespace "${options.namespace}"`));
242
+ }
243
+ }
244
+ else {
245
+ console.error(chalk.red(` ✗ ${result.error}`));
246
+ await cleanupAndExit(1);
247
+ }
248
+ }
249
+ catch (error) {
250
+ console.error(chalk.red(` Error: ${toErrorMessage(error)}`));
251
+ await cleanupAndExit(1);
252
+ }
253
+ });
254
+ // ── share ───────────────────────────────────────────────────────────────
255
+ memory
256
+ .command('share')
257
+ .description('Share knowledge between agents')
258
+ .requiredOption('--from <agentId>', 'Source agent ID')
259
+ .requiredOption('--to <agentIds>', 'Comma-separated target agent IDs')
260
+ .requiredOption('--domain <domain>', 'Knowledge domain')
261
+ .requiredOption('--content <json>', 'JSON content to share')
262
+ .option('--json', 'Output as JSON')
263
+ .action(async (options) => {
264
+ if (!await ensureInitialized())
265
+ return;
266
+ try {
267
+ const { handleMemoryShare } = await import('../../mcp/handlers/memory-handlers.js');
268
+ let content;
269
+ try {
270
+ content = JSON.parse(options.content);
271
+ }
272
+ catch {
273
+ console.error(chalk.red(' --content must be valid JSON'));
274
+ await cleanupAndExit(1);
275
+ return; // unreachable but satisfies TS
276
+ }
277
+ const targetIds = options.to.split(',').map((s) => s.trim());
278
+ const result = await handleMemoryShare({
279
+ sourceAgentId: options.from,
280
+ targetAgentIds: targetIds,
281
+ knowledgeDomain: options.domain,
282
+ knowledgeContent: content,
283
+ });
284
+ if (options.json) {
285
+ console.log(JSON.stringify(result, null, 2));
286
+ }
287
+ else if (result.success && result.data) {
288
+ console.log(chalk.green(` ✓ Shared knowledge from ${result.data.sourceAgent} to ${result.data.targetAgents.join(', ')}`));
289
+ console.log(chalk.gray(` Domain: ${result.data.domain}`));
290
+ }
291
+ else {
292
+ console.error(chalk.red(` ✗ ${result.error}`));
293
+ await cleanupAndExit(1);
294
+ }
295
+ }
296
+ catch (error) {
297
+ console.error(chalk.red(` Error: ${toErrorMessage(error)}`));
298
+ await cleanupAndExit(1);
299
+ }
300
+ });
301
+ // ── usage ───────────────────────────────────────────────────────────────
302
+ memory
303
+ .command('usage')
304
+ .description('Show memory usage statistics')
305
+ .option('--json', 'Output as JSON')
306
+ .action(async (options) => {
307
+ if (!await ensureInitialized())
308
+ return;
309
+ try {
310
+ const { handleMemoryUsage } = await import('../../mcp/handlers/memory-handlers.js');
311
+ const result = await handleMemoryUsage();
312
+ if (options.json) {
313
+ console.log(JSON.stringify(result, null, 2));
314
+ }
315
+ else if (result.success && result.data) {
316
+ console.log(chalk.blue(' Memory Usage\n'));
317
+ console.log(` Entries: ${chalk.green(String(result.data.entries))}`);
318
+ console.log(` Vectors: ${chalk.green(String(result.data.vectors))}`);
319
+ console.log(` Namespaces: ${chalk.green(String(result.data.namespaces))}`);
320
+ }
321
+ else {
322
+ console.error(chalk.red(` ✗ ${result.error}`));
323
+ await cleanupAndExit(1);
324
+ }
325
+ }
326
+ catch (error) {
327
+ console.error(chalk.red(` Error: ${toErrorMessage(error)}`));
328
+ await cleanupAndExit(1);
329
+ }
330
+ });
331
+ return memory;
332
+ }
333
+ //# sourceMappingURL=memory.js.map
@@ -40,6 +40,7 @@ interface InitOptions {
40
40
  withWindsurf?: boolean;
41
41
  withContinuedev?: boolean;
42
42
  withAllPlatforms?: boolean;
43
+ withMcp?: boolean;
43
44
  withClaudeFlow?: boolean;
44
45
  skipClaudeFlow?: boolean;
45
46
  noGovernance?: boolean;
@@ -49,6 +49,7 @@ export class InitHandler {
49
49
  .option('--with-codex', 'Include OpenAI Codex CLI MCP config and AGENTS.md')
50
50
  .option('--with-windsurf', 'Include Windsurf MCP config and rules')
51
51
  .option('--with-continuedev', 'Include Continue.dev MCP config and rules')
52
+ .option('--with-mcp', 'Include MCP server config in .mcp.json (opt-in — CLI works without MCP)')
52
53
  .option('--with-all-platforms', 'Include all coding agent platform configurations')
53
54
  .option('--auto-migrate', 'Automatically migrate from v2 if detected')
54
55
  .option('--with-claude-flow', 'Force Claude Flow integration setup')
@@ -114,6 +115,7 @@ export class InitHandler {
114
115
  withCodex: options.withCodex,
115
116
  withWindsurf: options.withWindsurf,
116
117
  withContinueDev: options.withContinuedev,
118
+ withMcp: options.withMcp,
117
119
  noGovernance: options.noGovernance,
118
120
  });
119
121
  console.log(chalk.white(' Analyzing project...\n'));
@@ -170,9 +172,14 @@ export class InitHandler {
170
172
  console.log(chalk.gray(` - Claude Flow: ${cfResult?.available ? 'Enabled' : 'Standalone mode'}`));
171
173
  console.log(chalk.gray(` - Total time: ${result.totalDurationMs}ms\n`));
172
174
  console.log(chalk.white('Next steps:'));
173
- console.log(chalk.gray(' 1. Add MCP: claude mcp add aqe -- aqe-mcp'));
174
- console.log(chalk.gray(' 2. Run tests: aqe test <path>'));
175
- console.log(chalk.gray(' 3. Check status: aqe status\n'));
175
+ console.log(chalk.gray(' 1. Run tests: aqe test <path>'));
176
+ console.log(chalk.gray(' 2. Check coverage: aqe coverage <path>'));
177
+ console.log(chalk.gray(' 3. Check status: aqe status'));
178
+ if (!result.summary.mcpConfigured) {
179
+ console.log(chalk.gray('\n Optional — enable MCP server for richer agent integration:'));
180
+ console.log(chalk.gray(' aqe init --with-mcp'));
181
+ console.log(chalk.gray(' # or manually: claude mcp add aqe -- aqe-mcp\n'));
182
+ }
176
183
  }
177
184
  else {
178
185
  console.log(chalk.red(' Initialization failed. Check errors above.\n'));
@@ -220,9 +227,14 @@ export class InitHandler {
220
227
  }
221
228
  console.log(chalk.gray(` - Total time: ${result.totalDurationMs}ms\n`));
222
229
  console.log(chalk.white('Next steps:'));
223
- console.log(chalk.gray(' 1. Add MCP: claude mcp add aqe -- aqe-mcp'));
224
- console.log(chalk.gray(' 2. Run tests: aqe test <path>'));
225
- console.log(chalk.gray(' 3. Check status: aqe status\n'));
230
+ console.log(chalk.gray(' 1. Run tests: aqe test <path>'));
231
+ console.log(chalk.gray(' 2. Check coverage: aqe coverage <path>'));
232
+ console.log(chalk.gray(' 3. Check status: aqe status'));
233
+ if (!result.summary.mcpConfigured) {
234
+ console.log(chalk.gray('\n Optional — enable MCP server for richer agent integration:'));
235
+ console.log(chalk.gray(' aqe init --with-mcp'));
236
+ console.log(chalk.gray(' # or manually: claude mcp add aqe -- aqe-mcp\n'));
237
+ }
226
238
  }
227
239
  else {
228
240
  console.log(chalk.red(' Initialization failed. Check errors above.\n'));
package/dist/cli/index.js CHANGED
@@ -816,6 +816,7 @@ import { createLLMRouterCommand } from './commands/llm-router.js';
816
816
  import { createSyncCommands } from './commands/sync.js';
817
817
  import { createHooksCommand } from './commands/hooks.js';
818
818
  import { createLearningCommand } from './commands/learning.js';
819
+ import { createMemoryCommand } from './commands/memory.js';
819
820
  import { createMcpCommand } from './commands/mcp.js';
820
821
  import { createPlatformCommand } from './commands/platform.js';
821
822
  import { createProveCommand } from './commands/prove.js';
@@ -826,6 +827,7 @@ program.addCommand(createLLMRouterCommand());
826
827
  program.addCommand(createSyncCommands());
827
828
  program.addCommand(createHooksCommand());
828
829
  program.addCommand(createLearningCommand());
830
+ program.addCommand(createMemoryCommand(context, cleanupAndExit, ensureInitialized));
829
831
  program.addCommand(createMcpCommand());
830
832
  program.addCommand(createPlatformCommand());
831
833
  program.addCommand(createProveCommand(context, cleanupAndExit, ensureInitialized));
@@ -26,6 +26,16 @@ export class MCPPhase extends BasePhase {
26
26
  requiresPhases = ['configuration', 'database'];
27
27
  async run(context) {
28
28
  const { projectRoot } = context;
29
+ // MCP is opt-in: skip unless --with-mcp is passed
30
+ if (!context.options.withMcp) {
31
+ context.services.log(' MCP: skipped (opt-in — use --with-mcp to enable)');
32
+ context.services.log(' All QE commands available via CLI: aqe memory, aqe test, aqe coverage, etc.');
33
+ return {
34
+ configured: false,
35
+ mcpPath: '',
36
+ serverName: '',
37
+ };
38
+ }
29
39
  // AQE MCP server configuration
30
40
  // AQE_PROJECT_ROOT omitted — runtime discovery via findProjectRoot() is
31
41
  // portable across machines, devcontainers, and CI (#321)
@@ -106,6 +106,8 @@ export interface InitOptions {
106
106
  withContinueDev?: boolean;
107
107
  /** Install all coding agent platform configurations */
108
108
  withAllPlatforms?: boolean;
109
+ /** Install MCP server config (opt-in — CLI commands work without MCP) */
110
+ withMcp?: boolean;
109
111
  }
110
112
  /**
111
113
  * V2 installation detection result