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
@@ -3,7 +3,13 @@ import os from 'node:os';
3
3
  import path from 'node:path';
4
4
  import YAML from 'yaml';
5
5
 
6
- const MULTI_PROJECT_CONFIG_PATH = ['agentic', 'orchestrator', 'multi-project.yaml'] as const;
6
+ const MULTI_PROJECT_CONFIG_PATH = [
7
+ 'config',
8
+ 'agentic',
9
+ 'orchestrator',
10
+ 'multi-project.yaml',
11
+ ] as const;
12
+ const LEGACY_MULTI_PROJECT_CONFIG_PATH = ['agentic', 'orchestrator', 'multi-project.yaml'] as const;
7
13
 
8
14
  export interface MultiProjectDashboardConfig {
9
15
  defaults?: {
@@ -78,39 +84,54 @@ function parseConfig(raw: string, repoRoot: string): MultiProjectDashboardConfig
78
84
  path: absoluteProjectPath,
79
85
  policy: policyPath,
80
86
  gates: gatesPath,
81
- dashboard_port: typeof project.dashboard_port === 'number' ? project.dashboard_port : undefined
87
+ dashboard_port:
88
+ typeof project.dashboard_port === 'number' ? project.dashboard_port : undefined,
82
89
  };
83
90
  });
84
91
 
85
92
  return {
86
93
  defaults: candidate.defaults,
87
- projects
94
+ projects,
88
95
  };
89
96
  }
90
97
 
91
- export async function readMultiProjectConfig(repoRoot: string): Promise<MultiProjectDashboardConfig | null> {
98
+ export async function readMultiProjectConfig(
99
+ repoRoot: string,
100
+ ): Promise<MultiProjectDashboardConfig | null> {
92
101
  const configPath = path.join(repoRoot, ...MULTI_PROJECT_CONFIG_PATH);
102
+ const legacyConfigPath = path.join(repoRoot, ...LEGACY_MULTI_PROJECT_CONFIG_PATH);
93
103
  try {
94
104
  const raw = await readFile(configPath, 'utf8');
95
105
  return parseConfig(raw, repoRoot);
96
106
  } catch {
97
- return null;
107
+ try {
108
+ const raw = await readFile(legacyConfigPath, 'utf8');
109
+ return parseConfig(raw, repoRoot);
110
+ } catch {
111
+ return null;
112
+ }
98
113
  }
99
114
  }
100
115
 
101
116
  export async function multiProjectConfigExists(repoRoot: string): Promise<boolean> {
102
117
  const configPath = path.join(repoRoot, ...MULTI_PROJECT_CONFIG_PATH);
118
+ const legacyConfigPath = path.join(repoRoot, ...LEGACY_MULTI_PROJECT_CONFIG_PATH);
103
119
  try {
104
120
  await access(configPath);
105
121
  return true;
106
122
  } catch {
107
- return false;
123
+ try {
124
+ await access(legacyConfigPath);
125
+ return true;
126
+ } catch {
127
+ return false;
128
+ }
108
129
  }
109
130
  }
110
131
 
111
132
  export function getProjectByName(
112
133
  config: MultiProjectDashboardConfig,
113
- name: string
134
+ name: string,
114
135
  ): MultiProjectDashboardConfig['projects'][number] | null {
115
136
  return config.projects.find((project) => project.name === name) ?? null;
116
137
  }
@@ -4,7 +4,7 @@ import { pathToFileURL } from 'node:url';
4
4
  import { getAopRoot } from './aop-client.js';
5
5
 
6
6
  const STATUS = {
7
- BLOCKED: 'blocked'
7
+ BLOCKED: 'blocked',
8
8
  } as const;
9
9
 
10
10
  const TOOLS = {
@@ -12,7 +12,7 @@ const TOOLS = {
12
12
  FEATURE_STATE_GET: 'feature.state_get',
13
13
  FEATURE_STATE_PATCH: 'feature.state_patch',
14
14
  FEATURE_LOG_APPEND: 'feature.log_append',
15
- FEATURE_SEND_MESSAGE: 'feature.send_message'
15
+ FEATURE_SEND_MESSAGE: 'feature.send_message',
16
16
  } as const;
17
17
 
18
18
  interface ToolResponse<TData = Record<string, unknown>> {
@@ -33,7 +33,11 @@ interface ToolClientIdentity {
33
33
  }
34
34
 
35
35
  interface ToolClient {
36
- call(toolName: string, args: Record<string, unknown>, identity: ToolClientIdentity): Promise<ToolResponse>;
36
+ call(
37
+ toolName: string,
38
+ args: Record<string, unknown>,
39
+ identity: ToolClientIdentity,
40
+ ): Promise<ToolResponse>;
37
41
  }
38
42
 
39
43
  interface ToolingRuntime {
@@ -49,11 +53,15 @@ interface KernelLike {
49
53
  interface RuntimeBridge {
50
54
  AopKernel: new (repoRoot: string) => KernelLike;
51
55
  NullWorkerProvider: new (selection: unknown) => unknown;
52
- resolveProviderSelection: (input: { cli: Record<string, string | undefined>; env: NodeJS.ProcessEnv; agentsConfig?: unknown }) => unknown;
56
+ resolveProviderSelection: (input: {
57
+ cli: Record<string, string | undefined>;
58
+ env: NodeJS.ProcessEnv;
59
+ agentsConfig?: unknown;
60
+ }) => unknown;
53
61
  createToolingRuntime: (
54
62
  repoRoot: string,
55
63
  kernel: KernelLike,
56
- options: { generateToolsMarkdown: boolean }
64
+ options: { generateToolsMarkdown: boolean },
57
65
  ) => Promise<ToolingRuntime>;
58
66
  createOperationId?: (toolName: string, featureId?: string) => string;
59
67
  }
@@ -72,7 +80,7 @@ function makeClaims(): ToolClientIdentity {
72
80
  run_id: `run:dashboard:${stamp}`,
73
81
  actor_type: 'orchestrator',
74
82
  actor_id: 'dashboard',
75
- session_id: `dashboard:${randomUUID()}`
83
+ session_id: `dashboard:${randomUUID()}`,
76
84
  };
77
85
  }
78
86
 
@@ -93,16 +101,19 @@ function normalizeError(error: unknown, fallbackCode = 'internal_error'): ToolRe
93
101
  error: {
94
102
  code: typeof maybe.code === 'string' ? maybe.code : fallbackCode,
95
103
  message: typeof maybe.message === 'string' ? maybe.message : 'Operation failed',
96
- details: maybe.details && typeof maybe.details === 'object' ? (maybe.details as Record<string, unknown>) : undefined
97
- }
104
+ details:
105
+ maybe.details && typeof maybe.details === 'object'
106
+ ? (maybe.details as Record<string, unknown>)
107
+ : undefined,
108
+ },
98
109
  };
99
110
  }
100
111
  return {
101
112
  ok: false,
102
113
  error: {
103
114
  code: fallbackCode,
104
- message: typeof error === 'string' ? error : 'Operation failed'
105
- }
115
+ message: typeof error === 'string' ? error : 'Operation failed',
116
+ },
106
117
  };
107
118
  }
108
119
 
@@ -140,11 +151,12 @@ async function getRuntime(repoRoot: string): Promise<DashboardToolRuntime> {
140
151
  await kernel.ensureLoaded();
141
152
 
142
153
  try {
143
- const agentsConfig = typeof kernel.getAgentsConfig === 'function' ? kernel.getAgentsConfig() : undefined;
154
+ const agentsConfig =
155
+ typeof kernel.getAgentsConfig === 'function' ? kernel.getAgentsConfig() : undefined;
144
156
  const selection = bridge.resolveProviderSelection({
145
157
  cli: {},
146
158
  env: process.env,
147
- agentsConfig
159
+ agentsConfig,
148
160
  });
149
161
  kernel.setProvider(new bridge.NullWorkerProvider(selection));
150
162
  } catch {
@@ -153,15 +165,17 @@ async function getRuntime(repoRoot: string): Promise<DashboardToolRuntime> {
153
165
  provider: 'custom',
154
166
  model: 'dashboard-default',
155
167
  provider_config_env: null,
156
- provider_config_ref: null
157
- })
168
+ provider_config_ref: null,
169
+ }),
158
170
  );
159
171
  }
160
172
 
161
- const tooling = await bridge.createToolingRuntime(repoRoot, kernel, { generateToolsMarkdown: false });
173
+ const tooling = await bridge.createToolingRuntime(repoRoot, kernel, {
174
+ generateToolsMarkdown: false,
175
+ });
162
176
  const runtime = {
163
177
  client: tooling.inProcessClient,
164
- createOperationId: bridge.createOperationId ?? defaultCreateOperationId
178
+ createOperationId: bridge.createOperationId ?? defaultCreateOperationId,
165
179
  };
166
180
  runtimeCacheByRoot.set(repoRoot, runtime);
167
181
  return runtime;
@@ -170,7 +184,7 @@ async function getRuntime(repoRoot: string): Promise<DashboardToolRuntime> {
170
184
  export async function callOrchestratorTool<TData = Record<string, unknown>>(
171
185
  toolName: string,
172
186
  args: Record<string, unknown>,
173
- options: { mutating?: boolean; featureId?: string; repoRoot?: string } = {}
187
+ options: { mutating?: boolean; featureId?: string; repoRoot?: string } = {},
174
188
  ): Promise<ToolResponse<TData>> {
175
189
  try {
176
190
  const repoRoot = options.repoRoot ?? getAopRoot();
@@ -193,7 +207,7 @@ export async function approveFeatureReview(
193
207
  approvalToken: string,
194
208
  mergeStrategy = 'merge_commit',
195
209
  commitMessage?: string,
196
- repoRoot?: string
210
+ repoRoot?: string,
197
211
  ): Promise<ToolResponse> {
198
212
  return await callOrchestratorTool(
199
213
  TOOLS.FEATURE_READY_TO_MERGE,
@@ -201,17 +215,21 @@ export async function approveFeatureReview(
201
215
  feature_id: featureId,
202
216
  commit_message: commitMessage ?? `feat(${featureId}): merge via dashboard approval`,
203
217
  merge_strategy: mergeStrategy,
204
- user_approval_token: approvalToken
218
+ user_approval_token: approvalToken,
205
219
  },
206
- { mutating: true, featureId, repoRoot }
220
+ { mutating: true, featureId, repoRoot },
207
221
  );
208
222
  }
209
223
 
210
- export async function denyFeatureReview(featureId: string, reason: string, repoRoot?: string): Promise<ToolResponse> {
224
+ export async function denyFeatureReview(
225
+ featureId: string,
226
+ reason: string,
227
+ repoRoot?: string,
228
+ ): Promise<ToolResponse> {
211
229
  const state = await callOrchestratorTool<{ front_matter: { version: number } }>(
212
230
  TOOLS.FEATURE_STATE_GET,
213
231
  { feature_id: featureId },
214
- { repoRoot }
232
+ { repoRoot },
215
233
  );
216
234
  if (!state.ok || !state.data) {
217
235
  return state;
@@ -226,11 +244,11 @@ export async function denyFeatureReview(featureId: string, reason: string, repoR
226
244
  patch: {
227
245
  front_matter: {
228
246
  status: STATUS.BLOCKED,
229
- status_reason: `Dashboard review denied: ${reason}`
230
- }
231
- }
247
+ status_reason: `Dashboard review denied: ${reason}`,
248
+ },
249
+ },
232
250
  },
233
- { mutating: true, featureId, repoRoot }
251
+ { mutating: true, featureId, repoRoot },
234
252
  );
235
253
  if (!patchResult.ok) {
236
254
  return patchResult;
@@ -244,24 +262,29 @@ export async function denyFeatureReview(featureId: string, reason: string, repoR
244
262
  type: 'dashboard_review',
245
263
  decision: 'deny',
246
264
  reason,
247
- reviewed_at: new Date().toISOString()
248
- })
265
+ reviewed_at: new Date().toISOString(),
266
+ }),
249
267
  },
250
- { mutating: true, featureId, repoRoot }
268
+ { mutating: true, featureId, repoRoot },
251
269
  );
252
270
 
253
271
  return patchResult;
254
272
  }
255
273
 
256
- export async function requestFeatureChanges(featureId: string, message: string, repoRoot?: string): Promise<ToolResponse> {
257
- const normalized = message.trim().length > 0 ? message.trim() : 'Please address reviewer feedback and re-run QA.';
274
+ export async function requestFeatureChanges(
275
+ featureId: string,
276
+ message: string,
277
+ repoRoot?: string,
278
+ ): Promise<ToolResponse> {
279
+ const normalized =
280
+ message.trim().length > 0 ? message.trim() : 'Please address reviewer feedback and re-run QA.';
258
281
  const send = await callOrchestratorTool(
259
282
  TOOLS.FEATURE_SEND_MESSAGE,
260
283
  {
261
284
  feature_id: featureId,
262
- message: `Reviewer requested changes:\n${normalized}`
285
+ message: `Reviewer requested changes:\n${normalized}`,
263
286
  },
264
- { mutating: true, featureId, repoRoot }
287
+ { mutating: true, featureId, repoRoot },
265
288
  );
266
289
  if (send.ok) {
267
290
  return send;
@@ -276,9 +299,9 @@ export async function requestFeatureChanges(featureId: string, message: string,
276
299
  decision: 'request_changes',
277
300
  message: normalized,
278
301
  reviewed_at: new Date().toISOString(),
279
- dispatch_fallback: true
280
- })
302
+ dispatch_fallback: true,
303
+ }),
281
304
  },
282
- { mutating: true, featureId, repoRoot }
305
+ { mutating: true, featureId, repoRoot },
283
306
  );
284
307
  }
@@ -3,11 +3,7 @@
3
3
  "compilerOptions": {
4
4
  "target": "ES2017",
5
5
  "baseUrl": ".",
6
- "lib": [
7
- "dom",
8
- "dom.iterable",
9
- "esnext"
10
- ],
6
+ "lib": ["dom", "dom.iterable", "esnext"],
11
7
  "jsx": "preserve",
12
8
  "module": "esnext",
13
9
  "moduleResolution": "bundler",
@@ -16,9 +12,7 @@
16
12
  "strict": true,
17
13
  "skipLibCheck": true,
18
14
  "paths": {
19
- "@/*": [
20
- "./src/*"
21
- ]
15
+ "@/*": ["./src/*"]
22
16
  },
23
17
  "incremental": true,
24
18
  "isolatedModules": true,
@@ -35,7 +29,5 @@
35
29
  ".next/types/**/*.ts",
36
30
  "next.config.js"
37
31
  ],
38
- "exclude": [
39
- "node_modules"
40
- ]
32
+ "exclude": ["node_modules"]
41
33
  }
@@ -1,29 +1,29 @@
1
1
  #!/usr/bin/env node
2
- import { spawn } from "node:child_process";
3
- import { createRequire } from "node:module";
4
- import process from "node:process";
2
+ import { spawn } from 'node:child_process';
3
+ import { createRequire } from 'node:module';
4
+ import process from 'node:process';
5
5
 
6
6
  const require = createRequire(import.meta.url);
7
- const nxCliPath = require.resolve("nx/bin/nx.js");
7
+ const nxCliPath = require.resolve('nx/bin/nx.js');
8
8
 
9
9
  const env = {
10
10
  ...process.env,
11
- NX_DAEMON: process.env.NX_DAEMON ?? "false",
12
- NX_ISOLATE_PLUGINS: process.env.NX_ISOLATE_PLUGINS ?? "false"
11
+ NX_DAEMON: process.env.NX_DAEMON ?? 'false',
12
+ NX_ISOLATE_PLUGINS: process.env.NX_ISOLATE_PLUGINS ?? 'false',
13
13
  };
14
14
 
15
15
  const child = spawn(process.execPath, [nxCliPath, ...process.argv.slice(2)], {
16
- stdio: "inherit",
17
- env
16
+ stdio: 'inherit',
17
+ env,
18
18
  });
19
19
 
20
- child.on("error", (error) => {
20
+ child.on('error', (error) => {
21
21
  const message = error instanceof Error ? error.message : String(error);
22
22
  console.error(`[nx-safe] Failed to execute Nx CLI: ${message}`);
23
23
  process.exit(1);
24
24
  });
25
25
 
26
- child.on("exit", (code, signal) => {
26
+ child.on('exit', (code, signal) => {
27
27
  if (signal) {
28
28
  process.kill(process.pid, signal);
29
29
  return;
@@ -71,6 +71,7 @@ aop delete --feature-id <feature_id> [options]
71
71
  ### 3.4 Response Contract
72
72
 
73
73
  On success:
74
+
74
75
  - `ok: true`
75
76
  - `data.command: "delete"`
76
77
  - `data.feature_id`
@@ -86,6 +87,7 @@ On success:
86
87
  - `runtime_session_assignment_removed`
87
88
 
88
89
  On failure:
90
+
89
91
  - standard normalized error envelope already used by CLI.
90
92
 
91
93
  ---
@@ -153,16 +155,19 @@ Add new tool: `feature.delete`
153
155
  ### 6.2 Schemas
154
156
 
155
157
  Add:
158
+
156
159
  - `agentic/orchestrator/tools/schemas/input/feature.delete.input.schema.json`
157
160
  - `agentic/orchestrator/tools/schemas/output/feature.delete.output.schema.json`
158
161
 
159
162
  Input MUST include:
163
+
160
164
  - `operation_id`
161
165
  - `feature_id`
162
166
  - execution mode fields (`dry_run`/`confirm` or equivalent)
163
167
  - cleanup toggles (`remove_worktree`, `remove_branch`)
164
168
 
165
169
  Output MUST include:
170
+
166
171
  - target `feature_id`
167
172
  - mode (`dry_run`)
168
173
  - deterministic summary fields listed in Section 3.4.