@elevasis/ui 2.0.0 → 2.0.2

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 (54) hide show
  1. package/dist/auth/index.js +1 -2
  2. package/dist/charts/index.js +7 -9
  3. package/dist/{chunk-FW4S3Z5I.js → chunk-2DSYC52I.js} +3 -3
  4. package/dist/{chunk-ZWY3A6ZU.js → chunk-CTU2JO57.js} +31 -31
  5. package/dist/{chunk-QJ2S46NI.js → chunk-DT3QYZVU.js} +2 -2
  6. package/dist/{chunk-QTD5HPKD.js → chunk-EIHG5JZN.js} +1 -1
  7. package/dist/{chunk-JHVKGZ2P.js → chunk-KFICYU6S.js} +3 -4
  8. package/dist/{chunk-R2BQITMQ.js → chunk-MELNDAZY.js} +20 -110
  9. package/dist/{chunk-RWQIFKMJ.js → chunk-MTJ43R2E.js} +10 -2
  10. package/dist/{chunk-45MS3IAW.js → chunk-MZPVNRPL.js} +136 -28
  11. package/dist/{chunk-NNKKBSJN.js → chunk-NYBEU5TE.js} +1 -1
  12. package/dist/{chunk-2IJCM3VQ.js → chunk-OCP2MBTY.js} +134 -118
  13. package/dist/{chunk-KP6LNTMH.js → chunk-OKKGD3S6.js} +3 -3
  14. package/dist/{chunk-BYZ7VTSH.js → chunk-PRLXFMNP.js} +2 -2
  15. package/dist/{chunk-T2X3WHQS.js → chunk-QRHLV74B.js} +23 -18
  16. package/dist/{chunk-5COLSYBE.js → chunk-RX4UWZZR.js} +1 -1
  17. package/dist/{chunk-C27LLJM6.js → chunk-SMJLS23U.js} +2 -2
  18. package/dist/{chunk-F2J7675J.js → chunk-TQ3HK7ZR.js} +633 -7
  19. package/dist/{chunk-EINVPEHK.js → chunk-TZOGB3X4.js} +2 -2
  20. package/dist/{chunk-TXPUIHX2.js → chunk-X7CHQ3RE.js} +1 -1
  21. package/dist/{chunk-MCA6LOGM.js → chunk-Y3D3WFJG.js} +54 -5
  22. package/dist/{chunk-YYBM5LNJ.js → chunk-YEX4MQSY.js} +1 -1
  23. package/dist/components/index.d.ts +24 -16
  24. package/dist/components/index.js +102 -271
  25. package/dist/features/auth/index.js +3 -4
  26. package/dist/features/dashboard/index.d.ts +15 -4
  27. package/dist/features/dashboard/index.js +15 -18
  28. package/dist/features/monitoring/index.css +127 -127
  29. package/dist/features/monitoring/index.d.ts +1 -0
  30. package/dist/features/monitoring/index.js +17 -19
  31. package/dist/features/operations/index.d.ts +173 -56
  32. package/dist/features/operations/index.js +19 -20
  33. package/dist/features/settings/index.d.ts +1 -0
  34. package/dist/features/settings/index.js +15 -17
  35. package/dist/hooks/index.css +127 -127
  36. package/dist/hooks/index.js +12 -9
  37. package/dist/hooks/published.css +127 -127
  38. package/dist/hooks/published.js +11 -8
  39. package/dist/index.css +118 -118
  40. package/dist/index.d.ts +14 -2
  41. package/dist/index.js +13 -12
  42. package/dist/layout/index.d.ts +20 -44
  43. package/dist/layout/index.js +6 -6
  44. package/dist/provider/index.css +127 -59
  45. package/dist/provider/index.d.ts +14 -2
  46. package/dist/provider/index.js +10 -6
  47. package/dist/provider/published.css +126 -0
  48. package/dist/provider/published.d.ts +14 -2
  49. package/dist/provider/published.js +8 -3
  50. package/dist/theme/index.js +2 -2
  51. package/package.json +3 -3
  52. package/dist/chunk-ALA56RGZ.js +0 -13
  53. package/dist/chunk-JQ4AKYUD.js +0 -635
  54. package/dist/chunk-SZHARWKU.js +0 -15
@@ -1,33 +1,30 @@
1
- export { Dashboard, RecentExecutionsByResource, ResourceOverview, UnresolvedErrorsTeaser, dashboardManifest } from '../../chunk-JQ4AKYUD.js';
1
+ export { Dashboard, OperationsOverview, RecentExecutionsByResource, ResourceOverview, UnresolvedErrorsTeaser, dashboardManifest } from '../../chunk-TQ3HK7ZR.js';
2
2
  import '../../chunk-LGKLC5MG.js';
3
- import '../../chunk-F2J7675J.js';
4
- import '../../chunk-JHVKGZ2P.js';
5
- import '../../chunk-MCA6LOGM.js';
6
- import '../../chunk-3KMDHCAR.js';
7
- import '../../chunk-NNKKBSJN.js';
8
- import '../../chunk-YYBM5LNJ.js';
9
- import '../../chunk-BYZ7VTSH.js';
10
- import '../../chunk-EINVPEHK.js';
3
+ import '../../chunk-KFICYU6S.js';
4
+ import '../../chunk-YEX4MQSY.js';
5
+ import '../../chunk-PRLXFMNP.js';
6
+ import '../../chunk-TZOGB3X4.js';
11
7
  import '../../chunk-LXHZYSMQ.js';
12
8
  import '../../chunk-F6RBK7NJ.js';
13
9
  import '../../chunk-XA34RETF.js';
14
- import '../../chunk-ELJIFLCB.js';
15
- import '../../chunk-FW4S3Z5I.js';
16
- import '../../chunk-SZHARWKU.js';
17
- import '../../chunk-TXPUIHX2.js';
10
+ import '../../chunk-2DSYC52I.js';
11
+ import '../../chunk-X7CHQ3RE.js';
18
12
  import '../../chunk-CYXZHBP4.js';
19
- import '../../chunk-45MS3IAW.js';
20
- import '../../chunk-5COLSYBE.js';
13
+ import '../../chunk-MZPVNRPL.js';
14
+ import '../../chunk-RX4UWZZR.js';
15
+ import '../../chunk-Y3D3WFJG.js';
16
+ import '../../chunk-3KMDHCAR.js';
17
+ import '../../chunk-NYBEU5TE.js';
21
18
  import '../../chunk-NVOCKXUQ.js';
22
19
  import '../../chunk-2IFYDILW.js';
20
+ import '../../chunk-ELJIFLCB.js';
23
21
  import '../../chunk-W4VYXIN7.js';
24
22
  import '../../chunk-QJ2KCHKX.js';
25
- import '../../chunk-QJ2S46NI.js';
23
+ import '../../chunk-DT3QYZVU.js';
26
24
  import '../../chunk-SLVC5OJ2.js';
27
25
  import '../../chunk-RNP5R5I3.js';
28
26
  import '../../chunk-IOKL7BKE.js';
29
- import '../../chunk-RWQIFKMJ.js';
30
- import '../../chunk-ALA56RGZ.js';
27
+ import '../../chunk-MTJ43R2E.js';
31
28
  import '../../chunk-TUXTSEAF.js';
32
29
  import '../../chunk-DD3CCMCZ.js';
33
30
  import '../../chunk-QEPXAWE2.js';
@@ -1,3 +1,130 @@
1
+ /* src/components/display/StatCard.module.css */
2
+ .heroCard {
3
+ background: var(--glass-background);
4
+ backdrop-filter: var(--glass-blur);
5
+ border: 1px solid var(--color-border);
6
+ }
7
+ .iconRing {
8
+ position: relative;
9
+ display: flex;
10
+ align-items: center;
11
+ justify-content: center;
12
+ width: 46px;
13
+ height: 46px;
14
+ border-radius: 50%;
15
+ background: color-mix(in srgb, var(--color-primary) 12%, transparent);
16
+ border: 1px solid color-mix(in srgb, var(--color-primary) 25%, transparent);
17
+ color: var(--color-primary);
18
+ flex-shrink: 0;
19
+ box-shadow: 0 0 12px color-mix(in srgb, var(--color-primary) 15%, transparent);
20
+ }
21
+ .iconRingSm {
22
+ position: relative;
23
+ display: flex;
24
+ align-items: center;
25
+ justify-content: center;
26
+ width: 36px;
27
+ height: 36px;
28
+ border-radius: 50%;
29
+ background: color-mix(in srgb, var(--color-primary) 12%, transparent);
30
+ border: 1px solid color-mix(in srgb, var(--color-primary) 25%, transparent);
31
+ color: var(--color-primary);
32
+ flex-shrink: 0;
33
+ box-shadow: 0 0 8px color-mix(in srgb, var(--color-primary) 12%, transparent);
34
+ }
35
+ .heroValue {
36
+ font-family: var(--elevasis-font-family-subtitle);
37
+ font-size: 1.85rem;
38
+ font-weight: 800;
39
+ line-height: 1;
40
+ letter-spacing: -0.02em;
41
+ font-variant-numeric: tabular-nums;
42
+ }
43
+ [data-mantine-color-scheme=dark] .heroValue {
44
+ text-shadow: 0 0 20px color-mix(in srgb, var(--color-primary) 20%, transparent);
45
+ }
46
+ .heroValueSm {
47
+ font-family: var(--elevasis-font-family-subtitle);
48
+ font-size: 1.35rem;
49
+ font-weight: 700;
50
+ line-height: 1;
51
+ letter-spacing: -0.02em;
52
+ font-variant-numeric: tabular-nums;
53
+ }
54
+ .heroLabel {
55
+ font-size: 0.68rem;
56
+ font-weight: 700;
57
+ text-transform: uppercase;
58
+ letter-spacing: 0.12em;
59
+ color: var(--color-text-dimmed);
60
+ }
61
+ .heroLabelSm {
62
+ font-size: 0.62rem;
63
+ font-weight: 700;
64
+ text-transform: uppercase;
65
+ letter-spacing: 0.12em;
66
+ color: var(--color-text-dimmed);
67
+ }
68
+
69
+ /* src/components/display/ElevasisLoader.module.css */
70
+ .wrapper {
71
+ display: inline-flex;
72
+ align-items: center;
73
+ justify-content: center;
74
+ width: var(--loader-size);
75
+ height: var(--loader-size);
76
+ overflow: visible;
77
+ }
78
+ .loader {
79
+ width: 100%;
80
+ height: 100%;
81
+ display: block;
82
+ overflow: visible;
83
+ }
84
+ .chevron {
85
+ stroke: var(--loader-color);
86
+ stroke-width: 2;
87
+ stroke-linecap: square;
88
+ stroke-linejoin: miter;
89
+ fill: none;
90
+ opacity: 0.15;
91
+ animation: chevronPulse 2s ease-in-out infinite;
92
+ filter: drop-shadow(0 0 1.5px var(--loader-color));
93
+ }
94
+ [data-mantine-color-scheme=light] .chevron {
95
+ filter: none;
96
+ }
97
+ .c1 {
98
+ animation-delay: 0s;
99
+ }
100
+ .c2 {
101
+ animation-delay: 0.2s;
102
+ }
103
+ .c3 {
104
+ animation-delay: 0.4s;
105
+ }
106
+ @keyframes chevronPulse {
107
+ 0%, 100% {
108
+ opacity: 0.12;
109
+ filter: drop-shadow(0 0 1px var(--loader-color));
110
+ }
111
+ 40%, 60% {
112
+ opacity: 1;
113
+ filter: drop-shadow(0 0 3px var(--loader-color));
114
+ }
115
+ }
116
+ [data-mantine-color-scheme=light] .chevron {
117
+ animation-name: chevronPulseLight;
118
+ }
119
+ @keyframes chevronPulseLight {
120
+ 0%, 100% {
121
+ opacity: 0.2;
122
+ }
123
+ 40%, 60% {
124
+ opacity: 1;
125
+ }
126
+ }
127
+
1
128
  /* src/theme/custom.css */
2
129
  .mantine-Button-root[data-variant=default] {
3
130
  background-color: var(--color-surface);
@@ -70,65 +197,6 @@
70
197
  outline: none;
71
198
  }
72
199
 
73
- /* src/components/display/ElevasisLoader.module.css */
74
- .wrapper {
75
- display: inline-flex;
76
- align-items: center;
77
- justify-content: center;
78
- width: var(--loader-size);
79
- height: var(--loader-size);
80
- overflow: visible;
81
- }
82
- .loader {
83
- width: 100%;
84
- height: 100%;
85
- display: block;
86
- overflow: visible;
87
- }
88
- .chevron {
89
- stroke: var(--loader-color);
90
- stroke-width: 2;
91
- stroke-linecap: square;
92
- stroke-linejoin: miter;
93
- fill: none;
94
- opacity: 0.15;
95
- animation: chevronPulse 2s ease-in-out infinite;
96
- filter: drop-shadow(0 0 1.5px var(--loader-color));
97
- }
98
- [data-mantine-color-scheme=light] .chevron {
99
- filter: none;
100
- }
101
- .c1 {
102
- animation-delay: 0s;
103
- }
104
- .c2 {
105
- animation-delay: 0.2s;
106
- }
107
- .c3 {
108
- animation-delay: 0.4s;
109
- }
110
- @keyframes chevronPulse {
111
- 0%, 100% {
112
- opacity: 0.12;
113
- filter: drop-shadow(0 0 1px var(--loader-color));
114
- }
115
- 40%, 60% {
116
- opacity: 1;
117
- filter: drop-shadow(0 0 3px var(--loader-color));
118
- }
119
- }
120
- [data-mantine-color-scheme=light] .chevron {
121
- animation-name: chevronPulseLight;
122
- }
123
- @keyframes chevronPulseLight {
124
- 0%, 100% {
125
- opacity: 0.2;
126
- }
127
- 40%, 60% {
128
- opacity: 1;
129
- }
130
- }
131
-
132
200
  /* src/graph/Graph.module.css */
133
201
  @keyframes edgeFlow {
134
202
  0% {
@@ -516,71 +584,3 @@
516
584
  transform: none;
517
585
  }
518
586
  }
519
-
520
- /* src/components/display/StatCard.module.css */
521
- .heroCard {
522
- background: var(--glass-background);
523
- backdrop-filter: var(--glass-blur);
524
- border: 1px solid var(--color-border);
525
- }
526
- .iconRing {
527
- position: relative;
528
- display: flex;
529
- align-items: center;
530
- justify-content: center;
531
- width: 46px;
532
- height: 46px;
533
- border-radius: 50%;
534
- background: color-mix(in srgb, var(--color-primary) 12%, transparent);
535
- border: 1px solid color-mix(in srgb, var(--color-primary) 25%, transparent);
536
- color: var(--color-primary);
537
- flex-shrink: 0;
538
- box-shadow: 0 0 12px color-mix(in srgb, var(--color-primary) 15%, transparent);
539
- }
540
- .iconRingSm {
541
- position: relative;
542
- display: flex;
543
- align-items: center;
544
- justify-content: center;
545
- width: 36px;
546
- height: 36px;
547
- border-radius: 50%;
548
- background: color-mix(in srgb, var(--color-primary) 12%, transparent);
549
- border: 1px solid color-mix(in srgb, var(--color-primary) 25%, transparent);
550
- color: var(--color-primary);
551
- flex-shrink: 0;
552
- box-shadow: 0 0 8px color-mix(in srgb, var(--color-primary) 12%, transparent);
553
- }
554
- .heroValue {
555
- font-family: var(--elevasis-font-family-subtitle);
556
- font-size: 1.85rem;
557
- font-weight: 800;
558
- line-height: 1;
559
- letter-spacing: -0.02em;
560
- font-variant-numeric: tabular-nums;
561
- }
562
- [data-mantine-color-scheme=dark] .heroValue {
563
- text-shadow: 0 0 20px color-mix(in srgb, var(--color-primary) 20%, transparent);
564
- }
565
- .heroValueSm {
566
- font-family: var(--elevasis-font-family-subtitle);
567
- font-size: 1.35rem;
568
- font-weight: 700;
569
- line-height: 1;
570
- letter-spacing: -0.02em;
571
- font-variant-numeric: tabular-nums;
572
- }
573
- .heroLabel {
574
- font-size: 0.68rem;
575
- font-weight: 700;
576
- text-transform: uppercase;
577
- letter-spacing: 0.12em;
578
- color: var(--color-text-dimmed);
579
- }
580
- .heroLabelSm {
581
- font-size: 0.62rem;
582
- font-weight: 700;
583
- text-transform: uppercase;
584
- letter-spacing: 0.12em;
585
- color: var(--color-text-dimmed);
586
- }
@@ -123,6 +123,7 @@ interface FeatureNavLink {
123
123
  link: string;
124
124
  featureKey?: string;
125
125
  onClick?: () => void;
126
+ links?: FeatureNavLink[];
126
127
  }
127
128
  interface FeatureNavEntry {
128
129
  label: string;
@@ -1,35 +1,33 @@
1
- export { ActivityFeed, ActivityLog, CostAnalytics, ErrorDetailsModal, ExecutionHealth, ExecutionLogsPage, NotificationCenter, monitoringManifest } from '../../chunk-T2X3WHQS.js';
1
+ export { ActivityFeed, ActivityLog, CostAnalytics, ErrorDetailsModal, ExecutionHealth, ExecutionLogsPage, NotificationCenter, monitoringManifest } from '../../chunk-QRHLV74B.js';
2
2
  import '../../chunk-PDHTXPSF.js';
3
- import '../../chunk-LGKLC5MG.js';
4
- import '../../chunk-KP6LNTMH.js';
3
+ import '../../chunk-OKKGD3S6.js';
5
4
  import '../../chunk-GBMNCNHX.js';
6
- import '../../chunk-JHVKGZ2P.js';
7
- import '../../chunk-MCA6LOGM.js';
8
- import '../../chunk-3KMDHCAR.js';
9
- import '../../chunk-NNKKBSJN.js';
10
- import '../../chunk-YYBM5LNJ.js';
11
- import '../../chunk-BYZ7VTSH.js';
12
- import '../../chunk-EINVPEHK.js';
5
+ import '../../chunk-LGKLC5MG.js';
6
+ import '../../chunk-KFICYU6S.js';
7
+ import '../../chunk-YEX4MQSY.js';
8
+ import '../../chunk-PRLXFMNP.js';
9
+ import '../../chunk-TZOGB3X4.js';
13
10
  import '../../chunk-LXHZYSMQ.js';
14
11
  import '../../chunk-F6RBK7NJ.js';
15
12
  import '../../chunk-XA34RETF.js';
16
- import '../../chunk-ELJIFLCB.js';
17
- import '../../chunk-FW4S3Z5I.js';
18
- import '../../chunk-SZHARWKU.js';
19
- import '../../chunk-TXPUIHX2.js';
13
+ import '../../chunk-2DSYC52I.js';
14
+ import '../../chunk-X7CHQ3RE.js';
20
15
  import '../../chunk-CYXZHBP4.js';
21
- import '../../chunk-45MS3IAW.js';
22
- import '../../chunk-5COLSYBE.js';
16
+ import '../../chunk-MZPVNRPL.js';
17
+ import '../../chunk-RX4UWZZR.js';
18
+ import '../../chunk-Y3D3WFJG.js';
19
+ import '../../chunk-3KMDHCAR.js';
20
+ import '../../chunk-NYBEU5TE.js';
23
21
  import '../../chunk-NVOCKXUQ.js';
24
22
  import '../../chunk-2IFYDILW.js';
23
+ import '../../chunk-ELJIFLCB.js';
25
24
  import '../../chunk-W4VYXIN7.js';
26
25
  import '../../chunk-QJ2KCHKX.js';
27
- import '../../chunk-QJ2S46NI.js';
26
+ import '../../chunk-DT3QYZVU.js';
28
27
  import '../../chunk-SLVC5OJ2.js';
29
28
  import '../../chunk-RNP5R5I3.js';
30
29
  import '../../chunk-IOKL7BKE.js';
31
- import '../../chunk-RWQIFKMJ.js';
32
- import '../../chunk-ALA56RGZ.js';
30
+ import '../../chunk-MTJ43R2E.js';
33
31
  import '../../chunk-TUXTSEAF.js';
34
32
  import '../../chunk-DD3CCMCZ.js';
35
33
  import '../../chunk-QEPXAWE2.js';
@@ -1164,6 +1164,68 @@ interface ResourceMetricsConfig {
1164
1164
  * Time range selector for dashboard metrics
1165
1165
  */
1166
1166
  type TimeRange = '1h' | '24h' | '7d' | '30d';
1167
+ /**
1168
+ * Execution health metrics response
1169
+ * Success rate, P95 duration, execution counts, and trend data
1170
+ * trendData includes executionCount for throughput visualization (eliminates separate API call)
1171
+ */
1172
+ interface ExecutionHealthMetrics {
1173
+ successRate: number;
1174
+ p95Duration: number;
1175
+ totalExecutions: number;
1176
+ trendData: Array<{
1177
+ time: string;
1178
+ rate: number;
1179
+ successCount: number;
1180
+ errorCount: number;
1181
+ warningCount: number;
1182
+ executionCount: number;
1183
+ }>;
1184
+ statusCounts: {
1185
+ success: number;
1186
+ failed: number;
1187
+ pending: number;
1188
+ warning: number;
1189
+ };
1190
+ peakPeriod: string;
1191
+ granularity: 'hour' | 'day';
1192
+ }
1193
+ /**
1194
+ * Business impact metrics response
1195
+ * ROI, labor savings, and cost analysis
1196
+ */
1197
+ interface BusinessImpactMetrics {
1198
+ totalSavingsUsd: number;
1199
+ totalCostUsd: number;
1200
+ netSavingsUsd: number;
1201
+ roi: number;
1202
+ }
1203
+ /**
1204
+ * Cost breakdown metrics response
1205
+ * Per-resource cost analysis
1206
+ */
1207
+ interface CostBreakdownMetrics {
1208
+ resources: Array<{
1209
+ resourceId: string;
1210
+ totalCostUsd: number;
1211
+ executionCount: number;
1212
+ avgCostUsd: number;
1213
+ }>;
1214
+ }
1215
+ /**
1216
+ * Dashboard metrics response
1217
+ * Aggregates core observability metrics in a single response
1218
+ * Note: Throughput data is now included in executionHealth.trendData.executionCount
1219
+ */
1220
+ interface DashboardMetrics {
1221
+ executionHealth: ExecutionHealthMetrics;
1222
+ costBreakdown: CostBreakdownMetrics;
1223
+ businessImpact: BusinessImpactMetrics;
1224
+ /** ISO timestamp of the currently active deployment, or null if none */
1225
+ activeDeploymentDate: string | null;
1226
+ /** Deployment version of the active deployment, or null if none */
1227
+ activeDeploymentVersion: string | null;
1228
+ }
1167
1229
 
1168
1230
  /**
1169
1231
  * AIUsageCollector
@@ -1510,6 +1572,114 @@ interface ResourcesPageProps {
1510
1572
  }
1511
1573
  declare function ResourcesPage({ initialFilter, onTypeChange, timeRange, onResourceClick, pageSize }: ResourcesPageProps): react_jsx_runtime.JSX.Element;
1512
1574
 
1575
+ interface OperationsOverviewProps {
1576
+ /**
1577
+ * Active time range for all metrics queries.
1578
+ */
1579
+ timeRange: TimeRange;
1580
+ /**
1581
+ * Business-impact metrics computed by the CC wrapper.
1582
+ * Stays CC-local per decision lock #4.
1583
+ * TODO(Wave 2): thread to HeroStatsRow once the CC wrapper wires it through.
1584
+ */
1585
+ businessImpact?: ReturnType<() => {
1586
+ data: BusinessImpactMetrics | undefined;
1587
+ isLoading: boolean;
1588
+ }>;
1589
+ /**
1590
+ * Cost breakdown metrics computed by the CC wrapper.
1591
+ * Stays CC-local per decision lock #4.
1592
+ * TODO(Wave 2): thread to HeroStatsRow once the CC wrapper wires it through.
1593
+ */
1594
+ costBreakdown?: ReturnType<() => {
1595
+ data: CostBreakdownMetrics | undefined;
1596
+ isLoading: boolean;
1597
+ }>;
1598
+ /**
1599
+ * Called when the user clicks a resource card.
1600
+ */
1601
+ onResourceClick?: (params: {
1602
+ resourceId: string;
1603
+ resourceType?: string;
1604
+ }) => void;
1605
+ /**
1606
+ * Called when the user wants to drill into the unresolved errors view.
1607
+ */
1608
+ onErrorsNavigate?: () => void;
1609
+ /**
1610
+ * Called when the user wants to navigate to the command queue.
1611
+ * Minor refinement over locked props shape — OperationalOverview has this link target.
1612
+ */
1613
+ onCommandQueueNavigate?: () => void;
1614
+ /**
1615
+ * Called when the user wants to navigate to the task scheduler.
1616
+ * Minor refinement over locked props shape — OperationalOverview has this link target.
1617
+ */
1618
+ onScheduledTasksNavigate?: () => void;
1619
+ /**
1620
+ * Custom render function for the execution trend chart.
1621
+ * The wrapper owns the chart implementation (CC uses its monitoring-local CombinedTrendChart).
1622
+ * Receives executionHealth data, loading state, and error from useDashboardMetrics.
1623
+ * If omitted, the trend chart section is not rendered.
1624
+ */
1625
+ renderTrendChart?: (data: DashboardMetrics['executionHealth'] | undefined, isLoading: boolean, error?: Error) => ReactNode;
1626
+ }
1627
+ declare function OperationsOverview({ timeRange, onResourceClick, onErrorsNavigate, onCommandQueueNavigate, onScheduledTasksNavigate, renderTrendChart }: OperationsOverviewProps): react_jsx_runtime.JSX.Element;
1628
+
1629
+ interface EventSourceMessage {
1630
+ id: string;
1631
+ event: string;
1632
+ data: string;
1633
+ retry?: number;
1634
+ }
1635
+
1636
+ interface FetchEventSourceWithTokenRefreshOptions {
1637
+ url: string;
1638
+ getToken: () => Promise<string | undefined>;
1639
+ headers?: Record<string, string>;
1640
+ signal: AbortSignal;
1641
+ /** Delay in ms before reconnecting after token refresh. Defaults to 2000. */
1642
+ tokenRefreshDelayMs?: number;
1643
+ onopen?: (response: Response) => void | Promise<void>;
1644
+ onmessage?: (event: EventSourceMessage) => void;
1645
+ onerror?: (error: unknown) => void;
1646
+ onclose?: () => void;
1647
+ }
1648
+
1649
+ interface SSEConnectionManagerLike {
1650
+ subscribe(key: string, subscriberId: string, options: Omit<FetchEventSourceWithTokenRefreshOptions, 'signal'>): () => void;
1651
+ closeConnection(key: string): void;
1652
+ getConnectionInfo(): Map<string, {
1653
+ url: string;
1654
+ subscribers: number;
1655
+ }>;
1656
+ }
1657
+
1658
+ interface FeatureNavLink {
1659
+ label: string;
1660
+ link: string;
1661
+ featureKey?: string;
1662
+ onClick?: () => void;
1663
+ links?: FeatureNavLink[];
1664
+ }
1665
+ interface FeatureNavEntry {
1666
+ label: string;
1667
+ icon: ComponentType;
1668
+ link?: string;
1669
+ featureKey?: string;
1670
+ requiresAdmin?: boolean;
1671
+ dataOnboardingTourId?: string;
1672
+ links?: FeatureNavLink[];
1673
+ }
1674
+ type FeatureSidebarComponent = ComponentType;
1675
+ interface FeatureModule {
1676
+ key: string;
1677
+ label?: string;
1678
+ navEntry?: FeatureNavEntry;
1679
+ sidebar?: FeatureSidebarComponent;
1680
+ subshellRoutes?: string[];
1681
+ }
1682
+
1513
1683
  interface ResourcesSidebarProps {
1514
1684
  timeRange: TimeRange;
1515
1685
  }
@@ -1565,35 +1735,6 @@ interface ExecuteAsyncResult {
1565
1735
  resourceId: string;
1566
1736
  }
1567
1737
 
1568
- interface EventSourceMessage {
1569
- id: string;
1570
- event: string;
1571
- data: string;
1572
- retry?: number;
1573
- }
1574
-
1575
- interface FetchEventSourceWithTokenRefreshOptions {
1576
- url: string;
1577
- getToken: () => Promise<string | undefined>;
1578
- headers?: Record<string, string>;
1579
- signal: AbortSignal;
1580
- /** Delay in ms before reconnecting after token refresh. Defaults to 2000. */
1581
- tokenRefreshDelayMs?: number;
1582
- onopen?: (response: Response) => void | Promise<void>;
1583
- onmessage?: (event: EventSourceMessage) => void;
1584
- onerror?: (error: unknown) => void;
1585
- onclose?: () => void;
1586
- }
1587
-
1588
- interface SSEConnectionManagerLike {
1589
- subscribe(key: string, subscriberId: string, options: Omit<FetchEventSourceWithTokenRefreshOptions, 'signal'>): () => void;
1590
- closeConnection(key: string): void;
1591
- getConnectionInfo(): Map<string, {
1592
- url: string;
1593
- subscribers: number;
1594
- }>;
1595
- }
1596
-
1597
1738
  interface UseExecutionPanelStateOptions {
1598
1739
  resourceId: string;
1599
1740
  manager: SSEConnectionManagerLike;
@@ -1610,30 +1751,6 @@ interface UseExecutionPanelStateOptions {
1610
1751
 
1611
1752
  type TaskFilterStatus = 'all' | 'pending' | 'completed' | 'expired';
1612
1753
 
1613
- interface FeatureNavLink {
1614
- label: string;
1615
- link: string;
1616
- featureKey?: string;
1617
- onClick?: () => void;
1618
- }
1619
- interface FeatureNavEntry {
1620
- label: string;
1621
- icon: ComponentType;
1622
- link?: string;
1623
- featureKey?: string;
1624
- requiresAdmin?: boolean;
1625
- dataOnboardingTourId?: string;
1626
- links?: FeatureNavLink[];
1627
- }
1628
- type FeatureSidebarComponent = ComponentType;
1629
- interface FeatureModule {
1630
- key: string;
1631
- label?: string;
1632
- navEntry?: FeatureNavEntry;
1633
- sidebar?: FeatureSidebarComponent;
1634
- subshellRoutes?: string[];
1635
- }
1636
-
1637
1754
  interface CommandQueuePageProps {
1638
1755
  timeRange?: TimeRange;
1639
1756
  pageSize?: number;
@@ -1789,7 +1906,7 @@ interface CalibrationSidebarProps {
1789
1906
  }
1790
1907
  /**
1791
1908
  * Calibration sidebar - displays projects and runs for navigation.
1792
- * Uses shared CollapsibleSidebarGroup and SidebarListItem components.
1909
+ * Uses shared CollapsibleSidebarGroup and SubshellNavItem components.
1793
1910
  */
1794
1911
  declare function CalibrationSidebar({ currentProjectId, currentRunId, currentPath, onProjectClick, onRunClick }: CalibrationSidebarProps): react_jsx_runtime.JSX.Element;
1795
1912
 
@@ -2084,5 +2201,5 @@ declare function CommandQueueShell({ selectedCheckpoint, onSelectCheckpoint, sta
2084
2201
 
2085
2202
  declare const operationsManifest: FeatureModule;
2086
2203
 
2087
- export { AgentExecutionPanel, AgentSessionGroup, CalibrationPage, CalibrationProgress, CalibrationProjectDetailPage, CalibrationProjectsPage, CalibrationRunDetailPage, CalibrationSidebar, CommandQueueDetailPage, CommandQueuePage, CommandQueueShell, CommandViewPage, CommandViewSidebarContent, ExecuteWorkflowModal, ExecutionPanel, OperationsSidebar, OperationsSidebarMiddle, OperationsSidebarTop, ResourceDetailPage, ResourceExecuteDialog, ResourceExecuteForm, ResourcesPage, ResourcesSidebar, SessionChatArea, SessionChatInterface, SessionChatPage, SessionDetailsSidebar, SessionExecutionLogs, SessionHeader, SessionListItem, SessionsPage, SessionsSidebar, WorkflowExecutionPanel, operationsManifest };
2088
- export type { AgentExecutionPanelProps, AgentSessionGroupProps, CalibrationPageProps, CalibrationProgressProps, CalibrationProjectDetailPageProps, CalibrationProjectDetailPageRenderCreateModalArgs, CalibrationProjectDetailPageRenderRunCardArgs, CalibrationProjectsPageProps, CalibrationRunDetailPageProps, CalibrationSidebarProps, CommandQueueDetailPageProps, CommandQueueDetailPageRichTextArgs, CommandQueuePageProps, CommandQueueShellProps, CommandViewPageProps, CommandViewSidebarContentProps, ConversationViewSlotArgs, ExecuteWorkflowModalProps, ExecuteWorkflowModalResource, ExecutionPanelProps, ResourceDetailPageProps, ResourceDetailPageRenderExecutionPanelArgs, ResourceExecuteDialogProps, ResourceExecuteFormProps, ResourcesPageProps, ResourcesSidebarProps, SessionChatAreaProps, SessionChatInterfaceProps, SessionChatPageProps, SessionDetailsSidebarProps, SessionExecutionLogsProps, SessionHeaderProps, SessionListItemProps, SessionsPageProps, SessionsSidebarProps, TaskFilterStatus, WorkflowExecutionPanelProps };
2204
+ export { AgentExecutionPanel, AgentSessionGroup, CalibrationPage, CalibrationProgress, CalibrationProjectDetailPage, CalibrationProjectsPage, CalibrationRunDetailPage, CalibrationSidebar, CommandQueueDetailPage, CommandQueuePage, CommandQueueShell, CommandViewPage, CommandViewSidebarContent, ExecuteWorkflowModal, ExecutionPanel, OperationsOverview, OperationsSidebar, OperationsSidebarMiddle, OperationsSidebarTop, ResourceDetailPage, ResourceExecuteDialog, ResourceExecuteForm, ResourcesPage, ResourcesSidebar, SessionChatArea, SessionChatInterface, SessionChatPage, SessionDetailsSidebar, SessionExecutionLogs, SessionHeader, SessionListItem, SessionsPage, SessionsSidebar, WorkflowExecutionPanel, operationsManifest };
2205
+ export type { AgentExecutionPanelProps, AgentSessionGroupProps, CalibrationPageProps, CalibrationProgressProps, CalibrationProjectDetailPageProps, CalibrationProjectDetailPageRenderCreateModalArgs, CalibrationProjectDetailPageRenderRunCardArgs, CalibrationProjectsPageProps, CalibrationRunDetailPageProps, CalibrationSidebarProps, CommandQueueDetailPageProps, CommandQueueDetailPageRichTextArgs, CommandQueuePageProps, CommandQueueShellProps, CommandViewPageProps, CommandViewSidebarContentProps, ConversationViewSlotArgs, ExecuteWorkflowModalProps, ExecuteWorkflowModalResource, ExecutionPanelProps, OperationsOverviewProps, ResourceDetailPageProps, ResourceDetailPageRenderExecutionPanelArgs, ResourceExecuteDialogProps, ResourceExecuteFormProps, ResourcesPageProps, ResourcesSidebarProps, SessionChatAreaProps, SessionChatInterfaceProps, SessionChatPageProps, SessionDetailsSidebarProps, SessionExecutionLogsProps, SessionHeaderProps, SessionListItemProps, SessionsPageProps, SessionsSidebarProps, TaskFilterStatus, WorkflowExecutionPanelProps };