agentic-orchestrator 0.1.2 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/settings.local.json +15 -0
- package/CLAUDE.md +126 -0
- package/README.md +166 -25
- package/agentic/orchestrator/adapters.yaml +3 -0
- package/agentic/orchestrator/gates.yaml +47 -0
- package/agentic/orchestrator/policy.yaml +89 -0
- package/agentic/orchestrator/schemas/adapters.schema.json +12 -0
- package/agentic/orchestrator/schemas/gates.schema.json +6 -1
- package/agentic/orchestrator/schemas/index.schema.json +14 -0
- package/agentic/orchestrator/schemas/multi-project.schema.json +41 -0
- package/agentic/orchestrator/schemas/policy.schema.json +449 -52
- package/agentic/orchestrator/schemas/state.schema.json +16 -0
- package/agentic/orchestrator/tools/catalog.json +68 -0
- package/agentic/orchestrator/tools/schemas/input/cost.get.input.schema.json +10 -0
- package/agentic/orchestrator/tools/schemas/input/cost.record.input.schema.json +13 -0
- package/agentic/orchestrator/tools/schemas/input/feature.send_message.input.schema.json +11 -0
- package/agentic/orchestrator/tools/schemas/input/performance.get_analytics.input.schema.json +10 -0
- package/agentic/orchestrator/tools/schemas/input/performance.record_outcome.input.schema.json +18 -0
- package/agentic/orchestrator/tools/schemas/output/cost.get.output.schema.json +13 -0
- package/agentic/orchestrator/tools/schemas/output/cost.record.output.schema.json +13 -0
- package/agentic/orchestrator/tools/schemas/output/feature.ready_to_merge.output.schema.json +7 -0
- package/agentic/orchestrator/tools/schemas/output/feature.send_message.output.schema.json +23 -0
- package/agentic/orchestrator/tools/schemas/output/performance.get_analytics.output.schema.json +46 -0
- package/agentic/orchestrator/tools/schemas/output/performance.record_outcome.output.schema.json +10 -0
- package/agentic/orchestrator/tools.md +5 -0
- package/apps/control-plane/scripts/validate-architecture-rules.mjs +28 -2
- package/apps/control-plane/scripts/validate-docker-mcp-contract.mjs +12 -0
- package/apps/control-plane/scripts/validate-mcp-contracts.ts +92 -0
- package/apps/control-plane/src/application/adapters/adapter-registry.ts +169 -0
- package/apps/control-plane/src/application/multi-project-loader.ts +119 -0
- package/apps/control-plane/src/application/services/activity-monitor-service.ts +199 -0
- package/apps/control-plane/src/application/services/cost-tracking-service.ts +82 -0
- package/apps/control-plane/src/application/services/dependency-scheduler-service.ts +86 -0
- package/apps/control-plane/src/application/services/feature-deletion-service.ts +8 -7
- package/apps/control-plane/src/application/services/gate-interpolation-service.ts +15 -0
- package/apps/control-plane/src/application/services/gate-service.ts +38 -2
- package/apps/control-plane/src/application/services/instance-isolation-service.ts +18 -0
- package/apps/control-plane/src/application/services/issue-tracker-service.ts +469 -0
- package/apps/control-plane/src/application/services/merge-service.ts +67 -3
- package/apps/control-plane/src/application/services/notifier-service.ts +295 -0
- package/apps/control-plane/src/application/services/performance-analytics-service.ts +122 -0
- package/apps/control-plane/src/application/services/plan-service.ts +51 -0
- package/apps/control-plane/src/application/services/pr-monitor-service.ts +262 -0
- package/apps/control-plane/src/application/services/reactions-service.ts +175 -0
- package/apps/control-plane/src/application/services/reporting-service.ts +17 -2
- package/apps/control-plane/src/application/services/run-lease-service.ts +16 -38
- package/apps/control-plane/src/application/tools/tool-metadata.ts +4 -1
- package/apps/control-plane/src/cli/aop.ts +1 -1
- package/apps/control-plane/src/cli/attach-command-handler.ts +120 -0
- package/apps/control-plane/src/cli/cleanup-command-handler.ts +190 -0
- package/apps/control-plane/src/cli/cli-argument-parser.ts +69 -3
- package/apps/control-plane/src/cli/dashboard-command-handler.ts +57 -0
- package/apps/control-plane/src/cli/help-command-handler.ts +163 -0
- package/apps/control-plane/src/cli/init-command-handler.ts +609 -0
- package/apps/control-plane/src/cli/resume-command-handler.ts +1 -0
- package/apps/control-plane/src/cli/retry-command-handler.ts +138 -0
- package/apps/control-plane/src/cli/run-command-handler.ts +115 -3
- package/apps/control-plane/src/cli/send-command-handler.ts +65 -0
- package/apps/control-plane/src/cli/status-command-handler.ts +102 -2
- package/apps/control-plane/src/cli/types.ts +26 -1
- package/apps/control-plane/src/core/constants.ts +8 -2
- package/apps/control-plane/src/core/error-codes.ts +3 -1
- package/apps/control-plane/src/core/gates.ts +170 -50
- package/apps/control-plane/src/core/kernel.ts +280 -5
- package/apps/control-plane/src/core/path-layout.ts +12 -0
- package/apps/control-plane/src/core/tool-caller.ts +36 -0
- package/apps/control-plane/src/core/workspace-hooks.ts +87 -0
- package/apps/control-plane/src/interfaces/cli/bootstrap.ts +258 -9
- package/apps/control-plane/src/providers/providers.ts +235 -14
- package/apps/control-plane/src/supervisor/build-wave-executor.ts +129 -8
- package/apps/control-plane/src/supervisor/qa-wave-executor.ts +123 -5
- package/apps/control-plane/src/supervisor/run-coordinator.ts +143 -6
- package/apps/control-plane/src/supervisor/runtime.ts +135 -6
- package/apps/control-plane/src/supervisor/types.ts +12 -21
- package/apps/control-plane/src/supervisor/worker-decision-loop.ts +8 -0
- package/apps/control-plane/test/activity-monitor.spec.ts +294 -0
- package/apps/control-plane/test/adapter-registry.spec.ts +132 -0
- package/apps/control-plane/test/batch-operations.spec.ts +112 -0
- package/apps/control-plane/test/bootstrap-attach.spec.ts +102 -0
- package/apps/control-plane/test/bootstrap-edge-cases.spec.ts +252 -0
- package/apps/control-plane/test/bootstrap.spec.ts +560 -0
- package/apps/control-plane/test/cleanup-command.spec.ts +301 -0
- package/apps/control-plane/test/cli-helpers.spec.ts +404 -1
- package/apps/control-plane/test/cli.unit.spec.ts +182 -1
- package/apps/control-plane/test/collision-queue.spec.ts +104 -1
- package/apps/control-plane/test/core-utils.spec.ts +175 -2
- package/apps/control-plane/test/cost-tracking.spec.ts +143 -0
- package/apps/control-plane/test/dashboard-api.integration.spec.ts +247 -0
- package/apps/control-plane/test/dashboard-client.spec.ts +116 -0
- package/apps/control-plane/test/dashboard-command.spec.ts +103 -0
- package/apps/control-plane/test/dependency-scheduler.spec.ts +189 -0
- package/apps/control-plane/test/epoch-tracking.spec.ts +4 -4
- package/apps/control-plane/test/feature-deletion-service.spec.ts +422 -0
- package/apps/control-plane/test/feature-lifecycle.spec.ts +202 -0
- package/apps/control-plane/test/git-spawn-error.spec.ts +24 -0
- package/apps/control-plane/test/incremental-gates.spec.ts +137 -0
- package/apps/control-plane/test/init-wizard.spec.ts +506 -0
- package/apps/control-plane/test/instance-isolation.spec.ts +83 -0
- package/apps/control-plane/test/issue-tracker.spec.ts +890 -0
- package/apps/control-plane/test/kernel.coverage.spec.ts +3 -5
- package/apps/control-plane/test/kernel.coverage2.spec.ts +871 -0
- package/apps/control-plane/test/kernel.spec.ts +13 -11
- package/apps/control-plane/test/lock-service.spec.ts +508 -0
- package/apps/control-plane/test/mcp-helpers.spec.ts +176 -0
- package/apps/control-plane/test/mcp.spec.ts +50 -15
- package/apps/control-plane/test/merge-service.spec.ts +67 -4
- package/apps/control-plane/test/multi-project.spec.ts +372 -0
- package/apps/control-plane/test/notifier-service.spec.ts +388 -0
- package/apps/control-plane/test/parallel-gates.spec.ts +312 -0
- package/apps/control-plane/test/patch-service.spec.ts +253 -0
- package/apps/control-plane/test/performance-analytics.spec.ts +338 -0
- package/apps/control-plane/test/planning-wave-executor.spec.ts +168 -0
- package/apps/control-plane/test/pr-monitor.spec.ts +385 -0
- package/apps/control-plane/test/providers.spec.ts +344 -1
- package/apps/control-plane/test/reactions.spec.ts +392 -0
- package/apps/control-plane/test/resume-command.spec.ts +390 -0
- package/apps/control-plane/test/run-coordinator.spec.ts +481 -2
- package/apps/control-plane/test/schema-date-time.spec.ts +46 -0
- package/apps/control-plane/test/service-retry-paths.spec.ts +30 -0
- package/apps/control-plane/test/services.spec.ts +95 -2
- package/apps/control-plane/test/session-management.spec.ts +450 -0
- package/apps/control-plane/test/spec-ingestion.spec.ts +190 -0
- package/apps/control-plane/test/supervisor-collaborators.spec.ts +699 -2
- package/apps/control-plane/test/supervisor.spec.ts +36 -30
- package/apps/control-plane/test/supervisor.unit.spec.ts +405 -0
- package/apps/control-plane/test/worker-decision-loop.spec.ts +57 -0
- package/apps/control-plane/test/workspace-hooks.spec.ts +177 -0
- package/apps/control-plane/vitest.config.ts +21 -5
- package/dist/apps/control-plane/application/adapters/adapter-registry.d.ts +44 -0
- package/dist/apps/control-plane/application/adapters/adapter-registry.js +76 -0
- package/dist/apps/control-plane/application/adapters/adapter-registry.js.map +1 -0
- package/dist/apps/control-plane/application/multi-project-loader.d.ts +31 -0
- package/dist/apps/control-plane/application/multi-project-loader.js +82 -0
- package/dist/apps/control-plane/application/multi-project-loader.js.map +1 -0
- package/dist/apps/control-plane/application/services/activity-monitor-service.d.ts +43 -0
- package/dist/apps/control-plane/application/services/activity-monitor-service.js +132 -0
- package/dist/apps/control-plane/application/services/activity-monitor-service.js.map +1 -0
- package/dist/apps/control-plane/application/services/cost-tracking-service.d.ts +28 -0
- package/dist/apps/control-plane/application/services/cost-tracking-service.js +48 -0
- package/dist/apps/control-plane/application/services/cost-tracking-service.js.map +1 -0
- package/dist/apps/control-plane/application/services/dependency-scheduler-service.d.ts +26 -0
- package/dist/apps/control-plane/application/services/dependency-scheduler-service.js +75 -0
- package/dist/apps/control-plane/application/services/dependency-scheduler-service.js.map +1 -0
- package/dist/apps/control-plane/application/services/feature-deletion-service.d.ts +2 -0
- package/dist/apps/control-plane/application/services/feature-deletion-service.js +6 -7
- package/dist/apps/control-plane/application/services/feature-deletion-service.js.map +1 -1
- package/dist/apps/control-plane/application/services/gate-interpolation-service.d.ts +7 -0
- package/dist/apps/control-plane/application/services/gate-interpolation-service.js +7 -0
- package/dist/apps/control-plane/application/services/gate-interpolation-service.js.map +1 -0
- package/dist/apps/control-plane/application/services/gate-service.js +32 -2
- package/dist/apps/control-plane/application/services/gate-service.js.map +1 -1
- package/dist/apps/control-plane/application/services/instance-isolation-service.d.ts +11 -0
- package/dist/apps/control-plane/application/services/instance-isolation-service.js +17 -0
- package/dist/apps/control-plane/application/services/instance-isolation-service.js.map +1 -0
- package/dist/apps/control-plane/application/services/issue-tracker-service.d.ts +65 -0
- package/dist/apps/control-plane/application/services/issue-tracker-service.js +358 -0
- package/dist/apps/control-plane/application/services/issue-tracker-service.js.map +1 -0
- package/dist/apps/control-plane/application/services/merge-service.d.ts +4 -0
- package/dist/apps/control-plane/application/services/merge-service.js +44 -2
- package/dist/apps/control-plane/application/services/merge-service.js.map +1 -1
- package/dist/apps/control-plane/application/services/notifier-service.d.ts +74 -0
- package/dist/apps/control-plane/application/services/notifier-service.js +212 -0
- package/dist/apps/control-plane/application/services/notifier-service.js.map +1 -0
- package/dist/apps/control-plane/application/services/performance-analytics-service.d.ts +39 -0
- package/dist/apps/control-plane/application/services/performance-analytics-service.js +75 -0
- package/dist/apps/control-plane/application/services/performance-analytics-service.js.map +1 -0
- package/dist/apps/control-plane/application/services/plan-service.d.ts +1 -0
- package/dist/apps/control-plane/application/services/plan-service.js +53 -0
- package/dist/apps/control-plane/application/services/plan-service.js.map +1 -1
- package/dist/apps/control-plane/application/services/pr-monitor-service.d.ts +44 -0
- package/dist/apps/control-plane/application/services/pr-monitor-service.js +192 -0
- package/dist/apps/control-plane/application/services/pr-monitor-service.js.map +1 -0
- package/dist/apps/control-plane/application/services/reactions-service.d.ts +67 -0
- package/dist/apps/control-plane/application/services/reactions-service.js +114 -0
- package/dist/apps/control-plane/application/services/reactions-service.js.map +1 -0
- package/dist/apps/control-plane/application/services/reporting-service.d.ts +1 -0
- package/dist/apps/control-plane/application/services/reporting-service.js +13 -2
- package/dist/apps/control-plane/application/services/reporting-service.js.map +1 -1
- package/dist/apps/control-plane/application/services/run-lease-service.d.ts +2 -0
- package/dist/apps/control-plane/application/services/run-lease-service.js +14 -38
- package/dist/apps/control-plane/application/services/run-lease-service.js.map +1 -1
- package/dist/apps/control-plane/application/tools/tool-metadata.js +3 -1
- package/dist/apps/control-plane/application/tools/tool-metadata.js.map +1 -1
- package/dist/apps/control-plane/cli/aop.d.ts +1 -1
- package/dist/apps/control-plane/cli/aop.js +1 -1
- package/dist/apps/control-plane/cli/attach-command-handler.d.ts +12 -0
- package/dist/apps/control-plane/cli/attach-command-handler.js +98 -0
- package/dist/apps/control-plane/cli/attach-command-handler.js.map +1 -0
- package/dist/apps/control-plane/cli/cleanup-command-handler.d.ts +12 -0
- package/dist/apps/control-plane/cli/cleanup-command-handler.js +162 -0
- package/dist/apps/control-plane/cli/cleanup-command-handler.js.map +1 -0
- package/dist/apps/control-plane/cli/cli-argument-parser.js +73 -3
- package/dist/apps/control-plane/cli/cli-argument-parser.js.map +1 -1
- package/dist/apps/control-plane/cli/dashboard-command-handler.d.ts +7 -0
- package/dist/apps/control-plane/cli/dashboard-command-handler.js +45 -0
- package/dist/apps/control-plane/cli/dashboard-command-handler.js.map +1 -0
- package/dist/apps/control-plane/cli/help-command-handler.d.ts +8 -0
- package/dist/apps/control-plane/cli/help-command-handler.js +146 -0
- package/dist/apps/control-plane/cli/help-command-handler.js.map +1 -0
- package/dist/apps/control-plane/cli/init-command-handler.d.ts +26 -0
- package/dist/apps/control-plane/cli/init-command-handler.js +517 -0
- package/dist/apps/control-plane/cli/init-command-handler.js.map +1 -0
- package/dist/apps/control-plane/cli/resume-command-handler.js +1 -1
- package/dist/apps/control-plane/cli/resume-command-handler.js.map +1 -1
- package/dist/apps/control-plane/cli/retry-command-handler.d.ts +8 -0
- package/dist/apps/control-plane/cli/retry-command-handler.js +111 -0
- package/dist/apps/control-plane/cli/retry-command-handler.js.map +1 -0
- package/dist/apps/control-plane/cli/run-command-handler.d.ts +5 -0
- package/dist/apps/control-plane/cli/run-command-handler.js +82 -3
- package/dist/apps/control-plane/cli/run-command-handler.js.map +1 -1
- package/dist/apps/control-plane/cli/send-command-handler.d.ts +8 -0
- package/dist/apps/control-plane/cli/send-command-handler.js +55 -0
- package/dist/apps/control-plane/cli/send-command-handler.js.map +1 -0
- package/dist/apps/control-plane/cli/status-command-handler.d.ts +12 -1
- package/dist/apps/control-plane/cli/status-command-handler.js +55 -2
- package/dist/apps/control-plane/cli/status-command-handler.js.map +1 -1
- package/dist/apps/control-plane/cli/types.d.ts +26 -1
- package/dist/apps/control-plane/cli/types.js +15 -1
- package/dist/apps/control-plane/cli/types.js.map +1 -1
- package/dist/apps/control-plane/core/constants.d.ts +6 -0
- package/dist/apps/control-plane/core/constants.js +8 -2
- package/dist/apps/control-plane/core/constants.js.map +1 -1
- package/dist/apps/control-plane/core/error-codes.d.ts +2 -0
- package/dist/apps/control-plane/core/error-codes.js +3 -1
- package/dist/apps/control-plane/core/error-codes.js.map +1 -1
- package/dist/apps/control-plane/core/gates.d.ts +4 -0
- package/dist/apps/control-plane/core/gates.js +140 -43
- package/dist/apps/control-plane/core/gates.js.map +1 -1
- package/dist/apps/control-plane/core/kernel.d.ts +50 -1
- package/dist/apps/control-plane/core/kernel.js +220 -7
- package/dist/apps/control-plane/core/kernel.js.map +1 -1
- package/dist/apps/control-plane/core/path-layout.d.ts +3 -0
- package/dist/apps/control-plane/core/path-layout.js +9 -0
- package/dist/apps/control-plane/core/path-layout.js.map +1 -1
- package/dist/apps/control-plane/core/tool-caller.d.ts +32 -0
- package/dist/apps/control-plane/core/tool-caller.js +2 -0
- package/dist/apps/control-plane/core/tool-caller.js.map +1 -0
- package/dist/apps/control-plane/core/workspace-hooks.d.ts +20 -0
- package/dist/apps/control-plane/core/workspace-hooks.js +69 -0
- package/dist/apps/control-plane/core/workspace-hooks.js.map +1 -0
- package/dist/apps/control-plane/interfaces/cli/bootstrap.js +245 -9
- package/dist/apps/control-plane/interfaces/cli/bootstrap.js.map +1 -1
- package/dist/apps/control-plane/providers/providers.d.ts +42 -3
- package/dist/apps/control-plane/providers/providers.js +216 -5
- package/dist/apps/control-plane/providers/providers.js.map +1 -1
- package/dist/apps/control-plane/supervisor/build-wave-executor.d.ts +3 -0
- package/dist/apps/control-plane/supervisor/build-wave-executor.js +115 -6
- package/dist/apps/control-plane/supervisor/build-wave-executor.js.map +1 -1
- package/dist/apps/control-plane/supervisor/qa-wave-executor.d.ts +3 -0
- package/dist/apps/control-plane/supervisor/qa-wave-executor.js +109 -5
- package/dist/apps/control-plane/supervisor/qa-wave-executor.js.map +1 -1
- package/dist/apps/control-plane/supervisor/run-coordinator.d.ts +15 -0
- package/dist/apps/control-plane/supervisor/run-coordinator.js +132 -6
- package/dist/apps/control-plane/supervisor/run-coordinator.js.map +1 -1
- package/dist/apps/control-plane/supervisor/runtime.d.ts +3 -0
- package/dist/apps/control-plane/supervisor/runtime.js +110 -6
- package/dist/apps/control-plane/supervisor/runtime.js.map +1 -1
- package/dist/apps/control-plane/supervisor/types.d.ts +9 -16
- package/dist/apps/control-plane/supervisor/types.js.map +1 -1
- package/dist/apps/control-plane/supervisor/worker-decision-loop.d.ts +3 -0
- package/dist/apps/control-plane/supervisor/worker-decision-loop.js +5 -0
- package/dist/apps/control-plane/supervisor/worker-decision-loop.js.map +1 -1
- package/eslint.config.mjs +2 -1
- package/package.json +12 -2
- package/packages/web-dashboard/next-env.d.ts +5 -0
- package/packages/web-dashboard/next.config.js +7 -0
- package/packages/web-dashboard/package.json +26 -0
- package/packages/web-dashboard/src/app/api/actions/route.ts +64 -0
- package/packages/web-dashboard/src/app/api/events/route.ts +51 -0
- package/packages/web-dashboard/src/app/api/features/[id]/checkout/route.ts +256 -0
- package/packages/web-dashboard/src/app/api/features/[id]/diff/route.ts +10 -0
- package/packages/web-dashboard/src/app/api/features/[id]/evidence/[artifact]/route.ts +25 -0
- package/packages/web-dashboard/src/app/api/features/[id]/review/route.ts +63 -0
- package/packages/web-dashboard/src/app/api/features/[id]/route.ts +16 -0
- package/packages/web-dashboard/src/app/api/projects/route.ts +31 -0
- package/packages/web-dashboard/src/app/api/status/route.ts +15 -0
- package/packages/web-dashboard/src/app/globals.css +2 -0
- package/packages/web-dashboard/src/app/layout.tsx +15 -0
- package/packages/web-dashboard/src/app/page.tsx +393 -0
- package/packages/web-dashboard/src/lib/aop-client.ts +244 -0
- package/packages/web-dashboard/src/lib/multi-project-config.ts +116 -0
- package/packages/web-dashboard/src/lib/orchestrator-tools.ts +284 -0
- package/packages/web-dashboard/src/lib/types.ts +58 -0
- package/packages/web-dashboard/tsconfig.json +40 -0
- package/packages/web-dashboard/vitest.config.ts +6 -0
- package/spec-files/completed/agentic_orchestrator_feature_gaps_closure_spec.md +1764 -0
- package/spec-files/outstanding/agentic_orchestrator_enterprise_governance_dashboard_spec.md +348 -0
- package/spec-files/outstanding/agentic_orchestrator_knowledge_canary_spec.md +344 -0
- package/spec-files/outstanding/agentic_orchestrator_observability_integrity_diagnostics_spec.md +374 -0
- package/spec-files/outstanding/agentic_orchestrator_performance_improvements_spec.md +1059 -0
- package/spec-files/outstanding/agentic_orchestrator_planning_review_quality_spec.md +466 -0
- package/spec-files/outstanding/agentic_orchestrator_quality_adoption_execution_spec.md +198 -0
- package/spec-files/outstanding/agentic_orchestrator_validator_hardening_spec.md +365 -0
- package/spec-files/progress.md +481 -52
- /package/spec-files/{agentic_orchestrator_cli_delete_command_spec.md → completed/agentic_orchestrator_cli_delete_command_spec.md} +0 -0
- /package/spec-files/{agentic_orchestrator_dot_aop_generated_artifacts_spec.md → completed/agentic_orchestrator_dot_aop_generated_artifacts_spec.md} +0 -0
- /package/spec-files/{agentic_orchestrator_mcp_formalization_spec.md → completed/agentic_orchestrator_mcp_formalization_spec.md} +0 -0
- /package/spec-files/{agentic_orchestrator_oop_refactor_spec.md → completed/agentic_orchestrator_oop_refactor_spec.md} +0 -0
- /package/spec-files/{agentic_orchestrator_single_global_orchestrator_spec.md → completed/agentic_orchestrator_single_global_orchestrator_spec.md} +0 -0
- /package/spec-files/{agentic_orchestrator_spec.md → completed/agentic_orchestrator_spec.md} +0 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"permissions": {
|
|
3
|
+
"allow": [
|
|
4
|
+
"Bash(cat:*)",
|
|
5
|
+
"Bash(gh api:*)",
|
|
6
|
+
"WebFetch(domain:api.github.com)",
|
|
7
|
+
"WebFetch(domain:raw.githubusercontent.com)",
|
|
8
|
+
"Bash(npm run:*)",
|
|
9
|
+
"Bash(npx vitest:*)",
|
|
10
|
+
"Bash(grep:*)",
|
|
11
|
+
"Bash(ls:*)",
|
|
12
|
+
"Bash(wc:*)"
|
|
13
|
+
]
|
|
14
|
+
}
|
|
15
|
+
}
|
package/CLAUDE.md
ADDED
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# CLAUDE.md
|
|
2
|
+
|
|
3
|
+
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
|
4
|
+
|
|
5
|
+
## Build & Development Commands
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm run build # Lint + TypeScript compile
|
|
9
|
+
npm run typecheck # tsc --noEmit (type-check only)
|
|
10
|
+
npm run lint # ESLint with --max-warnings 0
|
|
11
|
+
npm run lint:fix # ESLint with auto-fix
|
|
12
|
+
npm run test # Vitest with coverage (via Nx)
|
|
13
|
+
npm run run # Run CLI: tsx apps/control-plane/src/cli/aop.ts
|
|
14
|
+
|
|
15
|
+
# Run a single test file
|
|
16
|
+
npx vitest run apps/control-plane/test/<file>.spec.ts
|
|
17
|
+
|
|
18
|
+
# Run tests matching a pattern
|
|
19
|
+
npx vitest run -t "pattern"
|
|
20
|
+
|
|
21
|
+
# Validation scripts (also run in CI)
|
|
22
|
+
npm run validate:mcp-contracts
|
|
23
|
+
npm run validate:architecture
|
|
24
|
+
npm run validate:docker-mcp
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Architecture
|
|
28
|
+
|
|
29
|
+
This is an MCP-first, multi-agent orchestrator control plane. The codebase lives in an Nx monorepo with a single application at `apps/control-plane/`.
|
|
30
|
+
|
|
31
|
+
### Layer Overview
|
|
32
|
+
|
|
33
|
+
**CLI** (`apps/control-plane/src/cli/`) → **Supervisor** (`supervisor/`) → **Kernel** (`core/kernel.ts`) → **Services** (`application/services/`)
|
|
34
|
+
|
|
35
|
+
- **CLI**: Entry point at `cli/aop.ts` → delegates to `interfaces/cli/bootstrap.ts`. Commands: `run`, `status`, `resume`, `stop`, `delete`, `cleanup`, `init`, `dashboard`, `retry`, `send`, `attach`, `help`. All responses are structured JSON with `{ ok, data/error }`. Run `aop --help` or `aop help <command>` for usage details.
|
|
36
|
+
- **Kernel** (`core/kernel.ts`, ~900 lines): Deterministic orchestration engine. Manages schema validation, state, locks, plans, patches, gates, merges, and reporting. Delegates to 12+ domain services via port interfaces.
|
|
37
|
+
- **Supervisor** (`supervisor/runtime.ts`): Multi-agent runtime. Resolves providers (codex, claude, gemini, etc.), loads role-specific prompts, orchestrates planning/build/QA waves, manages lease heartbeats.
|
|
38
|
+
- **MCP Tool Runtime** (`mcp/tool-runtime.ts`): Tool execution pipeline with registry-based dispatch, input/output schema validation, role-based authorization, and idempotency tracking via `operation_id`.
|
|
39
|
+
- **Application Services** (`application/services/`): 12+ focused services (plan, patch, gates, QA, locks, merge, deletion, etc.) implementing port interfaces consumed by the kernel.
|
|
40
|
+
|
|
41
|
+
### Configuration Layer (`agentic/orchestrator/`)
|
|
42
|
+
|
|
43
|
+
- `policy.yaml` — Commit/patch/merge policies, lock TTL, RBAC, supervisor iteration limits
|
|
44
|
+
- `gates.yaml` — Gate profiles (fast/full/merge) with commands and coverage thresholds
|
|
45
|
+
- `agents.yaml` — Agent roles (planner/builder/qa), provider defaults, prompt paths
|
|
46
|
+
- `prompts/` — Role-specific system prompts
|
|
47
|
+
- `tools/` — MCP tool contracts: `catalog.json` (33 tools), per-tool `schemas/input/` and `schemas/output/`
|
|
48
|
+
- `schemas/` — JSON schemas for policy, state, plan, index, gates, agents, qa_test_index
|
|
49
|
+
|
|
50
|
+
### Runtime Artifacts (`.aop/`)
|
|
51
|
+
|
|
52
|
+
- `.aop/features/index.json` — Global feature index (active/blocked/merged features, locks, sessions)
|
|
53
|
+
- `.aop/features/<id>/state.md` — Per-feature state (YAML frontmatter + markdown)
|
|
54
|
+
- `.aop/features/<id>/plan.json` — Versioned plan with optimistic concurrency
|
|
55
|
+
- `.aop/features/<id>/evidence/` — Gate evidence artifacts
|
|
56
|
+
|
|
57
|
+
## Key Patterns
|
|
58
|
+
|
|
59
|
+
- **Port-based DI**: Services define interface ports; the kernel implements them. This decouples domain logic from infrastructure.
|
|
60
|
+
- **Schema-driven validation**: All configs and artifacts validated via AJV against JSON schemas. Validation failures return structured errors with retry hints.
|
|
61
|
+
- **Atomic state management**: File locks, version guards, and optimistic concurrency for all state mutations.
|
|
62
|
+
- **Structured error codes**: 45+ error codes with `{ code, message, details: { retryable, requires_human, suggestions } }`.
|
|
63
|
+
- **Tool registry dispatch**: `catalog.json` metadata drives tool routing, replacing switch-based dispatch. Mutating tools require `operation_id` for idempotency.
|
|
64
|
+
|
|
65
|
+
## Lint Rules to Know
|
|
66
|
+
|
|
67
|
+
- `no-explicit-any` is **enforced** in source, relaxed in tests
|
|
68
|
+
- `no-floating-promises` and `no-misused-promises` are errors
|
|
69
|
+
- `require-await` is enforced in source, relaxed in tests
|
|
70
|
+
- `consistent-type-imports` is required (use `import type` for type-only imports)
|
|
71
|
+
- `no-console` is an error in source (except `warn`/`error`); allowed in scripts and CLI entry point
|
|
72
|
+
- Unused variables must be prefixed with `_`
|
|
73
|
+
- Zero warnings allowed (`--max-warnings 0`)
|
|
74
|
+
|
|
75
|
+
## Adding a New CLI Command or Flag
|
|
76
|
+
|
|
77
|
+
When adding a new command or flag to the CLI, update **all** of the following in the same change:
|
|
78
|
+
|
|
79
|
+
1. **`apps/control-plane/src/cli/types.ts`** — add the command to the `CliCommand` enum.
|
|
80
|
+
2. **`apps/control-plane/src/cli/cli-argument-parser.ts`** — parse the new flag/command token.
|
|
81
|
+
3. **`apps/control-plane/src/interfaces/cli/bootstrap.ts`** — dispatch the new command.
|
|
82
|
+
4. **`apps/control-plane/src/cli/help-command-handler.ts`** — add or update the entry in `COMMAND_HELP` (both the command summary and its flags list). This is the source of truth for `aop --help` output.
|
|
83
|
+
5. **`CLAUDE.md`** — update the command list in the CLI bullet point above.
|
|
84
|
+
|
|
85
|
+
## Coverage Thresholds
|
|
86
|
+
|
|
87
|
+
Lines: 90% | Branches: 90% | Functions: 90% | Statements: 90%
|
|
88
|
+
|
|
89
|
+
## Updating progress.md
|
|
90
|
+
|
|
91
|
+
`spec-files/progress.md` is the versioned work log for this repository. **After completing any meaningful code change** (new feature, bug fix, refactor, test coverage improvement, validator change, etc.), append a new numbered entry to the **Completed Tasks** section of `progress.md`.
|
|
92
|
+
|
|
93
|
+
### Entry format
|
|
94
|
+
|
|
95
|
+
Each entry must include:
|
|
96
|
+
- A sequential number (increment from the last entry)
|
|
97
|
+
- A short title describing what was done
|
|
98
|
+
- **Goal** — one sentence on why the change was made
|
|
99
|
+
- **Changes made** — bullet list of files modified and what changed; be specific (function names, test counts, metric deltas)
|
|
100
|
+
- **Result** — outcome verification (e.g. `npm test ✅`, `npm run lint ✅`, validator output)
|
|
101
|
+
|
|
102
|
+
```
|
|
103
|
+
✅ **Entry N — Short Title**
|
|
104
|
+
- **Goal:** One-sentence description of the problem or objective.
|
|
105
|
+
- **Changes made:**
|
|
106
|
+
- `path/to/file.ts` — description of what changed and why.
|
|
107
|
+
- `apps/control-plane/test/foo.spec.ts` — X tests added covering Y branches.
|
|
108
|
+
- **Result:** `npm test` ✅ (N test files / M tests passing). `npm run lint` ✅.
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### Rules
|
|
112
|
+
|
|
113
|
+
- **One entry per logical unit of work.** Don't bundle unrelated changes into one entry.
|
|
114
|
+
- **Do not edit or renumber past entries.** The log is append-only.
|
|
115
|
+
- Entries go in the **Completed Tasks** section (before the `## Next Tasks:` heading).
|
|
116
|
+
- The `## Next Tasks:` section lists only work that has **not yet been done**. Move items out of it once completed.
|
|
117
|
+
- After completing work from a spec file, update the **Spec Gap Tracker** table (if present) to mark the item `✅ Complete`.
|
|
118
|
+
|
|
119
|
+
## Executing a Spec
|
|
120
|
+
|
|
121
|
+
When beginning work from a spec file (e.g. `spec-files/agentic_orchestrator_*.md`):
|
|
122
|
+
|
|
123
|
+
1. **Before writing any code**, read the spec and add all planned tasks to the `## Next Tasks:` section of `progress.md`. Use the spec's section numbers as identifiers (e.g. `§3.1 — Add mutating cross-check`).
|
|
124
|
+
2. **As each task completes**, move it out of `## Next Tasks:` and into a new numbered `✅ **Entry N — ...`** in the Completed Tasks section.
|
|
125
|
+
3. **Never leave a completed task in `## Next Tasks:`**. The section must only contain work that hasn't started or isn't finished.
|
|
126
|
+
4. If a task is blocked or deferred, leave it in `## Next Tasks:` with a `[BLOCKED]` or `[DEFERRED]` annotation and a one-line reason.
|
package/README.md
CHANGED
|
@@ -10,7 +10,7 @@ It combines:
|
|
|
10
10
|
|
|
11
11
|
- a **deterministic kernel** (state, locks, collisions, gates, evidence)
|
|
12
12
|
- a **supervisor runtime** (orchestrator/planner/builder/qa session coordination)
|
|
13
|
-
- a **CLI contract** (`aop <run|status|resume|stop|delete>`) with deterministic spec ingestion, runtime control, and cleanup
|
|
13
|
+
- a **CLI contract** (`aop <run|status|resume|stop|delete|cleanup|init|dashboard|retry|send|attach>`) with deterministic spec ingestion, runtime control, monitoring, and cleanup
|
|
14
14
|
|
|
15
15
|
> For complete normative requirements, see [agentic_orchestrator_spec.md](spec-files/agentic_orchestrator_spec.md).
|
|
16
16
|
> For implementation continuity and the latest status, see [progress.md](spec-files/progress.md).
|
|
@@ -95,6 +95,7 @@ Agentic-Orchestrator/
|
|
|
95
95
|
├── .aop/
|
|
96
96
|
│ ├── features/ # runtime-generated feature artifacts
|
|
97
97
|
│ │ └── index.json # global orchestration index
|
|
98
|
+
│ ├── analytics/ # agent performance analytics
|
|
98
99
|
│ └── runtime/
|
|
99
100
|
│ └── operation-ledger/
|
|
100
101
|
├── agentic/
|
|
@@ -102,23 +103,30 @@ Agentic-Orchestrator/
|
|
|
102
103
|
│ │ ├── policy.yaml
|
|
103
104
|
│ │ ├── gates.yaml
|
|
104
105
|
│ │ ├── agents.yaml
|
|
106
|
+
│ │ ├── multi-project.yaml # optional multi-project configuration
|
|
105
107
|
│ │ ├── schemas/
|
|
106
108
|
│ │ └── tools.md
|
|
107
109
|
├── apps/
|
|
108
110
|
│ └── control-plane/
|
|
109
111
|
│ ├── src/
|
|
110
|
-
│ │ ├── cli/ # aop CLI
|
|
112
|
+
│ │ ├── cli/ # aop CLI commands and handlers
|
|
111
113
|
│ │ ├── core/ # deterministic kernel
|
|
114
|
+
│ │ ├── application/
|
|
115
|
+
│ │ │ └── services/ # domain services (cost, reactions, pr-monitor, etc.)
|
|
112
116
|
│ │ ├── providers/ # provider resolution + adapter
|
|
113
117
|
│ │ └── supervisor/ # runtime orchestration loop
|
|
114
|
-
│ ├── test/ # Vitest suites
|
|
118
|
+
│ ├── test/ # Vitest suites (68 files / 899 tests)
|
|
115
119
|
│ ├── project.json # Nx targets
|
|
116
120
|
│ └── vitest.config.ts
|
|
121
|
+
├── packages/
|
|
122
|
+
│ └── web-dashboard/ # Next.js 14 web dashboard (aop dashboard)
|
|
123
|
+
├── docker/
|
|
124
|
+
│ ├── mcp.Dockerfile
|
|
125
|
+
│ ├── mcp.entrypoint.sh
|
|
126
|
+
│ └── mcp.compose.yaml
|
|
117
127
|
├── spec-files/
|
|
118
128
|
│ ├── agentic_orchestrator_spec.md
|
|
119
|
-
│ ├──
|
|
120
|
-
│ ├── agentic_orchestrator_single_global_orchestrator_spec.md
|
|
121
|
-
│ ├── agentic_orchestrator_oop_refactor_spec.md
|
|
129
|
+
│ ├── agentic_orchestrator_feature_gaps_closure_spec.md
|
|
122
130
|
│ └── progress.md # implementation continuity log
|
|
123
131
|
└── README.md
|
|
124
132
|
```
|
|
@@ -194,10 +202,10 @@ node dist/apps/control-plane/cli/aop.js run -fi ./.aop/features/my_feature/spec.
|
|
|
194
202
|
Primary command:
|
|
195
203
|
|
|
196
204
|
```bash
|
|
197
|
-
aop <
|
|
205
|
+
aop <command> [flags]
|
|
198
206
|
```
|
|
199
207
|
|
|
200
|
-
If no command is provided, the CLI defaults to `run`.
|
|
208
|
+
If no command is provided, the CLI defaults to `run`. Run `aop help` for the full command list, or `aop help <command>` for per-command flags.
|
|
201
209
|
|
|
202
210
|
All commands print JSON to stdout. Errors use:
|
|
203
211
|
|
|
@@ -205,6 +213,8 @@ All commands print JSON to stdout. Errors use:
|
|
|
205
213
|
{ "ok": false, "error": { "code": "...", "message": "...", "details": { ... } } }
|
|
206
214
|
```
|
|
207
215
|
|
|
216
|
+
Available commands: `run`, `status`, `resume`, `stop`, `delete`, `cleanup`, `init`, `dashboard`, `retry`, `send`, `attach`, `help`.
|
|
217
|
+
|
|
208
218
|
### `run`
|
|
209
219
|
|
|
210
220
|
Starts orchestration for feature specs and returns runtime metadata (`runtime_status`, `queue_depth`, dashboard snapshot, and active feature list).
|
|
@@ -347,25 +357,122 @@ Behavior:
|
|
|
347
357
|
- preview reports planned cleanup for feature files, index/session references, locks, blocked queue entries, worktree, and branch
|
|
348
358
|
- execution removes feature residue from index/runtime state, deletes `.aop/features/<feature_id>`, optionally removes worktree, and optionally removes local branch
|
|
349
359
|
|
|
360
|
+
### `cleanup`
|
|
361
|
+
|
|
362
|
+
Removes merged or stale feature artifacts, worktrees, and index residue. Default behavior is preview-only; destructive execution requires `--yes`.
|
|
363
|
+
|
|
364
|
+
```bash
|
|
365
|
+
# Preview what would be cleaned
|
|
366
|
+
aop cleanup
|
|
367
|
+
|
|
368
|
+
# Apply cleanup for all eligible (merged/stale) features
|
|
369
|
+
aop cleanup --yes
|
|
370
|
+
```
|
|
371
|
+
|
|
372
|
+
When `cleanup.auto_after_merge` is enabled in `policy.yaml`, the runtime automatically triggers cleanup after a successful merge.
|
|
373
|
+
|
|
374
|
+
### `init`
|
|
375
|
+
|
|
376
|
+
Initialises agentic orchestrator configuration in the current directory. Generates `policy.yaml`, `gates.yaml`, `agents.yaml`, and system prompt templates.
|
|
377
|
+
|
|
378
|
+
```bash
|
|
379
|
+
# Interactive wizard
|
|
380
|
+
aop init
|
|
381
|
+
|
|
382
|
+
# Non-interactive (all defaults)
|
|
383
|
+
aop init --auto
|
|
384
|
+
|
|
385
|
+
# Overwrite existing configuration
|
|
386
|
+
aop init --force
|
|
387
|
+
```
|
|
388
|
+
|
|
389
|
+
### `dashboard`
|
|
390
|
+
|
|
391
|
+
Starts the web dashboard server (`packages/web-dashboard/`). Provides a real-time Kanban view of all features, review approval/denial, checkout, and SSE-based live updates.
|
|
392
|
+
|
|
393
|
+
```bash
|
|
394
|
+
# Start in production mode (default port 3000)
|
|
395
|
+
aop dashboard
|
|
396
|
+
|
|
397
|
+
# Custom port
|
|
398
|
+
aop dashboard --port 8080
|
|
399
|
+
|
|
400
|
+
# Development mode (Next.js hot reload)
|
|
401
|
+
aop dashboard --dev
|
|
402
|
+
```
|
|
403
|
+
|
|
404
|
+
### `retry`
|
|
405
|
+
|
|
406
|
+
Retries a failed gate or step for a feature. Use `--force` to reset state and force a gate re-run.
|
|
407
|
+
|
|
408
|
+
```bash
|
|
409
|
+
aop retry --feature-id my_feature
|
|
410
|
+
|
|
411
|
+
# Force retry regardless of current state
|
|
412
|
+
aop retry --feature-id my_feature --force
|
|
413
|
+
```
|
|
414
|
+
|
|
415
|
+
### `send`
|
|
416
|
+
|
|
417
|
+
Sends a message to the active agent session for a feature.
|
|
418
|
+
|
|
419
|
+
```bash
|
|
420
|
+
aop send --feature-id my_feature --message "focus on the error handling path"
|
|
421
|
+
|
|
422
|
+
# Positional form
|
|
423
|
+
aop send my_feature "focus on the error handling path"
|
|
424
|
+
```
|
|
425
|
+
|
|
426
|
+
### `attach`
|
|
427
|
+
|
|
428
|
+
Attaches interactively to the running agent session for a feature (provider support required).
|
|
429
|
+
|
|
430
|
+
```bash
|
|
431
|
+
aop attach --feature-id my_feature
|
|
432
|
+
|
|
433
|
+
# Positional form
|
|
434
|
+
aop attach my_feature
|
|
435
|
+
```
|
|
436
|
+
|
|
437
|
+
### `help`
|
|
438
|
+
|
|
439
|
+
Prints the full command list or detailed help for a specific command.
|
|
440
|
+
|
|
441
|
+
```bash
|
|
442
|
+
aop help
|
|
443
|
+
aop help run
|
|
444
|
+
aop help dashboard
|
|
445
|
+
```
|
|
446
|
+
|
|
350
447
|
### CLI Options
|
|
351
448
|
|
|
352
449
|
Supported options:
|
|
353
450
|
|
|
354
451
|
| Option | Description |
|
|
355
452
|
|-------------------------------------------------------|-----------------------------------------------------------------------------------|
|
|
356
|
-
| `-fi <
|
|
357
|
-
| `-fl <
|
|
358
|
-
| `--
|
|
453
|
+
| `-fi <PATH>` | Run exactly one spec file |
|
|
454
|
+
| `-fl <PATH>` | Resolve all `**/*.md` files recursively in a folder (deterministic lexical order) |
|
|
455
|
+
| `--batch` | Batch-ingest all specs; skip already-active features (`run`) |
|
|
456
|
+
| `--agent-provider <codex\\|claude\\|gemini\\|custom\\|kiro-cli\\|copilot>` | Provider selection |
|
|
359
457
|
| `--agent-model <model-id>` | Model selection |
|
|
360
458
|
| `--agent-config <json-object>` | Additional provider-specific agent config (for example command/args payload) |
|
|
361
459
|
| `--provider-config-env <ENV_VAR>` | Provider auth/config environment variable name |
|
|
362
460
|
| `--transport <mcp\\|inprocess>` | Tool transport selection (default `mcp`) |
|
|
363
461
|
| `--takeover-stale-run` | Allow stale run-lease takeover during `run` |
|
|
364
|
-
| `--
|
|
365
|
-
| `--
|
|
366
|
-
| `--
|
|
367
|
-
| `--
|
|
368
|
-
| `--remove-
|
|
462
|
+
| `--project <name>` | Select project from `multi-project.yaml` (run, status, resume, retry) |
|
|
463
|
+
| `--feature-id <id>` | Target feature for `delete`, `cleanup`, `retry`, `send`, `attach` |
|
|
464
|
+
| `--dry-run [true\\|false]` | Preview-only mode for `delete` and `cleanup` |
|
|
465
|
+
| `--yes` | Confirm destructive `delete` or `cleanup` execution |
|
|
466
|
+
| `--remove-worktree [true\\|false]` | Whether to remove `.worktrees/<feature_id>` (default `true`) |
|
|
467
|
+
| `--remove-branch <none\\|safe\\|force>` | Local branch cleanup mode (default `none`) |
|
|
468
|
+
| `--summary` | Condensed one-line-per-feature output (`status`) |
|
|
469
|
+
| `--all` | Aggregate across all projects (`status`); delete all features (`delete`) |
|
|
470
|
+
| `--auto` | Non-interactive init with all defaults (`init`) |
|
|
471
|
+
| `--force` | Overwrite existing config (`init`); force retry regardless of state (`retry`) |
|
|
472
|
+
| `--port <number>` | Dashboard listen port (default `3000`) |
|
|
473
|
+
| `--dev` | Start dashboard in Next.js dev mode |
|
|
474
|
+
| `--foreground` | Keep dashboard server in the foreground |
|
|
475
|
+
| `--message <text>` | Message to deliver to agent session (`send`) |
|
|
369
476
|
|
|
370
477
|
Validation behavior:
|
|
371
478
|
|
|
@@ -414,15 +521,21 @@ Current defaults include:
|
|
|
414
521
|
- implementation constraints: `workspace=nx`, `framework=vitest`
|
|
415
522
|
- merge requires explicit user approval token
|
|
416
523
|
- supervisor iteration loop is policy-configurable via `supervisor.max_iterations_per_phase` (default `6`)
|
|
524
|
+
- `budget.per_feature_limit_usd` (default `50.00`) and `budget.alert_threshold` (default `0.8`) for cost enforcement
|
|
525
|
+
- `reactions` config: per-event retry rules (`gate_failed`, `agent_stuck`, `collision_detected`, `ready_to_merge`, `changes_requested`)
|
|
526
|
+
- `issue_tracker` config: provider (`github`/`linear`/`jira`), credentials, and field mapping
|
|
527
|
+
- `cleanup.auto_after_merge` / `cleanup.grace_period_seconds`: automatic merged-artifact removal
|
|
417
528
|
|
|
418
529
|
### Gates (`agentic/orchestrator/gates.yaml`)
|
|
419
530
|
|
|
420
531
|
Default profile modes:
|
|
421
532
|
|
|
422
|
-
- `fast`
|
|
533
|
+
- `fast` — supports `{base_branch}` / `{feature_id}` interpolation for incremental runs
|
|
423
534
|
- `full`
|
|
424
535
|
- `merge`
|
|
425
536
|
|
|
537
|
+
Gate steps support `parallel_group` and `depends_on` fields for parallel execution waves. Steps within the same `parallel_group` run concurrently via `Promise.allSettled()`.
|
|
538
|
+
|
|
426
539
|
Coverage parser:
|
|
427
540
|
|
|
428
541
|
- `lcov` from `coverage/control-plane/lcov.info`
|
|
@@ -432,8 +545,17 @@ Coverage parser:
|
|
|
432
545
|
- role-specific system prompt paths
|
|
433
546
|
- default provider/model/config-env fallback values
|
|
434
547
|
- optional `runtime.provider_configs.<provider>` objects for provider-specific payloads (for example `kiro-cli chat --agent dev`)
|
|
548
|
+
- `worktree.post_create` commands and `worktree.symlinks` for workspace hook automation
|
|
435
549
|
- stack-specific examples: [`example-configurations/node/`](example-configurations/node) and [`example-configurations/java/`](example-configurations/java)
|
|
436
550
|
|
|
551
|
+
### Multi-Project (`agentic/orchestrator/multi-project.yaml`)
|
|
552
|
+
|
|
553
|
+
Optional. Defines multiple independent projects in one repository. Pass `--project <name>` on the CLI to scope commands to a project. `aop status --all` aggregates across all projects. Each project can override `policy` and `gates` paths.
|
|
554
|
+
|
|
555
|
+
### Adapter Registry (`agentic/orchestrator/adapters.yaml`)
|
|
556
|
+
|
|
557
|
+
Optional. Registers custom adapters for `notification-channel`, `activity-detector`, and `scm-provider` slots. Resolves at kernel/supervisor boot.
|
|
558
|
+
|
|
437
559
|
### Example configuration bundles
|
|
438
560
|
|
|
439
561
|
- overview: [`example-configurations/README.md`](example-configurations/README.md)
|
|
@@ -541,7 +663,7 @@ All failures return structured error payloads with stable error codes.
|
|
|
541
663
|
|
|
542
664
|
### MCP contract artifacts
|
|
543
665
|
|
|
544
|
-
- `agentic/orchestrator/tools/catalog.json`: canonical tool list, roles, handler bindings, mutating/idempotency requirements, and schema refs.
|
|
666
|
+
- `agentic/orchestrator/tools/catalog.json`: canonical tool list (33 tools), roles, handler bindings, mutating/idempotency requirements, and schema refs.
|
|
545
667
|
- `agentic/orchestrator/tools/protocol.json`: pinned MCP protocol + SDK metadata and required transports.
|
|
546
668
|
- `agentic/orchestrator/tools/errors.schema.json`: normalized error envelope contract.
|
|
547
669
|
- `agentic/orchestrator/tools/schemas/input/*.schema.json`: per-tool request schemas.
|
|
@@ -554,7 +676,7 @@ npm run validate:mcp-contracts
|
|
|
554
676
|
npm run validate:architecture
|
|
555
677
|
```
|
|
556
678
|
|
|
557
|
-
|
|
679
|
+
The MCP contracts validator checks: protocol pinning, `catalog.json`/`tools.md`/schema parity, mutating-tool cross-check against `TOOL_BEHAVIOR_METADATA`, AJV schema compilation (draft-07 and 2020-12), orphan schema detection, and `supported_roles` validation. The architecture validator enforces layer dependency rules across 93 classified source files.
|
|
558
680
|
|
|
559
681
|
### Tool definitions
|
|
560
682
|
|
|
@@ -578,6 +700,7 @@ This verifies protocol pinning, `catalog.json`/`tools.md`/schema parity, and enf
|
|
|
578
700
|
| `repo.diff_bundle` | Return review bundle (stat/full diff/files/latest gate summary) | No | orchestrator |
|
|
579
701
|
| `feature.ready_to_merge` | Commit + merge promotion after required gates and approval checks | Yes | orchestrator, system |
|
|
580
702
|
| `feature.delete` | Delete feature runtime artifacts and optional local git/worktree state | Yes | orchestrator, system |
|
|
703
|
+
| `feature.send_message` | Send a message to the active agent session for a feature | Yes | orchestrator, system |
|
|
581
704
|
| `gates.list` | List available gate profiles/modes | No | orchestrator, builder, qa |
|
|
582
705
|
| `gates.run` | Execute gate profile/mode, capture logs/evidence, enforce thresholds | Yes | builder, qa, orchestrator |
|
|
583
706
|
| `evidence.latest` | Return latest evidence summary for feature | No | qa, orchestrator |
|
|
@@ -586,8 +709,12 @@ This verifies protocol pinning, `catalog.json`/`tools.md`/schema parity, and enf
|
|
|
586
709
|
| `locks.acquire` | Acquire/renew resource lease lock for feature | Yes | orchestrator, system |
|
|
587
710
|
| `locks.release` | Release held resource lock | Yes | orchestrator, system |
|
|
588
711
|
| `collisions.scan` | Compute collision matrix across accepted plans | No | planner, orchestrator |
|
|
589
|
-
| `report.dashboard` | Return global orchestration summary
|
|
712
|
+
| `report.dashboard` | Return global orchestration summary (includes cost and PR metadata) | No | orchestrator |
|
|
590
713
|
| `report.feature_summary` | Return per-feature state/diff/evidence summary | No | orchestrator |
|
|
714
|
+
| `cost.record` | Record a cost entry for a feature (token usage, API cost) | Yes | orchestrator, system |
|
|
715
|
+
| `cost.get` | Return accumulated cost for a feature | No | orchestrator, system |
|
|
716
|
+
| `performance.record_outcome` | Record feature outcome (status, retries, duration, cost) for analytics | Yes | orchestrator, system |
|
|
717
|
+
| `performance.get_analytics` | Return aggregated performance metrics by provider/model | No | orchestrator, system |
|
|
591
718
|
|
|
592
719
|
### Role expectations at a glance
|
|
593
720
|
|
|
@@ -601,9 +728,11 @@ This verifies protocol pinning, `catalog.json`/`tools.md`/schema parity, and enf
|
|
|
601
728
|
|
|
602
729
|
## Quality & Testing
|
|
603
730
|
|
|
731
|
+
## Quality & Testing
|
|
732
|
+
|
|
604
733
|
- framework: Vitest (`apps/control-plane/vitest.config.ts`)
|
|
605
734
|
- coverage output: `coverage/control-plane`
|
|
606
|
-
- configured thresholds: lines/branches/functions/statements at `90%`
|
|
735
|
+
- configured thresholds: lines/branches/functions/statements at `90%` (enforced per-file)
|
|
607
736
|
- workspace tooling: Nx targets (`run`, `build`, `test`, `typecheck`)
|
|
608
737
|
- Nx launcher: use `npm run nx -- <target>`; this workspace defaults to `NX_DAEMON=false` and `NX_ISOLATE_PLUGINS=false` to avoid Unix-socket worker failures in restricted environments.
|
|
609
738
|
- Shell setup for raw `npx nx` commands:
|
|
@@ -619,10 +748,22 @@ This verifies protocol pinning, `catalog.json`/`tools.md`/schema parity, and enf
|
|
|
619
748
|
From [progress.md](spec-files/progress.md):
|
|
620
749
|
|
|
621
750
|
- Nx + TypeScript + Vitest migration complete
|
|
622
|
-
- Kernel + supervisor + CLI implemented end-to-end
|
|
623
|
-
-
|
|
624
|
-
-
|
|
625
|
-
-
|
|
751
|
+
- Kernel + supervisor + CLI implemented end-to-end with 12 commands
|
|
752
|
+
- 33 MCP tools registered across 5 roles; all schemas AJV-validated in CI
|
|
753
|
+
- Web dashboard (`packages/web-dashboard/`) with SSE stream, Kanban UI, and review/checkout APIs
|
|
754
|
+
- Notification system (desktop, Slack, webhook, in-process) with 4-tier priority routing
|
|
755
|
+
- Cost tracking and budget enforcement (`cost.json` per feature, `PAUSED_BUDGET` status)
|
|
756
|
+
- Agent performance analytics with aggregates by provider/model
|
|
757
|
+
- Dependency-aware feature scheduling with circular detection and auto-promotion on merge
|
|
758
|
+
- Parallel gate execution with `parallel_group` / `depends_on` wave scheduling
|
|
759
|
+
- CI failure auto-remediation (`reactions-service`) with configurable retry and escalation
|
|
760
|
+
- PR lifecycle integration with merge scoring and `changes_requested` reaction
|
|
761
|
+
- Multi-project support (`multi-project.yaml`, `--project` flag, per-project lease isolation)
|
|
762
|
+
- Hash-based multi-instance isolation (SHA256 instance IDs, namespaced run-lease paths)
|
|
763
|
+
- Linear and Jira issue tracker adapters with full API-backed status sync
|
|
764
|
+
- Architecture boundary checks CI-enforced via `npm run validate:architecture` (93 files, 0 violations)
|
|
765
|
+
- Strict linting enforced (`npm run lint`) and build is lint-gated
|
|
766
|
+
- `npm run typecheck` passes; `npm test` passes (68 test files / 899 tests; all per-file coverage ≥ 90%)
|
|
626
767
|
|
|
627
768
|
Environment note observed during implementation sessions:
|
|
628
769
|
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
version: 1
|
|
2
|
+
# Gate commands support {base_branch} interpolation for incremental test selection:
|
|
3
|
+
# fast: "npx vitest run --changed {base_branch}" # runs only affected tests
|
|
4
|
+
# full: "npx vitest run" # always runs complete suite
|
|
5
|
+
#
|
|
6
|
+
# Parallel execution: steps with the same `parallel_group` run concurrently.
|
|
7
|
+
# Use `depends_on` to declare ordering constraints between steps.
|
|
2
8
|
profiles:
|
|
3
9
|
default:
|
|
4
10
|
modes:
|
|
@@ -23,6 +29,47 @@ profiles:
|
|
|
23
29
|
coverage_branch_min: 0.9
|
|
24
30
|
coverage_line_target: 1.0
|
|
25
31
|
coverage_branch_target: 1.0
|
|
32
|
+
parallel_example:
|
|
33
|
+
modes:
|
|
34
|
+
fast:
|
|
35
|
+
- name: lint
|
|
36
|
+
cmd: ["npx", "eslint", "."]
|
|
37
|
+
parallel_group: static_checks
|
|
38
|
+
timeout_seconds: 300
|
|
39
|
+
- name: typecheck
|
|
40
|
+
cmd: ["npx", "tsc", "--noEmit"]
|
|
41
|
+
parallel_group: static_checks
|
|
42
|
+
timeout_seconds: 300
|
|
43
|
+
- name: test
|
|
44
|
+
cmd: ["npx", "vitest", "run", "--changed", "{base_branch}"]
|
|
45
|
+
depends_on: [lint, typecheck]
|
|
46
|
+
timeout_seconds: 600
|
|
47
|
+
full:
|
|
48
|
+
- name: lint
|
|
49
|
+
cmd: ["npx", "eslint", "."]
|
|
50
|
+
parallel_group: static_checks
|
|
51
|
+
timeout_seconds: 300
|
|
52
|
+
- name: typecheck
|
|
53
|
+
cmd: ["npx", "tsc", "--noEmit"]
|
|
54
|
+
parallel_group: static_checks
|
|
55
|
+
timeout_seconds: 300
|
|
56
|
+
- name: test
|
|
57
|
+
cmd: ["npx", "vitest", "run"]
|
|
58
|
+
depends_on: [lint, typecheck]
|
|
59
|
+
timeout_seconds: 1200
|
|
60
|
+
merge:
|
|
61
|
+
- name: merge_safety
|
|
62
|
+
cmd: ["npx", "vitest", "run"]
|
|
63
|
+
timeout_seconds: 1200
|
|
64
|
+
parsers:
|
|
65
|
+
coverage:
|
|
66
|
+
type: lcov
|
|
67
|
+
path: coverage/control-plane/lcov.info
|
|
68
|
+
thresholds:
|
|
69
|
+
coverage_line_min: 0.9
|
|
70
|
+
coverage_branch_min: 0.9
|
|
71
|
+
coverage_line_target: 1.0
|
|
72
|
+
coverage_branch_target: 1.0
|
|
26
73
|
capabilities:
|
|
27
74
|
- none
|
|
28
75
|
- lcov
|
|
@@ -78,11 +78,37 @@ merge_policy:
|
|
|
78
78
|
- rebase
|
|
79
79
|
worktree:
|
|
80
80
|
base_branch: main
|
|
81
|
+
# post_create: # optional - commands to run after worktree creation
|
|
82
|
+
# - "npm ci"
|
|
83
|
+
# symlinks: # optional - files to symlink from main repo into each worktree
|
|
84
|
+
# - .env
|
|
85
|
+
# - .claude
|
|
81
86
|
recovery:
|
|
82
87
|
orchestrator_session_reattach_timeout_ms: 5000
|
|
83
88
|
orphan_session_cleanup_enabled: true
|
|
84
89
|
supervisor:
|
|
85
90
|
max_iterations_per_phase: 6
|
|
91
|
+
max_parallel_gate_runs: 2
|
|
92
|
+
agent_idle_threshold_ms: 300000
|
|
93
|
+
cleanup:
|
|
94
|
+
auto_after_merge: false
|
|
95
|
+
grace_period_seconds: 3600
|
|
96
|
+
notifications:
|
|
97
|
+
enabled: false
|
|
98
|
+
channels:
|
|
99
|
+
desktop:
|
|
100
|
+
enabled: false
|
|
101
|
+
slack:
|
|
102
|
+
enabled: false
|
|
103
|
+
webhook: ""
|
|
104
|
+
channel: "#aop-alerts"
|
|
105
|
+
webhook:
|
|
106
|
+
enabled: false
|
|
107
|
+
url: ""
|
|
108
|
+
routing:
|
|
109
|
+
critical: [desktop, slack]
|
|
110
|
+
warning: [slack, desktop]
|
|
111
|
+
info: [slack]
|
|
86
112
|
rbac:
|
|
87
113
|
orchestrator:
|
|
88
114
|
- feature.discover_specs
|
|
@@ -113,6 +139,11 @@ rbac:
|
|
|
113
139
|
- report.feature_summary
|
|
114
140
|
- feature.ready_to_merge
|
|
115
141
|
- feature.delete
|
|
142
|
+
- feature.send_message
|
|
143
|
+
- cost.record
|
|
144
|
+
- cost.get
|
|
145
|
+
- performance.record_outcome
|
|
146
|
+
- performance.get_analytics
|
|
116
147
|
planner:
|
|
117
148
|
- feature.get_context
|
|
118
149
|
- feature.state_get
|
|
@@ -121,6 +152,7 @@ rbac:
|
|
|
121
152
|
- collisions.scan
|
|
122
153
|
- repo.read_file
|
|
123
154
|
- repo.search
|
|
155
|
+
- performance.get_analytics
|
|
124
156
|
builder:
|
|
125
157
|
- feature.get_context
|
|
126
158
|
- feature.state_get
|
|
@@ -130,6 +162,7 @@ rbac:
|
|
|
130
162
|
- repo.read_file
|
|
131
163
|
- repo.search
|
|
132
164
|
- gates.run
|
|
165
|
+
- performance.get_analytics
|
|
133
166
|
qa:
|
|
134
167
|
- feature.get_context
|
|
135
168
|
- feature.state_get
|
|
@@ -141,5 +174,61 @@ rbac:
|
|
|
141
174
|
- evidence.latest
|
|
142
175
|
- qa.test_index_get
|
|
143
176
|
- qa.test_index_update
|
|
177
|
+
- performance.get_analytics
|
|
144
178
|
system:
|
|
145
179
|
- "*"
|
|
180
|
+
|
|
181
|
+
dashboard:
|
|
182
|
+
enabled: true
|
|
183
|
+
port: 3000
|
|
184
|
+
reactions:
|
|
185
|
+
gate_failed:
|
|
186
|
+
enabled: true
|
|
187
|
+
max_retries: 2
|
|
188
|
+
action: retry_with_agent_repair
|
|
189
|
+
escalate_after: 2
|
|
190
|
+
retry_delay_ms: 30000
|
|
191
|
+
agent_stuck:
|
|
192
|
+
enabled: true
|
|
193
|
+
action: notify_only
|
|
194
|
+
idle_threshold_ms: 300000
|
|
195
|
+
escalate_after: 2
|
|
196
|
+
collision_detected:
|
|
197
|
+
enabled: true
|
|
198
|
+
action: notify_only
|
|
199
|
+
ready_to_merge:
|
|
200
|
+
enabled: true
|
|
201
|
+
action: notify_only
|
|
202
|
+
changes_requested:
|
|
203
|
+
enabled: false
|
|
204
|
+
action: send_review_context_to_agent
|
|
205
|
+
escalate_after: 2
|
|
206
|
+
|
|
207
|
+
budget:
|
|
208
|
+
per_feature_limit_usd: 50.00
|
|
209
|
+
alert_threshold: 0.8
|
|
210
|
+
|
|
211
|
+
issue_tracker:
|
|
212
|
+
enabled: false
|
|
213
|
+
type: github
|
|
214
|
+
config:
|
|
215
|
+
repo: ""
|
|
216
|
+
# linear example:
|
|
217
|
+
# enabled: true
|
|
218
|
+
# type: linear
|
|
219
|
+
# config:
|
|
220
|
+
# token: "${LINEAR_API_TOKEN}"
|
|
221
|
+
# base_url: "https://api.linear.app/graphql"
|
|
222
|
+
# state_id_backlog: ""
|
|
223
|
+
# state_id_in_progress: ""
|
|
224
|
+
# state_id_in_review: ""
|
|
225
|
+
# state_id_done: ""
|
|
226
|
+
# jira example:
|
|
227
|
+
# enabled: true
|
|
228
|
+
# type: jira
|
|
229
|
+
# config:
|
|
230
|
+
# base_url: "https://your-org.atlassian.net"
|
|
231
|
+
# email: "bot@example.com"
|
|
232
|
+
# token: "${JIRA_API_TOKEN}"
|
|
233
|
+
# transition_in_progress: "In Progress"
|
|
234
|
+
# transition_done: "Done"
|