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
@@ -1,3 +1,6 @@
1
+ /**
2
+ * @fileoverview Cost tracking and budget enforcement service.
3
+ */
1
4
  export interface FeatureCost {
2
5
  feature_id: string;
3
6
  tokens_used: number;
@@ -19,10 +22,86 @@ export interface CostTrackingServicePort {
19
22
  featureCostPath(featureId: string): string;
20
23
  getPolicySnapshot(): Record<string, unknown>;
21
24
  }
25
+ /**
26
+ * Manages cost tracking and budget enforcement.
27
+ *
28
+ * ## Responsibilities
29
+ * - Record token usage and API costs per feature
30
+ * - Enforce per_feature_limit_usd budget
31
+ * - Aggregate costs by provider/model
32
+ * - Pause features exceeding budget
33
+ *
34
+ * ## Dependencies
35
+ * Depends on {@link CostTrackingServicePort} for:
36
+ * - Cost file path resolution
37
+ * - Policy budget configuration
38
+ *
39
+ * ## Key Methods
40
+ * - `recordCost()` - record cost entry
41
+ * - `getFeatureCost()` - retrieve accumulated costs
42
+ * - `checkBudget()` - enforce budget threshold
43
+ *
44
+ * ## Error Conditions
45
+ * - BUDGET_EXCEEDED - feature cost exceeds policy limit
46
+ * - FILE_NOT_FOUND - cost file does not exist
47
+ *
48
+ * @example
49
+ * ```typescript
50
+ * const costService = new CostTrackingService(port);
51
+ * await costService.recordCost('my_feature', { tokens: 1000, cost_usd: 0.02 });
52
+ * const costs = await costService.getFeatureCost('my_feature');
53
+ * ```
54
+ *
55
+ * ## Cost Format
56
+ * cost.json: { entries: [{ timestamp, tokens, cost_usd, provider, model }], total_usd }
57
+ */
22
58
  export declare class CostTrackingService {
23
59
  private readonly port;
24
60
  constructor(port: CostTrackingServicePort);
61
+ /**
62
+ * Retrieves accumulated costs for a feature.
63
+ *
64
+ * @param featureId - feature identifier
65
+ * @returns Cost summary with entries and total
66
+ *
67
+ * @example
68
+ * ```typescript
69
+ * const costs = await costService.getFeatureCost('my_feature');
70
+ * console.log(costs.total_cost_usd);
71
+ * ```
72
+ */
25
73
  getFeatureCost(featureId: string): Promise<FeatureCost>;
74
+ /**
75
+ * Records a cost entry for a feature.
76
+ *
77
+ * @param featureId - feature identifier
78
+ * @param entry - cost entry with tokens, USD amount, provider, model
79
+ * @returns Success response
80
+ *
81
+ * @example
82
+ * ```typescript
83
+ * await costService.recordCost('my_feature', {
84
+ * tokens: 1000,
85
+ * cost_usd: 0.02,
86
+ * provider: 'claude',
87
+ * model: 'claude-3-5-sonnet-20241022'
88
+ * });
89
+ * ```
90
+ */
26
91
  recordCost(featureId: string, tokensDelta: number, costUsdDelta: number): Promise<FeatureCost>;
92
+ /**
93
+ * Checks if feature is within budget limits.
94
+ *
95
+ * @param featureId - feature identifier
96
+ * @returns Budget check result with over_budget and alert flags
97
+ *
98
+ * @example
99
+ * ```typescript
100
+ * const check = await costService.checkBudget('my_feature');
101
+ * if (check.over_budget) {
102
+ * console.log('Budget exceeded!');
103
+ * }
104
+ * ```
105
+ */
27
106
  checkBudget(featureId: string): Promise<BudgetCheckResult>;
28
107
  }
@@ -1,9 +1,54 @@
1
1
  import { atomicWriteJson, nowIso, readJson } from '../../core/fs.js';
2
+ /**
3
+ * Manages cost tracking and budget enforcement.
4
+ *
5
+ * ## Responsibilities
6
+ * - Record token usage and API costs per feature
7
+ * - Enforce per_feature_limit_usd budget
8
+ * - Aggregate costs by provider/model
9
+ * - Pause features exceeding budget
10
+ *
11
+ * ## Dependencies
12
+ * Depends on {@link CostTrackingServicePort} for:
13
+ * - Cost file path resolution
14
+ * - Policy budget configuration
15
+ *
16
+ * ## Key Methods
17
+ * - `recordCost()` - record cost entry
18
+ * - `getFeatureCost()` - retrieve accumulated costs
19
+ * - `checkBudget()` - enforce budget threshold
20
+ *
21
+ * ## Error Conditions
22
+ * - BUDGET_EXCEEDED - feature cost exceeds policy limit
23
+ * - FILE_NOT_FOUND - cost file does not exist
24
+ *
25
+ * @example
26
+ * ```typescript
27
+ * const costService = new CostTrackingService(port);
28
+ * await costService.recordCost('my_feature', { tokens: 1000, cost_usd: 0.02 });
29
+ * const costs = await costService.getFeatureCost('my_feature');
30
+ * ```
31
+ *
32
+ * ## Cost Format
33
+ * cost.json: { entries: [{ timestamp, tokens, cost_usd, provider, model }], total_usd }
34
+ */
2
35
  export class CostTrackingService {
3
36
  port;
4
37
  constructor(port) {
5
38
  this.port = port;
6
39
  }
40
+ /**
41
+ * Retrieves accumulated costs for a feature.
42
+ *
43
+ * @param featureId - feature identifier
44
+ * @returns Cost summary with entries and total
45
+ *
46
+ * @example
47
+ * ```typescript
48
+ * const costs = await costService.getFeatureCost('my_feature');
49
+ * console.log(costs.total_cost_usd);
50
+ * ```
51
+ */
7
52
  async getFeatureCost(featureId) {
8
53
  const existing = await readJson(this.port.featureCostPath(featureId), null);
9
54
  return (existing ?? {
@@ -13,6 +58,23 @@ export class CostTrackingService {
13
58
  last_updated: nowIso(),
14
59
  });
15
60
  }
61
+ /**
62
+ * Records a cost entry for a feature.
63
+ *
64
+ * @param featureId - feature identifier
65
+ * @param entry - cost entry with tokens, USD amount, provider, model
66
+ * @returns Success response
67
+ *
68
+ * @example
69
+ * ```typescript
70
+ * await costService.recordCost('my_feature', {
71
+ * tokens: 1000,
72
+ * cost_usd: 0.02,
73
+ * provider: 'claude',
74
+ * model: 'claude-3-5-sonnet-20241022'
75
+ * });
76
+ * ```
77
+ */
16
78
  async recordCost(featureId, tokensDelta, costUsdDelta) {
17
79
  const current = await this.getFeatureCost(featureId);
18
80
  const updated = {
@@ -24,6 +86,20 @@ export class CostTrackingService {
24
86
  await atomicWriteJson(this.port.featureCostPath(featureId), updated);
25
87
  return updated;
26
88
  }
89
+ /**
90
+ * Checks if feature is within budget limits.
91
+ *
92
+ * @param featureId - feature identifier
93
+ * @returns Budget check result with over_budget and alert flags
94
+ *
95
+ * @example
96
+ * ```typescript
97
+ * const check = await costService.checkBudget('my_feature');
98
+ * if (check.over_budget) {
99
+ * console.log('Budget exceeded!');
100
+ * }
101
+ * ```
102
+ */
27
103
  async checkBudget(featureId) {
28
104
  const policy = this.port.getPolicySnapshot();
29
105
  const budgetPolicy = (policy.budget && typeof policy.budget === 'object' ? policy.budget : {});
@@ -1 +1 @@
1
- {"version":3,"file":"cost-tracking-service.js","sourceRoot":"","sources":["../../../../../apps/control-plane/src/application/services/cost-tracking-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AA2BrE,MAAM,OAAO,mBAAmB;IACb,IAAI,CAA0B;IAE/C,YAAY,IAA6B;QACvC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,SAAiB;QACpC,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAc,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC;QACzF,OAAO,CACL,QAAQ,IAAI;YACV,UAAU,EAAE,SAAS;YACrB,WAAW,EAAE,CAAC;YACd,kBAAkB,EAAE,GAAG;YACvB,YAAY,EAAE,MAAM,EAAE;SACvB,CACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAU,CACd,SAAiB,EACjB,WAAmB,EACnB,YAAoB;QAEpB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACrD,MAAM,OAAO,GAAgB;YAC3B,UAAU,EAAE,SAAS;YACrB,WAAW,EAAE,OAAO,CAAC,WAAW,GAAG,WAAW;YAC9C,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,GAAG,YAAY;YAC7D,YAAY,EAAE,MAAM,EAAE;SACvB,CAAC;QACF,MAAM,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC;QACrE,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,SAAiB;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC7C,MAAM,YAAY,GAAG,CACnB,MAAM,CAAC,MAAM,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACxD,CAAC;QAElB,MAAM,QAAQ,GACZ,OAAO,YAAY,CAAC,qBAAqB,KAAK,QAAQ;YACpD,CAAC,CAAC,YAAY,CAAC,qBAAqB;YACpC,CAAC,CAAC,QAAQ,CAAC;QACf,MAAM,cAAc,GAClB,OAAO,YAAY,CAAC,eAAe,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC;QAExF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QAClD,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,kBAAkB,IAAI,QAAQ,CAAC;QACpF,MAAM,qBAAqB,GACzB,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,kBAAkB,IAAI,QAAQ,GAAG,cAAc,CAAC;QAEpF,OAAO;YACL,WAAW,EAAE,UAAU;YACvB,uBAAuB,EAAE,qBAAqB;YAC9C,gBAAgB,EAAE,IAAI,CAAC,kBAAkB;YACzC,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YACpD,eAAe,EAAE,cAAc;SAChC,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"cost-tracking-service.js","sourceRoot":"","sources":["../../../../../apps/control-plane/src/application/services/cost-tracking-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AA+BrE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,OAAO,mBAAmB;IACb,IAAI,CAA0B;IAE/C,YAAY,IAA6B;QACvC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,cAAc,CAAC,SAAiB;QACpC,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAc,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC;QACzF,OAAO,CACL,QAAQ,IAAI;YACV,UAAU,EAAE,SAAS;YACrB,WAAW,EAAE,CAAC;YACd,kBAAkB,EAAE,GAAG;YACvB,YAAY,EAAE,MAAM,EAAE;SACvB,CACF,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,KAAK,CAAC,UAAU,CACd,SAAiB,EACjB,WAAmB,EACnB,YAAoB;QAEpB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACrD,MAAM,OAAO,GAAgB;YAC3B,UAAU,EAAE,SAAS;YACrB,WAAW,EAAE,OAAO,CAAC,WAAW,GAAG,WAAW;YAC9C,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,GAAG,YAAY;YAC7D,YAAY,EAAE,MAAM,EAAE;SACvB,CAAC;QACF,MAAM,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC;QACrE,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,WAAW,CAAC,SAAiB;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC7C,MAAM,YAAY,GAAG,CACnB,MAAM,CAAC,MAAM,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACxD,CAAC;QAElB,MAAM,QAAQ,GACZ,OAAO,YAAY,CAAC,qBAAqB,KAAK,QAAQ;YACpD,CAAC,CAAC,YAAY,CAAC,qBAAqB;YACpC,CAAC,CAAC,QAAQ,CAAC;QACf,MAAM,cAAc,GAClB,OAAO,YAAY,CAAC,eAAe,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC;QAExF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QAClD,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,kBAAkB,IAAI,QAAQ,CAAC;QACpF,MAAM,qBAAqB,GACzB,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,kBAAkB,IAAI,QAAQ,GAAG,cAAc,CAAC;QAEpF,OAAO;YACL,WAAW,EAAE,UAAU;YACvB,uBAAuB,EAAE,qBAAqB;YAC9C,gBAAgB,EAAE,IAAI,CAAC,kBAAkB;YACzC,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YACpD,eAAe,EAAE,cAAc;SAChC,CAAC;IACJ,CAAC;CACF"}
@@ -70,9 +70,66 @@ export interface FeatureDeletionServicePort {
70
70
  isRunLeaseFresh(runtimeSessions: RuntimeSessionsSnapshot): boolean;
71
71
  locksRelease(resource: string, featureId: string): Promise<unknown>;
72
72
  }
73
+ /**
74
+ * Manages feature deletion and cleanup.
75
+ *
76
+ * ## Responsibilities
77
+ * - Delete feature artifacts (state, plan, logs, evidence)
78
+ * - Remove worktree and branch (optional)
79
+ * - Clean up index references
80
+ * - Release held locks
81
+ * - Remove runtime session assignments
82
+ *
83
+ * ## Dependencies
84
+ * Depends on {@link FeatureDeletionServicePort} for:
85
+ * - File operations
86
+ * - Git operations
87
+ * - Index and run-lease updates
88
+ * - Lock release
89
+ *
90
+ * ## Key Methods
91
+ * - `featureDelete()` - delete feature with configurable cleanup
92
+ *
93
+ * ## Error Conditions
94
+ * - FILE_NOT_FOUND - feature does not exist
95
+ * - RUN_ALREADY_ACTIVE - cannot delete during active run
96
+ * - GIT_ERROR - worktree/branch removal failed
97
+ *
98
+ * @example
99
+ * ```typescript
100
+ * const deletionService = new FeatureDeletionService(port);
101
+ * await deletionService.featureDelete('my_feature', {
102
+ * dry_run: false,
103
+ * remove_worktree: true,
104
+ * remove_branch: 'safe'
105
+ * });
106
+ * ```
107
+ */
73
108
  export declare class FeatureDeletionService {
74
109
  private readonly port;
75
110
  constructor(port: FeatureDeletionServicePort);
111
+ /**
112
+ * Deletes feature artifacts with configurable cleanup options.
113
+ *
114
+ * @param featureId - feature identifier
115
+ * @param options - deletion options (dry_run, remove_worktree, remove_branch)
116
+ * @returns Deletion result with cleanup summary
117
+ * @throws FILE_NOT_FOUND - feature does not exist
118
+ * @throws RUN_ALREADY_ACTIVE - cannot delete during active run
119
+ *
120
+ * @example
121
+ * ```typescript
122
+ * // Preview deletion
123
+ * await deletionService.featureDelete('my_feature', { dry_run: true });
124
+ *
125
+ * // Execute deletion with worktree cleanup
126
+ * await deletionService.featureDelete('my_feature', {
127
+ * dry_run: false,
128
+ * remove_worktree: true,
129
+ * remove_branch: 'safe'
130
+ * });
131
+ * ```
132
+ */
76
133
  featureDelete(featureId: string | null, options?: DeleteOptions): Promise<FeatureDeleteResult>;
77
134
  private hasFreshRunLease;
78
135
  private loadStateFrontMatter;
@@ -65,11 +65,68 @@ function normalizeFeatureSessions(runtimeSessions) {
65
65
  ? runtimeSessions.feature_sessions
66
66
  : {};
67
67
  }
68
+ /**
69
+ * Manages feature deletion and cleanup.
70
+ *
71
+ * ## Responsibilities
72
+ * - Delete feature artifacts (state, plan, logs, evidence)
73
+ * - Remove worktree and branch (optional)
74
+ * - Clean up index references
75
+ * - Release held locks
76
+ * - Remove runtime session assignments
77
+ *
78
+ * ## Dependencies
79
+ * Depends on {@link FeatureDeletionServicePort} for:
80
+ * - File operations
81
+ * - Git operations
82
+ * - Index and run-lease updates
83
+ * - Lock release
84
+ *
85
+ * ## Key Methods
86
+ * - `featureDelete()` - delete feature with configurable cleanup
87
+ *
88
+ * ## Error Conditions
89
+ * - FILE_NOT_FOUND - feature does not exist
90
+ * - RUN_ALREADY_ACTIVE - cannot delete during active run
91
+ * - GIT_ERROR - worktree/branch removal failed
92
+ *
93
+ * @example
94
+ * ```typescript
95
+ * const deletionService = new FeatureDeletionService(port);
96
+ * await deletionService.featureDelete('my_feature', {
97
+ * dry_run: false,
98
+ * remove_worktree: true,
99
+ * remove_branch: 'safe'
100
+ * });
101
+ * ```
102
+ */
68
103
  export class FeatureDeletionService {
69
104
  port;
70
105
  constructor(port) {
71
106
  this.port = port;
72
107
  }
108
+ /**
109
+ * Deletes feature artifacts with configurable cleanup options.
110
+ *
111
+ * @param featureId - feature identifier
112
+ * @param options - deletion options (dry_run, remove_worktree, remove_branch)
113
+ * @returns Deletion result with cleanup summary
114
+ * @throws FILE_NOT_FOUND - feature does not exist
115
+ * @throws RUN_ALREADY_ACTIVE - cannot delete during active run
116
+ *
117
+ * @example
118
+ * ```typescript
119
+ * // Preview deletion
120
+ * await deletionService.featureDelete('my_feature', { dry_run: true });
121
+ *
122
+ * // Execute deletion with worktree cleanup
123
+ * await deletionService.featureDelete('my_feature', {
124
+ * dry_run: false,
125
+ * remove_worktree: true,
126
+ * remove_branch: 'safe'
127
+ * });
128
+ * ```
129
+ */
73
130
  async featureDelete(featureId, options = {}) {
74
131
  if (!featureId) {
75
132
  throw {
@@ -1 +1 @@
1
- {"version":3,"file":"feature-deletion-service.js","sourceRoot":"","sources":["../../../../../apps/control-plane/src/application/services/feature-deletion-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AA6D9C,SAAS,YAAY,CAAC,KAAe;IACnC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAE,KAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;AACxE,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,WAAW,CAAC,KAAa;IAChC,OAAO,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,cAAc,CAAC,KAAgC;IACtD,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxC,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;QAC9D,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,sBAAsB,CAAC,WAAsB;IACpD,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAC1C,OAAO,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AACjD,CAAC;AAED,SAAS,0BAA0B,CAAC,KAAgB,EAAE,SAAiB;IACrE,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACpC,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAE/C,KAAK,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACvD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3D,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,WAAW,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACrC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,gBAAgB;IACvB,OAAO;QACL,mBAAmB,EAAE,KAAK;QAC1B,gBAAgB,EAAE,KAAK;QACvB,cAAc,EAAE,KAAK;QACrB,aAAa,EAAE,KAAK;QACpB,cAAc,EAAE,EAAE;QAClB,6BAA6B,EAAE,CAAC;QAChC,kCAAkC,EAAE,KAAK;KAC1C,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAC/B,eAAwC;IAExC,OAAO,eAAe,CAAC,gBAAgB,IAAI,OAAO,eAAe,CAAC,gBAAgB,KAAK,QAAQ;QAC7F,CAAC,CAAE,eAAe,CAAC,gBAAuD;QAC1E,CAAC,CAAC,EAAE,CAAC;AACT,CAAC;AAkBD,MAAM,OAAO,sBAAsB;IAChB,IAAI,CAA6B;IAElD,YAAY,IAAgC;QAC1C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,SAAwB,EACxB,UAAyB,EAAE;QAE3B,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM;gBACJ,kBAAkB,EAAE,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,wBAAwB,EAAE;oBAC/E,SAAS,EAAE,KAAK;oBAChB,cAAc,EAAE,IAAI;iBACrB,CAAC;aACH,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;YAC5B,MAAM;gBACJ,kBAAkB,EAAE,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,8BAA8B,EAAE;oBACrF,UAAU,EAAE,SAAS;oBACrB,gBAAgB,EAAE,wBAAwB;oBAC1C,SAAS,EAAE,KAAK;oBAChB,cAAc,EAAE,IAAI;iBACrB,CAAC;aACH,CAAC;QACJ,CAAC;QAED,MAAM,UAAU,GAAG,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QACxD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM;gBACJ,kBAAkB,EAAE,IAAI,CACtB,WAAW,CAAC,gBAAgB,EAC5B,8CAA8C,EAC9C;oBACE,aAAa,EAAE,OAAO,CAAC,YAAY;oBACnC,SAAS,EAAE,KAAK;oBAChB,cAAc,EAAE,IAAI;iBACrB,CACF;aACF,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC;QACtC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC;QACzC,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC;QACtD,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YACxB,MAAM;gBACJ,kBAAkB,EAAE,IAAI,CACtB,WAAW,CAAC,gBAAgB,EAC5B,4CAA4C,EAC5C;oBACE,SAAS,EAAE,KAAK;oBAChB,cAAc,EAAE,IAAI;iBACrB,CACF;aACF,CAAC;QACJ,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QACrD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACjD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACzC,MAAM,YAAY,GAAG;YACnB,OAAO,EAAE,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;YAC5D,QAAQ,EAAE,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;YAC9D,SAAS,EAAE,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YAChE,kBAAkB,EAAE,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,oBAAoB,CAAC,CAAC;YAClF,YAAY,EAAE,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;YACtE,QAAQ,EAAE,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;YAC1D,YAAY,EAAE,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;SACnE,CAAC;QACF,MAAM,gBAAgB,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,CAAC;QACvD,MAAM,cAAc,GAAG,MAAM,UAAU,CAAC,YAAY,CAAC,CAAC;QACtD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAElE,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAC/E,MAAM,cAAc,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;QAEhE,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QAClD,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;QACvD,IAAI,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,EAAE,CAAC;YAC3C,MAAM;gBACJ,kBAAkB,EAAE,IAAI,CACtB,WAAW,CAAC,kBAAkB,EAC9B,mDAAmD,EACnD;oBACE,aAAa,EAAE,eAAe,CAAC,MAAM;oBACrC,iBAAiB,EAAE,eAAe,CAAC,iBAAiB;oBACpD,gBAAgB,EAAE,eAAe,CAAC,gBAAgB;oBAClD,KAAK,EAAE,KAAK;oBACZ,SAAS,EAAE,KAAK;oBAChB,cAAc,EAAE,IAAI;iBACrB,CACF;aACF,CAAC;QACJ,CAAC;QAED,MAAM,mBAAmB,GAAG,aAAa,CACvC,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACjD,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC/B,OAAO,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS;gBAC7E,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,IAAI,CAAC;QACX,CAAC,CAAC,CACH,CAAC,MAAM,CAAC;QAET,MAAM,eAAe,GAAG;YACtB,MAAM,EAAE,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC;YAC/D,OAAO,EAAE,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC;YACjE,MAAM,EAAE,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC;SAChE,CAAC;QAEF,MAAM,sBAAsB,GAAG,wBAAwB,CAAC,eAAe,CAAC,CAAC;QACzE,MAAM,8BAA8B,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CACzE,sBAAsB,EACtB,SAAS,CACV,CAAC;QACF,MAAM,cAAc,GAAG,0BAA0B,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;QAE5E,MAAM,IAAI,GAAsB;YAC9B,kBAAkB,EAAE,gBAAgB;YACpC,aAAa,EAAE,YAAY;YAC3B,gBAAgB,EAAE,eAAe;YACjC,KAAK,EAAE;gBACL,UAAU,EAAE,cAAc;gBAC1B,oBAAoB,EAAE,cAAc;aACrC;YACD,qBAAqB,EAAE,mBAAmB;YAC1C,iCAAiC,EAAE,8BAA8B;YACjE,eAAe,EAAE,cAAc;YAC/B,aAAa,EAAE,YAAY;YAC3B,eAAe,EAAE,cAAc;YAC/B,aAAa,EAAE,UAAU;SAC1B,CAAC;QAEF,MAAM,OAAO,GAAG,gBAAgB,EAAE,CAAC;QACnC,IAAI,MAAM,EAAE,CAAC;YACX,OAAO;gBACL,IAAI,EAAE;oBACJ,UAAU,EAAE,SAAS;oBACrB,OAAO,EAAE,IAAI;oBACb,IAAI;oBACJ,OAAO;iBACR;aACF,CAAC;QACJ,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,cAAc,EAAE,CAAC;YACtC,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YAClD,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;QACD,OAAO,CAAC,cAAc,GAAG,YAAY,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAE9D,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI,EAAE;YAC3D,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YAC1C,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,IAAI,qBAAqB,GAAG,KAAK,CAAC;YAElC,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC3C,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;YAC/D,IAAI,UAAU,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;gBACxC,KAAK,CAAC,MAAM,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;gBACxC,OAAO,GAAG,IAAI,CAAC;YACjB,CAAC;YAED,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC7C,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;YACjE,IAAI,WAAW,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;gBAC1C,KAAK,CAAC,OAAO,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;gBAC1C,OAAO,GAAG,IAAI,CAAC;YACjB,CAAC;YAED,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC3C,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;YAC/D,IAAI,UAAU,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;gBACxC,KAAK,CAAC,MAAM,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;gBACxC,OAAO,GAAG,IAAI,CAAC;YACjB,CAAC;YAED,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAClD,MAAM,gBAAgB,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;gBACrD,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAC/B,OAAO,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC;YACzC,CAAC,CAAC,CAAC;YACH,MAAM,mBAAmB,GAAG,YAAY,CAAC,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC;YAC1E,IAAI,mBAAmB,GAAG,CAAC,EAAE,CAAC;gBAC5B,KAAK,CAAC,aAAa,GAAG,gBAAgB,CAAC;gBACvC,OAAO,GAAG,IAAI,CAAC;YACjB,CAAC;YAED,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACpC,KAAK,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACvD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;oBACzB,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;oBACvB,OAAO,GAAG,IAAI,CAAC;gBACjB,CAAC;YACH,CAAC;YACD,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;YAEpB,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAC/C,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC3D,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACpC,IAAI,WAAW,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oBACrC,UAAU,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;oBAC5B,OAAO,GAAG,IAAI,CAAC;gBACjB,CAAC;YACH,CAAC;YACD,KAAK,CAAC,WAAW,GAAG,UAAU,CAAC;YAE/B,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvD,MAAM,eAAe,GAAG,wBAAwB,CAAC,eAAe,CAAC,CAAC;YAClE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,EAAE,CAAC;gBACrE,OAAO,eAAe,CAAC,SAAS,CAAC,CAAC;gBAClC,eAAe,CAAC,gBAAgB;oBAC9B,eAA8D,CAAC;gBACjE,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;gBAC/C,qBAAqB,GAAG,IAAI,CAAC;gBAC7B,OAAO,GAAG,IAAI,CAAC;YACjB,CAAC;YAED,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,OAAO,GAAG,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtE,KAAK,CAAC,OAAO,GAAG,OAAO,GAAG,CAAC,CAAC;gBAC5B,KAAK,CAAC,UAAU,GAAG,MAAM,EAAE,CAAC;gBAC5B,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACpC,CAAC;YAED,OAAO;gBACL,OAAO;gBACP,mBAAmB;gBACnB,qBAAqB;aACtB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,aAAa,GAAG,WAAW,CAAC,OAAO,CAAC;QAC5C,OAAO,CAAC,6BAA6B,GAAG,WAAW,CAAC,mBAAmB,CAAC;QACxE,OAAO,CAAC,kCAAkC,GAAG,WAAW,CAAC,qBAAqB,CAAC;QAE/E,IAAI,gBAAgB,EAAE,CAAC;YACrB,MAAM,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3D,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;QACrC,CAAC;QAED,IAAI,cAAc,IAAI,cAAc,EAAE,CAAC;YACrC,MAAM,oBAAoB,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE;gBAClD,UAAU;gBACV,QAAQ;gBACR,SAAS;gBACT,YAAY;aACb,CAAC,CAAC;YACH,IAAI,oBAAoB,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBACpC,MAAM;oBACJ,kBAAkB,EAAE,IAAI,CACtB,WAAW,CAAC,WAAW,EACvB,mCAAmC,EACnC;wBACE,UAAU,EAAE,SAAS;wBACrB,MAAM,EAAE,oBAAoB,CAAC,MAAM;wBACnC,SAAS,EAAE,KAAK;wBAChB,cAAc,EAAE,IAAI;qBACrB,EACD;wBACE,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,CAAC;wBAC/D,SAAS,EAAE,oBAAoB,CAAC,IAAI;qBACrC,CACF;iBACF,CAAC;YACJ,CAAC;YACD,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAClC,CAAC;QAED,IAAI,UAAU,KAAK,MAAM,IAAI,YAAY,EAAE,CAAC;YAC1C,MAAM,IAAI,GACR,UAAU,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;YACpF,MAAM,kBAAkB,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACxD,IAAI,kBAAkB,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBAClC,MAAM;oBACJ,kBAAkB,EAAE,IAAI,CACtB,WAAW,CAAC,WAAW,EACvB,iCAAiC,EACjC;wBACE,UAAU,EAAE,SAAS;wBACrB,aAAa,EAAE,UAAU;wBACzB,MAAM,EAAE,kBAAkB,CAAC,MAAM;wBACjC,SAAS,EAAE,KAAK;wBAChB,cAAc,EAAE,IAAI;qBACrB,EACD;wBACE,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC;wBACzB,SAAS,EAAE,kBAAkB,CAAC,IAAI;qBACnC,CACF;iBACF,CAAC;YACJ,CAAC;YACD,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;QAChC,CAAC;QAED,OAAO;YACL,IAAI,EAAE;gBACJ,UAAU,EAAE,SAAS;gBACrB,OAAO,EAAE,KAAK;gBACd,IAAI;gBACJ,OAAO,EAAE,OAAO;gBAChB,OAAO;aACR;SACF,CAAC;IACJ,CAAC;IAEO,gBAAgB,CAAC,eAAwC;QAC/D,MAAM,QAAQ,GACZ,eAAe,CAAC,MAAM,KAAK,MAAM,IAAI,eAAe,CAAC,iBAAiB,KAAK,MAAM,CAAC;QACpF,OAAO,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;IAChE,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAAC,SAAiB,EAAE,SAAiB;QACrE,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;YACnC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YACnD,OAAO,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACrC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,QAAgB,EAAE,SAAiB;QAC5D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,cAAc,SAAS,EAAE,CAAC,CAAC,CAAC;QAC3F,OAAO,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC;IAC3B,CAAC;CACF;AAED,SAAS,OAAO,CAAC,KAAc;IAC7B,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AAC3C,CAAC"}
1
+ {"version":3,"file":"feature-deletion-service.js","sourceRoot":"","sources":["../../../../../apps/control-plane/src/application/services/feature-deletion-service.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,9 @@ type FeatureContext = {
3
3
  actorType: string;
4
4
  actorId: string;
5
5
  };
6
+ /**
7
+ * @fileoverview Feature initialization and lifecycle management service.
8
+ */
6
9
  export interface FeatureLifecycleServicePort {
7
10
  getRepoRoot(): string;
8
11
  getFeaturesDir(): string;
@@ -42,9 +45,49 @@ export interface FeatureLifecycleServicePort {
42
45
  };
43
46
  }>;
44
47
  }
48
+ /**
49
+ * Manages feature initialization and lifecycle.
50
+ *
51
+ * ## Responsibilities
52
+ * - Discover canonical feature specs
53
+ * - Initialize feature directories and state.md
54
+ * - Create feature branches and worktrees
55
+ * - Validate feature IDs
56
+ * - Handle spec ingestion (canonical and non-canonical)
57
+ *
58
+ * ## Dependencies
59
+ * Depends on {@link FeatureLifecycleServicePort} for:
60
+ * - File operations and path resolution
61
+ * - Index updates
62
+ * - State/plan/evidence access
63
+ *
64
+ * ## Key Methods
65
+ * - `featureDiscoverSpecs()` - discover canonical spec files
66
+ * - `featureInit()` - initialize feature folder and state
67
+ * - `featureGetContext()` - return spec + state + plan + evidence bundle
68
+ * - `featureLogAppend()` - append timestamped log entry
69
+ *
70
+ * ## Error Conditions
71
+ * - FEATURE_ALREADY_EXISTS - feature already initialized
72
+ * - INVALID_FEATURE_ID - feature ID format invalid
73
+ * - FILE_NOT_FOUND - spec or state file missing
74
+ *
75
+ * @example
76
+ * ```typescript
77
+ * const lifecycleService = new FeatureLifecycleService(port);
78
+ * const specs = await lifecycleService.featureDiscoverSpecs();
79
+ * await lifecycleService.featureInit('my_feature');
80
+ * const context = await lifecycleService.featureGetContext('my_feature');
81
+ * ```
82
+ */
45
83
  export declare class FeatureLifecycleService {
46
84
  private readonly port;
47
85
  constructor(port: FeatureLifecycleServicePort);
86
+ /**
87
+ * Discovers canonical feature spec files.
88
+ *
89
+ * @returns Array of discovered specs with feature_id and path
90
+ */
48
91
  featureDiscoverSpecs(): Promise<{
49
92
  data: {
50
93
  specs: Array<{
@@ -53,6 +96,13 @@ export declare class FeatureLifecycleService {
53
96
  }>;
54
97
  };
55
98
  }>;
99
+ /**
100
+ * Initializes feature folder, state, branch, and worktree.
101
+ *
102
+ * @param featureId - feature identifier
103
+ * @returns Initialization result
104
+ * @throws FEATURE_ALREADY_EXISTS - feature already initialized
105
+ */
56
106
  featureInit(featureId: string | null): Promise<{
57
107
  data: {
58
108
  feature_id: string | null;
@@ -60,6 +110,12 @@ export declare class FeatureLifecycleService {
60
110
  worktree_path: string;
61
111
  };
62
112
  }>;
113
+ /**
114
+ * Returns complete feature context bundle.
115
+ *
116
+ * @param featureId - feature identifier
117
+ * @returns Context bundle with spec, state, plan, evidence, QA index
118
+ */
63
119
  featureGetContext(featureId: string): Promise<{
64
120
  data: {
65
121
  feature_id: string;
@@ -70,6 +126,14 @@ export declare class FeatureLifecycleService {
70
126
  latest_evidence: unknown;
71
127
  };
72
128
  }>;
129
+ /**
130
+ * Appends timestamped entry to feature decision log.
131
+ *
132
+ * @param featureId - feature identifier
133
+ * @param note - log entry content
134
+ * @param context - actor context
135
+ * @returns Success response
136
+ */
73
137
  featureLogAppend(featureId: string, note: string, context: FeatureContext): Promise<{
74
138
  data: {
75
139
  feature_id: string;
@@ -13,11 +13,51 @@ function normalizeRepoPathForState(repoRoot, absolutePath) {
13
13
  }
14
14
  return relative;
15
15
  }
16
+ /**
17
+ * Manages feature initialization and lifecycle.
18
+ *
19
+ * ## Responsibilities
20
+ * - Discover canonical feature specs
21
+ * - Initialize feature directories and state.md
22
+ * - Create feature branches and worktrees
23
+ * - Validate feature IDs
24
+ * - Handle spec ingestion (canonical and non-canonical)
25
+ *
26
+ * ## Dependencies
27
+ * Depends on {@link FeatureLifecycleServicePort} for:
28
+ * - File operations and path resolution
29
+ * - Index updates
30
+ * - State/plan/evidence access
31
+ *
32
+ * ## Key Methods
33
+ * - `featureDiscoverSpecs()` - discover canonical spec files
34
+ * - `featureInit()` - initialize feature folder and state
35
+ * - `featureGetContext()` - return spec + state + plan + evidence bundle
36
+ * - `featureLogAppend()` - append timestamped log entry
37
+ *
38
+ * ## Error Conditions
39
+ * - FEATURE_ALREADY_EXISTS - feature already initialized
40
+ * - INVALID_FEATURE_ID - feature ID format invalid
41
+ * - FILE_NOT_FOUND - spec or state file missing
42
+ *
43
+ * @example
44
+ * ```typescript
45
+ * const lifecycleService = new FeatureLifecycleService(port);
46
+ * const specs = await lifecycleService.featureDiscoverSpecs();
47
+ * await lifecycleService.featureInit('my_feature');
48
+ * const context = await lifecycleService.featureGetContext('my_feature');
49
+ * ```
50
+ */
16
51
  export class FeatureLifecycleService {
17
52
  port;
18
53
  constructor(port) {
19
54
  this.port = port;
20
55
  }
56
+ /**
57
+ * Discovers canonical feature spec files.
58
+ *
59
+ * @returns Array of discovered specs with feature_id and path
60
+ */
21
61
  async featureDiscoverSpecs() {
22
62
  const discovered = [];
23
63
  const repoRoot = this.port.getRepoRoot();
@@ -41,6 +81,13 @@ export class FeatureLifecycleService {
41
81
  discovered.sort((a, b) => a.feature_id.localeCompare(b.feature_id));
42
82
  return { data: { specs: discovered } };
43
83
  }
84
+ /**
85
+ * Initializes feature folder, state, branch, and worktree.
86
+ *
87
+ * @param featureId - feature identifier
88
+ * @returns Initialization result
89
+ * @throws FEATURE_ALREADY_EXISTS - feature already initialized
90
+ */
44
91
  async featureInit(featureId) {
45
92
  if (!featureId) {
46
93
  throw {
@@ -83,6 +130,12 @@ export class FeatureLifecycleService {
83
130
  },
84
131
  };
85
132
  }
133
+ /**
134
+ * Returns complete feature context bundle.
135
+ *
136
+ * @param featureId - feature identifier
137
+ * @returns Context bundle with spec, state, plan, evidence, QA index
138
+ */
86
139
  async featureGetContext(featureId) {
87
140
  const state = await this.port.featureStateGet(featureId);
88
141
  const plan = await this.port.planGet(featureId);
@@ -100,6 +153,14 @@ export class FeatureLifecycleService {
100
153
  },
101
154
  };
102
155
  }
156
+ /**
157
+ * Appends timestamped entry to feature decision log.
158
+ *
159
+ * @param featureId - feature identifier
160
+ * @param note - log entry content
161
+ * @param context - actor context
162
+ * @returns Success response
163
+ */
103
164
  async featureLogAppend(featureId, note, context) {
104
165
  const repoRoot = this.port.getRepoRoot();
105
166
  const logPath = this.port.decisionsPath(featureId);
@@ -1 +1 @@
1
- {"version":3,"file":"feature-lifecycle-service.js","sourceRoot":"","sources":["../../../../../apps/control-plane/src/application/services/feature-lifecycle-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"feature-lifecycle-service.js","sourceRoot":"","sources":["../../../../../apps/control-plane/src/application/services/feature-lifecycle-service.ts"],"names":[],"mappings":"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"}