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.
- package/agentic/orchestrator/defaults/policy.defaults.yaml +1 -0
- package/agentic/orchestrator/policy.yaml +1 -0
- package/agentic/orchestrator/schemas/policy.schema.json +4 -0
- package/agentic/orchestrator/schemas/policy.user.schema.json +4 -0
- package/apps/control-plane/src/application/services/activity-monitor-service.ts +42 -0
- package/apps/control-plane/src/application/services/collision-queue-service.ts +48 -0
- package/apps/control-plane/src/application/services/cost-tracking-service.ts +80 -0
- package/apps/control-plane/src/application/services/feature-deletion-service.ts +57 -0
- package/apps/control-plane/src/application/services/feature-lifecycle-service.ts +65 -0
- package/apps/control-plane/src/application/services/feature-state-service.ts +87 -0
- package/apps/control-plane/src/application/services/gate-selection-service.ts +28 -0
- package/apps/control-plane/src/application/services/gate-service.ts +148 -0
- package/apps/control-plane/src/application/services/issue-tracker-service.ts +28 -0
- package/apps/control-plane/src/application/services/lock-service.ts +88 -0
- package/apps/control-plane/src/application/services/merge-service.ts +63 -0
- package/apps/control-plane/src/application/services/notifier-service.ts +70 -0
- package/apps/control-plane/src/application/services/patch-service.ts +95 -0
- package/apps/control-plane/src/application/services/performance-analytics-service.ts +90 -0
- package/apps/control-plane/src/application/services/plan-service.ts +184 -0
- package/apps/control-plane/src/application/services/pr-monitor-service.ts +58 -0
- package/apps/control-plane/src/application/services/qa-index-service.ts +68 -0
- package/apps/control-plane/src/application/services/reactions-service.ts +77 -0
- package/apps/control-plane/src/application/services/reporting-service.ts +79 -0
- package/apps/control-plane/src/application/services/run-lease-service.ts +79 -0
- package/apps/control-plane/src/application/tools/tool-router.ts +76 -0
- package/apps/control-plane/src/mcp/tool-runtime.ts +4 -0
- package/apps/control-plane/src/providers/providers.ts +96 -0
- package/apps/control-plane/src/providers/worker-provider-factory.ts +4 -0
- package/apps/control-plane/src/supervisor/build-wave-executor.ts +4 -0
- package/apps/control-plane/src/supervisor/planning-wave-executor.ts +4 -0
- package/apps/control-plane/src/supervisor/qa-wave-executor.ts +4 -0
- package/apps/control-plane/src/supervisor/run-coordinator.ts +4 -0
- package/apps/control-plane/src/supervisor/runtime.ts +4 -0
- package/apps/control-plane/src/supervisor/session-orchestrator.ts +4 -0
- package/apps/control-plane/test/dashboard-api.integration.spec.ts +310 -1
- package/apps/control-plane/test/dashboard-client.spec.ts +136 -1
- package/apps/control-plane/test/dashboard-live-feed.spec.ts +153 -0
- package/apps/control-plane/test/dashboard-ui-utils.spec.ts +132 -0
- package/apps/control-plane/test/mcp.spec.ts +96 -0
- package/apps/control-plane/test/tool-runtime.spec.ts +68 -0
- package/config/agentic/orchestrator/policy.yaml +1 -0
- package/dist/apps/control-plane/application/services/activity-monitor-service.d.ts +42 -0
- package/dist/apps/control-plane/application/services/activity-monitor-service.js +42 -0
- package/dist/apps/control-plane/application/services/activity-monitor-service.js.map +1 -1
- package/dist/apps/control-plane/application/services/collision-queue-service.d.ts +48 -0
- package/dist/apps/control-plane/application/services/collision-queue-service.js +48 -0
- package/dist/apps/control-plane/application/services/collision-queue-service.js.map +1 -1
- package/dist/apps/control-plane/application/services/cost-tracking-service.d.ts +79 -0
- package/dist/apps/control-plane/application/services/cost-tracking-service.js +76 -0
- package/dist/apps/control-plane/application/services/cost-tracking-service.js.map +1 -1
- package/dist/apps/control-plane/application/services/feature-deletion-service.d.ts +57 -0
- package/dist/apps/control-plane/application/services/feature-deletion-service.js +57 -0
- package/dist/apps/control-plane/application/services/feature-deletion-service.js.map +1 -1
- package/dist/apps/control-plane/application/services/feature-lifecycle-service.d.ts +64 -0
- package/dist/apps/control-plane/application/services/feature-lifecycle-service.js +61 -0
- package/dist/apps/control-plane/application/services/feature-lifecycle-service.js.map +1 -1
- package/dist/apps/control-plane/application/services/feature-state-service.d.ts +86 -0
- package/dist/apps/control-plane/application/services/feature-state-service.js +83 -0
- package/dist/apps/control-plane/application/services/feature-state-service.js.map +1 -1
- package/dist/apps/control-plane/application/services/gate-selection-service.d.ts +28 -0
- package/dist/apps/control-plane/application/services/gate-selection-service.js +28 -0
- package/dist/apps/control-plane/application/services/gate-selection-service.js.map +1 -1
- package/dist/apps/control-plane/application/services/gate-service.d.ts +148 -0
- package/dist/apps/control-plane/application/services/gate-service.js +120 -0
- package/dist/apps/control-plane/application/services/gate-service.js.map +1 -1
- package/dist/apps/control-plane/application/services/issue-tracker-service.d.ts +28 -0
- package/dist/apps/control-plane/application/services/issue-tracker-service.js +28 -0
- package/dist/apps/control-plane/application/services/issue-tracker-service.js.map +1 -1
- package/dist/apps/control-plane/application/services/lock-service.d.ts +88 -0
- package/dist/apps/control-plane/application/services/lock-service.js +64 -0
- package/dist/apps/control-plane/application/services/lock-service.js.map +1 -1
- package/dist/apps/control-plane/application/services/merge-service.d.ts +62 -0
- package/dist/apps/control-plane/application/services/merge-service.js +59 -0
- package/dist/apps/control-plane/application/services/merge-service.js.map +1 -1
- package/dist/apps/control-plane/application/services/notifier-service.d.ts +70 -0
- package/dist/apps/control-plane/application/services/notifier-service.js +70 -0
- package/dist/apps/control-plane/application/services/notifier-service.js.map +1 -1
- package/dist/apps/control-plane/application/services/patch-service.d.ts +94 -0
- package/dist/apps/control-plane/application/services/patch-service.js +91 -0
- package/dist/apps/control-plane/application/services/patch-service.js.map +1 -1
- package/dist/apps/control-plane/application/services/performance-analytics-service.d.ts +89 -0
- package/dist/apps/control-plane/application/services/performance-analytics-service.js +86 -0
- package/dist/apps/control-plane/application/services/performance-analytics-service.js.map +1 -1
- package/dist/apps/control-plane/application/services/plan-service.d.ts +287 -0
- package/dist/apps/control-plane/application/services/plan-service.js +207 -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 +58 -0
- package/dist/apps/control-plane/application/services/pr-monitor-service.js +58 -0
- package/dist/apps/control-plane/application/services/pr-monitor-service.js.map +1 -1
- package/dist/apps/control-plane/application/services/qa-index-service.d.ts +67 -0
- package/dist/apps/control-plane/application/services/qa-index-service.js +64 -0
- package/dist/apps/control-plane/application/services/qa-index-service.js.map +1 -1
- package/dist/apps/control-plane/application/services/reactions-service.d.ts +76 -0
- package/dist/apps/control-plane/application/services/reactions-service.js +73 -0
- package/dist/apps/control-plane/application/services/reactions-service.js.map +1 -1
- package/dist/apps/control-plane/application/services/reporting-service.d.ts +78 -0
- package/dist/apps/control-plane/application/services/reporting-service.js +75 -0
- 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 +79 -0
- package/dist/apps/control-plane/application/services/run-lease-service.js +79 -0
- package/dist/apps/control-plane/application/services/run-lease-service.js.map +1 -1
- package/dist/apps/control-plane/application/tools/tool-router.d.ts +76 -0
- package/dist/apps/control-plane/application/tools/tool-router.js +62 -0
- package/dist/apps/control-plane/application/tools/tool-router.js.map +1 -1
- package/dist/apps/control-plane/mcp/tool-runtime.d.ts +3 -0
- package/dist/apps/control-plane/mcp/tool-runtime.js +3 -0
- package/dist/apps/control-plane/mcp/tool-runtime.js.map +1 -1
- package/dist/apps/control-plane/providers/providers.d.ts +88 -0
- package/dist/apps/control-plane/providers/providers.js.map +1 -1
- package/dist/apps/control-plane/providers/worker-provider-factory.d.ts +3 -0
- package/dist/apps/control-plane/providers/worker-provider-factory.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 +3 -0
- package/dist/apps/control-plane/supervisor/build-wave-executor.js.map +1 -1
- package/dist/apps/control-plane/supervisor/planning-wave-executor.d.ts +3 -0
- package/dist/apps/control-plane/supervisor/planning-wave-executor.js +3 -0
- package/dist/apps/control-plane/supervisor/planning-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 +3 -0
- package/dist/apps/control-plane/supervisor/qa-wave-executor.js.map +1 -1
- package/dist/apps/control-plane/supervisor/run-coordinator.d.ts +3 -0
- package/dist/apps/control-plane/supervisor/run-coordinator.js +3 -0
- 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 +3 -0
- package/dist/apps/control-plane/supervisor/runtime.js.map +1 -1
- package/dist/apps/control-plane/supervisor/session-orchestrator.d.ts +3 -0
- package/dist/apps/control-plane/supervisor/session-orchestrator.js +3 -0
- package/dist/apps/control-plane/supervisor/session-orchestrator.js.map +1 -1
- package/package.json +1 -1
- package/packages/web-dashboard/src/app/analytics/page.tsx +451 -0
- package/packages/web-dashboard/src/app/api/analytics/route.ts +62 -0
- package/packages/web-dashboard/src/app/api/collisions/route.ts +63 -0
- package/packages/web-dashboard/src/app/api/features/[id]/cost/route.ts +29 -0
- package/packages/web-dashboard/src/app/api/features/[id]/review-brief/route.ts +31 -0
- package/packages/web-dashboard/src/app/api/features/[id]/route.ts +5 -8
- package/packages/web-dashboard/src/app/api/features/[id]/test-index/route.ts +31 -0
- package/packages/web-dashboard/src/app/api/flaky/route.ts +20 -0
- package/packages/web-dashboard/src/app/api/policy/budget/route.ts +31 -0
- package/packages/web-dashboard/src/app/api/run/route.ts +162 -0
- package/packages/web-dashboard/src/app/api/status/route.ts +2 -5
- package/packages/web-dashboard/src/app/feature/[id]/page.tsx +112 -0
- package/packages/web-dashboard/src/app/page.tsx +379 -77
- package/packages/web-dashboard/src/components/agent-pipeline-stepper.tsx +100 -0
- package/packages/web-dashboard/src/components/dependency-chains.tsx +58 -0
- package/packages/web-dashboard/src/components/detail-panel.tsx +215 -5
- package/packages/web-dashboard/src/components/feature-card.tsx +5 -0
- package/packages/web-dashboard/src/components/feature-cost-panel.tsx +66 -0
- package/packages/web-dashboard/src/components/feature-list-view.tsx +336 -0
- package/packages/web-dashboard/src/components/gate-step-drilldown.tsx +92 -0
- package/packages/web-dashboard/src/components/kanban-board.tsx +3 -0
- package/packages/web-dashboard/src/components/live-event-feed.tsx +60 -0
- package/packages/web-dashboard/src/components/lock-resource-map.tsx +73 -0
- package/packages/web-dashboard/src/components/plan-revision-timeline.tsx +55 -0
- package/packages/web-dashboard/src/components/plan-risk-annotations.tsx +63 -0
- package/packages/web-dashboard/src/components/plan-scope-tree.tsx +285 -0
- package/packages/web-dashboard/src/components/qa-coverage-map.tsx +174 -0
- package/packages/web-dashboard/src/components/quick-launch-panel.tsx +70 -0
- package/packages/web-dashboard/src/components/review-brief-panel.tsx +75 -0
- package/packages/web-dashboard/src/components/run-health-panel.tsx +85 -0
- package/packages/web-dashboard/src/components/summary-bar.tsx +59 -2
- package/packages/web-dashboard/src/components/verification-signals.tsx +167 -0
- package/packages/web-dashboard/src/lib/analytics-utils.ts +3 -0
- package/packages/web-dashboard/src/lib/aop-client.ts +510 -11
- package/packages/web-dashboard/src/lib/api-envelope.ts +48 -0
- package/packages/web-dashboard/src/lib/authz-adapter.ts +33 -0
- package/packages/web-dashboard/src/lib/dashboard-utils.ts +304 -0
- package/packages/web-dashboard/src/lib/live-feed.ts +218 -0
- package/packages/web-dashboard/src/lib/policy-reader.ts +22 -0
- package/packages/web-dashboard/src/lib/types.ts +114 -0
- package/packages/web-dashboard/src/styles/dashboard.module.css +341 -1
- package/spec-files/{outstanding → completed}/agentic_orchestrator_dashboard_advanced_ux_spec.md +1 -1
- package/spec-files/outstanding/agentic_orchestrator_evidence_integrity_doctor_spec.md +561 -0
- package/spec-files/outstanding/agentic_orchestrator_kernel_simplification_spec.md +834 -0
- package/spec-files/outstanding/agentic_orchestrator_observability_integrity_diagnostics_spec.md +12 -5
- package/spec-files/outstanding/agentic_orchestrator_observability_replay_spec.md +442 -0
- package/spec-files/progress.md +174 -1
|
@@ -38,10 +38,28 @@ export interface NotificationConfig {
|
|
|
38
38
|
channels?: NotificationChannelConfig;
|
|
39
39
|
routing?: NotificationRoutingConfig;
|
|
40
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* Desktop notification channel using notify-send.
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```typescript
|
|
46
|
+
* const channel = new DesktopNotifierChannel();
|
|
47
|
+
* await channel.send(payload);
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
41
50
|
export declare class DesktopNotifierChannel implements NotifierChannel {
|
|
42
51
|
readonly name = "desktop";
|
|
43
52
|
send(payload: NotificationPayload): Promise<void>;
|
|
44
53
|
}
|
|
54
|
+
/**
|
|
55
|
+
* Slack notification channel using webhook.
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```typescript
|
|
59
|
+
* const channel = new SlackNotifierChannel(webhookUrl, '#alerts');
|
|
60
|
+
* await channel.send(payload);
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
45
63
|
export declare class SlackNotifierChannel implements NotifierChannel {
|
|
46
64
|
readonly name = "slack";
|
|
47
65
|
private readonly webhookUrl;
|
|
@@ -49,12 +67,51 @@ export declare class SlackNotifierChannel implements NotifierChannel {
|
|
|
49
67
|
constructor(webhookUrl: string, channel: string);
|
|
50
68
|
send(payload: NotificationPayload): Promise<void>;
|
|
51
69
|
}
|
|
70
|
+
/**
|
|
71
|
+
* Generic webhook notification channel.
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* ```typescript
|
|
75
|
+
* const channel = new WebhookNotifierChannel('https://example.com/webhook');
|
|
76
|
+
* await channel.send(payload);
|
|
77
|
+
* ```
|
|
78
|
+
*/
|
|
52
79
|
export declare class WebhookNotifierChannel implements NotifierChannel {
|
|
53
80
|
readonly name = "webhook";
|
|
54
81
|
private readonly url;
|
|
55
82
|
constructor(url: string);
|
|
56
83
|
send(payload: NotificationPayload): Promise<void>;
|
|
57
84
|
}
|
|
85
|
+
/**
|
|
86
|
+
* Manages multi-channel notifications with priority routing.
|
|
87
|
+
*
|
|
88
|
+
* ## Responsibilities
|
|
89
|
+
* - Route notifications by priority (critical/warning/info)
|
|
90
|
+
* - Send to multiple channels (desktop/Slack/webhook)
|
|
91
|
+
* - Throttle duplicate notifications
|
|
92
|
+
* - Map events to priorities
|
|
93
|
+
*
|
|
94
|
+
* ## Dependencies
|
|
95
|
+
* - Notification channel implementations
|
|
96
|
+
* - Policy notification configuration
|
|
97
|
+
*
|
|
98
|
+
* ## Key Methods
|
|
99
|
+
* - `notify()` - send notification with priority routing
|
|
100
|
+
*
|
|
101
|
+
* ## Error Conditions
|
|
102
|
+
* - Channel send failures are logged but don't block
|
|
103
|
+
*
|
|
104
|
+
* @example
|
|
105
|
+
* ```typescript
|
|
106
|
+
* const notifier = new NotifierService(config, dashboardUrl);
|
|
107
|
+
* await notifier.notify('gate_failed', 'my_feature', 'Gate fast failed', { gate: 'fast' });
|
|
108
|
+
* ```
|
|
109
|
+
*
|
|
110
|
+
* ## Supported Channels
|
|
111
|
+
* - desktop: notify-send
|
|
112
|
+
* - slack: webhook
|
|
113
|
+
* - webhook: generic HTTP POST
|
|
114
|
+
*/
|
|
58
115
|
export declare class NotifierService {
|
|
59
116
|
private readonly config;
|
|
60
117
|
private readonly channels;
|
|
@@ -65,6 +122,19 @@ export declare class NotifierService {
|
|
|
65
122
|
private buildRouting;
|
|
66
123
|
private buildChannels;
|
|
67
124
|
private isThrottled;
|
|
125
|
+
/**
|
|
126
|
+
* Sends notification with priority-based routing.
|
|
127
|
+
*
|
|
128
|
+
* @param event - notification event type
|
|
129
|
+
* @param featureId - optional feature identifier
|
|
130
|
+
* @param message - notification message
|
|
131
|
+
* @param details - optional additional details
|
|
132
|
+
*
|
|
133
|
+
* @example
|
|
134
|
+
* ```typescript
|
|
135
|
+
* await notifier.notify('gate_failed', 'my_feature', 'Gate fast failed', { gate: 'fast' });
|
|
136
|
+
* ```
|
|
137
|
+
*/
|
|
68
138
|
notify(event: NotificationEvent, context: {
|
|
69
139
|
feature_id?: string;
|
|
70
140
|
message: string;
|
|
@@ -19,6 +19,15 @@ const EVENT_PRIORITY = {
|
|
|
19
19
|
budget_alert: 'warning',
|
|
20
20
|
};
|
|
21
21
|
const THROTTLE_WINDOW_MS = 5 * 60 * 1000; // 5 minutes
|
|
22
|
+
/**
|
|
23
|
+
* Desktop notification channel using notify-send.
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```typescript
|
|
27
|
+
* const channel = new DesktopNotifierChannel();
|
|
28
|
+
* await channel.send(payload);
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
22
31
|
export class DesktopNotifierChannel {
|
|
23
32
|
name = 'desktop';
|
|
24
33
|
async send(payload) {
|
|
@@ -42,6 +51,15 @@ export class DesktopNotifierChannel {
|
|
|
42
51
|
}
|
|
43
52
|
}
|
|
44
53
|
}
|
|
54
|
+
/**
|
|
55
|
+
* Slack notification channel using webhook.
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```typescript
|
|
59
|
+
* const channel = new SlackNotifierChannel(webhookUrl, '#alerts');
|
|
60
|
+
* await channel.send(payload);
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
45
63
|
export class SlackNotifierChannel {
|
|
46
64
|
name = 'slack';
|
|
47
65
|
webhookUrl;
|
|
@@ -79,6 +97,15 @@ export class SlackNotifierChannel {
|
|
|
79
97
|
}
|
|
80
98
|
}
|
|
81
99
|
}
|
|
100
|
+
/**
|
|
101
|
+
* Generic webhook notification channel.
|
|
102
|
+
*
|
|
103
|
+
* @example
|
|
104
|
+
* ```typescript
|
|
105
|
+
* const channel = new WebhookNotifierChannel('https://example.com/webhook');
|
|
106
|
+
* await channel.send(payload);
|
|
107
|
+
* ```
|
|
108
|
+
*/
|
|
82
109
|
export class WebhookNotifierChannel {
|
|
83
110
|
name = 'webhook';
|
|
84
111
|
url;
|
|
@@ -96,6 +123,36 @@ export class WebhookNotifierChannel {
|
|
|
96
123
|
}
|
|
97
124
|
}
|
|
98
125
|
}
|
|
126
|
+
/**
|
|
127
|
+
* Manages multi-channel notifications with priority routing.
|
|
128
|
+
*
|
|
129
|
+
* ## Responsibilities
|
|
130
|
+
* - Route notifications by priority (critical/warning/info)
|
|
131
|
+
* - Send to multiple channels (desktop/Slack/webhook)
|
|
132
|
+
* - Throttle duplicate notifications
|
|
133
|
+
* - Map events to priorities
|
|
134
|
+
*
|
|
135
|
+
* ## Dependencies
|
|
136
|
+
* - Notification channel implementations
|
|
137
|
+
* - Policy notification configuration
|
|
138
|
+
*
|
|
139
|
+
* ## Key Methods
|
|
140
|
+
* - `notify()` - send notification with priority routing
|
|
141
|
+
*
|
|
142
|
+
* ## Error Conditions
|
|
143
|
+
* - Channel send failures are logged but don't block
|
|
144
|
+
*
|
|
145
|
+
* @example
|
|
146
|
+
* ```typescript
|
|
147
|
+
* const notifier = new NotifierService(config, dashboardUrl);
|
|
148
|
+
* await notifier.notify('gate_failed', 'my_feature', 'Gate fast failed', { gate: 'fast' });
|
|
149
|
+
* ```
|
|
150
|
+
*
|
|
151
|
+
* ## Supported Channels
|
|
152
|
+
* - desktop: notify-send
|
|
153
|
+
* - slack: webhook
|
|
154
|
+
* - webhook: generic HTTP POST
|
|
155
|
+
*/
|
|
99
156
|
export class NotifierService {
|
|
100
157
|
config;
|
|
101
158
|
channels;
|
|
@@ -145,6 +202,19 @@ export class NotifierService {
|
|
|
145
202
|
this.throttleCache.set(key, now);
|
|
146
203
|
return false;
|
|
147
204
|
}
|
|
205
|
+
/**
|
|
206
|
+
* Sends notification with priority-based routing.
|
|
207
|
+
*
|
|
208
|
+
* @param event - notification event type
|
|
209
|
+
* @param featureId - optional feature identifier
|
|
210
|
+
* @param message - notification message
|
|
211
|
+
* @param details - optional additional details
|
|
212
|
+
*
|
|
213
|
+
* @example
|
|
214
|
+
* ```typescript
|
|
215
|
+
* await notifier.notify('gate_failed', 'my_feature', 'Gate fast failed', { gate: 'fast' });
|
|
216
|
+
* ```
|
|
217
|
+
*/
|
|
148
218
|
async notify(event, context) {
|
|
149
219
|
if (!this.config.enabled) {
|
|
150
220
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notifier-service.js","sourceRoot":"","sources":["../../../../../apps/control-plane/src/application/services/notifier-service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"notifier-service.js","sourceRoot":"","sources":["../../../../../apps/control-plane/src/application/services/notifier-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,9 @@ type StateUpdater = (frontMatter: AnyRecord, body: string) => Promise<{
|
|
|
4
4
|
frontMatter?: AnyRecord;
|
|
5
5
|
body?: string;
|
|
6
6
|
}>;
|
|
7
|
+
/**
|
|
8
|
+
* @fileoverview Patch validation and application service.
|
|
9
|
+
*/
|
|
7
10
|
export interface PatchServicePort {
|
|
8
11
|
getRepoRoot(): string;
|
|
9
12
|
getPolicySnapshot(): AnyRecord;
|
|
@@ -20,14 +23,105 @@ export interface PatchServicePort {
|
|
|
20
23
|
}>;
|
|
21
24
|
updateState(featureId: string, expectedVersion: number | null, updater: StateUpdater): Promise<AnyRecord>;
|
|
22
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* Manages patch validation and atomic application.
|
|
28
|
+
*
|
|
29
|
+
* ## Responsibilities
|
|
30
|
+
* - Validate unified diff format
|
|
31
|
+
* - Enforce plan area restrictions
|
|
32
|
+
* - Apply policy path rules
|
|
33
|
+
* - Verify lock requirements
|
|
34
|
+
* - Apply patches atomically to worktree
|
|
35
|
+
*
|
|
36
|
+
* ## Dependencies
|
|
37
|
+
* Depends on {@link PatchServicePort} for:
|
|
38
|
+
* - Plan and policy access
|
|
39
|
+
* - State operations
|
|
40
|
+
* - Worktree path resolution
|
|
41
|
+
*
|
|
42
|
+
* ## Key Methods
|
|
43
|
+
* - `repoApplyPatch()` - validate and apply unified diff
|
|
44
|
+
* - `validatePatchPaths()` - enforce plan/policy path rules
|
|
45
|
+
* - `assertPlanLocksHeld()` - verify required locks
|
|
46
|
+
*
|
|
47
|
+
* ## Error Conditions
|
|
48
|
+
* - PATCH_VALIDATION_FAILED - invalid diff format or path violations
|
|
49
|
+
* - LOCK_NOT_HELD - required locks not acquired
|
|
50
|
+
* - PLAN_NOT_FOUND - no accepted plan exists
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* ```typescript
|
|
54
|
+
* const patchService = new PatchService(port);
|
|
55
|
+
* await patchService.repoApplyPatch('my_feature', unifiedDiff);
|
|
56
|
+
* ```
|
|
57
|
+
*
|
|
58
|
+
* ## Thread Safety
|
|
59
|
+
* Patch application is atomic within feature worktree.
|
|
60
|
+
*/
|
|
23
61
|
export declare class PatchService {
|
|
24
62
|
private readonly port;
|
|
25
63
|
private readonly gateSelectionService;
|
|
26
64
|
constructor(port: PatchServicePort);
|
|
65
|
+
/**
|
|
66
|
+
* Loads accepted plan for a feature.
|
|
67
|
+
*
|
|
68
|
+
* @param featureId - feature identifier
|
|
69
|
+
* @returns Plan object or null if not found
|
|
70
|
+
*/
|
|
27
71
|
loadAcceptedPlan(featureId: string): Promise<AnyRecord | null>;
|
|
28
72
|
requiredResourcesForPlan(plan: AnyRecord): string[];
|
|
73
|
+
/**
|
|
74
|
+
* Verifies required resource locks are held for plan.
|
|
75
|
+
*
|
|
76
|
+
* @param featureId - feature identifier
|
|
77
|
+
* @param plan - plan requiring locks
|
|
78
|
+
* @throws LOCK_NOT_HELD - required locks not held
|
|
79
|
+
*/
|
|
29
80
|
assertPlanLocksHeld(featureId: string, plan: AnyRecord): Promise<void>;
|
|
81
|
+
/**
|
|
82
|
+
* Validates patch paths against plan areas and policy rules.
|
|
83
|
+
*
|
|
84
|
+
* Enforces:
|
|
85
|
+
* - Paths must be in plan allowed_areas
|
|
86
|
+
* - Paths must not be in plan forbidden_areas
|
|
87
|
+
* - Paths must not violate policy path rules
|
|
88
|
+
*
|
|
89
|
+
* @param featureId - feature identifier
|
|
90
|
+
* @param patch - unified diff content
|
|
91
|
+
* @param plan - accepted plan with area restrictions
|
|
92
|
+
* @throws PATCH_VALIDATION_FAILED - path violations detected
|
|
93
|
+
*
|
|
94
|
+
* @example
|
|
95
|
+
* ```typescript
|
|
96
|
+
* await patchService.validatePatchPaths('my_feature', diff, plan);
|
|
97
|
+
* ```
|
|
98
|
+
*/
|
|
30
99
|
validatePatchPaths(featureId: string, parsedDiff: ReturnType<typeof parseUnifiedDiff>, plan: AnyRecord | null): Promise<string[]>;
|
|
100
|
+
/**
|
|
101
|
+
* Validates and applies unified diff to feature worktree.
|
|
102
|
+
*
|
|
103
|
+
* Full validation pipeline:
|
|
104
|
+
* 1. Load accepted plan
|
|
105
|
+
* 2. Verify required locks held
|
|
106
|
+
* 3. Validate patch format
|
|
107
|
+
* 4. Enforce path restrictions
|
|
108
|
+
* 5. Apply patch atomically
|
|
109
|
+
* 6. Update state with patch metadata
|
|
110
|
+
*
|
|
111
|
+
* @param featureId - feature identifier
|
|
112
|
+
* @param patch - unified diff content
|
|
113
|
+
* @returns Success response with applied patch metadata
|
|
114
|
+
* @throws PLAN_NOT_FOUND - no accepted plan
|
|
115
|
+
* @throws LOCK_NOT_HELD - required locks not held
|
|
116
|
+
* @throws PATCH_VALIDATION_FAILED - invalid format or path violations
|
|
117
|
+
* @throws PATCH_APPLICATION_FAILED - git apply failed
|
|
118
|
+
*
|
|
119
|
+
* @example
|
|
120
|
+
* ```typescript
|
|
121
|
+
* const diff = `--- a/file.ts\n+++ b/file.ts\n...`;
|
|
122
|
+
* await patchService.repoApplyPatch('my_feature', diff);
|
|
123
|
+
* ```
|
|
124
|
+
*/
|
|
31
125
|
repoApplyPatch(featureId: string, unifiedDiff: string): Promise<{
|
|
32
126
|
data: {
|
|
33
127
|
feature_id: string;
|
|
@@ -26,6 +26,41 @@ function normalizeFromWorktree(worktreePath, repoRoot, repoRelativeFromWorktree)
|
|
|
26
26
|
}
|
|
27
27
|
return path.relative(repoRoot, absolute).replaceAll('\\\\', '/');
|
|
28
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* Manages patch validation and atomic application.
|
|
31
|
+
*
|
|
32
|
+
* ## Responsibilities
|
|
33
|
+
* - Validate unified diff format
|
|
34
|
+
* - Enforce plan area restrictions
|
|
35
|
+
* - Apply policy path rules
|
|
36
|
+
* - Verify lock requirements
|
|
37
|
+
* - Apply patches atomically to worktree
|
|
38
|
+
*
|
|
39
|
+
* ## Dependencies
|
|
40
|
+
* Depends on {@link PatchServicePort} for:
|
|
41
|
+
* - Plan and policy access
|
|
42
|
+
* - State operations
|
|
43
|
+
* - Worktree path resolution
|
|
44
|
+
*
|
|
45
|
+
* ## Key Methods
|
|
46
|
+
* - `repoApplyPatch()` - validate and apply unified diff
|
|
47
|
+
* - `validatePatchPaths()` - enforce plan/policy path rules
|
|
48
|
+
* - `assertPlanLocksHeld()` - verify required locks
|
|
49
|
+
*
|
|
50
|
+
* ## Error Conditions
|
|
51
|
+
* - PATCH_VALIDATION_FAILED - invalid diff format or path violations
|
|
52
|
+
* - LOCK_NOT_HELD - required locks not acquired
|
|
53
|
+
* - PLAN_NOT_FOUND - no accepted plan exists
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* ```typescript
|
|
57
|
+
* const patchService = new PatchService(port);
|
|
58
|
+
* await patchService.repoApplyPatch('my_feature', unifiedDiff);
|
|
59
|
+
* ```
|
|
60
|
+
*
|
|
61
|
+
* ## Thread Safety
|
|
62
|
+
* Patch application is atomic within feature worktree.
|
|
63
|
+
*/
|
|
29
64
|
export class PatchService {
|
|
30
65
|
port;
|
|
31
66
|
gateSelectionService;
|
|
@@ -33,6 +68,12 @@ export class PatchService {
|
|
|
33
68
|
this.port = port;
|
|
34
69
|
this.gateSelectionService = new GateSelectionService(port);
|
|
35
70
|
}
|
|
71
|
+
/**
|
|
72
|
+
* Loads accepted plan for a feature.
|
|
73
|
+
*
|
|
74
|
+
* @param featureId - feature identifier
|
|
75
|
+
* @returns Plan object or null if not found
|
|
76
|
+
*/
|
|
36
77
|
async loadAcceptedPlan(featureId) {
|
|
37
78
|
const plan = await readJson(this.port.planPath(featureId), null);
|
|
38
79
|
if (!plan && this.port.getPolicySnapshot().patch_policy.enforce_plan) {
|
|
@@ -61,6 +102,13 @@ export class PatchService {
|
|
|
61
102
|
}
|
|
62
103
|
return sortResourcesDeterministically(resources);
|
|
63
104
|
}
|
|
105
|
+
/**
|
|
106
|
+
* Verifies required resource locks are held for plan.
|
|
107
|
+
*
|
|
108
|
+
* @param featureId - feature identifier
|
|
109
|
+
* @param plan - plan requiring locks
|
|
110
|
+
* @throws LOCK_NOT_HELD - required locks not held
|
|
111
|
+
*/
|
|
64
112
|
async assertPlanLocksHeld(featureId, plan) {
|
|
65
113
|
const state = await this.port.readState(featureId);
|
|
66
114
|
const held = new Set(readHeldLocks(state.frontMatter));
|
|
@@ -78,6 +126,24 @@ export class PatchService {
|
|
|
78
126
|
};
|
|
79
127
|
}
|
|
80
128
|
}
|
|
129
|
+
/**
|
|
130
|
+
* Validates patch paths against plan areas and policy rules.
|
|
131
|
+
*
|
|
132
|
+
* Enforces:
|
|
133
|
+
* - Paths must be in plan allowed_areas
|
|
134
|
+
* - Paths must not be in plan forbidden_areas
|
|
135
|
+
* - Paths must not violate policy path rules
|
|
136
|
+
*
|
|
137
|
+
* @param featureId - feature identifier
|
|
138
|
+
* @param patch - unified diff content
|
|
139
|
+
* @param plan - accepted plan with area restrictions
|
|
140
|
+
* @throws PATCH_VALIDATION_FAILED - path violations detected
|
|
141
|
+
*
|
|
142
|
+
* @example
|
|
143
|
+
* ```typescript
|
|
144
|
+
* await patchService.validatePatchPaths('my_feature', diff, plan);
|
|
145
|
+
* ```
|
|
146
|
+
*/
|
|
81
147
|
async validatePatchPaths(featureId, parsedDiff, plan) {
|
|
82
148
|
const policy = this.port.getPolicySnapshot();
|
|
83
149
|
const repoRoot = this.port.getRepoRoot();
|
|
@@ -130,6 +196,31 @@ export class PatchService {
|
|
|
130
196
|
}
|
|
131
197
|
return normalizedTouched;
|
|
132
198
|
}
|
|
199
|
+
/**
|
|
200
|
+
* Validates and applies unified diff to feature worktree.
|
|
201
|
+
*
|
|
202
|
+
* Full validation pipeline:
|
|
203
|
+
* 1. Load accepted plan
|
|
204
|
+
* 2. Verify required locks held
|
|
205
|
+
* 3. Validate patch format
|
|
206
|
+
* 4. Enforce path restrictions
|
|
207
|
+
* 5. Apply patch atomically
|
|
208
|
+
* 6. Update state with patch metadata
|
|
209
|
+
*
|
|
210
|
+
* @param featureId - feature identifier
|
|
211
|
+
* @param patch - unified diff content
|
|
212
|
+
* @returns Success response with applied patch metadata
|
|
213
|
+
* @throws PLAN_NOT_FOUND - no accepted plan
|
|
214
|
+
* @throws LOCK_NOT_HELD - required locks not held
|
|
215
|
+
* @throws PATCH_VALIDATION_FAILED - invalid format or path violations
|
|
216
|
+
* @throws PATCH_APPLICATION_FAILED - git apply failed
|
|
217
|
+
*
|
|
218
|
+
* @example
|
|
219
|
+
* ```typescript
|
|
220
|
+
* const diff = `--- a/file.ts\n+++ b/file.ts\n...`;
|
|
221
|
+
* await patchService.repoApplyPatch('my_feature', diff);
|
|
222
|
+
* ```
|
|
223
|
+
*/
|
|
133
224
|
async repoApplyPatch(featureId, unifiedDiff) {
|
|
134
225
|
const plan = await this.loadAcceptedPlan(featureId);
|
|
135
226
|
const state = await this.port.readState(featureId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"patch-service.js","sourceRoot":"","sources":["../../../../../apps/control-plane/src/application/services/patch-service.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,8BAA8B,GAC/B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAUnE,SAAS,OAAO,CAAc,KAAc;IAC1C,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,KAAa,CAAC,CAAC,CAAC,EAAE,CAAC;AACpD,CAAC;AAED,SAAS,eAAe,CAAC,MAAiB,EAAE,GAAW;IACrD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,OAAO,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAE,KAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;AACxE,CAAC;AAED,SAAS,aAAa,CAAC,WAAsB;IAC3C,MAAM,KAAK,GAAG,eAAe,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACpD,OAAO,OAAO,CAAS,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC;AAChF,CAAC;AAED,SAAS,qBAAqB,CAC5B,YAAoB,EACpB,QAAgB,EAChB,wBAAgC;IAEhC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,wBAAwB,CAAC,CAAC;IAClE,MAAM,uBAAuB,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9F,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/C,OAAO,uBAAuB,CAAC;IACjC,CAAC;IACD,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACnE,CAAC;
|
|
1
|
+
{"version":3,"file":"patch-service.js","sourceRoot":"","sources":["../../../../../apps/control-plane/src/application/services/patch-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Performance analytics and outcome tracking service.
|
|
3
|
+
*/
|
|
1
4
|
export interface FeatureOutcome {
|
|
2
5
|
feature_id: string;
|
|
3
6
|
provider: string;
|
|
@@ -29,11 +32,97 @@ export interface PerformanceAnalyticsServicePort {
|
|
|
29
32
|
analyticsPath(): string;
|
|
30
33
|
getPolicySnapshot(): Record<string, unknown>;
|
|
31
34
|
}
|
|
35
|
+
/**
|
|
36
|
+
* Manages performance analytics and outcome tracking.
|
|
37
|
+
*
|
|
38
|
+
* ## Responsibilities
|
|
39
|
+
* - Record feature outcomes (status, retries, duration, cost)
|
|
40
|
+
* - Aggregate metrics by provider/model
|
|
41
|
+
* - Calculate success rates and averages
|
|
42
|
+
* - Provide analytics for dashboard
|
|
43
|
+
*
|
|
44
|
+
* ## Dependencies
|
|
45
|
+
* Depends on {@link PerformanceAnalyticsServicePort} for:
|
|
46
|
+
* - Analytics file path resolution
|
|
47
|
+
* - Timestamp utilities
|
|
48
|
+
*
|
|
49
|
+
* ## Key Methods
|
|
50
|
+
* - `recordOutcome()` - record feature outcome
|
|
51
|
+
* - `getAnalytics()` - retrieve aggregated metrics
|
|
52
|
+
* - `getProviderStats()` - get metrics by provider/model
|
|
53
|
+
*
|
|
54
|
+
* ## Error Conditions
|
|
55
|
+
* - FILE_NOT_FOUND - analytics file does not exist
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```typescript
|
|
59
|
+
* const perfService = new PerformanceAnalyticsService(port);
|
|
60
|
+
* await perfService.recordOutcome({
|
|
61
|
+
* feature_id: 'my_feature',
|
|
62
|
+
* status: 'merged',
|
|
63
|
+
* provider: 'claude',
|
|
64
|
+
* model: 'claude-3-5-sonnet-20241022',
|
|
65
|
+
* retries: 2,
|
|
66
|
+
* duration_ms: 300000,
|
|
67
|
+
* cost_usd: 1.50
|
|
68
|
+
* });
|
|
69
|
+
* const analytics = await perfService.getAnalytics();
|
|
70
|
+
* ```
|
|
71
|
+
*
|
|
72
|
+
* ## Metrics Tracked
|
|
73
|
+
* - Success rate by provider/model
|
|
74
|
+
* - Average cost per feature
|
|
75
|
+
* - Average duration per phase
|
|
76
|
+
* - Retry counts and reasons
|
|
77
|
+
*/
|
|
32
78
|
export declare class PerformanceAnalyticsService {
|
|
33
79
|
private readonly port;
|
|
34
80
|
constructor(port: PerformanceAnalyticsServicePort);
|
|
81
|
+
/**
|
|
82
|
+
* Records feature outcome for analytics.
|
|
83
|
+
*
|
|
84
|
+
* @param outcome - outcome data (status, retries, duration, cost, provider, model)
|
|
85
|
+
* @returns Updated analytics snapshot
|
|
86
|
+
*
|
|
87
|
+
* @example
|
|
88
|
+
* ```typescript
|
|
89
|
+
* await perfService.recordOutcome({
|
|
90
|
+
* feature_id: 'my_feature',
|
|
91
|
+
* status: 'merged',
|
|
92
|
+
* provider: 'claude',
|
|
93
|
+
* model: 'claude-3-5-sonnet-20241022',
|
|
94
|
+
* retries: 2,
|
|
95
|
+
* duration_ms: 300000,
|
|
96
|
+
* cost_usd: 1.50
|
|
97
|
+
* });
|
|
98
|
+
* ```
|
|
99
|
+
*/
|
|
35
100
|
recordOutcome(outcome: FeatureOutcome): Promise<AnalyticsSnapshot>;
|
|
101
|
+
/**
|
|
102
|
+
* Retrieves aggregated performance analytics.
|
|
103
|
+
*
|
|
104
|
+
* @returns Analytics snapshot with provider/model metrics
|
|
105
|
+
*
|
|
106
|
+
* @example
|
|
107
|
+
* ```typescript
|
|
108
|
+
* const analytics = await perfService.getAnalytics();
|
|
109
|
+
* console.log(analytics.by_provider);
|
|
110
|
+
* ```
|
|
111
|
+
*/
|
|
36
112
|
getAnalytics(): Promise<AnalyticsSnapshot>;
|
|
113
|
+
/**
|
|
114
|
+
* Retrieves provider/model statistics with optional filtering.
|
|
115
|
+
*
|
|
116
|
+
* @param provider - optional provider filter
|
|
117
|
+
* @param model - optional model filter
|
|
118
|
+
* @returns Array of provider/model stats
|
|
119
|
+
*
|
|
120
|
+
* @example
|
|
121
|
+
* ```typescript
|
|
122
|
+
* const stats = await perfService.getProviderStats('claude');
|
|
123
|
+
* console.log(stats[0].success_rate);
|
|
124
|
+
* ```
|
|
125
|
+
*/
|
|
37
126
|
getProviderStats(provider?: string, model?: string): Promise<ProviderModelStats[]>;
|
|
38
127
|
private readSnapshot;
|
|
39
128
|
}
|