agentic-orchestrator 0.1.25 → 0.1.26

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 (177) hide show
  1. package/agentic/orchestrator/defaults/policy.defaults.yaml +1 -0
  2. package/agentic/orchestrator/policy.yaml +1 -0
  3. package/agentic/orchestrator/schemas/policy.schema.json +4 -0
  4. package/agentic/orchestrator/schemas/policy.user.schema.json +4 -0
  5. package/apps/control-plane/src/application/services/activity-monitor-service.ts +42 -0
  6. package/apps/control-plane/src/application/services/collision-queue-service.ts +48 -0
  7. package/apps/control-plane/src/application/services/cost-tracking-service.ts +80 -0
  8. package/apps/control-plane/src/application/services/feature-deletion-service.ts +57 -0
  9. package/apps/control-plane/src/application/services/feature-lifecycle-service.ts +65 -0
  10. package/apps/control-plane/src/application/services/feature-state-service.ts +87 -0
  11. package/apps/control-plane/src/application/services/gate-selection-service.ts +28 -0
  12. package/apps/control-plane/src/application/services/gate-service.ts +148 -0
  13. package/apps/control-plane/src/application/services/issue-tracker-service.ts +28 -0
  14. package/apps/control-plane/src/application/services/lock-service.ts +88 -0
  15. package/apps/control-plane/src/application/services/merge-service.ts +63 -0
  16. package/apps/control-plane/src/application/services/notifier-service.ts +70 -0
  17. package/apps/control-plane/src/application/services/patch-service.ts +95 -0
  18. package/apps/control-plane/src/application/services/performance-analytics-service.ts +90 -0
  19. package/apps/control-plane/src/application/services/plan-service.ts +184 -0
  20. package/apps/control-plane/src/application/services/pr-monitor-service.ts +58 -0
  21. package/apps/control-plane/src/application/services/qa-index-service.ts +68 -0
  22. package/apps/control-plane/src/application/services/reactions-service.ts +77 -0
  23. package/apps/control-plane/src/application/services/reporting-service.ts +79 -0
  24. package/apps/control-plane/src/application/services/run-lease-service.ts +79 -0
  25. package/apps/control-plane/src/application/tools/tool-router.ts +76 -0
  26. package/apps/control-plane/src/mcp/tool-runtime.ts +4 -0
  27. package/apps/control-plane/src/providers/providers.ts +96 -0
  28. package/apps/control-plane/src/providers/worker-provider-factory.ts +4 -0
  29. package/apps/control-plane/src/supervisor/build-wave-executor.ts +4 -0
  30. package/apps/control-plane/src/supervisor/planning-wave-executor.ts +4 -0
  31. package/apps/control-plane/src/supervisor/qa-wave-executor.ts +4 -0
  32. package/apps/control-plane/src/supervisor/run-coordinator.ts +4 -0
  33. package/apps/control-plane/src/supervisor/runtime.ts +4 -0
  34. package/apps/control-plane/src/supervisor/session-orchestrator.ts +4 -0
  35. package/apps/control-plane/test/dashboard-api.integration.spec.ts +310 -1
  36. package/apps/control-plane/test/dashboard-client.spec.ts +136 -1
  37. package/apps/control-plane/test/dashboard-live-feed.spec.ts +153 -0
  38. package/apps/control-plane/test/dashboard-ui-utils.spec.ts +132 -0
  39. package/apps/control-plane/test/mcp.spec.ts +96 -0
  40. package/apps/control-plane/test/tool-runtime.spec.ts +68 -0
  41. package/config/agentic/orchestrator/policy.yaml +1 -0
  42. package/dist/apps/control-plane/application/services/activity-monitor-service.d.ts +42 -0
  43. package/dist/apps/control-plane/application/services/activity-monitor-service.js +42 -0
  44. package/dist/apps/control-plane/application/services/activity-monitor-service.js.map +1 -1
  45. package/dist/apps/control-plane/application/services/collision-queue-service.d.ts +48 -0
  46. package/dist/apps/control-plane/application/services/collision-queue-service.js +48 -0
  47. package/dist/apps/control-plane/application/services/collision-queue-service.js.map +1 -1
  48. package/dist/apps/control-plane/application/services/cost-tracking-service.d.ts +79 -0
  49. package/dist/apps/control-plane/application/services/cost-tracking-service.js +76 -0
  50. package/dist/apps/control-plane/application/services/cost-tracking-service.js.map +1 -1
  51. package/dist/apps/control-plane/application/services/feature-deletion-service.d.ts +57 -0
  52. package/dist/apps/control-plane/application/services/feature-deletion-service.js +57 -0
  53. package/dist/apps/control-plane/application/services/feature-deletion-service.js.map +1 -1
  54. package/dist/apps/control-plane/application/services/feature-lifecycle-service.d.ts +64 -0
  55. package/dist/apps/control-plane/application/services/feature-lifecycle-service.js +61 -0
  56. package/dist/apps/control-plane/application/services/feature-lifecycle-service.js.map +1 -1
  57. package/dist/apps/control-plane/application/services/feature-state-service.d.ts +86 -0
  58. package/dist/apps/control-plane/application/services/feature-state-service.js +83 -0
  59. package/dist/apps/control-plane/application/services/feature-state-service.js.map +1 -1
  60. package/dist/apps/control-plane/application/services/gate-selection-service.d.ts +28 -0
  61. package/dist/apps/control-plane/application/services/gate-selection-service.js +28 -0
  62. package/dist/apps/control-plane/application/services/gate-selection-service.js.map +1 -1
  63. package/dist/apps/control-plane/application/services/gate-service.d.ts +148 -0
  64. package/dist/apps/control-plane/application/services/gate-service.js +120 -0
  65. package/dist/apps/control-plane/application/services/gate-service.js.map +1 -1
  66. package/dist/apps/control-plane/application/services/issue-tracker-service.d.ts +28 -0
  67. package/dist/apps/control-plane/application/services/issue-tracker-service.js +28 -0
  68. package/dist/apps/control-plane/application/services/issue-tracker-service.js.map +1 -1
  69. package/dist/apps/control-plane/application/services/lock-service.d.ts +88 -0
  70. package/dist/apps/control-plane/application/services/lock-service.js +64 -0
  71. package/dist/apps/control-plane/application/services/lock-service.js.map +1 -1
  72. package/dist/apps/control-plane/application/services/merge-service.d.ts +62 -0
  73. package/dist/apps/control-plane/application/services/merge-service.js +59 -0
  74. package/dist/apps/control-plane/application/services/merge-service.js.map +1 -1
  75. package/dist/apps/control-plane/application/services/notifier-service.d.ts +70 -0
  76. package/dist/apps/control-plane/application/services/notifier-service.js +70 -0
  77. package/dist/apps/control-plane/application/services/notifier-service.js.map +1 -1
  78. package/dist/apps/control-plane/application/services/patch-service.d.ts +94 -0
  79. package/dist/apps/control-plane/application/services/patch-service.js +91 -0
  80. package/dist/apps/control-plane/application/services/patch-service.js.map +1 -1
  81. package/dist/apps/control-plane/application/services/performance-analytics-service.d.ts +89 -0
  82. package/dist/apps/control-plane/application/services/performance-analytics-service.js +86 -0
  83. package/dist/apps/control-plane/application/services/performance-analytics-service.js.map +1 -1
  84. package/dist/apps/control-plane/application/services/plan-service.d.ts +287 -0
  85. package/dist/apps/control-plane/application/services/plan-service.js +207 -0
  86. package/dist/apps/control-plane/application/services/plan-service.js.map +1 -1
  87. package/dist/apps/control-plane/application/services/pr-monitor-service.d.ts +58 -0
  88. package/dist/apps/control-plane/application/services/pr-monitor-service.js +58 -0
  89. package/dist/apps/control-plane/application/services/pr-monitor-service.js.map +1 -1
  90. package/dist/apps/control-plane/application/services/qa-index-service.d.ts +67 -0
  91. package/dist/apps/control-plane/application/services/qa-index-service.js +64 -0
  92. package/dist/apps/control-plane/application/services/qa-index-service.js.map +1 -1
  93. package/dist/apps/control-plane/application/services/reactions-service.d.ts +76 -0
  94. package/dist/apps/control-plane/application/services/reactions-service.js +73 -0
  95. package/dist/apps/control-plane/application/services/reactions-service.js.map +1 -1
  96. package/dist/apps/control-plane/application/services/reporting-service.d.ts +78 -0
  97. package/dist/apps/control-plane/application/services/reporting-service.js +75 -0
  98. package/dist/apps/control-plane/application/services/reporting-service.js.map +1 -1
  99. package/dist/apps/control-plane/application/services/run-lease-service.d.ts +79 -0
  100. package/dist/apps/control-plane/application/services/run-lease-service.js +79 -0
  101. package/dist/apps/control-plane/application/services/run-lease-service.js.map +1 -1
  102. package/dist/apps/control-plane/application/tools/tool-router.d.ts +76 -0
  103. package/dist/apps/control-plane/application/tools/tool-router.js +62 -0
  104. package/dist/apps/control-plane/application/tools/tool-router.js.map +1 -1
  105. package/dist/apps/control-plane/mcp/tool-runtime.d.ts +3 -0
  106. package/dist/apps/control-plane/mcp/tool-runtime.js +3 -0
  107. package/dist/apps/control-plane/mcp/tool-runtime.js.map +1 -1
  108. package/dist/apps/control-plane/providers/providers.d.ts +88 -0
  109. package/dist/apps/control-plane/providers/providers.js.map +1 -1
  110. package/dist/apps/control-plane/providers/worker-provider-factory.d.ts +3 -0
  111. package/dist/apps/control-plane/providers/worker-provider-factory.js.map +1 -1
  112. package/dist/apps/control-plane/supervisor/build-wave-executor.d.ts +3 -0
  113. package/dist/apps/control-plane/supervisor/build-wave-executor.js +3 -0
  114. package/dist/apps/control-plane/supervisor/build-wave-executor.js.map +1 -1
  115. package/dist/apps/control-plane/supervisor/planning-wave-executor.d.ts +3 -0
  116. package/dist/apps/control-plane/supervisor/planning-wave-executor.js +3 -0
  117. package/dist/apps/control-plane/supervisor/planning-wave-executor.js.map +1 -1
  118. package/dist/apps/control-plane/supervisor/qa-wave-executor.d.ts +3 -0
  119. package/dist/apps/control-plane/supervisor/qa-wave-executor.js +3 -0
  120. package/dist/apps/control-plane/supervisor/qa-wave-executor.js.map +1 -1
  121. package/dist/apps/control-plane/supervisor/run-coordinator.d.ts +3 -0
  122. package/dist/apps/control-plane/supervisor/run-coordinator.js +3 -0
  123. package/dist/apps/control-plane/supervisor/run-coordinator.js.map +1 -1
  124. package/dist/apps/control-plane/supervisor/runtime.d.ts +3 -0
  125. package/dist/apps/control-plane/supervisor/runtime.js +3 -0
  126. package/dist/apps/control-plane/supervisor/runtime.js.map +1 -1
  127. package/dist/apps/control-plane/supervisor/session-orchestrator.d.ts +3 -0
  128. package/dist/apps/control-plane/supervisor/session-orchestrator.js +3 -0
  129. package/dist/apps/control-plane/supervisor/session-orchestrator.js.map +1 -1
  130. package/package.json +1 -1
  131. package/packages/web-dashboard/src/app/analytics/page.tsx +451 -0
  132. package/packages/web-dashboard/src/app/api/analytics/route.ts +62 -0
  133. package/packages/web-dashboard/src/app/api/collisions/route.ts +63 -0
  134. package/packages/web-dashboard/src/app/api/features/[id]/cost/route.ts +29 -0
  135. package/packages/web-dashboard/src/app/api/features/[id]/review-brief/route.ts +31 -0
  136. package/packages/web-dashboard/src/app/api/features/[id]/route.ts +5 -8
  137. package/packages/web-dashboard/src/app/api/features/[id]/test-index/route.ts +31 -0
  138. package/packages/web-dashboard/src/app/api/flaky/route.ts +20 -0
  139. package/packages/web-dashboard/src/app/api/policy/budget/route.ts +31 -0
  140. package/packages/web-dashboard/src/app/api/run/route.ts +162 -0
  141. package/packages/web-dashboard/src/app/api/status/route.ts +2 -5
  142. package/packages/web-dashboard/src/app/feature/[id]/page.tsx +112 -0
  143. package/packages/web-dashboard/src/app/page.tsx +379 -77
  144. package/packages/web-dashboard/src/components/agent-pipeline-stepper.tsx +100 -0
  145. package/packages/web-dashboard/src/components/dependency-chains.tsx +58 -0
  146. package/packages/web-dashboard/src/components/detail-panel.tsx +215 -5
  147. package/packages/web-dashboard/src/components/feature-card.tsx +5 -0
  148. package/packages/web-dashboard/src/components/feature-cost-panel.tsx +66 -0
  149. package/packages/web-dashboard/src/components/feature-list-view.tsx +336 -0
  150. package/packages/web-dashboard/src/components/gate-step-drilldown.tsx +92 -0
  151. package/packages/web-dashboard/src/components/kanban-board.tsx +3 -0
  152. package/packages/web-dashboard/src/components/live-event-feed.tsx +60 -0
  153. package/packages/web-dashboard/src/components/lock-resource-map.tsx +73 -0
  154. package/packages/web-dashboard/src/components/plan-revision-timeline.tsx +55 -0
  155. package/packages/web-dashboard/src/components/plan-risk-annotations.tsx +63 -0
  156. package/packages/web-dashboard/src/components/plan-scope-tree.tsx +285 -0
  157. package/packages/web-dashboard/src/components/qa-coverage-map.tsx +174 -0
  158. package/packages/web-dashboard/src/components/quick-launch-panel.tsx +70 -0
  159. package/packages/web-dashboard/src/components/review-brief-panel.tsx +75 -0
  160. package/packages/web-dashboard/src/components/run-health-panel.tsx +85 -0
  161. package/packages/web-dashboard/src/components/summary-bar.tsx +59 -2
  162. package/packages/web-dashboard/src/components/verification-signals.tsx +167 -0
  163. package/packages/web-dashboard/src/lib/analytics-utils.ts +3 -0
  164. package/packages/web-dashboard/src/lib/aop-client.ts +510 -11
  165. package/packages/web-dashboard/src/lib/api-envelope.ts +48 -0
  166. package/packages/web-dashboard/src/lib/authz-adapter.ts +33 -0
  167. package/packages/web-dashboard/src/lib/dashboard-utils.ts +304 -0
  168. package/packages/web-dashboard/src/lib/live-feed.ts +218 -0
  169. package/packages/web-dashboard/src/lib/policy-reader.ts +22 -0
  170. package/packages/web-dashboard/src/lib/types.ts +114 -0
  171. package/packages/web-dashboard/src/styles/dashboard.module.css +341 -1
  172. package/spec-files/{outstanding → completed}/agentic_orchestrator_dashboard_advanced_ux_spec.md +1 -1
  173. package/spec-files/outstanding/agentic_orchestrator_evidence_integrity_doctor_spec.md +561 -0
  174. package/spec-files/outstanding/agentic_orchestrator_kernel_simplification_spec.md +834 -0
  175. package/spec-files/outstanding/agentic_orchestrator_observability_integrity_diagnostics_spec.md +12 -5
  176. package/spec-files/outstanding/agentic_orchestrator_observability_replay_spec.md +442 -0
  177. package/spec-files/progress.md +174 -1
@@ -20,6 +20,57 @@ function readHeldLocks(frontMatter) {
20
20
  const locks = readObjectField(frontMatter, 'locks');
21
21
  return asArray(locks.held).filter((item) => typeof item === 'string');
22
22
  }
23
+ /**
24
+ * Manages plan submission, validation, and collision detection.
25
+ *
26
+ * ## Responsibilities
27
+ * - Validate plan schema and policy compliance
28
+ * - Detect file/area/contract collisions with other features
29
+ * - Enforce lock requirements for protected resources
30
+ * - Manage plan versioning with optimistic concurrency
31
+ * - Select appropriate gate profiles based on plan intent
32
+ *
33
+ * ## Dependencies
34
+ * Depends on {@link PlanServicePort} for:
35
+ * - Policy and schema access
36
+ * - State and index operations
37
+ * - File locking primitives
38
+ *
39
+ * ## Key Methods
40
+ * - `planSubmit()` - submit initial plan with full validation
41
+ * - `planUpdate()` - submit versioned plan revision
42
+ * - `planGet()` - retrieve accepted plan
43
+ * - `checkPlanCollision()` - detect collisions with other features
44
+ * - `assertPlanLocksHeld()` - verify required locks are held
45
+ *
46
+ * ## Error Conditions
47
+ * - SCHEMA_VALIDATION_FAILED - plan fails JSON schema validation
48
+ * - PLAN_COLLISION - file/area/contract conflicts with another feature
49
+ * - LOCK_NOT_HELD - required resource locks not acquired
50
+ * - VERSION_CONFLICT - plan version mismatch (concurrent update)
51
+ * - DEPENDENCY_CYCLE - circular feature dependencies detected
52
+ *
53
+ * ## Thread Safety
54
+ * All mutations are protected by feature-level or index-level locks.
55
+ * Concurrent reads are safe. Concurrent writes are serialized.
56
+ *
57
+ * @example
58
+ * ```typescript
59
+ * const planService = new PlanService(port);
60
+ *
61
+ * // Submit initial plan
62
+ * await planService.planSubmit('my_feature', planData, null);
63
+ *
64
+ * // Update plan with version guard
65
+ * await planService.planUpdate('my_feature', updatedPlan, 1);
66
+ *
67
+ * // Check for collisions
68
+ * const result = await planService.checkPlanCollision('my_feature', planData);
69
+ * ```
70
+ *
71
+ * @see CollisionDetector - for collision detection algorithm
72
+ * @see GateSelectionService - for gate profile selection
73
+ */
23
74
  export class PlanService {
24
75
  port;
25
76
  gateSelectionService;
@@ -27,6 +78,19 @@ export class PlanService {
27
78
  this.port = port;
28
79
  this.gateSelectionService = new GateSelectionService(port);
29
80
  }
81
+ /**
82
+ * Retrieves the accepted plan for a feature.
83
+ *
84
+ * @param featureId - feature identifier
85
+ * @returns Plan data wrapped in success response
86
+ * @throws FILE_NOT_FOUND - plan file does not exist
87
+ *
88
+ * @example
89
+ * ```typescript
90
+ * const result = await planService.planGet('my_feature');
91
+ * console.log(result.data.plan);
92
+ * ```
93
+ */
30
94
  async planGet(featureId) {
31
95
  const plan = await readJson(this.port.planPath(featureId), null);
32
96
  return {
@@ -36,6 +100,20 @@ export class PlanService {
36
100
  },
37
101
  };
38
102
  }
103
+ /**
104
+ * Collects all accepted plans from discovered features.
105
+ *
106
+ * Used for collision detection and dependency analysis.
107
+ *
108
+ * @param excludeFeatureId - optional feature to exclude from collection
109
+ * @returns Array of plan objects
110
+ *
111
+ * @example
112
+ * ```typescript
113
+ * // Get all plans except current feature
114
+ * const plans = await planService.collectAcceptedPlans('my_feature');
115
+ * ```
116
+ */
39
117
  async collectAcceptedPlans(excludeFeatureId = null) {
40
118
  const specs = await this.port.featureDiscoverSpecs();
41
119
  const plans = [];
@@ -50,6 +128,20 @@ export class PlanService {
50
128
  }
51
129
  return plans;
52
130
  }
131
+ /**
132
+ * Determines required resource locks based on plan contracts.
133
+ *
134
+ * Maps contract modifications to resource identifiers per policy.
135
+ *
136
+ * @param plan - plan object with contracts section
137
+ * @returns Sorted array of required resource identifiers
138
+ *
139
+ * @example
140
+ * ```typescript
141
+ * const resources = planService.requiredResourcesForPlan(plan);
142
+ * // ['openapi', 'db_migrations']
143
+ * ```
144
+ */
53
145
  requiredResourcesForPlan(plan) {
54
146
  const resources = [];
55
147
  const policy = this.port.getPolicySnapshot();
@@ -64,6 +156,18 @@ export class PlanService {
64
156
  }
65
157
  return sortResourcesDeterministically(resources);
66
158
  }
159
+ /**
160
+ * Verifies that all required resource locks are held by the feature.
161
+ *
162
+ * @param featureId - feature identifier
163
+ * @param plan - plan object requiring locks
164
+ * @throws LOCK_NOT_HELD - required locks are not held
165
+ *
166
+ * @example
167
+ * ```typescript
168
+ * await planService.assertPlanLocksHeld('my_feature', plan);
169
+ * ```
170
+ */
67
171
  async assertPlanLocksHeld(featureId, plan) {
68
172
  const state = await this.port.readState(featureId);
69
173
  const held = new Set(readHeldLocks(state.frontMatter));
@@ -81,6 +185,20 @@ export class PlanService {
81
185
  };
82
186
  }
83
187
  }
188
+ /**
189
+ * Validates plan revision rules for versioning and optimistic concurrency.
190
+ *
191
+ * Enforces:
192
+ * - Initial plans must be version 1 without revision_of
193
+ * - Updates must increment version and reference previous version
194
+ * - Version guard must match current plan version
195
+ *
196
+ * @param existingPlan - current plan or null for initial submission
197
+ * @param plan - new plan to validate
198
+ * @param expectedPlanVersion - expected current version for concurrency guard
199
+ * @throws PLAN_VALIDATION_FAILED - revision rules violated
200
+ * @throws VERSION_CONFLICT - version mismatch (concurrent update)
201
+ */
84
202
  validatePlanRevisionRules(existingPlan, plan, expectedPlanVersion = null) {
85
203
  if (!existingPlan) {
86
204
  if (plan.plan_version !== 1 || plan.revision_of != null) {
@@ -112,6 +230,17 @@ export class PlanService {
112
230
  };
113
231
  }
114
232
  }
233
+ /**
234
+ * Validates plan against JSON schema.
235
+ *
236
+ * @param plan - plan object to validate
237
+ * @throws SCHEMA_VALIDATION_FAILED - plan does not conform to schema
238
+ *
239
+ * @example
240
+ * ```typescript
241
+ * await planService.validatePlanSchema(planData);
242
+ * ```
243
+ */
115
244
  async validatePlanSchema(plan) {
116
245
  const validation = await this.port.validateSchema('plan.schema.json', plan);
117
246
  if (!validation.valid) {
@@ -124,6 +253,24 @@ export class PlanService {
124
253
  };
125
254
  }
126
255
  }
256
+ /**
257
+ * Detects file, area, and contract collisions with other features.
258
+ *
259
+ * Compares plan against all accepted plans to find conflicts.
260
+ *
261
+ * @param featureId - feature identifier
262
+ * @param plan - plan to check for collisions
263
+ * @returns Collision matrix with conflicts by feature
264
+ * @throws PLAN_COLLISION - collisions detected (per policy)
265
+ *
266
+ * @example
267
+ * ```typescript
268
+ * const result = await planService.checkPlanCollision('my_feature', plan);
269
+ * if (result.data.has_collisions) {
270
+ * console.log(result.data.collisions);
271
+ * }
272
+ * ```
273
+ */
127
274
  async checkPlanCollision(featureId, plan) {
128
275
  const policy = this.port.getPolicySnapshot();
129
276
  const acceptedPlans = await this.collectAcceptedPlans(featureId);
@@ -175,6 +322,17 @@ export class PlanService {
175
322
  }),
176
323
  };
177
324
  }
325
+ /**
326
+ * Validates feature dependencies and detects circular references.
327
+ *
328
+ * @param featureId - feature to check (null checks all features)
329
+ * @throws DEPENDENCY_CYCLE - circular dependency detected
330
+ *
331
+ * @example
332
+ * ```typescript
333
+ * await planService.checkDependencies('my_feature');
334
+ * ```
335
+ */
178
336
  async checkDependencies(featureId) {
179
337
  if (!featureId) {
180
338
  return;
@@ -225,6 +383,33 @@ export class PlanService {
225
383
  };
226
384
  }
227
385
  }
386
+ /**
387
+ * Submits initial plan with full validation pipeline.
388
+ *
389
+ * Validation steps:
390
+ * 1. Schema validation
391
+ * 2. Revision rules check
392
+ * 3. Lock requirement verification
393
+ * 4. Collision detection
394
+ * 5. Dependency cycle check
395
+ * 6. Gate profile selection
396
+ *
397
+ * @param featureId - feature identifier
398
+ * @param plan - plan object to submit
399
+ * @param expectedVersion - expected state version for concurrency guard
400
+ * @returns Acceptance result with plan version
401
+ * @throws INVALID_ARGUMENT - missing or invalid plan
402
+ * @throws SCHEMA_VALIDATION_FAILED - plan schema invalid
403
+ * @throws LOCK_NOT_HELD - required locks not held
404
+ * @throws PLAN_COLLISION - collisions detected
405
+ * @throws DEPENDENCY_CYCLE - circular dependencies
406
+ *
407
+ * @example
408
+ * ```typescript
409
+ * const result = await planService.planSubmit('my_feature', planData, null);
410
+ * console.log(`Plan accepted: version ${result.data.plan_version}`);
411
+ * ```
412
+ */
228
413
  async planSubmit(featureId, plan, expectedVersion = null) {
229
414
  if (!plan || typeof plan !== 'object') {
230
415
  throw {
@@ -289,6 +474,28 @@ export class PlanService {
289
474
  },
290
475
  };
291
476
  }
477
+ /**
478
+ * Submits versioned plan revision with full revalidation.
479
+ *
480
+ * Requires plan_version to be current_version + 1 and revision_of
481
+ * to reference current version. Runs full validation pipeline.
482
+ *
483
+ * @param featureId - feature identifier
484
+ * @param plan - updated plan object
485
+ * @param expectedPlanVersion - expected current plan version
486
+ * @returns Acceptance result with new plan version
487
+ * @throws VERSION_CONFLICT - plan version mismatch
488
+ * @throws PLAN_VALIDATION_FAILED - revision rules violated
489
+ * @throws SCHEMA_VALIDATION_FAILED - plan schema invalid
490
+ * @throws LOCK_NOT_HELD - required locks not held
491
+ * @throws PLAN_COLLISION - collisions detected
492
+ *
493
+ * @example
494
+ * ```typescript
495
+ * // Update plan from version 1 to version 2
496
+ * const result = await planService.planUpdate('my_feature', updatedPlan, 1);
497
+ * ```
498
+ */
292
499
  async planUpdate(featureId, expectedPlanVersion, plan) {
293
500
  return await this.planSubmit(featureId, plan, expectedPlanVersion);
294
501
  }
@@ -1 +1 @@
1
- {"version":3,"file":"plan-service.js","sourceRoot":"","sources":["../../../../../apps/control-plane/src/application/services/plan-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plan-service.js","sourceRoot":"","sources":["../../../../../apps/control-plane/src/application/services/plan-service.ts"],"names":[],"mappings":"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"}
@@ -30,15 +30,73 @@ export interface PrMonitorServiceDependencies {
30
30
  };
31
31
  ghRunner?: GhRunner;
32
32
  }
33
+ /**
34
+ * Monitors pull request status and handles review feedback.
35
+ *
36
+ * ## Responsibilities
37
+ * - Detect PRs for feature branches
38
+ * - Monitor PR status and review decisions
39
+ * - Handle changes_requested events
40
+ * - Store PR metadata in feature state
41
+ *
42
+ * ## Dependencies
43
+ * - {@link SupervisorToolCaller} - for tool invocation
44
+ * - {@link NotifierService} - for PR notifications
45
+ * - GitHub CLI - for PR queries
46
+ *
47
+ * ## Key Methods
48
+ * - `detectPr()` - detect PR for feature branch
49
+ * - `checkAndUpdate()` - check PR status and update state
50
+ * - `handleChangesRequested()` - handle review feedback
51
+ * - `storePrState()` - persist PR metadata
52
+ *
53
+ * ## Error Conditions
54
+ * - PR detection failures are logged but don't block
55
+ *
56
+ * @example
57
+ * ```typescript
58
+ * const prMonitor = new PrMonitorService({ toolCaller, notifier });
59
+ * const pr = await prMonitor.detectPr('my_feature', 'my_feature');
60
+ * if (pr) {
61
+ * await prMonitor.checkAndUpdate('my_feature', 'my_feature');
62
+ * }
63
+ * ```
64
+ */
33
65
  export declare class PrMonitorService {
34
66
  private readonly toolCaller;
35
67
  private readonly notifier;
36
68
  private readonly reactionsPolicy;
37
69
  private readonly ghRunner;
38
70
  constructor(dependencies: PrMonitorServiceDependencies);
71
+ /**
72
+ * Detects PR for feature branch.
73
+ *
74
+ * @param featureId - feature identifier
75
+ * @param branch - branch name
76
+ * @returns PR info or null if not found
77
+ */
39
78
  detectPr(featureId: string, branch: string): Promise<PrInfo | null>;
79
+ /**
80
+ * Stores PR metadata in feature state.
81
+ *
82
+ * @param featureId - feature identifier
83
+ * @param prInfo - PR information
84
+ */
40
85
  storePrState(featureId: string, prInfo: PrInfo): Promise<void>;
41
86
  computeMergeScore(prInfo: PrInfo): number;
87
+ /**
88
+ * Handles changes_requested review decision.
89
+ *
90
+ * @param featureId - feature identifier
91
+ * @param prInfo - PR information with review decision
92
+ */
42
93
  handleChangesRequested(featureId: string, prInfo: PrInfo): Promise<void>;
94
+ /**
95
+ * Checks PR status and updates feature state.
96
+ *
97
+ * @param featureId - feature identifier
98
+ * @param branch - branch name
99
+ * @returns Updated PR info or null
100
+ */
43
101
  checkAndUpdate(featureId: string, branch: string): Promise<PrInfo | null>;
44
102
  }
@@ -49,6 +49,38 @@ function mapReviewDecision(decision) {
49
49
  return 'none';
50
50
  }
51
51
  }
52
+ /**
53
+ * Monitors pull request status and handles review feedback.
54
+ *
55
+ * ## Responsibilities
56
+ * - Detect PRs for feature branches
57
+ * - Monitor PR status and review decisions
58
+ * - Handle changes_requested events
59
+ * - Store PR metadata in feature state
60
+ *
61
+ * ## Dependencies
62
+ * - {@link SupervisorToolCaller} - for tool invocation
63
+ * - {@link NotifierService} - for PR notifications
64
+ * - GitHub CLI - for PR queries
65
+ *
66
+ * ## Key Methods
67
+ * - `detectPr()` - detect PR for feature branch
68
+ * - `checkAndUpdate()` - check PR status and update state
69
+ * - `handleChangesRequested()` - handle review feedback
70
+ * - `storePrState()` - persist PR metadata
71
+ *
72
+ * ## Error Conditions
73
+ * - PR detection failures are logged but don't block
74
+ *
75
+ * @example
76
+ * ```typescript
77
+ * const prMonitor = new PrMonitorService({ toolCaller, notifier });
78
+ * const pr = await prMonitor.detectPr('my_feature', 'my_feature');
79
+ * if (pr) {
80
+ * await prMonitor.checkAndUpdate('my_feature', 'my_feature');
81
+ * }
82
+ * ```
83
+ */
52
84
  export class PrMonitorService {
53
85
  toolCaller;
54
86
  notifier;
@@ -60,6 +92,13 @@ export class PrMonitorService {
60
92
  this.reactionsPolicy = dependencies.reactionsPolicy;
61
93
  this.ghRunner = dependencies.ghRunner ?? createGhRunner();
62
94
  }
95
+ /**
96
+ * Detects PR for feature branch.
97
+ *
98
+ * @param featureId - feature identifier
99
+ * @param branch - branch name
100
+ * @returns PR info or null if not found
101
+ */
63
102
  async detectPr(featureId, branch) {
64
103
  const candidates = [
65
104
  ...new Set([branch, featureId, `feature/${featureId}`].map((value) => value.trim()).filter(Boolean)),
@@ -108,6 +147,12 @@ export class PrMonitorService {
108
147
  const merge_score = this.computeMergeScore({ ...partial, merge_score: 0 });
109
148
  return { ...partial, merge_score };
110
149
  }
150
+ /**
151
+ * Stores PR metadata in feature state.
152
+ *
153
+ * @param featureId - feature identifier
154
+ * @param prInfo - PR information
155
+ */
111
156
  async storePrState(featureId, prInfo) {
112
157
  const current = await this.toolCaller.callTool('orchestrator', TOOLS.FEATURE_STATE_GET, { feature_id: featureId });
113
158
  await this.toolCaller.callTool('orchestrator', TOOLS.FEATURE_STATE_PATCH, {
@@ -145,6 +190,12 @@ export class PrMonitorService {
145
190
  }
146
191
  return score;
147
192
  }
193
+ /**
194
+ * Handles changes_requested review decision.
195
+ *
196
+ * @param featureId - feature identifier
197
+ * @param prInfo - PR information with review decision
198
+ */
148
199
  async handleChangesRequested(featureId, prInfo) {
149
200
  const reaction = this.reactionsPolicy?.changes_requested;
150
201
  if (!reaction?.enabled) {
@@ -189,6 +240,13 @@ export class PrMonitorService {
189
240
  });
190
241
  }
191
242
  }
243
+ /**
244
+ * Checks PR status and updates feature state.
245
+ *
246
+ * @param featureId - feature identifier
247
+ * @param branch - branch name
248
+ * @returns Updated PR info or null
249
+ */
192
250
  async checkAndUpdate(featureId, branch) {
193
251
  const prInfo = await this.detectPr(featureId, branch);
194
252
  if (!prInfo) {
@@ -1 +1 @@
1
- {"version":3,"file":"pr-monitor-service.js","sourceRoot":"","sources":["../../../../../apps/control-plane/src/application/services/pr-monitor-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pr-monitor-service.js","sourceRoot":"","sources":["../../../../../apps/control-plane/src/application/services/pr-monitor-service.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,7 @@
1
1
  type AnyRecord = Record<string, any>;
2
+ /**
3
+ * @fileoverview QA test obligation tracking service.
4
+ */
2
5
  export interface QaIndexServicePort {
3
6
  qaIndexPath(featureId: string): string;
4
7
  validateSchema(schemaName: string, value: unknown): Promise<{
@@ -6,9 +9,56 @@ export interface QaIndexServicePort {
6
9
  errors?: unknown;
7
10
  }>;
8
11
  }
12
+ /**
13
+ * Manages QA test obligation tracking.
14
+ *
15
+ * ## Responsibilities
16
+ * - Create qa_test_index.json from diff hunks
17
+ * - Track test status per hunk (pending/covered/skipped)
18
+ * - Link evidence to test obligations
19
+ * - Validate all obligations are resolved
20
+ *
21
+ * ## Dependencies
22
+ * Depends on {@link QaIndexServicePort} for:
23
+ * - QA index file path resolution
24
+ * - Schema validation
25
+ *
26
+ * ## Key Methods
27
+ * - `qaTestIndexGet()` - retrieve test index
28
+ * - `qaTestIndexUpdate()` - update hunk statuses with evidence
29
+ *
30
+ * ## Error Conditions
31
+ * - FILE_NOT_FOUND - index file does not exist
32
+ * - VERSION_CONFLICT - concurrent index update
33
+ * - SCHEMA_VALIDATION_FAILED - invalid index structure
34
+ *
35
+ * @example
36
+ * ```typescript
37
+ * const qaService = new QaIndexService(port);
38
+ * const index = await qaService.qaTestIndexGet('my_feature');
39
+ * await qaService.qaTestIndexUpdate('my_feature', updates, 1);
40
+ * ```
41
+ *
42
+ * ## Index Format
43
+ * Each hunk has: path, line range, required tests, status, evidence refs
44
+ */
9
45
  export declare class QaIndexService {
10
46
  private readonly port;
11
47
  constructor(port: QaIndexServicePort);
48
+ /**
49
+ * Retrieves QA test index for a feature.
50
+ *
51
+ * @param featureId - feature identifier
52
+ * @returns Test index with hunk obligations and pending summary
53
+ * @throws FILE_NOT_FOUND - index does not exist
54
+ *
55
+ * @example
56
+ * ```typescript
57
+ * const index = await qaService.qaTestIndexGet('my_feature');
58
+ * console.log(index.data.items);
59
+ * console.log(index.data.pending_obligations);
60
+ * ```
61
+ */
12
62
  qaTestIndexGet(featureId: string): Promise<{
13
63
  data: {
14
64
  index: AnyRecord;
@@ -16,6 +66,23 @@ export declare class QaIndexService {
16
66
  pending_required_tests: AnyRecord;
17
67
  };
18
68
  }>;
69
+ /**
70
+ * Updates hunk statuses with evidence references and version guard.
71
+ *
72
+ * @param featureId - feature identifier
73
+ * @param updates - hunk status updates with evidence refs
74
+ * @param expectedVersion - expected index version
75
+ * @returns Updated index
76
+ * @throws VERSION_CONFLICT - version mismatch
77
+ * @throws SCHEMA_VALIDATION_FAILED - invalid updates
78
+ *
79
+ * @example
80
+ * ```typescript
81
+ * await qaService.qaTestIndexUpdate('my_feature', {
82
+ * items: [{ path: 'file.ts', status: 'covered', evidence_refs: ['gate_123'] }]
83
+ * }, 1);
84
+ * ```
85
+ */
19
86
  qaTestIndexUpdate(featureId: string, expectedVersion: number | null, updates: unknown, evidenceRefs: unknown[]): Promise<{
20
87
  data: {
21
88
  feature_id: string;