erosolar-cli 2.1.282 → 2.1.283

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.
@@ -0,0 +1,117 @@
1
+ /**
2
+ * OrchestrationUIBridge - Unified bridge between orchestration execution and UI updates
3
+ *
4
+ * This module provides real-time integration between the UnifiedOrchestrator and the UI system.
5
+ * It ensures orchestration progress is displayed as it happens, not just at completion.
6
+ *
7
+ * Architecture:
8
+ * - Wraps UnifiedOrchestrator with event emission
9
+ * - Connects to UIUpdateCoordinator for serialized UI updates
10
+ * - Connects to StatusOrchestrator for status management
11
+ * - Provides Display integration for output rendering
12
+ *
13
+ * Key Features:
14
+ * - Real-time command execution feedback
15
+ * - Progressive findings display
16
+ * - Status line updates during execution
17
+ * - Proper error handling and recovery
18
+ * - Clean separation of concerns
19
+ */
20
+ import { EventEmitter } from 'node:events';
21
+ import { type ExecutionResult, type Finding, type OperationReport, type OperationConfig } from '../../core/unifiedOrchestrator.js';
22
+ import { UIUpdateCoordinator } from './UIUpdateCoordinator.js';
23
+ import { StatusOrchestrator } from './StatusOrchestrator.js';
24
+ import { Display } from '../display.js';
25
+ export type OrchestrationPhase = 'initializing' | 'analyzing' | 'executing' | 'reporting' | 'complete' | 'error';
26
+ export interface OrchestrationProgress {
27
+ phase: OrchestrationPhase;
28
+ currentCommand?: string;
29
+ commandIndex: number;
30
+ totalCommands: number;
31
+ elapsedMs: number;
32
+ findings: Finding[];
33
+ errors: string[];
34
+ }
35
+ export interface OrchestrationEvent {
36
+ type: 'start' | 'progress' | 'command' | 'finding' | 'complete' | 'error';
37
+ timestamp: number;
38
+ data: unknown;
39
+ }
40
+ export interface OrchestrationUIBridgeConfig {
41
+ display: Display;
42
+ updateCoordinator?: UIUpdateCoordinator;
43
+ statusOrchestrator?: StatusOrchestrator;
44
+ showRealTimeOutput?: boolean;
45
+ showProgressBar?: boolean;
46
+ maxVisibleFindings?: number;
47
+ verboseMode?: boolean;
48
+ }
49
+ export interface OrchestrationUIState {
50
+ isRunning: boolean;
51
+ phase: OrchestrationPhase;
52
+ progress: number;
53
+ currentCommand: string | null;
54
+ findingsCount: number;
55
+ errorsCount: number;
56
+ elapsedMs: number;
57
+ }
58
+ export declare class OrchestrationUIBridge extends EventEmitter {
59
+ private readonly display;
60
+ private readonly updateCoordinator;
61
+ private readonly statusOrchestrator;
62
+ private readonly config;
63
+ private orchestrator;
64
+ private currentState;
65
+ private startTime;
66
+ private commandResults;
67
+ private findings;
68
+ private heartbeatId;
69
+ private disposed;
70
+ constructor(config: OrchestrationUIBridgeConfig);
71
+ /**
72
+ * Execute an orchestration operation with real-time UI updates.
73
+ */
74
+ execute(objective: string, options?: Partial<OperationConfig>): Promise<OperationReport>;
75
+ /**
76
+ * Execute a specific command with UI feedback.
77
+ */
78
+ executeCommand(command: string, timeout?: number): Promise<ExecutionResult>;
79
+ /**
80
+ * Get current orchestration state.
81
+ */
82
+ getState(): OrchestrationUIState;
83
+ /**
84
+ * Check if orchestration is currently running.
85
+ */
86
+ isRunning(): boolean;
87
+ /**
88
+ * Dispose the bridge and clean up resources.
89
+ */
90
+ dispose(): void;
91
+ private executeWithProgress;
92
+ private showStartBanner;
93
+ private displayCommandResult;
94
+ private displayReport;
95
+ private handleError;
96
+ private setPhase;
97
+ private updateStatus;
98
+ private getProgress;
99
+ private startHeartbeat;
100
+ private stopHeartbeat;
101
+ private updateElapsedTime;
102
+ private setupStatusListeners;
103
+ private handleToolStatusEvent;
104
+ private emitEvent;
105
+ private enqueueUIUpdate;
106
+ private createInitialState;
107
+ private reset;
108
+ private truncate;
109
+ private formatElapsed;
110
+ private getSeverityColor;
111
+ }
112
+ /**
113
+ * Create an OrchestrationUIBridge with default configuration.
114
+ */
115
+ export declare function createOrchestrationUIBridge(display: Display, options?: Partial<Omit<OrchestrationUIBridgeConfig, 'display'>>): OrchestrationUIBridge;
116
+ export type { ExecutionResult, Finding, OperationReport, OperationConfig, };
117
+ //# sourceMappingURL=OrchestrationUIBridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OrchestrationUIBridge.d.ts","sourceRoot":"","sources":["../../../src/ui/orchestration/OrchestrationUIBridge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,435 @@
1
+ /**
2
+ * OrchestrationUIBridge - Unified bridge between orchestration execution and UI updates
3
+ *
4
+ * This module provides real-time integration between the UnifiedOrchestrator and the UI system.
5
+ * It ensures orchestration progress is displayed as it happens, not just at completion.
6
+ *
7
+ * Architecture:
8
+ * - Wraps UnifiedOrchestrator with event emission
9
+ * - Connects to UIUpdateCoordinator for serialized UI updates
10
+ * - Connects to StatusOrchestrator for status management
11
+ * - Provides Display integration for output rendering
12
+ *
13
+ * Key Features:
14
+ * - Real-time command execution feedback
15
+ * - Progressive findings display
16
+ * - Status line updates during execution
17
+ * - Proper error handling and recovery
18
+ * - Clean separation of concerns
19
+ */
20
+ import { EventEmitter } from 'node:events';
21
+ import { UnifiedOrchestrator, } from '../../core/unifiedOrchestrator.js';
22
+ import { UIUpdateCoordinator } from './UIUpdateCoordinator.js';
23
+ import { StatusOrchestrator } from './StatusOrchestrator.js';
24
+ import { theme, icons } from '../theme.js';
25
+ // ============================================================================
26
+ // OrchestrationUIBridge
27
+ // ============================================================================
28
+ export class OrchestrationUIBridge extends EventEmitter {
29
+ display;
30
+ updateCoordinator;
31
+ statusOrchestrator;
32
+ config;
33
+ orchestrator = null;
34
+ currentState;
35
+ startTime = 0;
36
+ commandResults = [];
37
+ findings = [];
38
+ heartbeatId = null;
39
+ disposed = false;
40
+ constructor(config) {
41
+ super();
42
+ this.display = config.display;
43
+ this.updateCoordinator = config.updateCoordinator ?? new UIUpdateCoordinator('idle');
44
+ this.statusOrchestrator = config.statusOrchestrator ?? new StatusOrchestrator();
45
+ this.config = {
46
+ showRealTimeOutput: config.showRealTimeOutput ?? true,
47
+ showProgressBar: config.showProgressBar ?? true,
48
+ maxVisibleFindings: config.maxVisibleFindings ?? 5,
49
+ verboseMode: config.verboseMode ?? false,
50
+ };
51
+ this.currentState = this.createInitialState();
52
+ this.setupStatusListeners();
53
+ }
54
+ // --------------------------------------------------------------------------
55
+ // Public API
56
+ // --------------------------------------------------------------------------
57
+ /**
58
+ * Execute an orchestration operation with real-time UI updates.
59
+ */
60
+ async execute(objective, options) {
61
+ if (this.disposed) {
62
+ throw new Error('OrchestrationUIBridge has been disposed');
63
+ }
64
+ this.reset();
65
+ this.startTime = Date.now();
66
+ this.orchestrator = new UnifiedOrchestrator(options?.target);
67
+ try {
68
+ this.setPhase('initializing');
69
+ this.updateCoordinator.setMode('processing');
70
+ this.startHeartbeat();
71
+ this.showStartBanner(objective);
72
+ this.setPhase('analyzing');
73
+ this.updateStatus(`Analyzing: ${this.truncate(objective, 50)}`);
74
+ this.setPhase('executing');
75
+ const report = await this.executeWithProgress(objective, options);
76
+ this.setPhase('reporting');
77
+ this.displayReport(report);
78
+ this.setPhase('complete');
79
+ return report;
80
+ }
81
+ catch (error) {
82
+ this.setPhase('error');
83
+ this.handleError(error);
84
+ throw error;
85
+ }
86
+ finally {
87
+ this.stopHeartbeat();
88
+ this.updateCoordinator.setMode('idle');
89
+ this.orchestrator = null;
90
+ }
91
+ }
92
+ /**
93
+ * Execute a specific command with UI feedback.
94
+ */
95
+ async executeCommand(command, timeout) {
96
+ if (!this.orchestrator) {
97
+ this.orchestrator = new UnifiedOrchestrator();
98
+ }
99
+ this.currentState.currentCommand = command;
100
+ this.updateStatus(`Running: ${this.truncate(command, 40)}`);
101
+ const startTime = Date.now();
102
+ const result = this.orchestrator.exec(command, timeout);
103
+ const duration = Date.now() - startTime;
104
+ this.commandResults.push(result);
105
+ this.currentState.currentCommand = null;
106
+ // Analyze for findings
107
+ const newFindings = this.orchestrator.analyze(result.output, command);
108
+ this.findings.push(...newFindings);
109
+ // Emit events
110
+ this.emitEvent('command', { command, result, duration });
111
+ for (const finding of newFindings) {
112
+ this.emitEvent('finding', finding);
113
+ }
114
+ // Update UI
115
+ if (this.config.showRealTimeOutput) {
116
+ this.displayCommandResult(command, result);
117
+ }
118
+ return result;
119
+ }
120
+ /**
121
+ * Get current orchestration state.
122
+ */
123
+ getState() {
124
+ return { ...this.currentState };
125
+ }
126
+ /**
127
+ * Check if orchestration is currently running.
128
+ */
129
+ isRunning() {
130
+ return this.currentState.isRunning;
131
+ }
132
+ /**
133
+ * Dispose the bridge and clean up resources.
134
+ */
135
+ dispose() {
136
+ if (this.disposed)
137
+ return;
138
+ this.disposed = true;
139
+ this.stopHeartbeat();
140
+ this.statusOrchestrator.dispose();
141
+ this.updateCoordinator.dispose();
142
+ this.removeAllListeners();
143
+ }
144
+ // --------------------------------------------------------------------------
145
+ // Execution with Progress
146
+ // --------------------------------------------------------------------------
147
+ async executeWithProgress(objective, options) {
148
+ if (!this.orchestrator) {
149
+ throw new Error('Orchestrator not initialized');
150
+ }
151
+ // Use the orchestrator's execute method but intercept progress
152
+ const report = await this.orchestrator.execute({
153
+ objective,
154
+ ...options,
155
+ });
156
+ // Collect results and findings
157
+ this.commandResults = this.orchestrator.getResults();
158
+ this.findings = this.orchestrator.getFindings();
159
+ // Update state
160
+ this.currentState.findingsCount = this.findings.length;
161
+ this.currentState.errorsCount = this.commandResults.filter(r => !r.success).length;
162
+ this.currentState.progress = 100;
163
+ return report;
164
+ }
165
+ // --------------------------------------------------------------------------
166
+ // UI Updates
167
+ // --------------------------------------------------------------------------
168
+ showStartBanner(objective) {
169
+ const lines = [
170
+ '',
171
+ theme.gradient?.primary?.('━'.repeat(60)) ?? '━'.repeat(60),
172
+ `${icons.action ?? '▶'} ${theme.bold?.('Orchestration Started') ?? 'Orchestration Started'}`,
173
+ theme.gradient?.primary?.('━'.repeat(60)) ?? '━'.repeat(60),
174
+ '',
175
+ `${theme.secondary?.('Objective:') ?? 'Objective:'} ${objective}`,
176
+ '',
177
+ ];
178
+ this.enqueueUIUpdate('prompt', () => {
179
+ this.display.writeRaw(lines.join('\n'));
180
+ }, 'orchestration-banner');
181
+ }
182
+ displayCommandResult(command, result) {
183
+ const status = result.success
184
+ ? theme.success?.('✓') ?? '✓'
185
+ : theme.error?.('✗') ?? '✗';
186
+ const duration = result.duration < 1000
187
+ ? `${result.duration}ms`
188
+ : `${(result.duration / 1000).toFixed(1)}s`;
189
+ const line = ` ${status} ${this.truncate(command, 60)} ${theme.ui?.muted?.(`(${duration})`) ?? `(${duration})`}`;
190
+ this.enqueueUIUpdate('tool', () => {
191
+ this.display.writeRaw(`${line}\n`);
192
+ }, `cmd-${Date.now()}`);
193
+ // Show errors inline
194
+ if (!result.success && result.error) {
195
+ const errorLine = ` ${theme.error?.(result.error) ?? result.error}`;
196
+ this.enqueueUIUpdate('tool', () => {
197
+ this.display.writeRaw(`${errorLine}\n`);
198
+ }, `cmd-err-${Date.now()}`);
199
+ }
200
+ }
201
+ displayReport(report) {
202
+ const lines = [''];
203
+ // Header
204
+ const statusIcon = report.success
205
+ ? theme.success?.('✓') ?? '✓'
206
+ : theme.warning?.('⚠') ?? '⚠';
207
+ const statusText = report.success ? 'Complete' : 'Issues Found';
208
+ lines.push(`${statusIcon} ${theme.bold?.(statusText) ?? statusText}`);
209
+ // Metrics
210
+ const duration = report.duration < 1000
211
+ ? `${report.duration}ms`
212
+ : `${(report.duration / 1000).toFixed(1)}s`;
213
+ const successCount = report.results.filter(r => r.success).length;
214
+ lines.push(` Duration: ${duration}`);
215
+ lines.push(` Commands Executed: ${report.results.length}`);
216
+ lines.push(` Success Rate: ${successCount}/${report.results.length}`);
217
+ lines.push('');
218
+ // Findings
219
+ if (report.findings.length > 0) {
220
+ lines.push(theme.bold?.('Findings') ?? 'Findings');
221
+ for (const finding of report.findings.slice(0, this.config.maxVisibleFindings)) {
222
+ const severityColor = this.getSeverityColor(finding.severity);
223
+ lines.push(` • ${severityColor(`[${finding.severity.toUpperCase()}]`)} ${finding.title}`);
224
+ if (finding.recommendation) {
225
+ lines.push(` Recommendation: ${finding.recommendation}`);
226
+ }
227
+ }
228
+ if (report.findings.length > this.config.maxVisibleFindings) {
229
+ lines.push(` ... and ${report.findings.length - this.config.maxVisibleFindings} more`);
230
+ }
231
+ lines.push('');
232
+ }
233
+ // Failed commands
234
+ const failed = report.results.filter(r => !r.success);
235
+ if (failed.length > 0) {
236
+ lines.push(theme.bold?.('Failed Commands') ?? 'Failed Commands');
237
+ for (const result of failed.slice(0, 5)) {
238
+ lines.push(` • ${theme.error?.('✗') ?? '✗'} ${this.truncate(result.command ?? 'unknown', 60)}`);
239
+ if (result.error) {
240
+ lines.push(` ${theme.ui?.muted?.(result.error) ?? result.error}`);
241
+ }
242
+ }
243
+ if (failed.length > 5) {
244
+ lines.push(` ... and ${failed.length - 5} more`);
245
+ }
246
+ lines.push('');
247
+ }
248
+ // Summary
249
+ lines.push(theme.bold?.('Summary') ?? 'Summary');
250
+ lines.push(` ${report.summary}`);
251
+ lines.push('');
252
+ this.enqueueUIUpdate('prompt', () => {
253
+ this.display.writeRaw(lines.join('\n'));
254
+ }, 'orchestration-report');
255
+ }
256
+ handleError(error) {
257
+ const message = error instanceof Error ? error.message : String(error);
258
+ this.currentState.errorsCount++;
259
+ this.enqueueUIUpdate('prompt', () => {
260
+ this.display.showError('Orchestration Error', error);
261
+ }, 'orchestration-error');
262
+ this.emitEvent('error', { error: message });
263
+ }
264
+ // --------------------------------------------------------------------------
265
+ // Status Management
266
+ // --------------------------------------------------------------------------
267
+ setPhase(phase) {
268
+ this.currentState.phase = phase;
269
+ this.currentState.isRunning = phase !== 'complete' && phase !== 'error';
270
+ this.currentState.elapsedMs = Date.now() - this.startTime;
271
+ const phaseDescriptions = {
272
+ initializing: 'Initializing orchestration...',
273
+ analyzing: 'Analyzing objective...',
274
+ executing: 'Executing commands...',
275
+ reporting: 'Generating report...',
276
+ complete: 'Orchestration complete',
277
+ error: 'Orchestration error',
278
+ };
279
+ this.updateStatus(phaseDescriptions[phase]);
280
+ this.emitEvent('progress', this.getProgress());
281
+ }
282
+ updateStatus(status) {
283
+ this.statusOrchestrator.setBaseStatus({
284
+ text: status,
285
+ tone: 'info',
286
+ startedAt: this.startTime,
287
+ });
288
+ }
289
+ getProgress() {
290
+ return {
291
+ phase: this.currentState.phase,
292
+ currentCommand: this.currentState.currentCommand ?? undefined,
293
+ commandIndex: this.commandResults.length,
294
+ totalCommands: this.commandResults.length,
295
+ elapsedMs: Date.now() - this.startTime,
296
+ findings: [...this.findings],
297
+ errors: this.commandResults.filter(r => !r.success).map(r => r.error ?? 'Unknown error'),
298
+ };
299
+ }
300
+ // --------------------------------------------------------------------------
301
+ // Heartbeat & Status Updates
302
+ // --------------------------------------------------------------------------
303
+ startHeartbeat() {
304
+ if (this.heartbeatId)
305
+ return;
306
+ this.heartbeatId = `orchestration-heartbeat-${Date.now()}`;
307
+ this.updateCoordinator.startHeartbeat(this.heartbeatId, {
308
+ intervalMs: 1000,
309
+ run: () => {
310
+ if (this.currentState.isRunning) {
311
+ this.updateElapsedTime();
312
+ }
313
+ },
314
+ mode: ['processing', 'tooling'],
315
+ immediate: false,
316
+ });
317
+ }
318
+ stopHeartbeat() {
319
+ if (this.heartbeatId) {
320
+ this.updateCoordinator.stopHeartbeat(this.heartbeatId);
321
+ this.heartbeatId = null;
322
+ }
323
+ }
324
+ updateElapsedTime() {
325
+ this.currentState.elapsedMs = Date.now() - this.startTime;
326
+ const elapsed = this.formatElapsed(this.currentState.elapsedMs);
327
+ const statusText = this.currentState.currentCommand
328
+ ? `Running: ${this.truncate(this.currentState.currentCommand, 40)} (${elapsed})`
329
+ : `Orchestrating... (${elapsed})`;
330
+ this.statusOrchestrator.setBaseStatus({
331
+ text: statusText,
332
+ tone: 'info',
333
+ startedAt: this.startTime,
334
+ });
335
+ }
336
+ // --------------------------------------------------------------------------
337
+ // Event Handling
338
+ // --------------------------------------------------------------------------
339
+ setupStatusListeners() {
340
+ this.statusOrchestrator.subscribe((event) => {
341
+ if (event.type.startsWith('tool.')) {
342
+ this.handleToolStatusEvent(event.type, event.data);
343
+ }
344
+ });
345
+ }
346
+ handleToolStatusEvent(type, status) {
347
+ // Bridge tool status to orchestration progress
348
+ if (type === 'tool.start') {
349
+ this.currentState.currentCommand = status.description;
350
+ }
351
+ else if (type === 'tool.complete' || type === 'tool.error') {
352
+ this.currentState.currentCommand = null;
353
+ }
354
+ }
355
+ emitEvent(type, data) {
356
+ const event = {
357
+ type,
358
+ timestamp: Date.now(),
359
+ data,
360
+ };
361
+ this.emit(type, event);
362
+ this.emit('event', event);
363
+ }
364
+ // --------------------------------------------------------------------------
365
+ // UI Update Coordination
366
+ // --------------------------------------------------------------------------
367
+ enqueueUIUpdate(lane, run, coalesceKey) {
368
+ this.updateCoordinator.enqueue({
369
+ lane,
370
+ run,
371
+ description: 'orchestration-update',
372
+ priority: 'normal',
373
+ coalesceKey,
374
+ });
375
+ }
376
+ // --------------------------------------------------------------------------
377
+ // Helpers
378
+ // --------------------------------------------------------------------------
379
+ createInitialState() {
380
+ return {
381
+ isRunning: false,
382
+ phase: 'initializing',
383
+ progress: 0,
384
+ currentCommand: null,
385
+ findingsCount: 0,
386
+ errorsCount: 0,
387
+ elapsedMs: 0,
388
+ };
389
+ }
390
+ reset() {
391
+ this.currentState = this.createInitialState();
392
+ this.commandResults = [];
393
+ this.findings = [];
394
+ this.startTime = 0;
395
+ }
396
+ truncate(text, maxLength) {
397
+ if (text.length <= maxLength)
398
+ return text;
399
+ return `${text.slice(0, maxLength - 3)}...`;
400
+ }
401
+ formatElapsed(ms) {
402
+ const seconds = Math.floor(ms / 1000);
403
+ if (seconds < 60)
404
+ return `${seconds}s`;
405
+ const minutes = Math.floor(seconds / 60);
406
+ const remainingSeconds = seconds % 60;
407
+ return `${minutes}m ${remainingSeconds}s`;
408
+ }
409
+ getSeverityColor(severity) {
410
+ switch (severity) {
411
+ case 'critical':
412
+ case 'high':
413
+ return theme.error ?? ((t) => t);
414
+ case 'medium':
415
+ return theme.warning ?? ((t) => t);
416
+ case 'low':
417
+ case 'info':
418
+ default:
419
+ return theme.ui?.muted ?? ((t) => t);
420
+ }
421
+ }
422
+ }
423
+ // ============================================================================
424
+ // Factory Function
425
+ // ============================================================================
426
+ /**
427
+ * Create an OrchestrationUIBridge with default configuration.
428
+ */
429
+ export function createOrchestrationUIBridge(display, options) {
430
+ return new OrchestrationUIBridge({
431
+ display,
432
+ ...options,
433
+ });
434
+ }
435
+ //# sourceMappingURL=OrchestrationUIBridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OrchestrationUIBridge.js","sourceRoot":"","sources":["../../../src/ui/orchestration/OrchestrationUIBridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EACL,mBAAmB,GAKpB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAkC,MAAM,0BAA0B,CAAC;AAC/F,OAAO,EAAE,kBAAkB,EAAmB,MAAM,yBAAyB,CAAC;AAE9E,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAkD3C,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAE/E,MAAM,OAAO,qBAAsB,SAAQ,YAAY;IACpC,OAAO,CAAU;IACjB,iBAAiB,CAAsB;IACvC,kBAAkB,CAAqB;IACvC,MAAM,CAAsG;IAErH,YAAY,GAA+B,IAAI,CAAC;IAChD,YAAY,CAAuB;IACnC,SAAS,GAAW,CAAC,CAAC;IACtB,cAAc,GAAsB,EAAE,CAAC;IACvC,QAAQ,GAAc,EAAE,CAAC;IACzB,WAAW,GAAkB,IAAI,CAAC;IAClC,QAAQ,GAAG,KAAK,CAAC;IAEzB,YAAY,MAAmC;QAC7C,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,IAAI,IAAI,mBAAmB,CAAC,MAAM,CAAC,CAAC;QACrF,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,IAAI,IAAI,kBAAkB,EAAE,CAAC;QAEhF,IAAI,CAAC,MAAM,GAAG;YACZ,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,IAAI,IAAI;YACrD,eAAe,EAAE,MAAM,CAAC,eAAe,IAAI,IAAI;YAC/C,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,IAAI,CAAC;YAClD,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,KAAK;SACzC,CAAC;QAEF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC9C,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC9B,CAAC;IAED,6EAA6E;IAC7E,aAAa;IACb,6EAA6E;IAE7E;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,SAAiB,EAAE,OAAkC;QACjE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC7D,CAAC;QAED,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,YAAY,GAAG,IAAI,mBAAmB,CAAC,OAAO,EAAE,MAA4B,CAAC,CAAC;QAEnF,IAAI,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;YAC9B,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YAC7C,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;YAEhC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YAC3B,IAAI,CAAC,YAAY,CAAC,cAAc,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;YAEhE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YAC3B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAElE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YAC3B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAE3B,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YAC1B,OAAO,MAAM,CAAC;QAEhB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACvB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACxB,MAAM,KAAK,CAAC;QAEd,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACvC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAC3B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,OAAe,EAAE,OAAgB;QACpD,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,IAAI,CAAC,YAAY,GAAG,IAAI,mBAAmB,EAAE,CAAC;QAChD,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,cAAc,GAAG,OAAO,CAAC;QAC3C,IAAI,CAAC,YAAY,CAAC,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;QAE5D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAExC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjC,IAAI,CAAC,YAAY,CAAC,cAAc,GAAG,IAAI,CAAC;QAExC,uBAAuB;QACvB,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACtE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;QAEnC,cAAc;QACd,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;QACzD,KAAK,MAAM,OAAO,IAAI,WAAW,EAAE,CAAC;YAClC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACrC,CAAC;QAED,YAAY;QACZ,IAAI,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;YACnC,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7C,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,OAAO;QACL,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAE1B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC;QAClC,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC;QACjC,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAED,6EAA6E;IAC7E,0BAA0B;IAC1B,6EAA6E;IAErE,KAAK,CAAC,mBAAmB,CAC/B,SAAiB,EACjB,OAAkC;QAElC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAClD,CAAC;QAED,+DAA+D;QAC/D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;YAC7C,SAAS;YACT,GAAG,OAAO;SACX,CAAC,CAAC;QAEH,+BAA+B;QAC/B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;QACrD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;QAEhD,eAAe;QACf,IAAI,CAAC,YAAY,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QACvD,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;QACnF,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAG,GAAG,CAAC;QAEjC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,6EAA6E;IAC7E,aAAa;IACb,6EAA6E;IAErE,eAAe,CAAC,SAAiB;QACvC,MAAM,KAAK,GAAG;YACZ,EAAE;YACF,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3D,GAAG,KAAK,CAAC,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,uBAAuB,CAAC,IAAI,uBAAuB,EAAE;YAC5F,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3D,EAAE;YACF,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC,YAAY,CAAC,IAAI,YAAY,IAAI,SAAS,EAAE;YACjE,EAAE;SACH,CAAC;QAEF,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,GAAG,EAAE;YAClC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1C,CAAC,EAAE,sBAAsB,CAAC,CAAC;IAC7B,CAAC;IAEO,oBAAoB,CAAC,OAAe,EAAE,MAAuB;QACnE,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO;YAC3B,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG;YAC7B,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;QAE9B,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,GAAG,IAAI;YACrC,CAAC,CAAC,GAAG,MAAM,CAAC,QAAQ,IAAI;YACxB,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;QAE9C,MAAM,IAAI,GAAG,KAAK,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,IAAI,QAAQ,GAAG,CAAC,IAAI,IAAI,QAAQ,GAAG,EAAE,CAAC;QAElH,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE;YAChC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;QACrC,CAAC,EAAE,OAAO,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAExB,qBAAqB;QACrB,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACpC,MAAM,SAAS,GAAG,OAAO,KAAK,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACvE,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE;gBAChC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,SAAS,IAAI,CAAC,CAAC;YAC1C,CAAC,EAAE,WAAW,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAEO,aAAa,CAAC,MAAuB;QAC3C,MAAM,KAAK,GAAa,CAAC,EAAE,CAAC,CAAC;QAE7B,SAAS;QACT,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO;YAC/B,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG;YAC7B,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;QAChC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC;QAChE,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,UAAU,EAAE,CAAC,CAAC;QAEtE,UAAU;QACV,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,GAAG,IAAI;YACrC,CAAC,CAAC,GAAG,MAAM,CAAC,QAAQ,IAAI;YACxB,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;QAC9C,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;QAClE,KAAK,CAAC,IAAI,CAAC,eAAe,QAAQ,EAAE,CAAC,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,wBAAwB,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5D,KAAK,CAAC,IAAI,CAAC,mBAAmB,YAAY,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACvE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEf,WAAW;QACX,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,CAAC;YACnD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE,CAAC;gBAC/E,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAC9D,KAAK,CAAC,IAAI,CAAC,OAAO,aAAa,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC3F,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;oBAC3B,KAAK,CAAC,IAAI,CAAC,uBAAuB,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;gBAC9D,CAAC;YACH,CAAC;YACD,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;gBAC5D,KAAK,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,OAAO,CAAC,CAAC;YAC1F,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QAED,kBAAkB;QAClB,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACtD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,iBAAiB,CAAC,IAAI,iBAAiB,CAAC,CAAC;YACjE,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;gBACxC,KAAK,CAAC,IAAI,CAAC,OAAO,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,IAAI,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;gBACjG,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;oBACjB,KAAK,CAAC,IAAI,CAAC,OAAO,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;gBACvE,CAAC;YACH,CAAC;YACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,KAAK,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC;YACpD,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QAED,UAAU;QACV,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,CAAC;QACjD,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEf,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,GAAG,EAAE;YAClC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1C,CAAC,EAAE,sBAAsB,CAAC,CAAC;IAC7B,CAAC;IAEO,WAAW,CAAC,KAAc;QAChC,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;QAEhC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,GAAG,EAAE;YAClC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;QACvD,CAAC,EAAE,qBAAqB,CAAC,CAAC;QAE1B,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,6EAA6E;IAC7E,oBAAoB;IACpB,6EAA6E;IAErE,QAAQ,CAAC,KAAyB;QACxC,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,KAAK,CAAC;QAChC,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,OAAO,CAAC;QACxE,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QAE1D,MAAM,iBAAiB,GAAuC;YAC5D,YAAY,EAAE,+BAA+B;YAC7C,SAAS,EAAE,wBAAwB;YACnC,SAAS,EAAE,uBAAuB;YAClC,SAAS,EAAE,sBAAsB;YACjC,QAAQ,EAAE,wBAAwB;YAClC,KAAK,EAAE,qBAAqB;SAC7B,CAAC;QAEF,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5C,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IACjD,CAAC;IAEO,YAAY,CAAC,MAAc;QACjC,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC;YACpC,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,MAAM;YACZ,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC,CAAC;IACL,CAAC;IAEO,WAAW;QACjB,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK;YAC9B,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,cAAc,IAAI,SAAS;YAC7D,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM;YACxC,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM;YACzC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS;YACtC,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC5B,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,eAAe,CAAC;SACzF,CAAC;IACJ,CAAC;IAED,6EAA6E;IAC7E,6BAA6B;IAC7B,6EAA6E;IAErE,cAAc;QACpB,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO;QAE7B,IAAI,CAAC,WAAW,GAAG,2BAA2B,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QAC3D,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE;YACtD,UAAU,EAAE,IAAI;YAChB,GAAG,EAAE,GAAG,EAAE;gBACR,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC;oBAChC,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC3B,CAAC;YACH,CAAC;YACD,IAAI,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC;YAC/B,SAAS,EAAE,KAAK;SACjB,CAAC,CAAC;IACL,CAAC;IAEO,aAAa;QACnB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACvD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAC1B,CAAC;IACH,CAAC;IAEO,iBAAiB;QACvB,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAEhE,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc;YACjD,CAAC,CAAC,YAAY,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,EAAE,CAAC,KAAK,OAAO,GAAG;YAChF,CAAC,CAAC,qBAAqB,OAAO,GAAG,CAAC;QAEpC,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC;YACpC,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,MAAM;YACZ,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC,CAAC;IACL,CAAC;IAED,6EAA6E;IAC7E,iBAAiB;IACjB,6EAA6E;IAErE,oBAAoB;QAC1B,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;YAC1C,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBACnC,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAkB,CAAC,CAAC;YACnE,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,qBAAqB,CAAC,IAAY,EAAE,MAAkB;QAC5D,+CAA+C;QAC/C,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;YAC1B,IAAI,CAAC,YAAY,CAAC,cAAc,GAAG,MAAM,CAAC,WAAW,CAAC;QACxD,CAAC;aAAM,IAAI,IAAI,KAAK,eAAe,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;YAC7D,IAAI,CAAC,YAAY,CAAC,cAAc,GAAG,IAAI,CAAC;QAC1C,CAAC;IACH,CAAC;IAEO,SAAS,CAAC,IAAgC,EAAE,IAAa;QAC/D,MAAM,KAAK,GAAuB;YAChC,IAAI;YACJ,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,IAAI;SACL,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,6EAA6E;IAC7E,yBAAyB;IACzB,6EAA6E;IAErE,eAAe,CACrB,IAAkB,EAClB,GAAe,EACf,WAAoB;QAEpB,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;YAC7B,IAAI;YACJ,GAAG;YACH,WAAW,EAAE,sBAAsB;YACnC,QAAQ,EAAE,QAAQ;YAClB,WAAW;SACZ,CAAC,CAAC;IACL,CAAC;IAED,6EAA6E;IAC7E,UAAU;IACV,6EAA6E;IAErE,kBAAkB;QACxB,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,KAAK,EAAE,cAAc;YACrB,QAAQ,EAAE,CAAC;YACX,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,CAAC;YAChB,WAAW,EAAE,CAAC;YACd,SAAS,EAAE,CAAC;SACb,CAAC;IACJ,CAAC;IAEO,KAAK;QACX,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC9C,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;IACrB,CAAC;IAEO,QAAQ,CAAC,IAAY,EAAE,SAAiB;QAC9C,IAAI,IAAI,CAAC,MAAM,IAAI,SAAS;YAAE,OAAO,IAAI,CAAC;QAC1C,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC;IAC9C,CAAC;IAEO,aAAa,CAAC,EAAU;QAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;QACtC,IAAI,OAAO,GAAG,EAAE;YAAE,OAAO,GAAG,OAAO,GAAG,CAAC;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;QACzC,MAAM,gBAAgB,GAAG,OAAO,GAAG,EAAE,CAAC;QACtC,OAAO,GAAG,OAAO,KAAK,gBAAgB,GAAG,CAAC;IAC5C,CAAC;IAEO,gBAAgB,CAAC,QAA6B;QACpD,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,UAAU,CAAC;YAChB,KAAK,MAAM;gBACT,OAAO,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YAC3C,KAAK,QAAQ;gBACX,OAAO,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7C,KAAK,KAAK,CAAC;YACX,KAAK,MAAM,CAAC;YACZ;gBACE,OAAO,KAAK,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;CACF;AAED,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,2BAA2B,CACzC,OAAgB,EAChB,OAA+D;IAE/D,OAAO,IAAI,qBAAqB,CAAC;QAC/B,OAAO;QACP,GAAG,OAAO;KACX,CAAC,CAAC;AACL,CAAC"}
@@ -1,10 +1,16 @@
1
1
  /**
2
2
  * StatusOrchestrator - Unified status management system
3
3
  * Coordinates between tool execution, live status tracking, and overlay display
4
+ *
5
+ * Integration with OrchestrationUIBridge:
6
+ * - Receives orchestration events and converts them to UI status updates
7
+ * - Manages tool status lifecycle with proper cleanup
8
+ * - Provides real-time status for the status line display
4
9
  */
5
10
  import { EventEmitter } from 'events';
6
11
  import { ToolCallRequest } from '../../core/types.js';
7
12
  import { LiveStatusState, LiveStatusTone } from '../../shell/liveStatus.js';
13
+ import type { OrchestratorEvent } from '../../core/unifiedOrchestrator.js';
8
14
  export type StatusEventType = 'status.base.changed' | 'status.override.pushed' | 'status.override.cleared' | 'tool.start' | 'tool.progress' | 'tool.complete' | 'tool.error' | 'animation.frame' | 'interrupt.received';
9
15
  export interface StatusEvent {
10
16
  type: StatusEventType;
@@ -158,6 +164,24 @@ export declare class StatusOrchestrator extends EventEmitter {
158
164
  * Get full context for debugging
159
165
  */
160
166
  getContext(): StatusContext;
167
+ /**
168
+ * Handle orchestration command start event
169
+ */
170
+ onOrchestrationCommandStart(event: OrchestratorEvent): void;
171
+ /**
172
+ * Handle orchestration command complete event
173
+ */
174
+ onOrchestrationCommandComplete(event: OrchestratorEvent): void;
175
+ /**
176
+ * Handle orchestration phase change event
177
+ */
178
+ onOrchestrationPhaseChange(event: OrchestratorEvent): void;
179
+ /**
180
+ * Connect to an orchestrator instance and handle its events
181
+ */
182
+ connectOrchestrator(orchestrator: {
183
+ onEvent: (callback: (event: OrchestratorEvent) => void) => () => void;
184
+ }): () => void;
161
185
  /**
162
186
  * Reset all status
163
187
  */
@@ -1 +1 @@
1
- {"version":3,"file":"StatusOrchestrator.d.ts","sourceRoot":"","sources":["../../../src/ui/orchestration/StatusOrchestrator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"StatusOrchestrator.d.ts","sourceRoot":"","sources":["../../../src/ui/orchestration/StatusOrchestrator.ts"],"names":[],"mappings":"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"}