agentic-orchestrator 0.1.6 → 0.1.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 (438) hide show
  1. package/.prettierignore +10 -0
  2. package/.prettierrc.json +24 -0
  3. package/CLAUDE.md +3 -2
  4. package/README.md +71 -48
  5. package/agentic/orchestrator/defaults/policy.defaults.yaml +1 -1
  6. package/agentic/orchestrator/prompts/planner.system.md +1 -0
  7. package/agentic/orchestrator/schemas/agents.schema.json +5 -22
  8. package/agentic/orchestrator/schemas/gates.schema.json +4 -19
  9. package/agentic/orchestrator/schemas/index.schema.json +3 -14
  10. package/agentic/orchestrator/schemas/multi-project.schema.json +2 -8
  11. package/agentic/orchestrator/schemas/plan.schema.json +6 -26
  12. package/agentic/orchestrator/schemas/policy.schema.json +19 -81
  13. package/agentic/orchestrator/schemas/policy.user.schema.json +1 -5
  14. package/agentic/orchestrator/schemas/qa_test_index.schema.json +5 -29
  15. package/agentic/orchestrator/schemas/state.schema.json +11 -61
  16. package/agentic/orchestrator/tools/catalog.json +33 -164
  17. package/agentic/orchestrator/tools/schemas/input/evidence.latest.input.schema.json +1 -3
  18. package/agentic/orchestrator/tools/schemas/input/feature.delete.input.schema.json +1 -5
  19. package/agentic/orchestrator/tools/schemas/input/feature.get_context.input.schema.json +1 -3
  20. package/agentic/orchestrator/tools/schemas/input/feature.init.input.schema.json +1 -4
  21. package/agentic/orchestrator/tools/schemas/input/feature.log_append.input.schema.json +1 -5
  22. package/agentic/orchestrator/tools/schemas/input/feature.ready_to_merge.input.schema.json +1 -6
  23. package/agentic/orchestrator/tools/schemas/input/feature.state_get.input.schema.json +1 -3
  24. package/agentic/orchestrator/tools/schemas/input/feature.state_patch.input.schema.json +1 -5
  25. package/agentic/orchestrator/tools/schemas/input/gates.run.input.schema.json +1 -5
  26. package/agentic/orchestrator/tools/schemas/input/locks.acquire.input.schema.json +1 -5
  27. package/agentic/orchestrator/tools/schemas/input/locks.release.input.schema.json +1 -5
  28. package/agentic/orchestrator/tools/schemas/input/performance.record_outcome.input.schema.json +10 -1
  29. package/agentic/orchestrator/tools/schemas/input/plan.get.input.schema.json +1 -3
  30. package/agentic/orchestrator/tools/schemas/input/plan.submit.input.schema.json +1 -5
  31. package/agentic/orchestrator/tools/schemas/input/plan.update.input.schema.json +1 -6
  32. package/agentic/orchestrator/tools/schemas/input/qa.test_index_get.input.schema.json +1 -3
  33. package/agentic/orchestrator/tools/schemas/input/qa.test_index_update.input.schema.json +1 -6
  34. package/agentic/orchestrator/tools/schemas/input/repo.apply_patch.input.schema.json +1 -5
  35. package/agentic/orchestrator/tools/schemas/input/repo.diff.input.schema.json +1 -3
  36. package/agentic/orchestrator/tools/schemas/input/repo.diff_bundle.input.schema.json +1 -3
  37. package/agentic/orchestrator/tools/schemas/input/repo.ensure_worktree.input.schema.json +1 -4
  38. package/agentic/orchestrator/tools/schemas/input/repo.read_file.input.schema.json +1 -4
  39. package/agentic/orchestrator/tools/schemas/input/repo.search.input.schema.json +1 -4
  40. package/agentic/orchestrator/tools/schemas/input/repo.status.input.schema.json +1 -3
  41. package/agentic/orchestrator/tools/schemas/input/report.feature_summary.input.schema.json +1 -3
  42. package/agentic/orchestrator/tools/schemas/output/collisions.scan.output.schema.json +1 -3
  43. package/agentic/orchestrator/tools/schemas/output/evidence.latest.output.schema.json +1 -4
  44. package/agentic/orchestrator/tools/schemas/output/feature.delete.output.schema.json +4 -20
  45. package/agentic/orchestrator/tools/schemas/output/feature.discover_specs.output.schema.json +2 -7
  46. package/agentic/orchestrator/tools/schemas/output/feature.get_context.output.schema.json +1 -8
  47. package/agentic/orchestrator/tools/schemas/output/feature.init.output.schema.json +1 -5
  48. package/agentic/orchestrator/tools/schemas/output/feature.log_append.output.schema.json +1 -5
  49. package/agentic/orchestrator/tools/schemas/output/feature.ready_to_merge.output.schema.json +1 -6
  50. package/agentic/orchestrator/tools/schemas/output/feature.state_get.output.schema.json +1 -4
  51. package/agentic/orchestrator/tools/schemas/output/feature.state_patch.output.schema.json +1 -5
  52. package/agentic/orchestrator/tools/schemas/output/gates.list.output.schema.json +2 -7
  53. package/agentic/orchestrator/tools/schemas/output/gates.run.output.schema.json +1 -8
  54. package/agentic/orchestrator/tools/schemas/output/locks.acquire.output.schema.json +1 -7
  55. package/agentic/orchestrator/tools/schemas/output/locks.release.output.schema.json +1 -5
  56. package/agentic/orchestrator/tools/schemas/output/performance.get_analytics.output.schema.json +22 -2
  57. package/agentic/orchestrator/tools/schemas/output/plan.get.output.schema.json +1 -4
  58. package/agentic/orchestrator/tools/schemas/output/plan.submit.output.schema.json +1 -5
  59. package/agentic/orchestrator/tools/schemas/output/plan.update.output.schema.json +1 -5
  60. package/agentic/orchestrator/tools/schemas/output/qa.test_index_get.output.schema.json +1 -5
  61. package/agentic/orchestrator/tools/schemas/output/qa.test_index_update.output.schema.json +1 -4
  62. package/agentic/orchestrator/tools/schemas/output/repo.apply_patch.output.schema.json +1 -6
  63. package/agentic/orchestrator/tools/schemas/output/repo.diff.output.schema.json +1 -4
  64. package/agentic/orchestrator/tools/schemas/output/repo.diff_bundle.output.schema.json +1 -7
  65. package/agentic/orchestrator/tools/schemas/output/repo.ensure_worktree.output.schema.json +1 -6
  66. package/agentic/orchestrator/tools/schemas/output/repo.read_file.output.schema.json +1 -5
  67. package/agentic/orchestrator/tools/schemas/output/repo.search.output.schema.json +1 -5
  68. package/agentic/orchestrator/tools/schemas/output/repo.status.output.schema.json +1 -5
  69. package/agentic/orchestrator/tools/schemas/output/report.dashboard.output.schema.json +1 -4
  70. package/apps/control-plane/scripts/validate-architecture-rules.mjs +16 -5
  71. package/apps/control-plane/scripts/validate-docker-mcp-contract.mjs +30 -8
  72. package/apps/control-plane/scripts/validate-mcp-contracts.ts +13 -7
  73. package/apps/control-plane/src/application/adapters/adapter-registry.ts +35 -15
  74. package/apps/control-plane/src/application/multi-project-loader.ts +27 -10
  75. package/apps/control-plane/src/application/services/activity-monitor-service.ts +26 -14
  76. package/apps/control-plane/src/application/services/collision-queue-service.ts +31 -17
  77. package/apps/control-plane/src/application/services/cost-tracking-service.ts +23 -16
  78. package/apps/control-plane/src/application/services/dependency-scheduler-service.ts +12 -4
  79. package/apps/control-plane/src/application/services/feature-deletion-service.ts +94 -58
  80. package/apps/control-plane/src/application/services/feature-lifecycle-service.ts +19 -13
  81. package/apps/control-plane/src/application/services/feature-state-service.ts +29 -19
  82. package/apps/control-plane/src/application/services/gate-interpolation-service.ts +7 -2
  83. package/apps/control-plane/src/application/services/gate-service.ts +64 -41
  84. package/apps/control-plane/src/application/services/instance-isolation-service.ts +1 -1
  85. package/apps/control-plane/src/application/services/issue-tracker-service.ts +49 -38
  86. package/apps/control-plane/src/application/services/lock-service.ts +75 -49
  87. package/apps/control-plane/src/application/services/merge-service.ts +91 -50
  88. package/apps/control-plane/src/application/services/notifier-service.ts +42 -20
  89. package/apps/control-plane/src/application/services/patch-service.ts +73 -44
  90. package/apps/control-plane/src/application/services/performance-analytics-service.ts +8 -6
  91. package/apps/control-plane/src/application/services/plan-service.ts +148 -89
  92. package/apps/control-plane/src/application/services/policy-loader-service.ts +10 -4
  93. package/apps/control-plane/src/application/services/pr-monitor-service.ts +33 -14
  94. package/apps/control-plane/src/application/services/qa-index-service.ts +20 -16
  95. package/apps/control-plane/src/application/services/reactions-service.ts +30 -15
  96. package/apps/control-plane/src/application/services/reporting-service.ts +16 -12
  97. package/apps/control-plane/src/application/services/run-lease-service.ts +138 -81
  98. package/apps/control-plane/src/application/tools/tool-metadata.ts +5 -5
  99. package/apps/control-plane/src/application/tools/tool-router.ts +6 -3
  100. package/apps/control-plane/src/cli/aop.ts +2 -2
  101. package/apps/control-plane/src/cli/attach-command-handler.ts +9 -9
  102. package/apps/control-plane/src/cli/cleanup-command-handler.ts +16 -11
  103. package/apps/control-plane/src/cli/cli-argument-parser.ts +6 -3
  104. package/apps/control-plane/src/cli/dashboard-command-handler.ts +28 -8
  105. package/apps/control-plane/src/cli/delete-command-handler.ts +7 -7
  106. package/apps/control-plane/src/cli/env-file.ts +115 -0
  107. package/apps/control-plane/src/cli/help-command-handler.ts +61 -32
  108. package/apps/control-plane/src/cli/init-command-handler.ts +182 -56
  109. package/apps/control-plane/src/cli/io.ts +7 -3
  110. package/apps/control-plane/src/cli/resume-command-handler.ts +21 -13
  111. package/apps/control-plane/src/cli/retry-command-handler.ts +12 -11
  112. package/apps/control-plane/src/cli/run-command-handler.ts +12 -8
  113. package/apps/control-plane/src/cli/send-command-handler.ts +6 -6
  114. package/apps/control-plane/src/cli/spec-ingestion-service.ts +14 -8
  115. package/apps/control-plane/src/cli/spec-input-resolver.ts +6 -1
  116. package/apps/control-plane/src/cli/spec-utils.ts +2 -2
  117. package/apps/control-plane/src/cli/status-command-handler.ts +13 -12
  118. package/apps/control-plane/src/cli/tooling.ts +3 -3
  119. package/apps/control-plane/src/cli/types.ts +1 -1
  120. package/apps/control-plane/src/core/collisions.ts +27 -10
  121. package/apps/control-plane/src/core/constants.ts +13 -7
  122. package/apps/control-plane/src/core/error-codes.ts +1 -1
  123. package/apps/control-plane/src/core/fs.ts +11 -5
  124. package/apps/control-plane/src/core/gates.ts +53 -27
  125. package/apps/control-plane/src/core/git.ts +18 -6
  126. package/apps/control-plane/src/core/kernel.ts +513 -227
  127. package/apps/control-plane/src/core/patch.ts +7 -3
  128. package/apps/control-plane/src/core/path-layout.ts +5 -1
  129. package/apps/control-plane/src/core/path-rules.ts +19 -5
  130. package/apps/control-plane/src/core/qa-index.ts +26 -12
  131. package/apps/control-plane/src/core/response.ts +9 -6
  132. package/apps/control-plane/src/core/schemas.ts +29 -10
  133. package/apps/control-plane/src/core/tool-caller.ts +1 -1
  134. package/apps/control-plane/src/core/workspace-hooks.ts +5 -5
  135. package/apps/control-plane/src/index.ts +3 -9
  136. package/apps/control-plane/src/interfaces/cli/bootstrap.ts +79 -35
  137. package/apps/control-plane/src/mcp/kernel-tool-executor.ts +7 -3
  138. package/apps/control-plane/src/mcp/mcp-server-adapter.ts +12 -10
  139. package/apps/control-plane/src/mcp/operation-ledger.ts +18 -8
  140. package/apps/control-plane/src/mcp/protocol-contract.ts +2 -2
  141. package/apps/control-plane/src/mcp/runtime-factory.ts +15 -6
  142. package/apps/control-plane/src/mcp/token-auth-verifier.ts +3 -2
  143. package/apps/control-plane/src/mcp/token-claims-validator.ts +11 -7
  144. package/apps/control-plane/src/mcp/tool-authorizer.ts +1 -3
  145. package/apps/control-plane/src/mcp/tool-client.ts +17 -5
  146. package/apps/control-plane/src/mcp/tool-contract-validator.ts +17 -8
  147. package/apps/control-plane/src/mcp/tool-registry-loader.ts +7 -3
  148. package/apps/control-plane/src/mcp/tool-runtime.ts +66 -39
  149. package/apps/control-plane/src/mcp/tools-markdown-generator.ts +6 -1
  150. package/apps/control-plane/src/providers/providers.ts +137 -54
  151. package/apps/control-plane/src/supervisor/build-wave-executor.ts +44 -25
  152. package/apps/control-plane/src/supervisor/planning-wave-executor.ts +46 -33
  153. package/apps/control-plane/src/supervisor/prompt-bundle-loader.ts +1 -1
  154. package/apps/control-plane/src/supervisor/qa-wave-executor.ts +38 -23
  155. package/apps/control-plane/src/supervisor/run-coordinator.ts +71 -36
  156. package/apps/control-plane/src/supervisor/runtime.ts +59 -35
  157. package/apps/control-plane/src/supervisor/session-orchestrator.ts +48 -31
  158. package/apps/control-plane/src/supervisor/types.ts +22 -7
  159. package/apps/control-plane/src/supervisor/worker-decision-loop.ts +30 -20
  160. package/apps/control-plane/test/activity-monitor.spec.ts +54 -30
  161. package/apps/control-plane/test/adapter-registry.spec.ts +5 -5
  162. package/apps/control-plane/test/aop.spec.ts +4 -4
  163. package/apps/control-plane/test/batch-operations.spec.ts +20 -18
  164. package/apps/control-plane/test/bootstrap-attach.spec.ts +52 -19
  165. package/apps/control-plane/test/bootstrap-edge-cases.spec.ts +58 -27
  166. package/apps/control-plane/test/bootstrap.spec.ts +72 -40
  167. package/apps/control-plane/test/cleanup-command.spec.ts +86 -32
  168. package/apps/control-plane/test/cli-helpers.spec.ts +119 -66
  169. package/apps/control-plane/test/cli.spec.ts +1 -1
  170. package/apps/control-plane/test/cli.unit.spec.ts +226 -167
  171. package/apps/control-plane/test/collision-queue.spec.ts +49 -40
  172. package/apps/control-plane/test/collisions.spec.ts +30 -30
  173. package/apps/control-plane/test/core-utils.spec.ts +29 -15
  174. package/apps/control-plane/test/cost-tracking.spec.ts +38 -22
  175. package/apps/control-plane/test/dashboard-api.integration.spec.ts +68 -36
  176. package/apps/control-plane/test/dashboard-client.spec.ts +18 -12
  177. package/apps/control-plane/test/dashboard-command.spec.ts +11 -7
  178. package/apps/control-plane/test/delete-command-handler.spec.ts +49 -41
  179. package/apps/control-plane/test/dependency-scheduler.spec.ts +47 -20
  180. package/apps/control-plane/test/epoch-tracking.spec.ts +9 -9
  181. package/apps/control-plane/test/feature-deletion-service.spec.ts +60 -52
  182. package/apps/control-plane/test/feature-lifecycle.spec.ts +36 -17
  183. package/apps/control-plane/test/gates.spec.ts +101 -81
  184. package/apps/control-plane/test/git-spawn-error.spec.ts +1 -1
  185. package/apps/control-plane/test/helpers.ts +10 -6
  186. package/apps/control-plane/test/incremental-gates.spec.ts +59 -20
  187. package/apps/control-plane/test/init-wizard.spec.ts +328 -68
  188. package/apps/control-plane/test/instance-isolation.spec.ts +43 -10
  189. package/apps/control-plane/test/issue-tracker.spec.ts +368 -128
  190. package/apps/control-plane/test/kernel-collision-replay.spec.ts +50 -29
  191. package/apps/control-plane/test/kernel.branches.spec.ts +64 -40
  192. package/apps/control-plane/test/kernel.coverage.spec.ts +85 -49
  193. package/apps/control-plane/test/kernel.coverage2.spec.ts +109 -65
  194. package/apps/control-plane/test/kernel.spec.ts +134 -51
  195. package/apps/control-plane/test/lock-service.spec.ts +92 -68
  196. package/apps/control-plane/test/mcp-helpers.spec.ts +53 -39
  197. package/apps/control-plane/test/mcp.spec.ts +231 -115
  198. package/apps/control-plane/test/merge-service.spec.ts +142 -94
  199. package/apps/control-plane/test/multi-project.spec.ts +28 -22
  200. package/apps/control-plane/test/notifier-service.spec.ts +136 -92
  201. package/apps/control-plane/test/parallel-gates.spec.ts +51 -35
  202. package/apps/control-plane/test/patch-service.spec.ts +128 -48
  203. package/apps/control-plane/test/performance-analytics.spec.ts +99 -63
  204. package/apps/control-plane/test/plan-service.spec.ts +50 -39
  205. package/apps/control-plane/test/planning-wave-executor.spec.ts +95 -71
  206. package/apps/control-plane/test/policy-loader-service.spec.ts +41 -19
  207. package/apps/control-plane/test/pr-monitor.spec.ts +113 -64
  208. package/apps/control-plane/test/providers.spec.ts +208 -104
  209. package/apps/control-plane/test/qa-index-service.spec.ts +31 -33
  210. package/apps/control-plane/test/qa-index.spec.ts +58 -61
  211. package/apps/control-plane/test/reactions.spec.ts +88 -45
  212. package/apps/control-plane/test/response.spec.ts +5 -5
  213. package/apps/control-plane/test/resume-command.spec.ts +121 -80
  214. package/apps/control-plane/test/run-coordinator.spec.ts +205 -136
  215. package/apps/control-plane/test/schema-date-time.spec.ts +49 -41
  216. package/apps/control-plane/test/service-retry-paths.spec.ts +77 -57
  217. package/apps/control-plane/test/services.spec.ts +147 -129
  218. package/apps/control-plane/test/session-management.spec.ts +136 -74
  219. package/apps/control-plane/test/spec-ingestion.spec.ts +23 -21
  220. package/apps/control-plane/test/spec-input-resolver.spec.ts +11 -10
  221. package/apps/control-plane/test/supervisor-collaborators.spec.ts +168 -121
  222. package/apps/control-plane/test/supervisor.calltool.spec.ts +21 -18
  223. package/apps/control-plane/test/supervisor.spec.ts +67 -43
  224. package/apps/control-plane/test/supervisor.unit.spec.ts +195 -126
  225. package/apps/control-plane/test/token-auth-verifier.spec.ts +29 -14
  226. package/apps/control-plane/test/tool-registry-loader.spec.ts +51 -27
  227. package/apps/control-plane/test/tool-runtime.spec.ts +63 -46
  228. package/apps/control-plane/test/worker-decision-loop.spec.ts +143 -122
  229. package/apps/control-plane/test/workspace-hooks.spec.ts +61 -23
  230. package/apps/control-plane/tsconfig.build.json +2 -7
  231. package/apps/control-plane/tsconfig.json +1 -5
  232. package/apps/control-plane/vitest.config.ts +7 -7
  233. package/config/agentic/orchestrator/adapters.yaml +3 -0
  234. package/config/agentic/orchestrator/agents.yaml +14 -0
  235. package/config/agentic/orchestrator/gates.yaml +28 -0
  236. package/config/agentic/orchestrator/policy.yaml +22 -0
  237. package/config/agentic/orchestrator/prompts/builder.system.md +1 -0
  238. package/config/agentic/orchestrator/prompts/planner.system.md +16 -0
  239. package/config/agentic/orchestrator/prompts/qa.system.md +1 -0
  240. package/dist/apps/control-plane/application/adapters/adapter-registry.js +12 -5
  241. package/dist/apps/control-plane/application/adapters/adapter-registry.js.map +1 -1
  242. package/dist/apps/control-plane/application/multi-project-loader.js +26 -9
  243. package/dist/apps/control-plane/application/multi-project-loader.js.map +1 -1
  244. package/dist/apps/control-plane/application/services/activity-monitor-service.js +7 -7
  245. package/dist/apps/control-plane/application/services/activity-monitor-service.js.map +1 -1
  246. package/dist/apps/control-plane/application/services/collision-queue-service.js +7 -7
  247. package/dist/apps/control-plane/application/services/collision-queue-service.js.map +1 -1
  248. package/dist/apps/control-plane/application/services/cost-tracking-service.js +6 -8
  249. package/dist/apps/control-plane/application/services/cost-tracking-service.js.map +1 -1
  250. package/dist/apps/control-plane/application/services/dependency-scheduler-service.js.map +1 -1
  251. package/dist/apps/control-plane/application/services/feature-deletion-service.js +37 -29
  252. package/dist/apps/control-plane/application/services/feature-deletion-service.js.map +1 -1
  253. package/dist/apps/control-plane/application/services/feature-lifecycle-service.js +10 -10
  254. package/dist/apps/control-plane/application/services/feature-lifecycle-service.js.map +1 -1
  255. package/dist/apps/control-plane/application/services/feature-state-service.js +11 -11
  256. package/dist/apps/control-plane/application/services/feature-state-service.js.map +1 -1
  257. package/dist/apps/control-plane/application/services/gate-interpolation-service.js +3 -1
  258. package/dist/apps/control-plane/application/services/gate-interpolation-service.js.map +1 -1
  259. package/dist/apps/control-plane/application/services/gate-service.js +26 -26
  260. package/dist/apps/control-plane/application/services/gate-service.js.map +1 -1
  261. package/dist/apps/control-plane/application/services/instance-isolation-service.js +1 -1
  262. package/dist/apps/control-plane/application/services/instance-isolation-service.js.map +1 -1
  263. package/dist/apps/control-plane/application/services/issue-tracker-service.js +25 -15
  264. package/dist/apps/control-plane/application/services/issue-tracker-service.js.map +1 -1
  265. package/dist/apps/control-plane/application/services/lock-service.js +32 -32
  266. package/dist/apps/control-plane/application/services/lock-service.js.map +1 -1
  267. package/dist/apps/control-plane/application/services/merge-service.js +41 -27
  268. package/dist/apps/control-plane/application/services/merge-service.js.map +1 -1
  269. package/dist/apps/control-plane/application/services/notifier-service.js +29 -15
  270. package/dist/apps/control-plane/application/services/notifier-service.js.map +1 -1
  271. package/dist/apps/control-plane/application/services/patch-service.js +21 -19
  272. package/dist/apps/control-plane/application/services/patch-service.js.map +1 -1
  273. package/dist/apps/control-plane/application/services/performance-analytics-service.js +4 -4
  274. package/dist/apps/control-plane/application/services/performance-analytics-service.js.map +1 -1
  275. package/dist/apps/control-plane/application/services/plan-service.js +33 -33
  276. package/dist/apps/control-plane/application/services/plan-service.js.map +1 -1
  277. package/dist/apps/control-plane/application/services/policy-loader-service.js.map +1 -1
  278. package/dist/apps/control-plane/application/services/pr-monitor-service.js +23 -11
  279. package/dist/apps/control-plane/application/services/pr-monitor-service.js.map +1 -1
  280. package/dist/apps/control-plane/application/services/qa-index-service.js +11 -11
  281. package/dist/apps/control-plane/application/services/qa-index-service.js.map +1 -1
  282. package/dist/apps/control-plane/application/services/reactions-service.js +13 -9
  283. package/dist/apps/control-plane/application/services/reactions-service.js.map +1 -1
  284. package/dist/apps/control-plane/application/services/reporting-service.js +11 -9
  285. package/dist/apps/control-plane/application/services/reporting-service.js.map +1 -1
  286. package/dist/apps/control-plane/application/services/run-lease-service.js +34 -33
  287. package/dist/apps/control-plane/application/services/run-lease-service.js.map +1 -1
  288. package/dist/apps/control-plane/application/tools/tool-metadata.js +2 -2
  289. package/dist/apps/control-plane/application/tools/tool-router.js.map +1 -1
  290. package/dist/apps/control-plane/cli/attach-command-handler.js +9 -9
  291. package/dist/apps/control-plane/cli/cleanup-command-handler.js +11 -9
  292. package/dist/apps/control-plane/cli/cleanup-command-handler.js.map +1 -1
  293. package/dist/apps/control-plane/cli/cli-argument-parser.js +4 -3
  294. package/dist/apps/control-plane/cli/cli-argument-parser.js.map +1 -1
  295. package/dist/apps/control-plane/cli/dashboard-command-handler.js +23 -7
  296. package/dist/apps/control-plane/cli/dashboard-command-handler.js.map +1 -1
  297. package/dist/apps/control-plane/cli/delete-command-handler.js +7 -7
  298. package/dist/apps/control-plane/cli/env-file.d.ts +4 -0
  299. package/dist/apps/control-plane/cli/env-file.js +89 -0
  300. package/dist/apps/control-plane/cli/env-file.js.map +1 -0
  301. package/dist/apps/control-plane/cli/help-command-handler.js +58 -30
  302. package/dist/apps/control-plane/cli/help-command-handler.js.map +1 -1
  303. package/dist/apps/control-plane/cli/init-command-handler.js +97 -37
  304. package/dist/apps/control-plane/cli/init-command-handler.js.map +1 -1
  305. package/dist/apps/control-plane/cli/io.js +2 -2
  306. package/dist/apps/control-plane/cli/io.js.map +1 -1
  307. package/dist/apps/control-plane/cli/resume-command-handler.js +9 -9
  308. package/dist/apps/control-plane/cli/resume-command-handler.js.map +1 -1
  309. package/dist/apps/control-plane/cli/retry-command-handler.js +12 -11
  310. package/dist/apps/control-plane/cli/retry-command-handler.js.map +1 -1
  311. package/dist/apps/control-plane/cli/run-command-handler.js +12 -8
  312. package/dist/apps/control-plane/cli/run-command-handler.js.map +1 -1
  313. package/dist/apps/control-plane/cli/send-command-handler.js +6 -6
  314. package/dist/apps/control-plane/cli/spec-ingestion-service.js +10 -8
  315. package/dist/apps/control-plane/cli/spec-ingestion-service.js.map +1 -1
  316. package/dist/apps/control-plane/cli/spec-input-resolver.js.map +1 -1
  317. package/dist/apps/control-plane/cli/spec-utils.js.map +1 -1
  318. package/dist/apps/control-plane/cli/status-command-handler.js +8 -8
  319. package/dist/apps/control-plane/cli/status-command-handler.js.map +1 -1
  320. package/dist/apps/control-plane/cli/tooling.js +1 -1
  321. package/dist/apps/control-plane/core/collisions.js +11 -8
  322. package/dist/apps/control-plane/core/collisions.js.map +1 -1
  323. package/dist/apps/control-plane/core/constants.js +13 -7
  324. package/dist/apps/control-plane/core/constants.js.map +1 -1
  325. package/dist/apps/control-plane/core/error-codes.js +1 -1
  326. package/dist/apps/control-plane/core/fs.js.map +1 -1
  327. package/dist/apps/control-plane/core/gates.d.ts +2 -2
  328. package/dist/apps/control-plane/core/gates.js +26 -19
  329. package/dist/apps/control-plane/core/gates.js.map +1 -1
  330. package/dist/apps/control-plane/core/git.js +3 -3
  331. package/dist/apps/control-plane/core/git.js.map +1 -1
  332. package/dist/apps/control-plane/core/kernel.d.ts +1 -0
  333. package/dist/apps/control-plane/core/kernel.js +134 -81
  334. package/dist/apps/control-plane/core/kernel.js.map +1 -1
  335. package/dist/apps/control-plane/core/patch.js +7 -3
  336. package/dist/apps/control-plane/core/patch.js.map +1 -1
  337. package/dist/apps/control-plane/core/path-layout.d.ts +1 -0
  338. package/dist/apps/control-plane/core/path-layout.js +4 -1
  339. package/dist/apps/control-plane/core/path-layout.js.map +1 -1
  340. package/dist/apps/control-plane/core/path-rules.js +3 -1
  341. package/dist/apps/control-plane/core/path-rules.js.map +1 -1
  342. package/dist/apps/control-plane/core/qa-index.js +5 -5
  343. package/dist/apps/control-plane/core/qa-index.js.map +1 -1
  344. package/dist/apps/control-plane/core/response.js +3 -3
  345. package/dist/apps/control-plane/core/response.js.map +1 -1
  346. package/dist/apps/control-plane/core/schemas.js +10 -6
  347. package/dist/apps/control-plane/core/schemas.js.map +1 -1
  348. package/dist/apps/control-plane/core/workspace-hooks.js +3 -3
  349. package/dist/apps/control-plane/index.d.ts +1 -1
  350. package/dist/apps/control-plane/index.js +1 -1
  351. package/dist/apps/control-plane/index.js.map +1 -1
  352. package/dist/apps/control-plane/interfaces/cli/bootstrap.js +40 -23
  353. package/dist/apps/control-plane/interfaces/cli/bootstrap.js.map +1 -1
  354. package/dist/apps/control-plane/mcp/kernel-tool-executor.js +1 -1
  355. package/dist/apps/control-plane/mcp/kernel-tool-executor.js.map +1 -1
  356. package/dist/apps/control-plane/mcp/mcp-server-adapter.js +6 -7
  357. package/dist/apps/control-plane/mcp/mcp-server-adapter.js.map +1 -1
  358. package/dist/apps/control-plane/mcp/operation-ledger.js +5 -5
  359. package/dist/apps/control-plane/mcp/operation-ledger.js.map +1 -1
  360. package/dist/apps/control-plane/mcp/protocol-contract.js +2 -2
  361. package/dist/apps/control-plane/mcp/runtime-factory.js +2 -2
  362. package/dist/apps/control-plane/mcp/runtime-factory.js.map +1 -1
  363. package/dist/apps/control-plane/mcp/token-auth-verifier.js +1 -1
  364. package/dist/apps/control-plane/mcp/token-auth-verifier.js.map +1 -1
  365. package/dist/apps/control-plane/mcp/token-claims-validator.js +5 -5
  366. package/dist/apps/control-plane/mcp/token-claims-validator.js.map +1 -1
  367. package/dist/apps/control-plane/mcp/tool-authorizer.js +1 -3
  368. package/dist/apps/control-plane/mcp/tool-authorizer.js.map +1 -1
  369. package/dist/apps/control-plane/mcp/tool-client.js +2 -2
  370. package/dist/apps/control-plane/mcp/tool-client.js.map +1 -1
  371. package/dist/apps/control-plane/mcp/tool-contract-validator.js +3 -3
  372. package/dist/apps/control-plane/mcp/tool-contract-validator.js.map +1 -1
  373. package/dist/apps/control-plane/mcp/tool-registry-loader.js +1 -1
  374. package/dist/apps/control-plane/mcp/tool-registry-loader.js.map +1 -1
  375. package/dist/apps/control-plane/mcp/tool-runtime.js +17 -17
  376. package/dist/apps/control-plane/mcp/tool-runtime.js.map +1 -1
  377. package/dist/apps/control-plane/mcp/tools-markdown-generator.js +6 -1
  378. package/dist/apps/control-plane/mcp/tools-markdown-generator.js.map +1 -1
  379. package/dist/apps/control-plane/providers/providers.d.ts +3 -2
  380. package/dist/apps/control-plane/providers/providers.js +81 -39
  381. package/dist/apps/control-plane/providers/providers.js.map +1 -1
  382. package/dist/apps/control-plane/supervisor/build-wave-executor.js +12 -12
  383. package/dist/apps/control-plane/supervisor/build-wave-executor.js.map +1 -1
  384. package/dist/apps/control-plane/supervisor/planning-wave-executor.js +19 -16
  385. package/dist/apps/control-plane/supervisor/planning-wave-executor.js.map +1 -1
  386. package/dist/apps/control-plane/supervisor/prompt-bundle-loader.js +1 -1
  387. package/dist/apps/control-plane/supervisor/qa-wave-executor.js +13 -13
  388. package/dist/apps/control-plane/supervisor/qa-wave-executor.js.map +1 -1
  389. package/dist/apps/control-plane/supervisor/run-coordinator.js +37 -20
  390. package/dist/apps/control-plane/supervisor/run-coordinator.js.map +1 -1
  391. package/dist/apps/control-plane/supervisor/runtime.js +25 -21
  392. package/dist/apps/control-plane/supervisor/runtime.js.map +1 -1
  393. package/dist/apps/control-plane/supervisor/session-orchestrator.js +29 -23
  394. package/dist/apps/control-plane/supervisor/session-orchestrator.js.map +1 -1
  395. package/dist/apps/control-plane/supervisor/types.d.ts +3 -3
  396. package/dist/apps/control-plane/supervisor/types.js.map +1 -1
  397. package/dist/apps/control-plane/supervisor/worker-decision-loop.js +14 -16
  398. package/dist/apps/control-plane/supervisor/worker-decision-loop.js.map +1 -1
  399. package/eslint.config.mjs +20 -20
  400. package/example-configurations/README.md +1 -1
  401. package/example-configurations/java/agents.yaml +3 -3
  402. package/example-configurations/java/policy.yaml +1 -1
  403. package/example-configurations/node/agents.yaml +3 -3
  404. package/example-configurations/node/policy.yaml +1 -1
  405. package/package.json +10 -5
  406. package/packages/web-dashboard/next.config.js +2 -2
  407. package/packages/web-dashboard/src/app/api/actions/route.ts +25 -9
  408. package/packages/web-dashboard/src/app/api/events/route.ts +20 -6
  409. package/packages/web-dashboard/src/app/api/features/[id]/checkout/route.ts +88 -37
  410. package/packages/web-dashboard/src/app/api/features/[id]/evidence/[artifact]/route.ts +8 -5
  411. package/packages/web-dashboard/src/app/api/features/[id]/review/route.ts +27 -9
  412. package/packages/web-dashboard/src/app/api/features/[id]/route.ts +5 -2
  413. package/packages/web-dashboard/src/app/api/projects/route.ts +5 -5
  414. package/packages/web-dashboard/src/app/globals.css +10 -2
  415. package/packages/web-dashboard/src/app/page.tsx +100 -37
  416. package/packages/web-dashboard/src/lib/aop-client.ts +68 -37
  417. package/packages/web-dashboard/src/lib/multi-project-config.ts +28 -7
  418. package/packages/web-dashboard/src/lib/orchestrator-tools.ts +59 -36
  419. package/packages/web-dashboard/tsconfig.json +3 -11
  420. package/scripts/nx-safe.mjs +10 -10
  421. package/spec-files/completed/agentic_orchestrator_cli_delete_command_spec.md +5 -0
  422. package/spec-files/completed/agentic_orchestrator_feature_gaps_closure_spec.md +189 -90
  423. package/spec-files/completed/agentic_orchestrator_init_policy_ux_simplification_spec.md +49 -16
  424. package/spec-files/completed/agentic_orchestrator_mcp_formalization_spec.md +24 -1
  425. package/spec-files/completed/agentic_orchestrator_single_global_orchestrator_spec.md +9 -0
  426. package/spec-files/completed/agentic_orchestrator_spec.md +171 -75
  427. package/spec-files/completed/agentic_orchestrator_validator_hardening_spec.md +25 -17
  428. package/spec-files/outstanding/agentic_orchestrator_artifact_database_publishing_spec.md +40 -5
  429. package/spec-files/outstanding/agentic_orchestrator_enterprise_governance_dashboard_spec.md +23 -12
  430. package/spec-files/outstanding/agentic_orchestrator_knowledge_canary_spec.md +16 -4
  431. package/spec-files/outstanding/agentic_orchestrator_observability_integrity_diagnostics_spec.md +42 -2
  432. package/spec-files/outstanding/agentic_orchestrator_performance_improvements_spec.md +209 -130
  433. package/spec-files/outstanding/agentic_orchestrator_planning_review_quality_spec.md +56 -3
  434. package/spec-files/outstanding/agentic_orchestrator_productization_commercial_spec.md +77 -10
  435. package/spec-files/outstanding/agentic_orchestrator_provider_auth_bootstrap_spec.md +384 -0
  436. package/spec-files/outstanding/agentic_orchestrator_quality_adoption_execution_spec.md +29 -14
  437. package/spec-files/progress.md +186 -175
  438. package/tsconfig.json +2 -8
@@ -39,9 +39,9 @@ async function writeFastTestGates(root: string): Promise<void> {
39
39
  ' - name: fast_fail',
40
40
  ' cmd: ["node", "-e", "process.exit(1)"]',
41
41
  'capabilities:',
42
- ' - none'
42
+ ' - none',
43
43
  ].join('\n'),
44
- 'utf8'
44
+ 'utf8',
45
45
  );
46
46
  }
47
47
 
@@ -56,11 +56,11 @@ function buildPlan(featureId: string, version = 1) {
56
56
  files: {
57
57
  create: [],
58
58
  modify: ['src/sample.txt'],
59
- delete: []
59
+ delete: [],
60
60
  },
61
61
  contracts: { openapi: 'none', events: 'none', db: 'none' },
62
62
  acceptance_criteria: ['A deterministic plan exists'],
63
- gate_profile: 'default'
63
+ gate_profile: 'default',
64
64
  };
65
65
  }
66
66
 
@@ -83,7 +83,9 @@ describe('AopKernel additional coverage', () => {
83
83
 
84
84
  const discovered = await kernel.invoke('feature.discover_specs', {}, ORCHESTRATOR_CONTEXT);
85
85
  expect(discovered.ok).toBe(true);
86
- const discoveredFeatureIds = discovered.data.specs.map((item: { feature_id: string }) => item.feature_id);
86
+ const discoveredFeatureIds = discovered.data.specs.map(
87
+ (item: { feature_id: string }) => item.feature_id,
88
+ );
87
89
  expect(discoveredFeatureIds).toContain('feature_cov');
88
90
  expect(discoveredFeatureIds).toContain('feature_other');
89
91
 
@@ -93,7 +95,7 @@ describe('AopKernel additional coverage', () => {
93
95
  const logResult = await kernel.invoke(
94
96
  'feature.log_append',
95
97
  { feature_id: 'feature_cov', note: 'Added planning note' },
96
- ORCHESTRATOR_CONTEXT
98
+ ORCHESTRATOR_CONTEXT,
97
99
  );
98
100
  expect(logResult.ok).toBe(true);
99
101
 
@@ -101,11 +103,15 @@ describe('AopKernel additional coverage', () => {
101
103
  const submitted = await kernel.invoke(
102
104
  'plan.submit',
103
105
  { feature_id: 'feature_cov', plan_json: planV1 },
104
- ORCHESTRATOR_CONTEXT
106
+ ORCHESTRATOR_CONTEXT,
105
107
  );
106
108
  expect(submitted.ok).toBe(true);
107
109
 
108
- const planFetched = await kernel.invoke('plan.get', { feature_id: 'feature_cov' }, ORCHESTRATOR_CONTEXT);
110
+ const planFetched = await kernel.invoke(
111
+ 'plan.get',
112
+ { feature_id: 'feature_cov' },
113
+ ORCHESTRATOR_CONTEXT,
114
+ );
109
115
  expect(planFetched.ok).toBe(true);
110
116
  expect(planFetched.data.plan.plan_version).toBe(1);
111
117
 
@@ -113,20 +119,24 @@ describe('AopKernel additional coverage', () => {
113
119
  ...buildPlan('feature_cov', 2),
114
120
  revision_of: 1,
115
121
  revision_reason: 'Cover update path',
116
- summary: 'Revised plan'
122
+ summary: 'Revised plan',
117
123
  };
118
124
  const updated = await kernel.invoke(
119
125
  'plan.update',
120
126
  {
121
127
  feature_id: 'feature_cov',
122
128
  expected_plan_version: 1,
123
- plan_json: planV2
129
+ plan_json: planV2,
124
130
  },
125
- ORCHESTRATOR_CONTEXT
131
+ ORCHESTRATOR_CONTEXT,
126
132
  );
127
133
  expect(updated.ok).toBe(true);
128
134
 
129
- const context = await kernel.invoke('feature.get_context', { feature_id: 'feature_cov' }, ORCHESTRATOR_CONTEXT);
135
+ const context = await kernel.invoke(
136
+ 'feature.get_context',
137
+ { feature_id: 'feature_cov' },
138
+ ORCHESTRATOR_CONTEXT,
139
+ );
130
140
  expect(context.ok).toBe(true);
131
141
  expect(context.data.plan.plan_version).toBe(2);
132
142
  expect(context.data.spec).toContain('Feature cov spec');
@@ -142,12 +152,16 @@ describe('AopKernel additional coverage', () => {
142
152
  const patched = await kernel.invoke(
143
153
  'repo.apply_patch',
144
154
  { feature_id: 'feature_cov', unified_diff: generatedDiff.stdout },
145
- BUILDER_CONTEXT
155
+ BUILDER_CONTEXT,
146
156
  );
147
157
  expect(patched.ok).toBe(true);
148
158
  expect(patched.data.changed_files).toContain('src/sample.txt');
149
159
 
150
- const status = await kernel.invoke('repo.status', { feature_id: 'feature_cov' }, BUILDER_CONTEXT);
160
+ const status = await kernel.invoke(
161
+ 'repo.status',
162
+ { feature_id: 'feature_cov' },
163
+ BUILDER_CONTEXT,
164
+ );
151
165
  expect(status.ok).toBe(true);
152
166
  expect(status.data.branch).toBe('feature_cov');
153
167
  expect(status.data.status_porcelain.length).toBeGreaterThan(0);
@@ -155,7 +169,7 @@ describe('AopKernel additional coverage', () => {
155
169
  const repoDiff = await kernel.invoke(
156
170
  'repo.diff',
157
171
  { feature_id: 'feature_cov', options: ['--stat'] },
158
- BUILDER_CONTEXT
172
+ BUILDER_CONTEXT,
159
173
  );
160
174
  expect(repoDiff.ok).toBe(true);
161
175
  expect(repoDiff.data.diff).toContain('sample.txt');
@@ -163,7 +177,7 @@ describe('AopKernel additional coverage', () => {
163
177
  const readFile = await kernel.invoke(
164
178
  'repo.read_file',
165
179
  { feature_id: 'feature_cov', path: 'src/sample.txt' },
166
- BUILDER_CONTEXT
180
+ BUILDER_CONTEXT,
167
181
  );
168
182
  expect(readFile.ok).toBe(true);
169
183
  expect(readFile.data.content).toContain('hello');
@@ -171,7 +185,7 @@ describe('AopKernel additional coverage', () => {
171
185
  const missingFile = await kernel.invoke(
172
186
  'repo.read_file',
173
187
  { feature_id: 'feature_cov', path: 'src/missing.txt' },
174
- BUILDER_CONTEXT
188
+ BUILDER_CONTEXT,
175
189
  );
176
190
  expect(missingFile.ok).toBe(false);
177
191
  expect(missingFile.error.code).toBe(ERROR_CODES.FILE_NOT_FOUND);
@@ -179,7 +193,7 @@ describe('AopKernel additional coverage', () => {
179
193
  const search = await kernel.invoke(
180
194
  'repo.search',
181
195
  { feature_id: 'feature_cov', query: 'hello updated' },
182
- BUILDER_CONTEXT
196
+ BUILDER_CONTEXT,
183
197
  );
184
198
  // Note: repo.search requires ripgrep (rg) to be installed, which may not be available in all environments
185
199
  // Skip validation if search returns an error
@@ -187,7 +201,11 @@ describe('AopKernel additional coverage', () => {
187
201
  expect(search.data.matches.length).toBeGreaterThan(0);
188
202
  }
189
203
 
190
- const diffBundle = await kernel.invoke('repo.diff_bundle', { feature_id: 'feature_cov' }, ORCHESTRATOR_CONTEXT);
204
+ const diffBundle = await kernel.invoke(
205
+ 'repo.diff_bundle',
206
+ { feature_id: 'feature_cov' },
207
+ ORCHESTRATOR_CONTEXT,
208
+ );
191
209
  expect(diffBundle.ok).toBe(true);
192
210
  expect(diffBundle.data.touched_files).toContain('src/sample.txt');
193
211
 
@@ -198,7 +216,7 @@ describe('AopKernel additional coverage', () => {
198
216
  const gateFast = await kernel.invoke(
199
217
  'gates.run',
200
218
  { feature_id: 'feature_cov', profile: 'default', mode: 'fast' },
201
- BUILDER_CONTEXT
219
+ BUILDER_CONTEXT,
202
220
  );
203
221
  expect(gateFast.ok).toBe(true);
204
222
  expect(gateFast.data.overall).toBe('pass');
@@ -206,7 +224,7 @@ describe('AopKernel additional coverage', () => {
206
224
  const gateFull = await kernel.invoke(
207
225
  'gates.run',
208
226
  { feature_id: 'feature_cov', profile: 'default', mode: 'full' },
209
- BUILDER_CONTEXT
227
+ BUILDER_CONTEXT,
210
228
  );
211
229
  expect(gateFull.ok).toBe(true);
212
230
  expect(gateFull.data.overall).toBe('pass');
@@ -214,7 +232,7 @@ describe('AopKernel additional coverage', () => {
214
232
  const gateMerge = await kernel.invoke(
215
233
  'gates.run',
216
234
  { feature_id: 'feature_cov', profile: 'default', mode: 'merge' },
217
- BUILDER_CONTEXT
235
+ BUILDER_CONTEXT,
218
236
  );
219
237
  expect(gateMerge.ok).toBe(true);
220
238
  expect(gateMerge.data.overall).toBe('pass');
@@ -222,12 +240,16 @@ describe('AopKernel additional coverage', () => {
222
240
  const latestEvidence = await kernel.invoke(
223
241
  'evidence.latest',
224
242
  { feature_id: 'feature_cov' },
225
- ORCHESTRATOR_CONTEXT
243
+ ORCHESTRATOR_CONTEXT,
226
244
  );
227
245
  expect(latestEvidence.ok).toBe(true);
228
246
  expect(latestEvidence.data.latest.mode).toBe('merge');
229
247
 
230
- const stateReady = await kernel.invoke('feature.state_get', { feature_id: 'feature_cov' }, ORCHESTRATOR_CONTEXT);
248
+ const stateReady = await kernel.invoke(
249
+ 'feature.state_get',
250
+ { feature_id: 'feature_cov' },
251
+ ORCHESTRATOR_CONTEXT,
252
+ );
231
253
  expect(stateReady.ok).toBe(true);
232
254
  expect(stateReady.data.front_matter.status).toBe(STATUS.READY_TO_MERGE);
233
255
 
@@ -236,9 +258,9 @@ describe('AopKernel additional coverage', () => {
236
258
  {
237
259
  feature_id: 'feature_cov',
238
260
  commit_message: 'feat: merge feature_cov',
239
- merge_strategy: 'merge_commit'
261
+ merge_strategy: 'merge_commit',
240
262
  },
241
- ORCHESTRATOR_CONTEXT
263
+ ORCHESTRATOR_CONTEXT,
242
264
  );
243
265
  expect(approvalMissing.ok).toBe(false);
244
266
  expect(approvalMissing.error.code).toBe(ERROR_CODES.USER_APPROVAL_REQUIRED);
@@ -249,9 +271,9 @@ describe('AopKernel additional coverage', () => {
249
271
  feature_id: 'feature_cov',
250
272
  commit_message: 'feat: merge feature_cov',
251
273
  merge_strategy: 'unsupported',
252
- user_approval_token: 'approved'
274
+ user_approval_token: 'approved',
253
275
  },
254
- ORCHESTRATOR_CONTEXT
276
+ ORCHESTRATOR_CONTEXT,
255
277
  );
256
278
  expect(invalidStrategy.ok).toBe(false);
257
279
  expect(invalidStrategy.error.code).toBe(ERROR_CODES.MERGE_DISABLED);
@@ -262,9 +284,9 @@ describe('AopKernel additional coverage', () => {
262
284
  feature_id: 'feature_cov',
263
285
  commit_message: 'feat: merge feature_cov',
264
286
  merge_strategy: 'merge_commit',
265
- user_approval_token: 'approved'
287
+ user_approval_token: 'approved',
266
288
  },
267
- ORCHESTRATOR_CONTEXT
289
+ ORCHESTRATOR_CONTEXT,
268
290
  );
269
291
  expect(merged.ok).toBe(true);
270
292
  expect(merged.data.status).toBe(STATUS.MERGED);
@@ -272,12 +294,14 @@ describe('AopKernel additional coverage', () => {
272
294
  const dashboard = await kernel.invoke('report.dashboard', {}, ORCHESTRATOR_CONTEXT);
273
295
  expect(dashboard.ok).toBe(true);
274
296
  expect(dashboard.data.index.merged).toContain('feature_cov');
275
- await expect(fs.stat(path.join(repoRoot, '.aop', 'features', 'feature_cov'))).resolves.toBeDefined();
297
+ await expect(
298
+ fs.stat(path.join(repoRoot, '.aop', 'features', 'feature_cov')),
299
+ ).resolves.toBeDefined();
276
300
 
277
301
  const featureSummary = await kernel.invoke(
278
302
  'report.feature_summary',
279
303
  { feature_id: 'feature_cov' },
280
- ORCHESTRATOR_CONTEXT
304
+ ORCHESTRATOR_CONTEXT,
281
305
  );
282
306
  expect(featureSummary.ok).toBe(true);
283
307
  expect(featureSummary.data.feature_id).toBe('feature_cov');
@@ -285,21 +309,21 @@ describe('AopKernel additional coverage', () => {
285
309
  const lockAcquire = await kernel.invoke(
286
310
  'locks.acquire',
287
311
  { resource: 'openapi', feature_id: 'feature_other' },
288
- ORCHESTRATOR_CONTEXT
312
+ ORCHESTRATOR_CONTEXT,
289
313
  );
290
314
  expect(lockAcquire.ok).toBe(true);
291
315
 
292
316
  const lockRelease = await kernel.invoke(
293
317
  'locks.release',
294
318
  { resource: 'openapi', feature_id: 'feature_other' },
295
- ORCHESTRATOR_CONTEXT
319
+ ORCHESTRATOR_CONTEXT,
296
320
  );
297
321
  expect(lockRelease.ok).toBe(true);
298
322
 
299
323
  const gateUnknown = await kernel.invoke(
300
324
  'gates.run',
301
325
  { feature_id: 'feature_other', profile: 'missing', mode: 'fast' },
302
- BUILDER_CONTEXT
326
+ BUILDER_CONTEXT,
303
327
  );
304
328
  expect(gateUnknown.ok).toBe(false);
305
329
  expect(gateUnknown.error.code).toBe(ERROR_CODES.UNKNOWN_GATE_PROFILE_OR_MODE);
@@ -321,7 +345,7 @@ describe('AopKernel additional coverage', () => {
321
345
  owner_instance_id: 'owner:coverage',
322
346
  provider: 'provider',
323
347
  model: 'model',
324
- provider_config_ref_hash: ''
348
+ provider_config_ref_hash: '',
325
349
  });
326
350
  expect(lease.data.reused_existing_owner).toBe(false);
327
351
 
@@ -329,7 +353,7 @@ describe('AopKernel additional coverage', () => {
329
353
  run_id: 'run:coverage',
330
354
  owner_instance_id: 'owner:coverage',
331
355
  orchestrator_session_id: 'orch:coverage',
332
- increment_epoch: true
356
+ increment_epoch: true,
333
357
  });
334
358
 
335
359
  await kernel.updateFeatureSessionAssignment({
@@ -338,13 +362,13 @@ describe('AopKernel additional coverage', () => {
338
362
  feature_id: 'feature_a',
339
363
  planner_session_id: 'planner-a',
340
364
  builder_session_id: 'builder-a',
341
- qa_session_id: 'qa-a'
365
+ qa_session_id: 'qa-a',
342
366
  });
343
367
 
344
368
  const pruned = await kernel.pruneFeatureSessionAssignments({
345
369
  run_id: 'run:coverage',
346
370
  owner_instance_id: 'owner:coverage',
347
- active_feature_ids: ['feature_a']
371
+ active_feature_ids: ['feature_a'],
348
372
  });
349
373
  expect(pruned.data.removed).toEqual([]);
350
374
 
@@ -358,14 +382,14 @@ describe('AopKernel additional coverage', () => {
358
382
  const accepted = await kernel.invoke(
359
383
  'plan.submit',
360
384
  { feature_id: 'feature_a', plan_json: planA },
361
- ORCHESTRATOR_CONTEXT
385
+ ORCHESTRATOR_CONTEXT,
362
386
  );
363
387
  expect(accepted.ok).toBe(true);
364
388
 
365
389
  const queued = await kernel.invoke(
366
390
  'plan.submit',
367
391
  { feature_id: 'feature_b', plan_json: planB },
368
- ORCHESTRATOR_CONTEXT
392
+ ORCHESTRATOR_CONTEXT,
369
393
  );
370
394
  expect(queued.ok).toBe(false);
371
395
  expect(queued.error.code).toBe(ERROR_CODES.BLOCKED_BY_COLLISION_POLICY);
@@ -391,16 +415,28 @@ describe('AopKernel additional coverage', () => {
391
415
  };
392
416
 
393
417
  expect(errorCode(kernel.normalizeError(null))).toBe(ERROR_CODES.INTERNAL_ERROR);
394
- expect(errorCode(kernel.normalizeError({ normalizedResponse: { ok: false, error: { code: 'custom' } } }))).toBe('custom');
395
- expect(errorCode(kernel.normalizeError(new Error('path_out_of_bounds:/tmp')))).toBe(ERROR_CODES.PATH_OUT_OF_BOUNDS);
396
- expect(errorCode(kernel.normalizeError(new Error('lock_timeout:test')))).toBe(ERROR_CODES.LOCK_CONFLICT);
397
- expect(errorCode(kernel.normalizeError(new Error('unknown_gate_profile_or_mode:default/fast')))).toBe(
398
- ERROR_CODES.UNKNOWN_GATE_PROFILE_OR_MODE
418
+ expect(
419
+ errorCode(
420
+ kernel.normalizeError({ normalizedResponse: { ok: false, error: { code: 'custom' } } }),
421
+ ),
422
+ ).toBe('custom');
423
+ expect(errorCode(kernel.normalizeError(new Error('path_out_of_bounds:/tmp')))).toBe(
424
+ ERROR_CODES.PATH_OUT_OF_BOUNDS,
425
+ );
426
+ expect(errorCode(kernel.normalizeError(new Error('lock_timeout:test')))).toBe(
427
+ ERROR_CODES.LOCK_CONFLICT,
428
+ );
429
+ expect(
430
+ errorCode(kernel.normalizeError(new Error('unknown_gate_profile_or_mode:default/fast'))),
431
+ ).toBe(ERROR_CODES.UNKNOWN_GATE_PROFILE_OR_MODE);
432
+ expect(errorCode(kernel.normalizeError(new Error('unsupported_parser:custom')))).toBe(
433
+ ERROR_CODES.UNSUPPORTED_PARSER,
399
434
  );
400
- expect(errorCode(kernel.normalizeError(new Error('unsupported_parser:custom')))).toBe(ERROR_CODES.UNSUPPORTED_PARSER);
401
435
  expect(errorCode(kernel.normalizeError(new Error('qa_index_version_conflict')))).toBe(
402
- ERROR_CODES.QA_INDEX_VERSION_CONFLICT
436
+ ERROR_CODES.QA_INDEX_VERSION_CONFLICT,
437
+ );
438
+ expect(errorCode(kernel.normalizeError(new Error('unexpected failure')))).toBe(
439
+ ERROR_CODES.INTERNAL_ERROR,
403
440
  );
404
- expect(errorCode(kernel.normalizeError(new Error('unexpected failure')))).toBe(ERROR_CODES.INTERNAL_ERROR);
405
441
  });
406
442
  });