agentic-qe 3.7.0 → 3.7.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.
Files changed (272) hide show
  1. package/.claude/skills/pr-review/SKILL.md +1 -1
  2. package/.claude/skills/skills-manifest.json +6 -6
  3. package/README.md +81 -10
  4. package/package.json +2 -2
  5. package/scripts/generate-opencode-agents.ts +530 -0
  6. package/scripts/generate-opencode-skills.ts +318 -0
  7. package/v3/CHANGELOG.md +47 -0
  8. package/v3/README.md +7 -7
  9. package/v3/assets/skills/pr-review/SKILL.md +1 -1
  10. package/v3/dist/adapters/a2a/notifications/retry-queue.d.ts.map +1 -1
  11. package/v3/dist/adapters/a2a/notifications/retry-queue.js +2 -1
  12. package/v3/dist/adapters/a2a/notifications/retry-queue.js.map +1 -1
  13. package/v3/dist/adapters/a2a/notifications/subscription-store.d.ts.map +1 -1
  14. package/v3/dist/adapters/a2a/notifications/subscription-store.js +2 -1
  15. package/v3/dist/adapters/a2a/notifications/subscription-store.js.map +1 -1
  16. package/v3/dist/adapters/a2a/tasks/task-manager.d.ts.map +1 -1
  17. package/v3/dist/adapters/a2a/tasks/task-manager.js +4 -3
  18. package/v3/dist/adapters/a2a/tasks/task-manager.js.map +1 -1
  19. package/v3/dist/agents/claim-verifier/index.d.ts.map +1 -1
  20. package/v3/dist/agents/claim-verifier/index.js +2 -1
  21. package/v3/dist/agents/claim-verifier/index.js.map +1 -1
  22. package/v3/dist/cli/bundle.js +3591 -1371
  23. package/v3/dist/cli/commands/hooks.d.ts.map +1 -1
  24. package/v3/dist/cli/commands/hooks.js +17 -2
  25. package/v3/dist/cli/commands/hooks.js.map +1 -1
  26. package/v3/dist/cli/commands/init.d.ts.map +1 -1
  27. package/v3/dist/cli/commands/init.js +4 -0
  28. package/v3/dist/cli/commands/init.js.map +1 -1
  29. package/v3/dist/cli/commands/learning-helpers.d.ts.map +1 -1
  30. package/v3/dist/cli/commands/learning-helpers.js +11 -0
  31. package/v3/dist/cli/commands/learning-helpers.js.map +1 -1
  32. package/v3/dist/cli/handlers/init-handler.d.ts +2 -0
  33. package/v3/dist/cli/handlers/init-handler.d.ts.map +1 -1
  34. package/v3/dist/cli/handlers/init-handler.js +5 -0
  35. package/v3/dist/cli/handlers/init-handler.js.map +1 -1
  36. package/v3/dist/cli/scheduler/persistent-scheduler.d.ts.map +1 -1
  37. package/v3/dist/cli/scheduler/persistent-scheduler.js +2 -1
  38. package/v3/dist/cli/scheduler/persistent-scheduler.js.map +1 -1
  39. package/v3/dist/coordination/consensus/consensus-engine.d.ts.map +1 -1
  40. package/v3/dist/coordination/consensus/consensus-engine.js +2 -1
  41. package/v3/dist/coordination/consensus/consensus-engine.js.map +1 -1
  42. package/v3/dist/coordination/cross-domain-router.d.ts.map +1 -1
  43. package/v3/dist/coordination/cross-domain-router.js +7 -8
  44. package/v3/dist/coordination/cross-domain-router.js.map +1 -1
  45. package/v3/dist/coordination/handlers/code-intelligence-handlers.d.ts +9 -0
  46. package/v3/dist/coordination/handlers/code-intelligence-handlers.d.ts.map +1 -0
  47. package/v3/dist/coordination/handlers/code-intelligence-handlers.js +203 -0
  48. package/v3/dist/coordination/handlers/code-intelligence-handlers.js.map +1 -0
  49. package/v3/dist/coordination/handlers/coverage-handlers.d.ts +9 -0
  50. package/v3/dist/coordination/handlers/coverage-handlers.d.ts.map +1 -0
  51. package/v3/dist/coordination/handlers/coverage-handlers.js +120 -0
  52. package/v3/dist/coordination/handlers/coverage-handlers.js.map +1 -0
  53. package/v3/dist/coordination/handlers/handler-types.d.ts +35 -0
  54. package/v3/dist/coordination/handlers/handler-types.d.ts.map +1 -0
  55. package/v3/dist/coordination/handlers/handler-types.js +8 -0
  56. package/v3/dist/coordination/handlers/handler-types.js.map +1 -0
  57. package/v3/dist/coordination/handlers/handler-utils.d.ts +106 -0
  58. package/v3/dist/coordination/handlers/handler-utils.d.ts.map +1 -0
  59. package/v3/dist/coordination/handlers/handler-utils.js +480 -0
  60. package/v3/dist/coordination/handlers/handler-utils.js.map +1 -0
  61. package/v3/dist/coordination/handlers/index.d.ts +15 -0
  62. package/v3/dist/coordination/handlers/index.d.ts.map +1 -0
  63. package/v3/dist/coordination/handlers/index.js +14 -0
  64. package/v3/dist/coordination/handlers/index.js.map +1 -0
  65. package/v3/dist/coordination/handlers/misc-handlers.d.ts +9 -0
  66. package/v3/dist/coordination/handlers/misc-handlers.d.ts.map +1 -0
  67. package/v3/dist/coordination/handlers/misc-handlers.js +64 -0
  68. package/v3/dist/coordination/handlers/misc-handlers.js.map +1 -0
  69. package/v3/dist/coordination/handlers/quality-handlers.d.ts +9 -0
  70. package/v3/dist/coordination/handlers/quality-handlers.d.ts.map +1 -0
  71. package/v3/dist/coordination/handlers/quality-handlers.js +83 -0
  72. package/v3/dist/coordination/handlers/quality-handlers.js.map +1 -0
  73. package/v3/dist/coordination/handlers/requirements-handlers.d.ts +9 -0
  74. package/v3/dist/coordination/handlers/requirements-handlers.d.ts.map +1 -0
  75. package/v3/dist/coordination/handlers/requirements-handlers.js +95 -0
  76. package/v3/dist/coordination/handlers/requirements-handlers.js.map +1 -0
  77. package/v3/dist/coordination/handlers/security-handlers.d.ts +9 -0
  78. package/v3/dist/coordination/handlers/security-handlers.d.ts.map +1 -0
  79. package/v3/dist/coordination/handlers/security-handlers.js +255 -0
  80. package/v3/dist/coordination/handlers/security-handlers.js.map +1 -0
  81. package/v3/dist/coordination/handlers/test-execution-handlers.d.ts +9 -0
  82. package/v3/dist/coordination/handlers/test-execution-handlers.d.ts.map +1 -0
  83. package/v3/dist/coordination/handlers/test-execution-handlers.js +153 -0
  84. package/v3/dist/coordination/handlers/test-execution-handlers.js.map +1 -0
  85. package/v3/dist/coordination/queen-coordinator.d.ts.map +1 -1
  86. package/v3/dist/coordination/queen-coordinator.js +28 -25
  87. package/v3/dist/coordination/queen-coordinator.js.map +1 -1
  88. package/v3/dist/coordination/task-executor.d.ts +25 -9
  89. package/v3/dist/coordination/task-executor.d.ts.map +1 -1
  90. package/v3/dist/coordination/task-executor.js +38 -1352
  91. package/v3/dist/coordination/task-executor.js.map +1 -1
  92. package/v3/dist/domains/code-intelligence/services/metric-collector/loc-counter.js +15 -9
  93. package/v3/dist/domains/code-intelligence/services/metric-collector/loc-counter.js.map +1 -1
  94. package/v3/dist/domains/defect-intelligence/services/causal-root-cause-analyzer.d.ts.map +1 -1
  95. package/v3/dist/domains/defect-intelligence/services/causal-root-cause-analyzer.js +2 -1
  96. package/v3/dist/domains/defect-intelligence/services/causal-root-cause-analyzer.js.map +1 -1
  97. package/v3/dist/domains/requirements-validation/services/product-factors-assessment/types/index.d.ts.map +1 -1
  98. package/v3/dist/domains/requirements-validation/services/product-factors-assessment/types/index.js +2 -1
  99. package/v3/dist/domains/requirements-validation/services/product-factors-assessment/types/index.js.map +1 -1
  100. package/v3/dist/domains/test-execution/types/e2e-step.types.d.ts.map +1 -1
  101. package/v3/dist/domains/test-execution/types/e2e-step.types.js +2 -1
  102. package/v3/dist/domains/test-execution/types/e2e-step.types.js.map +1 -1
  103. package/v3/dist/feedback/coverage-learner.d.ts.map +1 -1
  104. package/v3/dist/feedback/coverage-learner.js +2 -1
  105. package/v3/dist/feedback/coverage-learner.js.map +1 -1
  106. package/v3/dist/init/kiro-installer.d.ts +70 -0
  107. package/v3/dist/init/kiro-installer.d.ts.map +1 -0
  108. package/v3/dist/init/kiro-installer.js +794 -0
  109. package/v3/dist/init/kiro-installer.js.map +1 -0
  110. package/v3/dist/init/opencode-installer.d.ts +67 -0
  111. package/v3/dist/init/opencode-installer.d.ts.map +1 -0
  112. package/v3/dist/init/opencode-installer.js +267 -0
  113. package/v3/dist/init/opencode-installer.js.map +1 -0
  114. package/v3/dist/init/orchestrator.d.ts.map +1 -1
  115. package/v3/dist/init/orchestrator.js +2 -0
  116. package/v3/dist/init/orchestrator.js.map +1 -1
  117. package/v3/dist/init/phases/09-assets.d.ts +5 -0
  118. package/v3/dist/init/phases/09-assets.d.ts.map +1 -1
  119. package/v3/dist/init/phases/09-assets.js +59 -0
  120. package/v3/dist/init/phases/09-assets.js.map +1 -1
  121. package/v3/dist/init/phases/phase-interface.d.ts +4 -0
  122. package/v3/dist/init/phases/phase-interface.d.ts.map +1 -1
  123. package/v3/dist/init/phases/phase-interface.js.map +1 -1
  124. package/v3/dist/integrations/agentic-flow/onnx-embeddings/adapter.d.ts.map +1 -1
  125. package/v3/dist/integrations/agentic-flow/onnx-embeddings/adapter.js +2 -1
  126. package/v3/dist/integrations/agentic-flow/onnx-embeddings/adapter.js.map +1 -1
  127. package/v3/dist/integrations/n8n/agent-factory.d.ts.map +1 -1
  128. package/v3/dist/integrations/n8n/agent-factory.js +2 -1
  129. package/v3/dist/integrations/n8n/agent-factory.js.map +1 -1
  130. package/v3/dist/integrations/rl-suite/sona.d.ts.map +1 -1
  131. package/v3/dist/integrations/rl-suite/sona.js +2 -1
  132. package/v3/dist/integrations/rl-suite/sona.js.map +1 -1
  133. package/v3/dist/integrations/ruvector/brain-exporter.d.ts.map +1 -1
  134. package/v3/dist/integrations/ruvector/brain-exporter.js +4 -3
  135. package/v3/dist/integrations/ruvector/brain-exporter.js.map +1 -1
  136. package/v3/dist/integrations/ruvector/hypergraph-schema.d.ts.map +1 -1
  137. package/v3/dist/integrations/ruvector/hypergraph-schema.js +7 -0
  138. package/v3/dist/integrations/ruvector/hypergraph-schema.js.map +1 -1
  139. package/v3/dist/integrations/ruvector/index.d.ts +1 -0
  140. package/v3/dist/integrations/ruvector/index.d.ts.map +1 -1
  141. package/v3/dist/integrations/ruvector/index.js +1 -0
  142. package/v3/dist/integrations/ruvector/index.js.map +1 -1
  143. package/v3/dist/integrations/ruvector/shared-rvf-dual-writer.d.ts +41 -0
  144. package/v3/dist/integrations/ruvector/shared-rvf-dual-writer.d.ts.map +1 -0
  145. package/v3/dist/integrations/ruvector/shared-rvf-dual-writer.js +122 -0
  146. package/v3/dist/integrations/ruvector/shared-rvf-dual-writer.js.map +1 -0
  147. package/v3/dist/integrations/ruvector/sona-wrapper.d.ts.map +1 -1
  148. package/v3/dist/integrations/ruvector/sona-wrapper.js +2 -1
  149. package/v3/dist/integrations/ruvector/sona-wrapper.js.map +1 -1
  150. package/v3/dist/integrations/vibium/client.d.ts.map +1 -1
  151. package/v3/dist/integrations/vibium/client.js +2 -1
  152. package/v3/dist/integrations/vibium/client.js.map +1 -1
  153. package/v3/dist/integrations/vibium/fallback.d.ts.map +1 -1
  154. package/v3/dist/integrations/vibium/fallback.js +2 -1
  155. package/v3/dist/integrations/vibium/fallback.js.map +1 -1
  156. package/v3/dist/kernel/kernel.d.ts.map +1 -1
  157. package/v3/dist/kernel/kernel.js +2 -1
  158. package/v3/dist/kernel/kernel.js.map +1 -1
  159. package/v3/dist/kernel/unified-memory.d.ts.map +1 -1
  160. package/v3/dist/kernel/unified-memory.js +19 -9
  161. package/v3/dist/kernel/unified-memory.js.map +1 -1
  162. package/v3/dist/learning/aqe-learning-engine.d.ts.map +1 -1
  163. package/v3/dist/learning/aqe-learning-engine.js +14 -2
  164. package/v3/dist/learning/aqe-learning-engine.js.map +1 -1
  165. package/v3/dist/learning/dream/concept-graph.d.ts +10 -5
  166. package/v3/dist/learning/dream/concept-graph.d.ts.map +1 -1
  167. package/v3/dist/learning/dream/concept-graph.js +77 -25
  168. package/v3/dist/learning/dream/concept-graph.js.map +1 -1
  169. package/v3/dist/learning/dream/dream-engine.d.ts.map +1 -1
  170. package/v3/dist/learning/dream/dream-engine.js +37 -29
  171. package/v3/dist/learning/dream/dream-engine.js.map +1 -1
  172. package/v3/dist/learning/dream/insight-generator.d.ts.map +1 -1
  173. package/v3/dist/learning/dream/insight-generator.js +2 -1
  174. package/v3/dist/learning/dream/insight-generator.js.map +1 -1
  175. package/v3/dist/learning/dream/spreading-activation.d.ts +1 -1
  176. package/v3/dist/learning/dream/spreading-activation.d.ts.map +1 -1
  177. package/v3/dist/learning/dream/spreading-activation.js +13 -5
  178. package/v3/dist/learning/dream/spreading-activation.js.map +1 -1
  179. package/v3/dist/learning/memory-auditor.d.ts.map +1 -1
  180. package/v3/dist/learning/memory-auditor.js +7 -4
  181. package/v3/dist/learning/memory-auditor.js.map +1 -1
  182. package/v3/dist/learning/real-embeddings.d.ts.map +1 -1
  183. package/v3/dist/learning/real-embeddings.js +26 -1
  184. package/v3/dist/learning/real-embeddings.js.map +1 -1
  185. package/v3/dist/learning/real-qe-reasoning-bank.d.ts.map +1 -1
  186. package/v3/dist/learning/real-qe-reasoning-bank.js +13 -2
  187. package/v3/dist/learning/real-qe-reasoning-bank.js.map +1 -1
  188. package/v3/dist/learning/sqlite-persistence.d.ts +5 -0
  189. package/v3/dist/learning/sqlite-persistence.d.ts.map +1 -1
  190. package/v3/dist/learning/sqlite-persistence.js +47 -7
  191. package/v3/dist/learning/sqlite-persistence.js.map +1 -1
  192. package/v3/dist/mcp/bundle.js +3185 -2017
  193. package/v3/dist/mcp/connection-pool.d.ts.map +1 -1
  194. package/v3/dist/mcp/connection-pool.js +3 -2
  195. package/v3/dist/mcp/connection-pool.js.map +1 -1
  196. package/v3/dist/mcp/entry.js +12 -0
  197. package/v3/dist/mcp/entry.js.map +1 -1
  198. package/v3/dist/mcp/handlers/core-handlers.d.ts +28 -0
  199. package/v3/dist/mcp/handlers/core-handlers.d.ts.map +1 -1
  200. package/v3/dist/mcp/handlers/core-handlers.js +117 -0
  201. package/v3/dist/mcp/handlers/core-handlers.js.map +1 -1
  202. package/v3/dist/mcp/handlers/index.d.ts +1 -1
  203. package/v3/dist/mcp/handlers/index.d.ts.map +1 -1
  204. package/v3/dist/mcp/handlers/index.js +1 -1
  205. package/v3/dist/mcp/handlers/index.js.map +1 -1
  206. package/v3/dist/mcp/http-server.d.ts.map +1 -1
  207. package/v3/dist/mcp/http-server.js +12 -9
  208. package/v3/dist/mcp/http-server.js.map +1 -1
  209. package/v3/dist/mcp/middleware/output-compaction.d.ts +45 -0
  210. package/v3/dist/mcp/middleware/output-compaction.d.ts.map +1 -0
  211. package/v3/dist/mcp/middleware/output-compaction.js +279 -0
  212. package/v3/dist/mcp/middleware/output-compaction.js.map +1 -0
  213. package/v3/dist/mcp/protocol-server.d.ts.map +1 -1
  214. package/v3/dist/mcp/protocol-server.js +53 -41
  215. package/v3/dist/mcp/protocol-server.js.map +1 -1
  216. package/v3/dist/mcp/security/sampling-server.js +2 -2
  217. package/v3/dist/mcp/security/sampling-server.js.map +1 -1
  218. package/v3/dist/mcp/services/reasoning-bank-service.d.ts.map +1 -1
  219. package/v3/dist/mcp/services/reasoning-bank-service.js +4 -5
  220. package/v3/dist/mcp/services/reasoning-bank-service.js.map +1 -1
  221. package/v3/dist/mcp/tools/base.d.ts +5 -0
  222. package/v3/dist/mcp/tools/base.d.ts.map +1 -1
  223. package/v3/dist/mcp/tools/base.js +25 -1
  224. package/v3/dist/mcp/tools/base.js.map +1 -1
  225. package/v3/dist/mcp/tools/learning-optimization/dream.d.ts.map +1 -1
  226. package/v3/dist/mcp/tools/learning-optimization/dream.js +22 -0
  227. package/v3/dist/mcp/tools/learning-optimization/dream.js.map +1 -1
  228. package/v3/dist/mcp/tools/security-compliance/scan.d.ts.map +1 -1
  229. package/v3/dist/mcp/tools/security-compliance/scan.js +2 -1
  230. package/v3/dist/mcp/tools/security-compliance/scan.js.map +1 -1
  231. package/v3/dist/mcp/transport/index.d.ts +8 -6
  232. package/v3/dist/mcp/transport/index.d.ts.map +1 -1
  233. package/v3/dist/mcp/transport/index.js +10 -9
  234. package/v3/dist/mcp/transport/index.js.map +1 -1
  235. package/v3/dist/migrations/20260120_add_hypergraph_tables.d.ts.map +1 -1
  236. package/v3/dist/migrations/20260120_add_hypergraph_tables.js +7 -0
  237. package/v3/dist/migrations/20260120_add_hypergraph_tables.js.map +1 -1
  238. package/v3/dist/optimization/token-optimizer-service.d.ts.map +1 -1
  239. package/v3/dist/optimization/token-optimizer-service.js +2 -1
  240. package/v3/dist/optimization/token-optimizer-service.js.map +1 -1
  241. package/v3/dist/planning/goap-planner.d.ts.map +1 -1
  242. package/v3/dist/planning/goap-planner.js +2 -1
  243. package/v3/dist/planning/goap-planner.js.map +1 -1
  244. package/v3/dist/planning/plan-executor.d.ts +5 -1
  245. package/v3/dist/planning/plan-executor.d.ts.map +1 -1
  246. package/v3/dist/planning/plan-executor.js +16 -2
  247. package/v3/dist/planning/plan-executor.js.map +1 -1
  248. package/v3/dist/routing/routing-feedback.d.ts.map +1 -1
  249. package/v3/dist/routing/routing-feedback.js +2 -1
  250. package/v3/dist/routing/routing-feedback.js.map +1 -1
  251. package/v3/dist/shared/llm/cost-tracker.d.ts.map +1 -1
  252. package/v3/dist/shared/llm/cost-tracker.js +2 -1
  253. package/v3/dist/shared/llm/cost-tracker.js.map +1 -1
  254. package/v3/dist/shared/llm/metrics/router-metrics.d.ts.map +1 -1
  255. package/v3/dist/shared/llm/metrics/router-metrics.js +2 -1
  256. package/v3/dist/shared/llm/metrics/router-metrics.js.map +1 -1
  257. package/v3/dist/strange-loop/belief-reconciler.d.ts.map +1 -1
  258. package/v3/dist/strange-loop/belief-reconciler.js +2 -1
  259. package/v3/dist/strange-loop/belief-reconciler.js.map +1 -1
  260. package/v3/dist/sync/readers/json-reader.d.ts.map +1 -1
  261. package/v3/dist/sync/readers/json-reader.js +2 -1
  262. package/v3/dist/sync/readers/json-reader.js.map +1 -1
  263. package/v3/dist/types/cross-phase-signals.d.ts.map +1 -1
  264. package/v3/dist/types/cross-phase-signals.js +2 -1
  265. package/v3/dist/types/cross-phase-signals.js.map +1 -1
  266. package/v3/dist/validation/swarm-skill-validator.d.ts.map +1 -1
  267. package/v3/dist/validation/swarm-skill-validator.js +2 -1
  268. package/v3/dist/validation/swarm-skill-validator.js.map +1 -1
  269. package/v3/dist/workers/base-worker.d.ts.map +1 -1
  270. package/v3/dist/workers/base-worker.js +2 -1
  271. package/v3/dist/workers/base-worker.js.map +1 -1
  272. package/v3/package.json +5 -2
@@ -0,0 +1,480 @@
1
+ /**
2
+ * Shared utility functions used by extracted task handlers.
3
+ *
4
+ * These were originally module-level helpers in task-executor.ts and are
5
+ * now co-located with the handlers that use them.
6
+ */
7
+ import * as fs from 'fs/promises';
8
+ import * as path from 'path';
9
+ import { safeJsonParse } from '../../shared/safe-json.js';
10
+ // ============================================================================
11
+ // Coverage Data Loaders
12
+ // ============================================================================
13
+ /**
14
+ * Load coverage data from common coverage file formats
15
+ */
16
+ export async function loadCoverageData(targetPath) {
17
+ // Try various coverage file locations (JS, Python, Java, etc.)
18
+ const coverageLocations = [
19
+ // JavaScript/TypeScript (Istanbul/nyc/vitest)
20
+ path.join(targetPath, 'coverage', 'coverage-final.json'),
21
+ path.join(targetPath, 'coverage', 'lcov.info'),
22
+ path.join(targetPath, '.nyc_output', 'coverage-final.json'),
23
+ path.join(targetPath, 'coverage-final.json'),
24
+ // Python (pytest-cov, coverage.py)
25
+ path.join(targetPath, 'coverage.xml'),
26
+ path.join(targetPath, 'htmlcov', 'status.json'),
27
+ // Cobertura (generic)
28
+ path.join(targetPath, 'cobertura-coverage.xml'),
29
+ ];
30
+ for (const coveragePath of coverageLocations) {
31
+ try {
32
+ const content = await fs.readFile(coveragePath, 'utf-8');
33
+ if (coveragePath.endsWith('.json')) {
34
+ return parseCoverageJson(content);
35
+ }
36
+ else if (coveragePath.endsWith('.info')) {
37
+ return parseLcovInfo(content);
38
+ }
39
+ else if (coveragePath.endsWith('.xml')) {
40
+ return parseCoberturaXml(content);
41
+ }
42
+ }
43
+ catch {
44
+ // File not found, try next
45
+ }
46
+ }
47
+ return null;
48
+ }
49
+ /**
50
+ * Parse Istanbul/nyc coverage-final.json format
51
+ */
52
+ export function parseCoverageJson(content) {
53
+ const data = safeJsonParse(content);
54
+ const files = [];
55
+ let totalLines = 0, coveredLines = 0;
56
+ let totalBranches = 0, coveredBranches = 0;
57
+ let totalFunctions = 0, coveredFunctions = 0;
58
+ let totalStatements = 0, coveredStatements = 0;
59
+ for (const [filePath, fileData] of Object.entries(data)) {
60
+ const fd = fileData;
61
+ // Calculate file-level metrics
62
+ const lineMap = fd.statementMap || {};
63
+ const lineCounts = fd.s || {};
64
+ const branchMap = fd.branchMap || {};
65
+ const branchCounts = fd.b || {};
66
+ const fnCounts = fd.f || {};
67
+ const fileLines = Object.keys(lineCounts).length;
68
+ const fileCoveredLines = Object.values(lineCounts).filter((v) => v > 0).length;
69
+ const fileBranches = Object.values(branchCounts).flat().length;
70
+ const fileCoveredBranches = Object.values(branchCounts).flat().filter((v) => v > 0).length;
71
+ const fileFunctions = Object.keys(fnCounts).length;
72
+ const fileCoveredFunctions = Object.values(fnCounts).filter((v) => v > 0).length;
73
+ const fileStatements = Object.keys(lineMap).length;
74
+ const fileCoveredStatements = Object.values(lineCounts).filter((v) => v > 0).length;
75
+ // Find uncovered lines
76
+ const uncoveredLines = [];
77
+ for (const [key, count] of Object.entries(lineCounts)) {
78
+ if (count === 0) {
79
+ const stmtInfo = lineMap[key];
80
+ if (stmtInfo?.start?.line) {
81
+ uncoveredLines.push(stmtInfo.start.line);
82
+ }
83
+ }
84
+ }
85
+ // Find uncovered branches
86
+ const uncoveredBranches = [];
87
+ for (const [branchId, counts] of Object.entries(branchCounts)) {
88
+ const branchInfo = branchMap[branchId];
89
+ counts.forEach((count, idx) => {
90
+ if (count === 0 && branchInfo?.locations?.[idx]?.start?.line) {
91
+ uncoveredBranches.push(branchInfo.locations[idx].start.line);
92
+ }
93
+ });
94
+ }
95
+ files.push({
96
+ path: filePath,
97
+ lines: { covered: fileCoveredLines, total: fileLines },
98
+ branches: { covered: fileCoveredBranches, total: fileBranches },
99
+ functions: { covered: fileCoveredFunctions, total: fileFunctions },
100
+ statements: { covered: fileCoveredStatements, total: fileStatements },
101
+ uncoveredLines: Array.from(new Set(uncoveredLines)).sort((a, b) => a - b),
102
+ uncoveredBranches: Array.from(new Set(uncoveredBranches)).sort((a, b) => a - b),
103
+ });
104
+ totalLines += fileLines;
105
+ coveredLines += fileCoveredLines;
106
+ totalBranches += fileBranches;
107
+ coveredBranches += fileCoveredBranches;
108
+ totalFunctions += fileFunctions;
109
+ coveredFunctions += fileCoveredFunctions;
110
+ totalStatements += fileStatements;
111
+ coveredStatements += fileCoveredStatements;
112
+ }
113
+ return {
114
+ files,
115
+ summary: {
116
+ line: totalLines > 0 ? (coveredLines / totalLines) * 100 : 0,
117
+ branch: totalBranches > 0 ? (coveredBranches / totalBranches) * 100 : 0,
118
+ function: totalFunctions > 0 ? (coveredFunctions / totalFunctions) * 100 : 0,
119
+ statement: totalStatements > 0 ? (coveredStatements / totalStatements) * 100 : 0,
120
+ files: files.length,
121
+ },
122
+ };
123
+ }
124
+ /**
125
+ * Parse LCOV info format
126
+ */
127
+ export function parseLcovInfo(content) {
128
+ const files = [];
129
+ const lines = content.split('\n');
130
+ let currentFile = null;
131
+ let linesTotal = 0, linesCovered = 0;
132
+ let branchesTotal = 0, branchesCovered = 0;
133
+ let functionsTotal = 0, functionsCovered = 0;
134
+ const uncoveredLines = [];
135
+ const uncoveredBranches = [];
136
+ for (const line of lines) {
137
+ if (line.startsWith('SF:')) {
138
+ currentFile = line.slice(3);
139
+ }
140
+ else if (line.startsWith('LF:')) {
141
+ linesTotal = parseInt(line.slice(3), 10);
142
+ }
143
+ else if (line.startsWith('LH:')) {
144
+ linesCovered = parseInt(line.slice(3), 10);
145
+ }
146
+ else if (line.startsWith('BRF:')) {
147
+ branchesTotal = parseInt(line.slice(4), 10);
148
+ }
149
+ else if (line.startsWith('BRH:')) {
150
+ branchesCovered = parseInt(line.slice(4), 10);
151
+ }
152
+ else if (line.startsWith('FNF:')) {
153
+ functionsTotal = parseInt(line.slice(4), 10);
154
+ }
155
+ else if (line.startsWith('FNH:')) {
156
+ functionsCovered = parseInt(line.slice(4), 10);
157
+ }
158
+ else if (line.startsWith('DA:')) {
159
+ const [lineNum, count] = line.slice(3).split(',').map(s => parseInt(s, 10));
160
+ if (count === 0) {
161
+ uncoveredLines.push(lineNum);
162
+ }
163
+ }
164
+ else if (line.startsWith('BRDA:')) {
165
+ const parts = line.slice(5).split(',');
166
+ const lineNum = parseInt(parts[0], 10);
167
+ const taken = parts[3];
168
+ if (taken === '0' || taken === '-') {
169
+ uncoveredBranches.push(lineNum);
170
+ }
171
+ }
172
+ else if (line === 'end_of_record' && currentFile) {
173
+ files.push({
174
+ path: currentFile,
175
+ lines: { covered: linesCovered, total: linesTotal },
176
+ branches: { covered: branchesCovered, total: branchesTotal },
177
+ functions: { covered: functionsCovered, total: functionsTotal },
178
+ statements: { covered: linesCovered, total: linesTotal },
179
+ uncoveredLines: Array.from(new Set(uncoveredLines)),
180
+ uncoveredBranches: Array.from(new Set(uncoveredBranches)),
181
+ });
182
+ // Reset for next file
183
+ currentFile = null;
184
+ linesTotal = linesCovered = 0;
185
+ branchesTotal = branchesCovered = 0;
186
+ functionsTotal = functionsCovered = 0;
187
+ uncoveredLines.length = 0;
188
+ uncoveredBranches.length = 0;
189
+ }
190
+ }
191
+ // Calculate summary
192
+ let totalLines = 0, totalCoveredLines = 0;
193
+ let totalBranches = 0, totalCoveredBranches = 0;
194
+ let totalFunctions = 0, totalCoveredFunctions = 0;
195
+ for (const file of files) {
196
+ totalLines += file.lines.total;
197
+ totalCoveredLines += file.lines.covered;
198
+ totalBranches += file.branches.total;
199
+ totalCoveredBranches += file.branches.covered;
200
+ totalFunctions += file.functions.total;
201
+ totalCoveredFunctions += file.functions.covered;
202
+ }
203
+ return {
204
+ files,
205
+ summary: {
206
+ line: totalLines > 0 ? (totalCoveredLines / totalLines) * 100 : 0,
207
+ branch: totalBranches > 0 ? (totalCoveredBranches / totalBranches) * 100 : 0,
208
+ function: totalFunctions > 0 ? (totalCoveredFunctions / totalFunctions) * 100 : 0,
209
+ statement: totalLines > 0 ? (totalCoveredLines / totalLines) * 100 : 0,
210
+ files: files.length,
211
+ },
212
+ };
213
+ }
214
+ /**
215
+ * Parse Cobertura XML format (Python coverage.py, Java JaCoCo, etc.)
216
+ * Handles both coverage.xml and cobertura-coverage.xml formats.
217
+ * Uses attribute-order-independent extraction to handle output from
218
+ * different tools (coverage.py, JaCoCo, Cobertura) that order attributes differently.
219
+ */
220
+ export function parseCoberturaXml(content) {
221
+ const files = [];
222
+ // Helper: extract a named attribute from an XML element string, order-independent
223
+ function attr(element, name) {
224
+ const match = element.match(new RegExp(`${name}=["']([^"']*)["']`));
225
+ return match ? match[1] : null;
226
+ }
227
+ // Find all <class ...> elements (handles any attribute order)
228
+ const classRegex = /<class\s[^>]*?>/g;
229
+ let classMatch;
230
+ while ((classMatch = classRegex.exec(content)) !== null) {
231
+ const classTag = classMatch[0];
232
+ const filename = attr(classTag, 'filename');
233
+ if (!filename)
234
+ continue;
235
+ const lineRate = parseFloat(attr(classTag, 'line-rate') || 'NaN');
236
+ const branchRate = parseFloat(attr(classTag, 'branch-rate') || 'NaN');
237
+ // Find the </class> boundary for this element
238
+ const classStart = classMatch.index;
239
+ const classEnd = content.indexOf('</class>', classStart);
240
+ const classContent = classEnd > classStart
241
+ ? content.slice(classStart, classEnd)
242
+ : '';
243
+ let linesTotal = 0, linesCovered = 0;
244
+ let branchesTotal = 0, branchesCovered = 0;
245
+ let functionsTotal = 0, functionsCovered = 0;
246
+ const uncoveredLines = [];
247
+ const uncoveredBranches = [];
248
+ // Parse <line> elements (attribute-order-independent)
249
+ const lineRegex = /<line\s([^>]*?)\/>/g;
250
+ let lineMatch;
251
+ while ((lineMatch = lineRegex.exec(classContent)) !== null) {
252
+ const lineTag = lineMatch[1];
253
+ const lineNum = parseInt(attr(lineTag, 'number') || '0', 10);
254
+ const hits = parseInt(attr(lineTag, 'hits') || '0', 10);
255
+ const isBranch = attr(lineTag, 'branch') === 'true';
256
+ const condCoverage = attr(lineTag, 'condition-coverage');
257
+ linesTotal++;
258
+ if (hits > 0) {
259
+ linesCovered++;
260
+ }
261
+ else {
262
+ uncoveredLines.push(lineNum);
263
+ }
264
+ if (isBranch) {
265
+ branchesTotal++;
266
+ const condPct = condCoverage ? parseInt(condCoverage, 10) : (hits > 0 ? 100 : 0);
267
+ if (condPct === 100) {
268
+ branchesCovered++;
269
+ }
270
+ else {
271
+ uncoveredBranches.push(lineNum);
272
+ }
273
+ }
274
+ }
275
+ // Parse <method> elements for function coverage
276
+ const methodRegex = /<method\s([^>]*?)>/g;
277
+ let methodMatch;
278
+ while ((methodMatch = methodRegex.exec(classContent)) !== null) {
279
+ functionsTotal++;
280
+ // Check if method has any line hits (look for <line> within this method)
281
+ const methodStart = methodMatch.index;
282
+ const methodEnd = classContent.indexOf('</method>', methodStart);
283
+ if (methodEnd > methodStart) {
284
+ const methodContent = classContent.slice(methodStart, methodEnd);
285
+ const methodLineRegex = /<line\s([^>]*?)\/>/g;
286
+ let hasHits = false;
287
+ let mLineMatch;
288
+ while ((mLineMatch = methodLineRegex.exec(methodContent)) !== null) {
289
+ if (parseInt(attr(mLineMatch[1], 'hits') || '0', 10) > 0) {
290
+ hasHits = true;
291
+ break;
292
+ }
293
+ }
294
+ if (hasHits)
295
+ functionsCovered++;
296
+ }
297
+ }
298
+ // If no lines parsed, estimate from rates
299
+ if (linesTotal === 0 && !isNaN(lineRate)) {
300
+ linesTotal = 1;
301
+ linesCovered = lineRate >= 0.5 ? 1 : 0;
302
+ }
303
+ files.push({
304
+ path: filename,
305
+ lines: { covered: linesCovered, total: linesTotal },
306
+ branches: { covered: branchesCovered, total: branchesTotal },
307
+ functions: { covered: functionsCovered, total: functionsTotal },
308
+ statements: { covered: linesCovered, total: linesTotal },
309
+ uncoveredLines,
310
+ uncoveredBranches,
311
+ });
312
+ }
313
+ // Calculate summary
314
+ let totalLines = 0, totalCoveredLines = 0;
315
+ let totalBranches = 0, totalCoveredBranches = 0;
316
+ let totalFunctions = 0, totalCoveredFunctions = 0;
317
+ for (const file of files) {
318
+ totalLines += file.lines.total;
319
+ totalCoveredLines += file.lines.covered;
320
+ totalBranches += file.branches.total;
321
+ totalCoveredBranches += file.branches.covered;
322
+ totalFunctions += file.functions.total;
323
+ totalCoveredFunctions += file.functions.covered;
324
+ }
325
+ // Also try to extract top-level summary from <coverage> element (order-independent)
326
+ const coverageTag = content.match(/<coverage\s[^>]*?>/);
327
+ const summaryLineRate = coverageTag ? parseFloat(attr(coverageTag[0], 'line-rate') || 'NaN') * 100 : NaN;
328
+ const summaryBranchRate = coverageTag ? parseFloat(attr(coverageTag[0], 'branch-rate') || 'NaN') * 100 : NaN;
329
+ return {
330
+ files,
331
+ summary: {
332
+ line: !isNaN(summaryLineRate) ? summaryLineRate : (totalLines > 0 ? (totalCoveredLines / totalLines) * 100 : 0),
333
+ branch: !isNaN(summaryBranchRate) ? summaryBranchRate : (totalBranches > 0 ? (totalCoveredBranches / totalBranches) * 100 : 0),
334
+ function: totalFunctions > 0 ? (totalCoveredFunctions / totalFunctions) * 100 : 0,
335
+ statement: totalLines > 0 ? (totalCoveredLines / totalLines) * 100 : 0,
336
+ files: files.length,
337
+ },
338
+ };
339
+ }
340
+ /**
341
+ * Discover source files in a directory
342
+ */
343
+ export async function discoverSourceFiles(targetPath, options = {}) {
344
+ const files = [];
345
+ const { includeTests = true, languages } = options;
346
+ // Determine file extensions to include
347
+ // Default: scan ALL common source languages unless explicitly filtered
348
+ let extensions = [
349
+ '.ts', '.tsx', '.js', '.jsx', '.mjs', '.cjs', // JavaScript/TypeScript
350
+ '.py', '.pyw', // Python
351
+ '.go', // Go
352
+ '.rs', // Rust
353
+ '.java', '.kt', '.kts', // Java/Kotlin
354
+ '.rb', // Ruby
355
+ '.cs', // C#
356
+ '.php', // PHP
357
+ '.swift', // Swift
358
+ '.c', '.h', '.cpp', '.hpp', '.cc', // C/C++
359
+ '.scala', // Scala
360
+ ];
361
+ if (languages && languages.length > 0) {
362
+ extensions = [];
363
+ for (const lang of languages) {
364
+ if (lang === 'typescript')
365
+ extensions.push('.ts', '.tsx');
366
+ if (lang === 'javascript')
367
+ extensions.push('.js', '.jsx', '.mjs', '.cjs');
368
+ if (lang === 'python')
369
+ extensions.push('.py', '.pyw');
370
+ if (lang === 'go')
371
+ extensions.push('.go');
372
+ if (lang === 'rust')
373
+ extensions.push('.rs');
374
+ if (lang === 'java')
375
+ extensions.push('.java');
376
+ if (lang === 'kotlin')
377
+ extensions.push('.kt', '.kts');
378
+ if (lang === 'ruby')
379
+ extensions.push('.rb');
380
+ if (lang === 'csharp' || lang === 'c#')
381
+ extensions.push('.cs');
382
+ if (lang === 'php')
383
+ extensions.push('.php');
384
+ if (lang === 'swift')
385
+ extensions.push('.swift');
386
+ if (lang === 'c' || lang === 'cpp' || lang === 'c++')
387
+ extensions.push('.c', '.h', '.cpp', '.hpp', '.cc');
388
+ if (lang === 'scala')
389
+ extensions.push('.scala');
390
+ }
391
+ }
392
+ async function walkDir(dir) {
393
+ try {
394
+ const entries = await fs.readdir(dir, { withFileTypes: true });
395
+ for (const entry of entries) {
396
+ const fullPath = path.join(dir, entry.name);
397
+ // Skip common non-source directories
398
+ if (entry.isDirectory()) {
399
+ if (['node_modules', '.git', 'dist', 'build', 'coverage', '.nyc_output',
400
+ '__pycache__', '.venv', 'venv', '.tox', '.mypy_cache', 'target',
401
+ '.gradle', 'vendor', '.bundle'].includes(entry.name)) {
402
+ continue;
403
+ }
404
+ await walkDir(fullPath);
405
+ }
406
+ else if (entry.isFile()) {
407
+ const ext = path.extname(entry.name);
408
+ // Check extension
409
+ if (!extensions.includes(ext))
410
+ continue;
411
+ // Skip test files if not including tests
412
+ if (!includeTests) {
413
+ const isTestFile = entry.name.includes('.test.') ||
414
+ entry.name.includes('.spec.') ||
415
+ entry.name.endsWith('_test.ts') ||
416
+ entry.name.endsWith('_test.js') ||
417
+ fullPath.includes('/__tests__/') ||
418
+ fullPath.includes('/test/') ||
419
+ fullPath.includes('/tests/');
420
+ if (isTestFile)
421
+ continue;
422
+ }
423
+ files.push(fullPath);
424
+ }
425
+ }
426
+ }
427
+ catch {
428
+ // Directory not accessible
429
+ }
430
+ }
431
+ // Check if targetPath is a file or directory
432
+ try {
433
+ const stat = await fs.stat(targetPath);
434
+ if (stat.isFile()) {
435
+ return [targetPath];
436
+ }
437
+ await walkDir(targetPath);
438
+ }
439
+ catch {
440
+ // Path doesn't exist
441
+ }
442
+ return files;
443
+ }
444
+ /**
445
+ * Generate security recommendations based on findings
446
+ */
447
+ export function generateSecurityRecommendations(vulnerabilities) {
448
+ const recommendations = new Set();
449
+ const categoryRecommendations = {
450
+ 'injection': 'Use parameterized queries and input validation to prevent injection attacks',
451
+ 'xss': 'Sanitize user input and use Content-Security-Policy headers',
452
+ 'sensitive-data': 'Never hardcode secrets; use environment variables or secret managers',
453
+ 'access-control': 'Implement proper authentication and authorization checks',
454
+ 'security-misconfiguration': 'Review and harden security configurations',
455
+ 'insecure-deserialization': 'Avoid deserializing untrusted data; use safe alternatives',
456
+ 'broken-auth': 'Use strong authentication mechanisms and secure session management',
457
+ 'dependencies': 'Keep dependencies updated and regularly audit for vulnerabilities',
458
+ };
459
+ // Add category-specific recommendations
460
+ for (const vuln of vulnerabilities) {
461
+ const rec = categoryRecommendations[vuln.category];
462
+ if (rec) {
463
+ recommendations.add(rec);
464
+ }
465
+ }
466
+ // Add severity-based general recommendations
467
+ const hasCritical = vulnerabilities.some(v => v.severity === 'critical');
468
+ const hasHigh = vulnerabilities.some(v => v.severity === 'high');
469
+ if (hasCritical) {
470
+ recommendations.add('CRITICAL: Address critical vulnerabilities immediately before deployment');
471
+ }
472
+ if (hasHigh) {
473
+ recommendations.add('Prioritize fixing high-severity issues in the next sprint');
474
+ }
475
+ if (recommendations.size === 0 && vulnerabilities.length === 0) {
476
+ recommendations.add('No vulnerabilities found - maintain current security practices');
477
+ }
478
+ return Array.from(recommendations);
479
+ }
480
+ //# sourceMappingURL=handler-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler-utils.js","sourceRoot":"","sources":["../../../src/coordination/handlers/handler-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Barrel export for extracted task handlers.
3
+ *
4
+ * Each registration function takes a TaskHandlerContext and registers
5
+ * its handlers via ctx.registerHandler().
6
+ */
7
+ export { registerTestExecutionHandlers } from './test-execution-handlers';
8
+ export { registerCoverageHandlers } from './coverage-handlers';
9
+ export { registerSecurityHandlers } from './security-handlers';
10
+ export { registerQualityHandlers } from './quality-handlers';
11
+ export { registerRequirementsHandlers } from './requirements-handlers';
12
+ export { registerCodeIntelligenceHandlers } from './code-intelligence-handlers';
13
+ export { registerMiscHandlers } from './misc-handlers';
14
+ export type { TaskHandlerContext, InstanceTaskHandler } from './handler-types';
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/coordination/handlers/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,gCAAgC,EAAE,MAAM,8BAA8B,CAAC;AAChF,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAEvD,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Barrel export for extracted task handlers.
3
+ *
4
+ * Each registration function takes a TaskHandlerContext and registers
5
+ * its handlers via ctx.registerHandler().
6
+ */
7
+ export { registerTestExecutionHandlers } from './test-execution-handlers';
8
+ export { registerCoverageHandlers } from './coverage-handlers';
9
+ export { registerSecurityHandlers } from './security-handlers';
10
+ export { registerQualityHandlers } from './quality-handlers';
11
+ export { registerRequirementsHandlers } from './requirements-handlers';
12
+ export { registerCodeIntelligenceHandlers } from './code-intelligence-handlers';
13
+ export { registerMiscHandlers } from './misc-handlers';
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/coordination/handlers/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,gCAAgC,EAAE,MAAM,8BAA8B,CAAC;AAChF,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Miscellaneous task handlers (accessibility, chaos, learning).
3
+ *
4
+ * Extracted from task-executor.ts registerHandlers().
5
+ * Covers: test-accessibility, run-chaos, optimize-learning
6
+ */
7
+ import type { TaskHandlerContext } from './handler-types';
8
+ export declare function registerMiscHandlers(ctx: TaskHandlerContext): void;
9
+ //# sourceMappingURL=misc-handlers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"misc-handlers.d.ts","sourceRoot":"","sources":["../../../src/coordination/handlers/misc-handlers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,kBAAkB,GAAG,IAAI,CAkElE"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Miscellaneous task handlers (accessibility, chaos, learning).
3
+ *
4
+ * Extracted from task-executor.ts registerHandlers().
5
+ * Covers: test-accessibility, run-chaos, optimize-learning
6
+ */
7
+ import { ok } from '../../shared/types';
8
+ export function registerMiscHandlers(ctx) {
9
+ // Register accessibility test handler
10
+ ctx.registerHandler('test-accessibility', async (task) => {
11
+ const payload = task.payload;
12
+ // Accessibility testing requires a browser/DOM — return honest guidance
13
+ return ok({
14
+ url: payload.url || '',
15
+ standard: payload.standard || 'wcag21-aa',
16
+ passed: false,
17
+ violations: [],
18
+ warnings: [],
19
+ score: 0,
20
+ note: 'Accessibility testing requires a browser environment (Puppeteer/Playwright). ' +
21
+ 'Use tools like axe-core, pa11y, or Lighthouse CLI for WCAG compliance testing. ' +
22
+ 'Example: npx pa11y ' + (payload.url || '<url>'),
23
+ });
24
+ });
25
+ // Register chaos test handler
26
+ ctx.registerHandler('run-chaos', async (task) => {
27
+ const payload = task.payload;
28
+ // Chaos testing requires infrastructure access — return honest guidance
29
+ return ok({
30
+ faultType: payload.faultType || 'unknown',
31
+ target: payload.target || 'unknown',
32
+ dryRun: payload.dryRun ?? true,
33
+ duration: payload.duration || 0,
34
+ systemBehavior: 'not-executed',
35
+ resilience: null,
36
+ note: 'Chaos engineering requires infrastructure-level fault injection. ' +
37
+ 'Use tools like Chaos Monkey, Litmus, or toxiproxy for real resilience testing. ' +
38
+ 'For Node.js apps, consider: nock (HTTP faults), testcontainers (dependency failures).',
39
+ });
40
+ });
41
+ // Register learning optimization handler
42
+ ctx.registerHandler('optimize-learning', async (_task) => {
43
+ // Check actual pattern store state
44
+ try {
45
+ const memUsage = await import('../../kernel/unified-memory-hnsw.js');
46
+ return ok({
47
+ patternsLearned: 0,
48
+ modelsUpdated: 0,
49
+ memoryConsolidated: false,
50
+ note: 'Learning optimization runs during the dream cycle (SessionEnd hook). ' +
51
+ 'Use "npx agentic-qe hooks session-end --save-state" to trigger pattern consolidation.',
52
+ });
53
+ }
54
+ catch {
55
+ return ok({
56
+ patternsLearned: 0,
57
+ modelsUpdated: 0,
58
+ memoryConsolidated: false,
59
+ note: 'Learning system not initialized. Run "aqe init --auto" first.',
60
+ });
61
+ }
62
+ });
63
+ }
64
+ //# sourceMappingURL=misc-handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"misc-handlers.js","sourceRoot":"","sources":["../../../src/coordination/handlers/misc-handlers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AAGxC,MAAM,UAAU,oBAAoB,CAAC,GAAuB;IAC1D,sCAAsC;IACtC,GAAG,CAAC,eAAe,CAAC,oBAAoB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACvD,MAAM,OAAO,GAAG,IAAI,CAAC,OAGpB,CAAC;QAEF,wEAAwE;QACxE,OAAO,EAAE,CAAC;YACR,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,EAAE;YACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,WAAW;YACzC,MAAM,EAAE,KAAK;YACb,UAAU,EAAE,EAAE;YACd,QAAQ,EAAE,EAAE;YACZ,KAAK,EAAE,CAAC;YACR,IAAI,EAAE,+EAA+E;gBAC/E,iFAAiF;gBACjF,qBAAqB,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC;SACvD,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,8BAA8B;IAC9B,GAAG,CAAC,eAAe,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,OAKpB,CAAC;QAEF,wEAAwE;QACxE,OAAO,EAAE,CAAC;YACR,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,SAAS;YACzC,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,SAAS;YACnC,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,IAAI;YAC9B,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,CAAC;YAC/B,cAAc,EAAE,cAAc;YAC9B,UAAU,EAAE,IAAI;YAChB,IAAI,EAAE,mEAAmE;gBACnE,iFAAiF;gBACjF,uFAAuF;SAC9F,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,yCAAyC;IACzC,GAAG,CAAC,eAAe,CAAC,mBAAmB,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;QACvD,mCAAmC;QACnC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,qCAAqC,CAAC,CAAC;YACrE,OAAO,EAAE,CAAC;gBACR,eAAe,EAAE,CAAC;gBAClB,aAAa,EAAE,CAAC;gBAChB,kBAAkB,EAAE,KAAK;gBACzB,IAAI,EAAE,uEAAuE;oBACvE,uFAAuF;aAC9F,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;gBACR,eAAe,EAAE,CAAC;gBAClB,aAAa,EAAE,CAAC;gBAChB,kBAAkB,EAAE,KAAK;gBACzB,IAAI,EAAE,+DAA+D;aACtE,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Quality assessment task handlers.
3
+ *
4
+ * Extracted from task-executor.ts registerHandlers().
5
+ * Covers: assess-quality
6
+ */
7
+ import type { TaskHandlerContext } from './handler-types';
8
+ export declare function registerQualityHandlers(ctx: TaskHandlerContext): void;
9
+ //# sourceMappingURL=quality-handlers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quality-handlers.d.ts","sourceRoot":"","sources":["../../../src/coordination/handlers/quality-handlers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAG1D,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,kBAAkB,GAAG,IAAI,CAmFrE"}