@memberjunction/ng-dashboards 5.22.0 → 5.23.0

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 (204) hide show
  1. package/README.md +51 -0
  2. package/dist/AI/components/agents/agent-configuration.component.d.ts.map +1 -1
  3. package/dist/AI/components/agents/agent-configuration.component.js +364 -362
  4. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
  5. package/dist/AI/components/agents/agent-editor.component.js +2 -2
  6. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts +275 -64
  7. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
  8. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +2645 -436
  9. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
  10. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts +240 -6
  11. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
  12. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +2166 -256
  13. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
  14. package/dist/AI/components/execution-monitoring.component.d.ts.map +1 -1
  15. package/dist/AI/components/execution-monitoring.component.js +191 -197
  16. package/dist/AI/components/execution-monitoring.component.js.map +1 -1
  17. package/dist/AI/components/models/model-management.component.js +9 -8
  18. package/dist/AI/components/models/model-management.component.js.map +1 -1
  19. package/dist/AI/components/prompts/prompt-management.component.js +305 -299
  20. package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
  21. package/dist/AI/components/system/system-configuration.component.js +319 -313
  22. package/dist/AI/components/system/system-configuration.component.js.map +1 -1
  23. package/dist/AI/components/vectors/vector-management-resource.component.d.ts +1 -2
  24. package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
  25. package/dist/AI/components/vectors/vector-management-resource.component.js +12 -27
  26. package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
  27. package/dist/APIKeys/api-applications-panel.component.js +10 -12
  28. package/dist/APIKeys/api-applications-panel.component.js.map +1 -1
  29. package/dist/APIKeys/api-key-create-dialog.component.js +13 -19
  30. package/dist/APIKeys/api-key-create-dialog.component.js.map +1 -1
  31. package/dist/APIKeys/api-key-edit-panel.component.js +12 -14
  32. package/dist/APIKeys/api-key-edit-panel.component.js.map +1 -1
  33. package/dist/APIKeys/api-scopes-panel.component.js +61 -68
  34. package/dist/APIKeys/api-scopes-panel.component.js.map +1 -1
  35. package/dist/APIKeys/api-usage-panel.component.js +10 -11
  36. package/dist/APIKeys/api-usage-panel.component.js.map +1 -1
  37. package/dist/Actions/components/actions-list-view.component.js +82 -96
  38. package/dist/Actions/components/actions-list-view.component.js.map +1 -1
  39. package/dist/Actions/components/actions-overview.component.js +130 -134
  40. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  41. package/dist/Actions/components/categories-list-view.component.d.ts.map +1 -1
  42. package/dist/Actions/components/categories-list-view.component.js +40 -46
  43. package/dist/Actions/components/categories-list-view.component.js.map +1 -1
  44. package/dist/Actions/components/code-management.component.js +2 -2
  45. package/dist/Actions/components/code-management.component.js.map +1 -1
  46. package/dist/Actions/components/entity-integration.component.js +2 -2
  47. package/dist/Actions/components/entity-integration.component.js.map +1 -1
  48. package/dist/Actions/components/execution-monitoring.component.js +127 -132
  49. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  50. package/dist/Actions/components/executions-list-view.component.js +2 -2
  51. package/dist/Actions/components/executions-list-view.component.js.map +1 -1
  52. package/dist/Actions/components/explorer/action-card.component.js +11 -17
  53. package/dist/Actions/components/explorer/action-card.component.js.map +1 -1
  54. package/dist/Actions/components/explorer/action-explorer.component.js +5 -11
  55. package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
  56. package/dist/Actions/components/explorer/action-list-item.component.js +8 -10
  57. package/dist/Actions/components/explorer/action-list-item.component.js.map +1 -1
  58. package/dist/Actions/components/explorer/action-toolbar.component.js +112 -133
  59. package/dist/Actions/components/explorer/action-toolbar.component.js.map +1 -1
  60. package/dist/Actions/components/explorer/action-tree-panel.component.js +63 -83
  61. package/dist/Actions/components/explorer/action-tree-panel.component.js.map +1 -1
  62. package/dist/Actions/components/explorer/new-action-panel.component.js +17 -21
  63. package/dist/Actions/components/explorer/new-action-panel.component.js.map +1 -1
  64. package/dist/Actions/components/explorer/new-category-panel.component.js +17 -21
  65. package/dist/Actions/components/explorer/new-category-panel.component.js.map +1 -1
  66. package/dist/Actions/components/scheduled-actions.component.js +2 -2
  67. package/dist/Actions/components/scheduled-actions.component.js.map +1 -1
  68. package/dist/Actions/components/security-permissions.component.js +2 -2
  69. package/dist/Actions/components/security-permissions.component.js.map +1 -1
  70. package/dist/ComponentStudio/component-studio-dashboard.component.d.ts +13 -5
  71. package/dist/ComponentStudio/component-studio-dashboard.component.d.ts.map +1 -1
  72. package/dist/ComponentStudio/component-studio-dashboard.component.js +168 -145
  73. package/dist/ComponentStudio/component-studio-dashboard.component.js.map +1 -1
  74. package/dist/ComponentStudio/components/artifact-load-dialog.component.d.ts +4 -5
  75. package/dist/ComponentStudio/components/artifact-load-dialog.component.d.ts.map +1 -1
  76. package/dist/ComponentStudio/components/artifact-load-dialog.component.js +197 -200
  77. package/dist/ComponentStudio/components/artifact-load-dialog.component.js.map +1 -1
  78. package/dist/ComponentStudio/components/artifact-selection-dialog.component.d.ts +5 -7
  79. package/dist/ComponentStudio/components/artifact-selection-dialog.component.d.ts.map +1 -1
  80. package/dist/ComponentStudio/components/artifact-selection-dialog.component.js +142 -148
  81. package/dist/ComponentStudio/components/artifact-selection-dialog.component.js.map +1 -1
  82. package/dist/ComponentStudio/components/browser/component-browser.component.js +153 -166
  83. package/dist/ComponentStudio/components/browser/component-browser.component.js.map +1 -1
  84. package/dist/ComponentStudio/components/editors/code-editor-panel.component.js +15 -20
  85. package/dist/ComponentStudio/components/editors/code-editor-panel.component.js.map +1 -1
  86. package/dist/ComponentStudio/components/editors/data-requirements-editor.component.js +16 -21
  87. package/dist/ComponentStudio/components/editors/data-requirements-editor.component.js.map +1 -1
  88. package/dist/ComponentStudio/components/editors/requirements-editor.component.js +18 -23
  89. package/dist/ComponentStudio/components/editors/requirements-editor.component.js.map +1 -1
  90. package/dist/ComponentStudio/components/editors/spec-editor.component.js +25 -30
  91. package/dist/ComponentStudio/components/editors/spec-editor.component.js.map +1 -1
  92. package/dist/ComponentStudio/components/new-component-dialog/new-component-dialog.component.js +10 -11
  93. package/dist/ComponentStudio/components/new-component-dialog/new-component-dialog.component.js.map +1 -1
  94. package/dist/ComponentStudio/components/save-version-dialog/save-version-dialog.component.d.ts.map +1 -1
  95. package/dist/ComponentStudio/components/save-version-dialog/save-version-dialog.component.js +24 -35
  96. package/dist/ComponentStudio/components/save-version-dialog/save-version-dialog.component.js.map +1 -1
  97. package/dist/ComponentStudio/components/text-import-dialog.component.js +15 -17
  98. package/dist/ComponentStudio/components/text-import-dialog.component.js.map +1 -1
  99. package/dist/Credentials/components/credentials-categories-resource.component.js +7 -6
  100. package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
  101. package/dist/Credentials/components/credentials-list-resource.component.js +6 -5
  102. package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
  103. package/dist/Credentials/components/credentials-types-resource.component.js +7 -6
  104. package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
  105. package/dist/DashboardBrowser/dashboard-share-dialog.component.js +9 -9
  106. package/dist/DashboardBrowser/dashboard-share-dialog.component.js.map +1 -1
  107. package/dist/Home/home-dashboard.component.js +4 -4
  108. package/dist/Home/home-dashboard.component.js.map +1 -1
  109. package/dist/Integration/components/connections/connections.component.js +4 -4
  110. package/dist/Integration/components/connections/connections.component.js.map +1 -1
  111. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js +246 -259
  112. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js.map +1 -1
  113. package/dist/Integration/components/widgets/integration-card.component.js +7 -9
  114. package/dist/Integration/components/widgets/integration-card.component.js.map +1 -1
  115. package/dist/Integration/integration.module.d.ts +6 -10
  116. package/dist/Integration/integration.module.d.ts.map +1 -1
  117. package/dist/Integration/integration.module.js +12 -20
  118. package/dist/Integration/integration.module.js.map +1 -1
  119. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts +106 -0
  120. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts.map +1 -0
  121. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +607 -0
  122. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -0
  123. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts +7 -2
  124. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts.map +1 -1
  125. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +59 -31
  126. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
  127. package/dist/KnowledgeHub/index.d.ts +1 -0
  128. package/dist/KnowledgeHub/index.d.ts.map +1 -1
  129. package/dist/KnowledgeHub/index.js +1 -0
  130. package/dist/KnowledgeHub/index.js.map +1 -1
  131. package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
  132. package/dist/Lists/components/lists-browse-resource.component.js +9 -7
  133. package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
  134. package/dist/Lists/components/lists-my-lists-resource.component.js +5 -4
  135. package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
  136. package/dist/Lists/components/lists-operations-resource.component.js +10 -9
  137. package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
  138. package/dist/MCP/components/mcp-connection-dialog.component.js +141 -132
  139. package/dist/MCP/components/mcp-connection-dialog.component.js.map +1 -1
  140. package/dist/MCP/components/mcp-log-detail-panel.component.js +4 -4
  141. package/dist/MCP/components/mcp-log-detail-panel.component.js.map +1 -1
  142. package/dist/MCP/components/mcp-server-dialog.component.js +141 -128
  143. package/dist/MCP/components/mcp-server-dialog.component.js.map +1 -1
  144. package/dist/MCP/components/mcp-test-tool-dialog.component.js +210 -218
  145. package/dist/MCP/components/mcp-test-tool-dialog.component.js.map +1 -1
  146. package/dist/MCP/mcp-dashboard.component.js +2 -2
  147. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  148. package/dist/MCP/mcp.module.d.ts +6 -9
  149. package/dist/MCP/mcp.module.d.ts.map +1 -1
  150. package/dist/MCP/mcp.module.js +20 -22
  151. package/dist/MCP/mcp.module.js.map +1 -1
  152. package/dist/Scheduling/components/scheduling-activity.component.js +5 -4
  153. package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -1
  154. package/dist/Scheduling/components/scheduling-jobs.component.js +6 -5
  155. package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
  156. package/dist/Scheduling/components/scheduling-overview.component.js +93 -92
  157. package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
  158. package/dist/Testing/testing-dashboard.component.js +9 -10
  159. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  160. package/dist/actions-dashboards.module.d.ts +8 -13
  161. package/dist/actions-dashboards.module.d.ts.map +1 -1
  162. package/dist/actions-dashboards.module.js +6 -27
  163. package/dist/actions-dashboards.module.js.map +1 -1
  164. package/dist/ai-dashboards.module.d.ts +16 -20
  165. package/dist/ai-dashboards.module.d.ts.map +1 -1
  166. package/dist/ai-dashboards.module.js +23 -44
  167. package/dist/ai-dashboards.module.js.map +1 -1
  168. package/dist/communication-dashboards.module.d.ts +4 -8
  169. package/dist/communication-dashboards.module.d.ts.map +1 -1
  170. package/dist/communication-dashboards.module.js +0 -19
  171. package/dist/communication-dashboards.module.js.map +1 -1
  172. package/dist/component-studio-dashboards.module.d.ts +7 -11
  173. package/dist/component-studio-dashboards.module.d.ts.map +1 -1
  174. package/dist/component-studio-dashboards.module.js +22 -34
  175. package/dist/component-studio-dashboards.module.js.map +1 -1
  176. package/dist/core-dashboards.module.d.ts +12 -18
  177. package/dist/core-dashboards.module.d.ts.map +1 -1
  178. package/dist/core-dashboards.module.js +15 -31
  179. package/dist/core-dashboards.module.js.map +1 -1
  180. package/dist/credentials-dashboards.module.d.ts +5 -8
  181. package/dist/credentials-dashboards.module.d.ts.map +1 -1
  182. package/dist/credentials-dashboards.module.js +3 -19
  183. package/dist/credentials-dashboards.module.js.map +1 -1
  184. package/dist/data-explorer-dashboards.module.d.ts +7 -13
  185. package/dist/data-explorer-dashboards.module.d.ts.map +1 -1
  186. package/dist/data-explorer-dashboards.module.js +0 -27
  187. package/dist/data-explorer-dashboards.module.js.map +1 -1
  188. package/dist/lists-dashboards.module.d.ts +5 -8
  189. package/dist/lists-dashboards.module.d.ts.map +1 -1
  190. package/dist/lists-dashboards.module.js +3 -19
  191. package/dist/lists-dashboards.module.js.map +1 -1
  192. package/dist/public-api.d.ts +1 -0
  193. package/dist/public-api.d.ts.map +1 -1
  194. package/dist/public-api.js +1 -0
  195. package/dist/public-api.js.map +1 -1
  196. package/dist/scheduling-dashboards.module.d.ts +6 -10
  197. package/dist/scheduling-dashboards.module.d.ts.map +1 -1
  198. package/dist/scheduling-dashboards.module.js +3 -23
  199. package/dist/scheduling-dashboards.module.js.map +1 -1
  200. package/dist/testing-dashboards.module.d.ts +7 -13
  201. package/dist/testing-dashboards.module.d.ts.map +1 -1
  202. package/dist/testing-dashboards.module.js +0 -27
  203. package/dist/testing-dashboards.module.js.map +1 -1
  204. package/package.json +47 -55
@@ -14,7 +14,7 @@ import * as i0 from "@angular/core";
14
14
  import * as i1 from "../services/ai-instrumentation.service";
15
15
  import * as i2 from "@memberjunction/ng-shared";
16
16
  import * as i3 from "@angular/forms";
17
- import * as i4 from "@progress/kendo-angular-layout";
17
+ import * as i4 from "angular-split";
18
18
  import * as i5 from "@memberjunction/ng-shared-generic";
19
19
  import * as i6 from "./widgets/kpi-card.component";
20
20
  import * as i7 from "./charts/time-series-chart.component";
@@ -27,12 +27,12 @@ const _forTrack1 = ($index, $item) => $item.id;
27
27
  const _forTrack2 = ($index, $item) => $item.model;
28
28
  function ExecutionMonitoringComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
29
29
  i0.ɵɵelementStart(0, "div", 1);
30
- i0.ɵɵelement(1, "mj-loading", 51);
30
+ i0.ɵɵelement(1, "mj-loading", 48);
31
31
  i0.ɵɵelementEnd();
32
32
  } }
33
33
  function ExecutionMonitoringComponent_For_27_Template(rf, ctx) { if (rf & 1) {
34
34
  const _r1 = i0.ɵɵgetCurrentView();
35
- i0.ɵɵelementStart(0, "app-kpi-card", 52);
35
+ i0.ɵɵelementStart(0, "app-kpi-card", 49);
36
36
  i0.ɵɵlistener("click", function ExecutionMonitoringComponent_For_27_Template_app_kpi_card_click_0_listener() { const kpi_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onKpiClick(kpi_r2)); });
37
37
  i0.ɵɵelementEnd();
38
38
  } if (rf & 2) {
@@ -42,52 +42,52 @@ function ExecutionMonitoringComponent_For_27_Template(rf, ctx) { if (rf & 1) {
42
42
  i0.ɵɵproperty("data", kpi_r2);
43
43
  } }
44
44
  function ExecutionMonitoringComponent_Conditional_39_Template(rf, ctx) { if (rf & 1) {
45
- i0.ɵɵelementStart(0, "div", 27)(1, "div", 53)(2, "div", 54);
46
- i0.ɵɵelement(3, "i", 55);
45
+ i0.ɵɵelementStart(0, "div", 26)(1, "div", 50)(2, "div", 51);
46
+ i0.ɵɵelement(3, "i", 52);
47
47
  i0.ɵɵelementEnd();
48
- i0.ɵɵelementStart(4, "div", 56)(5, "div", 57);
48
+ i0.ɵɵelementStart(4, "div", 53)(5, "div", 54);
49
49
  i0.ɵɵtext(6, "Success Rate");
50
50
  i0.ɵɵelementEnd();
51
- i0.ɵɵelementStart(7, "div", 58);
51
+ i0.ɵɵelementStart(7, "div", 55);
52
52
  i0.ɵɵtext(8);
53
53
  i0.ɵɵelementEnd();
54
- i0.ɵɵelementStart(9, "div", 59);
54
+ i0.ɵɵelementStart(9, "div", 56);
55
55
  i0.ɵɵtext(10);
56
56
  i0.ɵɵelementEnd()()();
57
- i0.ɵɵelementStart(11, "div", 53)(12, "div", 60);
58
- i0.ɵɵelement(13, "i", 61);
57
+ i0.ɵɵelementStart(11, "div", 50)(12, "div", 57);
58
+ i0.ɵɵelement(13, "i", 58);
59
59
  i0.ɵɵelementEnd();
60
- i0.ɵɵelementStart(14, "div", 56)(15, "div", 57);
60
+ i0.ɵɵelementStart(14, "div", 53)(15, "div", 54);
61
61
  i0.ɵɵtext(16, "Error Rate");
62
62
  i0.ɵɵelementEnd();
63
- i0.ɵɵelementStart(17, "div", 58);
63
+ i0.ɵɵelementStart(17, "div", 55);
64
64
  i0.ɵɵtext(18);
65
65
  i0.ɵɵelementEnd();
66
- i0.ɵɵelementStart(19, "div", 59);
66
+ i0.ɵɵelementStart(19, "div", 56);
67
67
  i0.ɵɵtext(20);
68
68
  i0.ɵɵelementEnd()()();
69
- i0.ɵɵelementStart(21, "div", 53)(22, "div", 62);
70
- i0.ɵɵelement(23, "i", 63);
69
+ i0.ɵɵelementStart(21, "div", 50)(22, "div", 59);
70
+ i0.ɵɵelement(23, "i", 60);
71
71
  i0.ɵɵelementEnd();
72
- i0.ɵɵelementStart(24, "div", 56)(25, "div", 57);
72
+ i0.ɵɵelementStart(24, "div", 53)(25, "div", 54);
73
73
  i0.ɵɵtext(26, "Avg Response Time");
74
74
  i0.ɵɵelementEnd();
75
- i0.ɵɵelementStart(27, "div", 58);
75
+ i0.ɵɵelementStart(27, "div", 55);
76
76
  i0.ɵɵtext(28);
77
77
  i0.ɵɵelementEnd();
78
- i0.ɵɵelementStart(29, "div", 59);
78
+ i0.ɵɵelementStart(29, "div", 56);
79
79
  i0.ɵɵtext(30, "Across all models");
80
80
  i0.ɵɵelementEnd()()();
81
- i0.ɵɵelementStart(31, "div", 53)(32, "div", 64);
82
- i0.ɵɵelement(33, "i", 48);
81
+ i0.ɵɵelementStart(31, "div", 50)(32, "div", 61);
82
+ i0.ɵɵelement(33, "i", 45);
83
83
  i0.ɵɵelementEnd();
84
- i0.ɵɵelementStart(34, "div", 56)(35, "div", 57);
84
+ i0.ɵɵelementStart(34, "div", 53)(35, "div", 54);
85
85
  i0.ɵɵtext(36, "Active Executions");
86
86
  i0.ɵɵelementEnd();
87
- i0.ɵɵelementStart(37, "div", 58);
87
+ i0.ɵɵelementStart(37, "div", 55);
88
88
  i0.ɵɵtext(38);
89
89
  i0.ɵɵelementEnd();
90
- i0.ɵɵelementStart(39, "div", 59);
90
+ i0.ɵɵelementStart(39, "div", 56);
91
91
  i0.ɵɵtext(40, "Currently running");
92
92
  i0.ɵɵelementEnd()()()();
93
93
  } if (rf & 2) {
@@ -108,19 +108,19 @@ function ExecutionMonitoringComponent_Conditional_39_Template(rf, ctx) { if (rf
108
108
  } }
109
109
  function ExecutionMonitoringComponent_For_46_Conditional_3_Template(rf, ctx) { if (rf & 1) {
110
110
  const _r7 = i0.ɵɵgetCurrentView();
111
- i0.ɵɵelementStart(0, "button", 68);
111
+ i0.ɵɵelementStart(0, "button", 65);
112
112
  i0.ɵɵlistener("click", function ExecutionMonitoringComponent_For_46_Conditional_3_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r7); const tab_r6 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.closeTab($event, tab_r6.id)); });
113
- i0.ɵɵelement(1, "i", 69);
113
+ i0.ɵɵelement(1, "i", 66);
114
114
  i0.ɵɵelementEnd();
115
115
  } }
116
116
  function ExecutionMonitoringComponent_For_46_Template(rf, ctx) { if (rf & 1) {
117
117
  const _r5 = i0.ɵɵgetCurrentView();
118
- i0.ɵɵelementStart(0, "div", 65);
118
+ i0.ɵɵelementStart(0, "div", 62);
119
119
  i0.ɵɵlistener("click", function ExecutionMonitoringComponent_For_46_Template_div_click_0_listener() { const tab_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.selectTab(tab_r6.id)); });
120
- i0.ɵɵelementStart(1, "span", 66);
120
+ i0.ɵɵelementStart(1, "span", 63);
121
121
  i0.ɵɵtext(2);
122
122
  i0.ɵɵelementEnd();
123
- i0.ɵɵconditionalCreate(3, ExecutionMonitoringComponent_For_46_Conditional_3_Template, 2, 0, "button", 67);
123
+ i0.ɵɵconditionalCreate(3, ExecutionMonitoringComponent_For_46_Conditional_3_Template, 2, 0, "button", 64);
124
124
  i0.ɵɵelementEnd();
125
125
  } if (rf & 2) {
126
126
  const tab_r6 = ctx.$implicit;
@@ -133,7 +133,7 @@ function ExecutionMonitoringComponent_For_46_Template(rf, ctx) { if (rf & 1) {
133
133
  } }
134
134
  function ExecutionMonitoringComponent_Conditional_48_Template(rf, ctx) { if (rf & 1) {
135
135
  const _r8 = i0.ɵɵgetCurrentView();
136
- i0.ɵɵelementStart(0, "div", 34)(1, "app-time-series-chart", 70);
136
+ i0.ɵɵelementStart(0, "div", 32)(1, "app-time-series-chart", 67);
137
137
  i0.ɵɵpipe(2, "async");
138
138
  i0.ɵɵlistener("dataPointClick", function ExecutionMonitoringComponent_Conditional_48_Template_app_time_series_chart_dataPointClick_1_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onDataPointClick($event)); })("timeRangeChange", function ExecutionMonitoringComponent_Conditional_48_Template_app_time_series_chart_timeRangeChange_1_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onChartTimeRangeChange($event)); });
139
139
  i0.ɵɵelementEnd()();
@@ -143,7 +143,7 @@ function ExecutionMonitoringComponent_Conditional_48_Template(rf, ctx) { if (rf
143
143
  i0.ɵɵproperty("data", i0.ɵɵpipeBind1(2, 2, ctx_r2.trends$) ?? i0.ɵɵpureFunction0(4, _c0))("config", ctx_r2.timeSeriesConfig);
144
144
  } }
145
145
  function ExecutionMonitoringComponent_Conditional_49_Conditional_6_Template(rf, ctx) { if (rf & 1) {
146
- i0.ɵɵelementStart(0, "span", 74);
146
+ i0.ɵɵelementStart(0, "span", 71);
147
147
  i0.ɵɵtext(1);
148
148
  i0.ɵɵelementEnd();
149
149
  } if (rf & 2) {
@@ -152,7 +152,7 @@ function ExecutionMonitoringComponent_Conditional_49_Conditional_6_Template(rf,
152
152
  i0.ɵɵtextInterpolate(ctx_r2.getFormattedTimestamp(ctx_r2.activeTab));
153
153
  } }
154
154
  function ExecutionMonitoringComponent_Conditional_49_Conditional_7_Template(rf, ctx) { if (rf & 1) {
155
- i0.ɵɵelementStart(0, "span", 75);
155
+ i0.ɵɵelementStart(0, "span", 72);
156
156
  i0.ɵɵtext(1);
157
157
  i0.ɵɵelementEnd();
158
158
  } if (rf & 2) {
@@ -161,36 +161,36 @@ function ExecutionMonitoringComponent_Conditional_49_Conditional_7_Template(rf,
161
161
  i0.ɵɵtextInterpolate(ctx_r2.getFormattedMetricLabel(ctx_r2.activeTab));
162
162
  } }
163
163
  function ExecutionMonitoringComponent_Conditional_49_Conditional_8_Template(rf, ctx) { if (rf & 1) {
164
- i0.ɵɵelementStart(0, "div", 76);
165
- i0.ɵɵelement(1, "mj-loading", 79);
164
+ i0.ɵɵelementStart(0, "div", 73);
165
+ i0.ɵɵelement(1, "mj-loading", 76);
166
166
  i0.ɵɵelementEnd();
167
167
  } }
168
168
  function ExecutionMonitoringComponent_Conditional_49_Conditional_9_For_19_Template(rf, ctx) { if (rf & 1) {
169
169
  const _r9 = i0.ɵɵgetCurrentView();
170
- i0.ɵɵelementStart(0, "div", 83);
170
+ i0.ɵɵelementStart(0, "div", 80);
171
171
  i0.ɵɵlistener("click", function ExecutionMonitoringComponent_Conditional_49_Conditional_9_For_19_Template_div_click_0_listener() { const execution_r10 = i0.ɵɵrestoreView(_r9).$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.viewExecutionDetail(execution_r10)); });
172
- i0.ɵɵelementStart(1, "div", 84)(2, "span", 85);
172
+ i0.ɵɵelementStart(1, "div", 81)(2, "span", 82);
173
173
  i0.ɵɵtext(3);
174
174
  i0.ɵɵelementEnd()();
175
- i0.ɵɵelementStart(4, "div", 84);
175
+ i0.ɵɵelementStart(4, "div", 81);
176
176
  i0.ɵɵtext(5);
177
177
  i0.ɵɵelementEnd();
178
- i0.ɵɵelementStart(6, "div", 84);
178
+ i0.ɵɵelementStart(6, "div", 81);
179
179
  i0.ɵɵtext(7);
180
180
  i0.ɵɵelementEnd();
181
- i0.ɵɵelementStart(8, "div", 84)(9, "span", 86);
181
+ i0.ɵɵelementStart(8, "div", 81)(9, "span", 83);
182
182
  i0.ɵɵtext(10);
183
183
  i0.ɵɵelementEnd()();
184
- i0.ɵɵelementStart(11, "div", 84);
184
+ i0.ɵɵelementStart(11, "div", 81);
185
185
  i0.ɵɵtext(12);
186
186
  i0.ɵɵelementEnd();
187
- i0.ɵɵelementStart(13, "div", 84);
187
+ i0.ɵɵelementStart(13, "div", 81);
188
188
  i0.ɵɵtext(14);
189
189
  i0.ɵɵelementEnd();
190
- i0.ɵɵelementStart(15, "div", 84);
190
+ i0.ɵɵelementStart(15, "div", 81);
191
191
  i0.ɵɵtext(16);
192
192
  i0.ɵɵelementEnd();
193
- i0.ɵɵelementStart(17, "div", 84);
193
+ i0.ɵɵelementStart(17, "div", 81);
194
194
  i0.ɵɵtext(18);
195
195
  i0.ɵɵelementEnd()();
196
196
  } if (rf & 2) {
@@ -218,31 +218,31 @@ function ExecutionMonitoringComponent_Conditional_49_Conditional_9_For_19_Templa
218
218
  i0.ɵɵtextInterpolate(ctx_r2.formatTime(execution_r10.startTime));
219
219
  } }
220
220
  function ExecutionMonitoringComponent_Conditional_49_Conditional_9_Template(rf, ctx) { if (rf & 1) {
221
- i0.ɵɵelementStart(0, "div", 77)(1, "div", 80)(2, "div", 81);
221
+ i0.ɵɵelementStart(0, "div", 74)(1, "div", 77)(2, "div", 78);
222
222
  i0.ɵɵtext(3, "Type");
223
223
  i0.ɵɵelementEnd();
224
- i0.ɵɵelementStart(4, "div", 81);
224
+ i0.ɵɵelementStart(4, "div", 78);
225
225
  i0.ɵɵtext(5, "Name");
226
226
  i0.ɵɵelementEnd();
227
- i0.ɵɵelementStart(6, "div", 81);
227
+ i0.ɵɵelementStart(6, "div", 78);
228
228
  i0.ɵɵtext(7, "Model");
229
229
  i0.ɵɵelementEnd();
230
- i0.ɵɵelementStart(8, "div", 81);
230
+ i0.ɵɵelementStart(8, "div", 78);
231
231
  i0.ɵɵtext(9, "Status");
232
232
  i0.ɵɵelementEnd();
233
- i0.ɵɵelementStart(10, "div", 81);
233
+ i0.ɵɵelementStart(10, "div", 78);
234
234
  i0.ɵɵtext(11, "Duration");
235
235
  i0.ɵɵelementEnd();
236
- i0.ɵɵelementStart(12, "div", 81);
236
+ i0.ɵɵelementStart(12, "div", 78);
237
237
  i0.ɵɵtext(13, "Cost");
238
238
  i0.ɵɵelementEnd();
239
- i0.ɵɵelementStart(14, "div", 81);
239
+ i0.ɵɵelementStart(14, "div", 78);
240
240
  i0.ɵɵtext(15, "Tokens");
241
241
  i0.ɵɵelementEnd();
242
- i0.ɵɵelementStart(16, "div", 81);
242
+ i0.ɵɵelementStart(16, "div", 78);
243
243
  i0.ɵɵtext(17, "Time");
244
244
  i0.ɵɵelementEnd()();
245
- i0.ɵɵrepeaterCreate(18, ExecutionMonitoringComponent_Conditional_49_Conditional_9_For_19_Template, 19, 12, "div", 82, _forTrack1);
245
+ i0.ɵɵrepeaterCreate(18, ExecutionMonitoringComponent_Conditional_49_Conditional_9_For_19_Template, 19, 12, "div", 79, _forTrack1);
246
246
  i0.ɵɵelementEnd();
247
247
  } if (rf & 2) {
248
248
  const ctx_r2 = i0.ɵɵnextContext(2);
@@ -250,22 +250,22 @@ function ExecutionMonitoringComponent_Conditional_49_Conditional_9_Template(rf,
250
250
  i0.ɵɵrepeater(ctx_r2.activeTab == null ? null : ctx_r2.activeTab.data);
251
251
  } }
252
252
  function ExecutionMonitoringComponent_Conditional_49_Conditional_10_Template(rf, ctx) { if (rf & 1) {
253
- i0.ɵɵelementStart(0, "div", 78);
254
- i0.ɵɵelement(1, "i", 87);
253
+ i0.ɵɵelementStart(0, "div", 75);
254
+ i0.ɵɵelement(1, "i", 84);
255
255
  i0.ɵɵelementStart(2, "p");
256
256
  i0.ɵɵtext(3, "No executions found for this time period");
257
257
  i0.ɵɵelementEnd()();
258
258
  } }
259
259
  function ExecutionMonitoringComponent_Conditional_49_Template(rf, ctx) { if (rf & 1) {
260
- i0.ɵɵelementStart(0, "div", 35)(1, "div", 71)(2, "h4");
261
- i0.ɵɵelement(3, "i", 72);
260
+ i0.ɵɵelementStart(0, "div", 33)(1, "div", 68)(2, "h4");
261
+ i0.ɵɵelement(3, "i", 69);
262
262
  i0.ɵɵtext(4);
263
263
  i0.ɵɵelementEnd();
264
- i0.ɵɵelementStart(5, "div", 73);
265
- i0.ɵɵconditionalCreate(6, ExecutionMonitoringComponent_Conditional_49_Conditional_6_Template, 2, 1, "span", 74);
266
- i0.ɵɵconditionalCreate(7, ExecutionMonitoringComponent_Conditional_49_Conditional_7_Template, 2, 1, "span", 75);
264
+ i0.ɵɵelementStart(5, "div", 70);
265
+ i0.ɵɵconditionalCreate(6, ExecutionMonitoringComponent_Conditional_49_Conditional_6_Template, 2, 1, "span", 71);
266
+ i0.ɵɵconditionalCreate(7, ExecutionMonitoringComponent_Conditional_49_Conditional_7_Template, 2, 1, "span", 72);
267
267
  i0.ɵɵelementEnd()();
268
- i0.ɵɵconditionalCreate(8, ExecutionMonitoringComponent_Conditional_49_Conditional_8_Template, 2, 0, "div", 76)(9, ExecutionMonitoringComponent_Conditional_49_Conditional_9_Template, 20, 0, "div", 77)(10, ExecutionMonitoringComponent_Conditional_49_Conditional_10_Template, 4, 0, "div", 78);
268
+ i0.ɵɵconditionalCreate(8, ExecutionMonitoringComponent_Conditional_49_Conditional_8_Template, 2, 0, "div", 73)(9, ExecutionMonitoringComponent_Conditional_49_Conditional_9_Template, 20, 0, "div", 74)(10, ExecutionMonitoringComponent_Conditional_49_Conditional_10_Template, 4, 0, "div", 75);
269
269
  i0.ɵɵelementEnd();
270
270
  } if (rf & 2) {
271
271
  const ctx_r2 = i0.ɵɵnextContext();
@@ -279,12 +279,12 @@ function ExecutionMonitoringComponent_Conditional_49_Template(rf, ctx) { if (rf
279
279
  i0.ɵɵconditional(ctx_r2.loadingDrillDown ? 8 : (ctx_r2.activeTab == null ? null : ctx_r2.activeTab.data == null ? null : ctx_r2.activeTab.data.length) > 0 ? 9 : 10);
280
280
  } }
281
281
  function ExecutionMonitoringComponent_Conditional_50_Conditional_5_Template(rf, ctx) { if (rf & 1) {
282
- i0.ɵɵelementStart(0, "div", 76);
283
- i0.ɵɵelement(1, "mj-loading", 90);
282
+ i0.ɵɵelementStart(0, "div", 73);
283
+ i0.ɵɵelement(1, "mj-loading", 87);
284
284
  i0.ɵɵelementEnd();
285
285
  } }
286
286
  function ExecutionMonitoringComponent_Conditional_50_Conditional_6_Conditional_32_Template(rf, ctx) { if (rf & 1) {
287
- i0.ɵɵelementStart(0, "div", 94)(1, "h5");
287
+ i0.ɵɵelementStart(0, "div", 91)(1, "h5");
288
288
  i0.ɵɵtext(2, "Description");
289
289
  i0.ɵɵelementEnd();
290
290
  i0.ɵɵelementStart(3, "p");
@@ -296,43 +296,43 @@ function ExecutionMonitoringComponent_Conditional_50_Conditional_6_Conditional_3
296
296
  i0.ɵɵtextInterpolate(ctx_r2.activeTab == null ? null : ctx_r2.activeTab.data == null ? null : ctx_r2.activeTab.data.description);
297
297
  } }
298
298
  function ExecutionMonitoringComponent_Conditional_50_Conditional_6_Template(rf, ctx) { if (rf & 1) {
299
- i0.ɵɵelementStart(0, "div", 89)(1, "div", 91)(2, "div", 92)(3, "label");
299
+ i0.ɵɵelementStart(0, "div", 86)(1, "div", 88)(2, "div", 89)(3, "label");
300
300
  i0.ɵɵtext(4, "Model Name:");
301
301
  i0.ɵɵelementEnd();
302
302
  i0.ɵɵelementStart(5, "span");
303
303
  i0.ɵɵtext(6);
304
304
  i0.ɵɵelementEnd()();
305
- i0.ɵɵelementStart(7, "div", 92)(8, "label");
305
+ i0.ɵɵelementStart(7, "div", 89)(8, "label");
306
306
  i0.ɵɵtext(9, "Vendor:");
307
307
  i0.ɵɵelementEnd();
308
308
  i0.ɵɵelementStart(10, "span");
309
309
  i0.ɵɵtext(11);
310
310
  i0.ɵɵelementEnd()();
311
- i0.ɵɵelementStart(12, "div", 92)(13, "label");
311
+ i0.ɵɵelementStart(12, "div", 89)(13, "label");
312
312
  i0.ɵɵtext(14, "API Name:");
313
313
  i0.ɵɵelementEnd();
314
314
  i0.ɵɵelementStart(15, "span");
315
315
  i0.ɵɵtext(16);
316
316
  i0.ɵɵelementEnd()();
317
- i0.ɵɵelementStart(17, "div", 92)(18, "label");
317
+ i0.ɵɵelementStart(17, "div", 89)(18, "label");
318
318
  i0.ɵɵtext(19, "Input Cost:");
319
319
  i0.ɵɵelementEnd();
320
320
  i0.ɵɵelementStart(20, "span");
321
321
  i0.ɵɵtext(21);
322
322
  i0.ɵɵelementEnd()();
323
- i0.ɵɵelementStart(22, "div", 92)(23, "label");
323
+ i0.ɵɵelementStart(22, "div", 89)(23, "label");
324
324
  i0.ɵɵtext(24, "Output Cost:");
325
325
  i0.ɵɵelementEnd();
326
326
  i0.ɵɵelementStart(25, "span");
327
327
  i0.ɵɵtext(26);
328
328
  i0.ɵɵelementEnd()();
329
- i0.ɵɵelementStart(27, "div", 92)(28, "label");
329
+ i0.ɵɵelementStart(27, "div", 89)(28, "label");
330
330
  i0.ɵɵtext(29, "Active:");
331
331
  i0.ɵɵelementEnd();
332
- i0.ɵɵelementStart(30, "span", 93);
332
+ i0.ɵɵelementStart(30, "span", 90);
333
333
  i0.ɵɵtext(31);
334
334
  i0.ɵɵelementEnd()()();
335
- i0.ɵɵconditionalCreate(32, ExecutionMonitoringComponent_Conditional_50_Conditional_6_Conditional_32_Template, 5, 1, "div", 94);
335
+ i0.ɵɵconditionalCreate(32, ExecutionMonitoringComponent_Conditional_50_Conditional_6_Conditional_32_Template, 5, 1, "div", 91);
336
336
  i0.ɵɵelementEnd();
337
337
  } if (rf & 2) {
338
338
  const ctx_r2 = i0.ɵɵnextContext(2);
@@ -354,11 +354,11 @@ function ExecutionMonitoringComponent_Conditional_50_Conditional_6_Template(rf,
354
354
  i0.ɵɵconditional((ctx_r2.activeTab == null ? null : ctx_r2.activeTab.data == null ? null : ctx_r2.activeTab.data.description) ? 32 : -1);
355
355
  } }
356
356
  function ExecutionMonitoringComponent_Conditional_50_Template(rf, ctx) { if (rf & 1) {
357
- i0.ɵɵelementStart(0, "div", 36)(1, "div", 71)(2, "h4");
358
- i0.ɵɵelement(3, "i", 88);
357
+ i0.ɵɵelementStart(0, "div", 34)(1, "div", 68)(2, "h4");
358
+ i0.ɵɵelement(3, "i", 85);
359
359
  i0.ɵɵtext(4);
360
360
  i0.ɵɵelementEnd()();
361
- i0.ɵɵconditionalCreate(5, ExecutionMonitoringComponent_Conditional_50_Conditional_5_Template, 2, 0, "div", 76)(6, ExecutionMonitoringComponent_Conditional_50_Conditional_6_Template, 33, 9, "div", 89);
361
+ i0.ɵɵconditionalCreate(5, ExecutionMonitoringComponent_Conditional_50_Conditional_5_Template, 2, 0, "div", 73)(6, ExecutionMonitoringComponent_Conditional_50_Conditional_6_Template, 33, 9, "div", 86);
362
362
  i0.ɵɵelementEnd();
363
363
  } if (rf & 2) {
364
364
  const ctx_r2 = i0.ɵɵnextContext();
@@ -368,16 +368,16 @@ function ExecutionMonitoringComponent_Conditional_50_Template(rf, ctx) { if (rf
368
368
  i0.ɵɵconditional(ctx_r2.loadingDrillDown ? 5 : (ctx_r2.activeTab == null ? null : ctx_r2.activeTab.data) ? 6 : -1);
369
369
  } }
370
370
  function ExecutionMonitoringComponent_Conditional_65_Conditional_1_For_2_Template(rf, ctx) { if (rf & 1) {
371
- i0.ɵɵelementStart(0, "div", 96)(1, "div", 97)(2, "span", 98);
371
+ i0.ɵɵelementStart(0, "div", 93)(1, "div", 94)(2, "span", 95);
372
372
  i0.ɵɵtext(3);
373
373
  i0.ɵɵelementEnd();
374
- i0.ɵɵelementStart(4, "span", 99);
374
+ i0.ɵɵelementStart(4, "span", 96);
375
375
  i0.ɵɵtext(5);
376
376
  i0.ɵɵelementEnd()();
377
- i0.ɵɵelementStart(6, "div", 100);
378
- i0.ɵɵelement(7, "div", 101);
377
+ i0.ɵɵelementStart(6, "div", 97);
378
+ i0.ɵɵelement(7, "div", 98);
379
379
  i0.ɵɵelementEnd();
380
- i0.ɵɵelementStart(8, "div", 102);
380
+ i0.ɵɵelementStart(8, "div", 99);
381
381
  i0.ɵɵtext(9);
382
382
  i0.ɵɵelementEnd()();
383
383
  } if (rf & 2) {
@@ -394,16 +394,16 @@ function ExecutionMonitoringComponent_Conditional_65_Conditional_1_For_2_Templat
394
394
  i0.ɵɵtextInterpolate1(" ", ctx_r2.formatTokens(item_r11.tokens), " tokens ");
395
395
  } }
396
396
  function ExecutionMonitoringComponent_Conditional_65_Conditional_1_Template(rf, ctx) { if (rf & 1) {
397
- i0.ɵɵelementStart(0, "div", 95);
398
- i0.ɵɵrepeaterCreate(1, ExecutionMonitoringComponent_Conditional_65_Conditional_1_For_2_Template, 10, 5, "div", 96, _forTrack2);
397
+ i0.ɵɵelementStart(0, "div", 92);
398
+ i0.ɵɵrepeaterCreate(1, ExecutionMonitoringComponent_Conditional_65_Conditional_1_For_2_Template, 10, 5, "div", 93, _forTrack2);
399
399
  i0.ɵɵelementEnd();
400
400
  } if (rf & 2) {
401
401
  i0.ɵɵadvance();
402
402
  i0.ɵɵrepeater(ctx.slice(0, 8));
403
403
  } }
404
404
  function ExecutionMonitoringComponent_Conditional_65_Template(rf, ctx) { if (rf & 1) {
405
- i0.ɵɵelementStart(0, "div", 46);
406
- i0.ɵɵconditionalCreate(1, ExecutionMonitoringComponent_Conditional_65_Conditional_1_Template, 3, 0, "div", 95);
405
+ i0.ɵɵelementStart(0, "div", 43);
406
+ i0.ɵɵconditionalCreate(1, ExecutionMonitoringComponent_Conditional_65_Conditional_1_Template, 3, 0, "div", 92);
407
407
  i0.ɵɵpipe(2, "async");
408
408
  i0.ɵɵelementEnd();
409
409
  } if (rf & 2) {
@@ -413,22 +413,22 @@ function ExecutionMonitoringComponent_Conditional_65_Template(rf, ctx) { if (rf
413
413
  i0.ɵɵconditional((tmp_1_0 = i0.ɵɵpipeBind1(2, 1, ctx_r2.costData$)) ? 1 : -1, tmp_1_0);
414
414
  } }
415
415
  function ExecutionMonitoringComponent_Conditional_72_Conditional_1_For_2_Template(rf, ctx) { if (rf & 1) {
416
- i0.ɵɵelementStart(0, "div", 104)(1, "div", 105)(2, "span", 98);
416
+ i0.ɵɵelementStart(0, "div", 101)(1, "div", 102)(2, "span", 95);
417
417
  i0.ɵɵtext(3);
418
418
  i0.ɵɵelementEnd();
419
- i0.ɵɵelementStart(4, "span", 106);
419
+ i0.ɵɵelementStart(4, "span", 103);
420
420
  i0.ɵɵtext(5);
421
421
  i0.ɵɵelementEnd()();
422
- i0.ɵɵelementStart(6, "div", 107)(7, "div", 108);
423
- i0.ɵɵelement(8, "div", 109)(9, "div", 110);
422
+ i0.ɵɵelementStart(6, "div", 104)(7, "div", 105);
423
+ i0.ɵɵelement(8, "div", 106)(9, "div", 107);
424
424
  i0.ɵɵelementEnd();
425
- i0.ɵɵelementStart(10, "div", 111)(11, "span", 112);
425
+ i0.ɵɵelementStart(10, "div", 108)(11, "span", 109);
426
426
  i0.ɵɵtext(12);
427
427
  i0.ɵɵelementEnd();
428
- i0.ɵɵelementStart(13, "span", 113);
428
+ i0.ɵɵelementStart(13, "span", 110);
429
429
  i0.ɵɵtext(14);
430
430
  i0.ɵɵelementEnd()()();
431
- i0.ɵɵelementStart(15, "div", 114);
431
+ i0.ɵɵelementStart(15, "div", 111);
432
432
  i0.ɵɵtext(16);
433
433
  i0.ɵɵelementEnd()();
434
434
  } if (rf & 2) {
@@ -450,16 +450,16 @@ function ExecutionMonitoringComponent_Conditional_72_Conditional_1_For_2_Templat
450
450
  i0.ɵɵtextInterpolate1(" ", ctx_r2.formatCostPerToken(item_r13.cost, item_r13.inputTokens + item_r13.outputTokens), " ");
451
451
  } }
452
452
  function ExecutionMonitoringComponent_Conditional_72_Conditional_1_Template(rf, ctx) { if (rf & 1) {
453
- i0.ɵɵelementStart(0, "div", 103);
454
- i0.ɵɵrepeaterCreate(1, ExecutionMonitoringComponent_Conditional_72_Conditional_1_For_2_Template, 17, 9, "div", 104, _forTrack2);
453
+ i0.ɵɵelementStart(0, "div", 100);
454
+ i0.ɵɵrepeaterCreate(1, ExecutionMonitoringComponent_Conditional_72_Conditional_1_For_2_Template, 17, 9, "div", 101, _forTrack2);
455
455
  i0.ɵɵelementEnd();
456
456
  } if (rf & 2) {
457
457
  i0.ɵɵadvance();
458
458
  i0.ɵɵrepeater(ctx.slice(0, 6));
459
459
  } }
460
460
  function ExecutionMonitoringComponent_Conditional_72_Template(rf, ctx) { if (rf & 1) {
461
- i0.ɵɵelementStart(0, "div", 46);
462
- i0.ɵɵconditionalCreate(1, ExecutionMonitoringComponent_Conditional_72_Conditional_1_Template, 3, 0, "div", 103);
461
+ i0.ɵɵelementStart(0, "div", 43);
462
+ i0.ɵɵconditionalCreate(1, ExecutionMonitoringComponent_Conditional_72_Conditional_1_Template, 3, 0, "div", 100);
463
463
  i0.ɵɵpipe(2, "async");
464
464
  i0.ɵɵelementEnd();
465
465
  } if (rf & 2) {
@@ -470,7 +470,7 @@ function ExecutionMonitoringComponent_Conditional_72_Template(rf, ctx) { if (rf
470
470
  } }
471
471
  function ExecutionMonitoringComponent_Conditional_79_Template(rf, ctx) { if (rf & 1) {
472
472
  const _r14 = i0.ɵɵgetCurrentView();
473
- i0.ɵɵelementStart(0, "div", 49)(1, "app-live-execution-widget", 115);
473
+ i0.ɵɵelementStart(0, "div", 46)(1, "app-live-execution-widget", 112);
474
474
  i0.ɵɵpipe(2, "async");
475
475
  i0.ɵɵlistener("executionClick", function ExecutionMonitoringComponent_Conditional_79_Template_app_live_execution_widget_executionClick_1_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onExecutionClick($event)); });
476
476
  i0.ɵɵelementEnd()();
@@ -480,7 +480,7 @@ function ExecutionMonitoringComponent_Conditional_79_Template(rf, ctx) { if (rf
480
480
  i0.ɵɵproperty("executions", i0.ɵɵpipeBind1(2, 1, ctx_r2.liveExecutions$) ?? i0.ɵɵpureFunction0(3, _c0));
481
481
  } }
482
482
  function ExecutionMonitoringComponent_Conditional_80_Conditional_12_Conditional_28_Template(rf, ctx) { if (rf & 1) {
483
- i0.ɵɵelementStart(0, "div", 128)(1, "label");
483
+ i0.ɵɵelementStart(0, "div", 125)(1, "label");
484
484
  i0.ɵɵtext(2, "Completed:");
485
485
  i0.ɵɵelementEnd();
486
486
  i0.ɵɵelementStart(3, "span");
@@ -493,7 +493,7 @@ function ExecutionMonitoringComponent_Conditional_80_Conditional_12_Conditional_
493
493
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(5, 1, ctx_r2.executionDetails.endTime, "medium"));
494
494
  } }
495
495
  function ExecutionMonitoringComponent_Conditional_80_Conditional_12_Conditional_48_Template(rf, ctx) { if (rf & 1) {
496
- i0.ɵɵelementStart(0, "div", 128)(1, "label");
496
+ i0.ɵɵelementStart(0, "div", 125)(1, "label");
497
497
  i0.ɵɵtext(2, "Model:");
498
498
  i0.ɵɵelementEnd();
499
499
  i0.ɵɵelementStart(3, "span");
@@ -505,10 +505,10 @@ function ExecutionMonitoringComponent_Conditional_80_Conditional_12_Conditional_
505
505
  i0.ɵɵtextInterpolate(ctx_r2.executionDetails.model);
506
506
  } }
507
507
  function ExecutionMonitoringComponent_Conditional_80_Conditional_12_Conditional_49_Template(rf, ctx) { if (rf & 1) {
508
- i0.ɵɵelementStart(0, "div", 126)(1, "h4");
508
+ i0.ɵɵelementStart(0, "div", 123)(1, "h4");
509
509
  i0.ɵɵtext(2, "Error Information");
510
510
  i0.ɵɵelementEnd();
511
- i0.ɵɵelementStart(3, "div", 129);
511
+ i0.ɵɵelementStart(3, "div", 126);
512
512
  i0.ɵɵtext(4);
513
513
  i0.ɵɵelementEnd()();
514
514
  } if (rf & 2) {
@@ -517,16 +517,16 @@ function ExecutionMonitoringComponent_Conditional_80_Conditional_12_Conditional_
517
517
  i0.ɵɵtextInterpolate(ctx_r2.executionDetails.errorMessage);
518
518
  } }
519
519
  function ExecutionMonitoringComponent_Conditional_80_Conditional_12_Conditional_50_For_5_Template(rf, ctx) { if (rf & 1) {
520
- i0.ɵɵelementStart(0, "div", 131)(1, "div", 132)(2, "span", 133);
520
+ i0.ɵɵelementStart(0, "div", 128)(1, "div", 129)(2, "span", 130);
521
521
  i0.ɵɵtext(3);
522
522
  i0.ɵɵelementEnd();
523
- i0.ɵɵelementStart(4, "span", 134);
523
+ i0.ɵɵelementStart(4, "span", 131);
524
524
  i0.ɵɵtext(5);
525
525
  i0.ɵɵelementEnd();
526
- i0.ɵɵelementStart(6, "span", 135);
526
+ i0.ɵɵelementStart(6, "span", 132);
527
527
  i0.ɵɵtext(7);
528
528
  i0.ɵɵelementEnd()();
529
- i0.ɵɵelementStart(8, "div", 136)(9, "span");
529
+ i0.ɵɵelementStart(8, "div", 133)(9, "span");
530
530
  i0.ɵɵtext(10);
531
531
  i0.ɵɵelementEnd();
532
532
  i0.ɵɵelementStart(11, "span");
@@ -549,11 +549,11 @@ function ExecutionMonitoringComponent_Conditional_80_Conditional_12_Conditional_
549
549
  i0.ɵɵtextInterpolate1("", child_r16.tokens.toLocaleString(), " tokens");
550
550
  } }
551
551
  function ExecutionMonitoringComponent_Conditional_80_Conditional_12_Conditional_50_Template(rf, ctx) { if (rf & 1) {
552
- i0.ɵɵelementStart(0, "div", 126)(1, "h4");
552
+ i0.ɵɵelementStart(0, "div", 123)(1, "h4");
553
553
  i0.ɵɵtext(2);
554
554
  i0.ɵɵelementEnd();
555
- i0.ɵɵelementStart(3, "div", 130);
556
- i0.ɵɵrepeaterCreate(4, ExecutionMonitoringComponent_Conditional_80_Conditional_12_Conditional_50_For_5_Template, 13, 7, "div", 131, _forTrack1);
555
+ i0.ɵɵelementStart(3, "div", 127);
556
+ i0.ɵɵrepeaterCreate(4, ExecutionMonitoringComponent_Conditional_80_Conditional_12_Conditional_50_For_5_Template, 13, 7, "div", 128, _forTrack1);
557
557
  i0.ɵɵelementEnd()();
558
558
  } if (rf & 2) {
559
559
  const ctx_r2 = i0.ɵɵnextContext(3);
@@ -563,62 +563,62 @@ function ExecutionMonitoringComponent_Conditional_80_Conditional_12_Conditional_
563
563
  i0.ɵɵrepeater(ctx_r2.executionDetails.children);
564
564
  } }
565
565
  function ExecutionMonitoringComponent_Conditional_80_Conditional_12_Template(rf, ctx) { if (rf & 1) {
566
- i0.ɵɵelementStart(0, "div", 124)(1, "div", 126)(2, "h4");
566
+ i0.ɵɵelementStart(0, "div", 121)(1, "div", 123)(2, "h4");
567
567
  i0.ɵɵtext(3, "Basic Information");
568
568
  i0.ɵɵelementEnd();
569
- i0.ɵɵelementStart(4, "div", 127)(5, "div", 128)(6, "label");
569
+ i0.ɵɵelementStart(4, "div", 124)(5, "div", 125)(6, "label");
570
570
  i0.ɵɵtext(7, "Type:");
571
571
  i0.ɵɵelementEnd();
572
572
  i0.ɵɵelementStart(8, "span");
573
573
  i0.ɵɵtext(9);
574
574
  i0.ɵɵpipe(10, "titlecase");
575
575
  i0.ɵɵelementEnd()();
576
- i0.ɵɵelementStart(11, "div", 128)(12, "label");
576
+ i0.ɵɵelementStart(11, "div", 125)(12, "label");
577
577
  i0.ɵɵtext(13, "Name:");
578
578
  i0.ɵɵelementEnd();
579
579
  i0.ɵɵelementStart(14, "span");
580
580
  i0.ɵɵtext(15);
581
581
  i0.ɵɵelementEnd()();
582
- i0.ɵɵelementStart(16, "div", 128)(17, "label");
582
+ i0.ɵɵelementStart(16, "div", 125)(17, "label");
583
583
  i0.ɵɵtext(18, "Status:");
584
584
  i0.ɵɵelementEnd();
585
- i0.ɵɵelementStart(19, "span", 86);
585
+ i0.ɵɵelementStart(19, "span", 83);
586
586
  i0.ɵɵtext(20);
587
587
  i0.ɵɵpipe(21, "titlecase");
588
588
  i0.ɵɵelementEnd()();
589
- i0.ɵɵelementStart(22, "div", 128)(23, "label");
589
+ i0.ɵɵelementStart(22, "div", 125)(23, "label");
590
590
  i0.ɵɵtext(24, "Started:");
591
591
  i0.ɵɵelementEnd();
592
592
  i0.ɵɵelementStart(25, "span");
593
593
  i0.ɵɵtext(26);
594
594
  i0.ɵɵpipe(27, "date");
595
595
  i0.ɵɵelementEnd()();
596
- i0.ɵɵconditionalCreate(28, ExecutionMonitoringComponent_Conditional_80_Conditional_12_Conditional_28_Template, 6, 4, "div", 128);
597
- i0.ɵɵelementStart(29, "div", 128)(30, "label");
596
+ i0.ɵɵconditionalCreate(28, ExecutionMonitoringComponent_Conditional_80_Conditional_12_Conditional_28_Template, 6, 4, "div", 125);
597
+ i0.ɵɵelementStart(29, "div", 125)(30, "label");
598
598
  i0.ɵɵtext(31, "Duration:");
599
599
  i0.ɵɵelementEnd();
600
600
  i0.ɵɵelementStart(32, "span");
601
601
  i0.ɵɵtext(33);
602
602
  i0.ɵɵelementEnd()()()();
603
- i0.ɵɵelementStart(34, "div", 126)(35, "h4");
603
+ i0.ɵɵelementStart(34, "div", 123)(35, "h4");
604
604
  i0.ɵɵtext(36, "Resource Usage");
605
605
  i0.ɵɵelementEnd();
606
- i0.ɵɵelementStart(37, "div", 127)(38, "div", 128)(39, "label");
606
+ i0.ɵɵelementStart(37, "div", 124)(38, "div", 125)(39, "label");
607
607
  i0.ɵɵtext(40, "Cost:");
608
608
  i0.ɵɵelementEnd();
609
609
  i0.ɵɵelementStart(41, "span");
610
610
  i0.ɵɵtext(42);
611
611
  i0.ɵɵelementEnd()();
612
- i0.ɵɵelementStart(43, "div", 128)(44, "label");
612
+ i0.ɵɵelementStart(43, "div", 125)(44, "label");
613
613
  i0.ɵɵtext(45, "Tokens:");
614
614
  i0.ɵɵelementEnd();
615
615
  i0.ɵɵelementStart(46, "span");
616
616
  i0.ɵɵtext(47);
617
617
  i0.ɵɵelementEnd()();
618
- i0.ɵɵconditionalCreate(48, ExecutionMonitoringComponent_Conditional_80_Conditional_12_Conditional_48_Template, 5, 1, "div", 128);
618
+ i0.ɵɵconditionalCreate(48, ExecutionMonitoringComponent_Conditional_80_Conditional_12_Conditional_48_Template, 5, 1, "div", 125);
619
619
  i0.ɵɵelementEnd()();
620
- i0.ɵɵconditionalCreate(49, ExecutionMonitoringComponent_Conditional_80_Conditional_12_Conditional_49_Template, 5, 1, "div", 126);
621
- i0.ɵɵconditionalCreate(50, ExecutionMonitoringComponent_Conditional_80_Conditional_12_Conditional_50_Template, 6, 1, "div", 126);
620
+ i0.ɵɵconditionalCreate(49, ExecutionMonitoringComponent_Conditional_80_Conditional_12_Conditional_49_Template, 5, 1, "div", 123);
621
+ i0.ɵɵconditionalCreate(50, ExecutionMonitoringComponent_Conditional_80_Conditional_12_Conditional_50_Template, 6, 1, "div", 123);
622
622
  i0.ɵɵelementEnd();
623
623
  } if (rf & 2) {
624
624
  const ctx_r2 = i0.ɵɵnextContext(2);
@@ -648,31 +648,31 @@ function ExecutionMonitoringComponent_Conditional_80_Conditional_12_Template(rf,
648
648
  i0.ɵɵconditional(ctx_r2.executionDetails.children.length > 0 ? 50 : -1);
649
649
  } }
650
650
  function ExecutionMonitoringComponent_Conditional_80_Conditional_13_Template(rf, ctx) { if (rf & 1) {
651
- i0.ɵɵelementStart(0, "div", 125);
652
- i0.ɵɵelement(1, "mj-loading", 137);
651
+ i0.ɵɵelementStart(0, "div", 122);
652
+ i0.ɵɵelement(1, "mj-loading", 134);
653
653
  i0.ɵɵelementEnd();
654
654
  } }
655
655
  function ExecutionMonitoringComponent_Conditional_80_Template(rf, ctx) { if (rf & 1) {
656
656
  const _r15 = i0.ɵɵgetCurrentView();
657
- i0.ɵɵelementStart(0, "div", 116);
657
+ i0.ɵɵelementStart(0, "div", 113);
658
658
  i0.ɵɵlistener("click", function ExecutionMonitoringComponent_Conditional_80_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r15); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.closeExecutionModal()); });
659
- i0.ɵɵelementStart(1, "div", 117);
659
+ i0.ɵɵelementStart(1, "div", 114);
660
660
  i0.ɵɵlistener("click", function ExecutionMonitoringComponent_Conditional_80_Template_div_click_1_listener($event) { i0.ɵɵrestoreView(_r15); return i0.ɵɵresetView($event.stopPropagation()); });
661
- i0.ɵɵelementStart(2, "div", 118)(3, "h3");
661
+ i0.ɵɵelementStart(2, "div", 115)(3, "h3");
662
662
  i0.ɵɵtext(4, "Execution Details");
663
663
  i0.ɵɵelementEnd();
664
- i0.ɵɵelementStart(5, "div", 119)(6, "button", 120);
664
+ i0.ɵɵelementStart(5, "div", 116)(6, "button", 117);
665
665
  i0.ɵɵlistener("click", function ExecutionMonitoringComponent_Conditional_80_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r15); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.openFullRecord()); });
666
- i0.ɵɵelement(7, "i", 121);
666
+ i0.ɵɵelement(7, "i", 118);
667
667
  i0.ɵɵtext(8, " Open ");
668
668
  i0.ɵɵelementEnd();
669
- i0.ɵɵelementStart(9, "button", 122);
669
+ i0.ɵɵelementStart(9, "button", 119);
670
670
  i0.ɵɵlistener("click", function ExecutionMonitoringComponent_Conditional_80_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r15); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.closeExecutionModal()); });
671
- i0.ɵɵelement(10, "i", 69);
671
+ i0.ɵɵelement(10, "i", 66);
672
672
  i0.ɵɵelementEnd()()();
673
- i0.ɵɵelementStart(11, "div", 123);
674
- i0.ɵɵconditionalCreate(12, ExecutionMonitoringComponent_Conditional_80_Conditional_12_Template, 51, 20, "div", 124);
675
- i0.ɵɵconditionalCreate(13, ExecutionMonitoringComponent_Conditional_80_Conditional_13_Template, 2, 0, "div", 125);
673
+ i0.ɵɵelementStart(11, "div", 120);
674
+ i0.ɵɵconditionalCreate(12, ExecutionMonitoringComponent_Conditional_80_Conditional_12_Template, 51, 20, "div", 121);
675
+ i0.ɵɵconditionalCreate(13, ExecutionMonitoringComponent_Conditional_80_Conditional_13_Template, 2, 0, "div", 122);
676
676
  i0.ɵɵelementEnd()()();
677
677
  } if (rf & 2) {
678
678
  const ctx_r2 = i0.ɵɵnextContext();
@@ -1346,7 +1346,7 @@ let ExecutionMonitoringComponent = class ExecutionMonitoringComponent extends Ba
1346
1346
  return 'fa-solid fa-chart-line';
1347
1347
  }
1348
1348
  static ɵfac = function ExecutionMonitoringComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ExecutionMonitoringComponent)(i0.ɵɵdirectiveInject(i1.AIInstrumentationService), i0.ɵɵdirectiveInject(i2.NavigationService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
1349
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ExecutionMonitoringComponent, selectors: [["app-execution-monitoring"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 81, vars: 50, consts: [[1, "execution-monitoring"], [1, "loading-overlay"], [1, "monitoring-header"], [1, "monitoring-title"], [1, "fa-solid", "fa-chart-line"], [1, "monitoring-controls"], [1, "time-range-control"], [3, "ngModelChange", "change", "ngModel", "disabled"], ["value", "1h"], ["value", "6h"], ["value", "24h"], ["value", "7d"], ["value", "30d"], [1, "refresh-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-refresh"], [1, "kpi-dashboard"], [1, "kpi-grid"], [3, "data", "clickable"], ["orientation", "vertical", 1, "dashboard-splitter", 3, "layoutChange"], ["size", "45%", 3, "resizable", "collapsible"], ["orientation", "horizontal", 3, "layoutChange"], ["size", "30%", 3, "resizable", "collapsible", "collapsed"], [1, "dashboard-section", "system-status"], [1, "status-container"], [1, "chart-header"], [1, "chart-title"], [1, "fa-solid", "fa-heartbeat"], [1, "status-metrics"], [3, "resizable", "collapsible"], [1, "dashboard-section", "drill-down-container"], [1, "drill-down-tabs"], [1, "tab-header"], [1, "tab-item", 3, "active"], [1, "tab-content"], [1, "tab-pane", "trends-chart"], [1, "tab-pane", "executions-drill-down"], [1, "tab-pane", "model-detail"], ["size", "50%", 3, "resizable", "collapsible"], [1, "dashboard-section", "performance-matrix"], ["title", "Agent vs Model Performance", 3, "data", "config"], [1, "dashboard-section", "analysis-panels"], [1, "analysis-panel"], [1, "panel-header", 3, "click"], [1, "panel-title"], [1, "fa-solid", "fa-dollar-sign"], [1, "fa-solid", "panel-toggle-icon"], [1, "panel-content"], [1, "fa-solid", "fa-chart-pie"], [1, "fa-solid", "fa-bolt"], [1, "panel-content", "live-executions-panel"], [1, "execution-modal"], ["text", "Loading dashboard data...", "size", "large"], [3, "click", "data"], [1, "status-metric"], [1, "status-icon", "status-icon--success"], [1, "fa-solid", "fa-check"], [1, "status-info"], [1, "status-label"], [1, "status-value"], [1, "status-subtitle"], [1, "status-icon", "status-icon--warning"], [1, "fa-solid", "fa-exclamation-triangle"], [1, "status-icon", "status-icon--info"], [1, "fa-solid", "fa-clock"], [1, "status-icon", "status-icon--primary"], [1, "tab-item", 3, "click"], [1, "tab-title"], ["title", "Close tab", 1, "tab-close"], ["title", "Close tab", 1, "tab-close", 3, "click"], [1, "fa-solid", "fa-times"], ["title", "Execution Trends", 3, "dataPointClick", "timeRangeChange", "data", "config"], [1, "drill-down-header"], [1, "fa-solid", "fa-list"], [1, "drill-down-meta"], [1, "timestamp"], [1, "metric-badge"], [1, "loading-spinner"], [1, "executions-table"], [1, "no-data"], ["text", "Loading execution details...", "size", "small"], [1, "table-header"], [1, "header-cell"], [1, "table-row"], [1, "table-row", 3, "click"], [1, "table-cell"], [1, "type-badge"], [1, "status-badge"], [1, "fa-solid", "fa-inbox"], [1, "fa-solid", "fa-microchip"], [1, "model-details"], ["text", "Loading model details...", "size", "small"], [1, "model-info-grid"], [1, "info-item"], [1, "status-indicator"], [1, "model-description"], [1, "cost-bars"], [1, "cost-bar-item"], [1, "cost-bar-info"], [1, "model-name"], [1, "cost-value"], [1, "cost-bar-container"], [1, "cost-bar"], [1, "token-info"], [1, "efficiency-items"], [1, "efficiency-item"], [1, "efficiency-header"], [1, "efficiency-ratio"], [1, "token-breakdown"], [1, "token-bar"], [1, "token-segment", "token-segment--input"], [1, "token-segment", "token-segment--output"], [1, "token-labels"], [1, "input-label"], [1, "output-label"], [1, "cost-per-token"], [3, "executionClick", "executions"], [1, "execution-modal", 3, "click"], [1, "execution-modal-content", 3, "click"], [1, "execution-modal-header"], [1, "modal-header-actions"], [1, "open-record-btn", 3, "click"], [1, "fa-solid", "fa-external-link-alt"], [1, "close-btn", 3, "click"], [1, "execution-modal-body"], [1, "execution-details"], [1, "loading-details"], [1, "detail-section"], [1, "detail-grid"], [1, "detail-item"], [1, "error-message"], [1, "child-executions"], [1, "child-execution"], [1, "child-info"], [1, "child-name"], [1, "child-type"], [1, "child-status"], [1, "child-metrics"], ["text", "Loading execution details...", "size", "medium"]], template: function ExecutionMonitoringComponent_Template(rf, ctx) { if (rf & 1) {
1349
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ExecutionMonitoringComponent, selectors: [["app-execution-monitoring"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 81, vars: 43, consts: [[1, "execution-monitoring"], [1, "loading-overlay"], [1, "monitoring-header"], [1, "monitoring-title"], [1, "fa-solid", "fa-chart-line"], [1, "monitoring-controls"], [1, "time-range-control"], [3, "ngModelChange", "change", "ngModel", "disabled"], ["value", "1h"], ["value", "6h"], ["value", "24h"], ["value", "7d"], ["value", "30d"], [1, "refresh-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-refresh"], [1, "kpi-dashboard"], [1, "kpi-grid"], [3, "data", "clickable"], ["direction", "vertical", 1, "dashboard-splitter"], [3, "size"], ["direction", "horizontal"], [1, "dashboard-section", "system-status"], [1, "status-container"], [1, "chart-header"], [1, "chart-title"], [1, "fa-solid", "fa-heartbeat"], [1, "status-metrics"], [1, "dashboard-section", "drill-down-container"], [1, "drill-down-tabs"], [1, "tab-header"], [1, "tab-item", 3, "active"], [1, "tab-content"], [1, "tab-pane", "trends-chart"], [1, "tab-pane", "executions-drill-down"], [1, "tab-pane", "model-detail"], [1, "dashboard-section", "performance-matrix"], ["title", "Agent vs Model Performance", 3, "data", "config"], [1, "dashboard-section", "analysis-panels"], [1, "analysis-panel"], [1, "panel-header", 3, "click"], [1, "panel-title"], [1, "fa-solid", "fa-dollar-sign"], [1, "fa-solid", "panel-toggle-icon"], [1, "panel-content"], [1, "fa-solid", "fa-chart-pie"], [1, "fa-solid", "fa-bolt"], [1, "panel-content", "live-executions-panel"], [1, "execution-modal"], ["text", "Loading dashboard data...", "size", "large"], [3, "click", "data"], [1, "status-metric"], [1, "status-icon", "status-icon--success"], [1, "fa-solid", "fa-check"], [1, "status-info"], [1, "status-label"], [1, "status-value"], [1, "status-subtitle"], [1, "status-icon", "status-icon--warning"], [1, "fa-solid", "fa-exclamation-triangle"], [1, "status-icon", "status-icon--info"], [1, "fa-solid", "fa-clock"], [1, "status-icon", "status-icon--primary"], [1, "tab-item", 3, "click"], [1, "tab-title"], ["title", "Close tab", 1, "tab-close"], ["title", "Close tab", 1, "tab-close", 3, "click"], [1, "fa-solid", "fa-times"], ["title", "Execution Trends", 3, "dataPointClick", "timeRangeChange", "data", "config"], [1, "drill-down-header"], [1, "fa-solid", "fa-list"], [1, "drill-down-meta"], [1, "timestamp"], [1, "metric-badge"], [1, "loading-spinner"], [1, "executions-table"], [1, "no-data"], ["text", "Loading execution details...", "size", "small"], [1, "table-header"], [1, "header-cell"], [1, "table-row"], [1, "table-row", 3, "click"], [1, "table-cell"], [1, "type-badge"], [1, "status-badge"], [1, "fa-solid", "fa-inbox"], [1, "fa-solid", "fa-microchip"], [1, "model-details"], ["text", "Loading model details...", "size", "small"], [1, "model-info-grid"], [1, "info-item"], [1, "status-indicator"], [1, "model-description"], [1, "cost-bars"], [1, "cost-bar-item"], [1, "cost-bar-info"], [1, "model-name"], [1, "cost-value"], [1, "cost-bar-container"], [1, "cost-bar"], [1, "token-info"], [1, "efficiency-items"], [1, "efficiency-item"], [1, "efficiency-header"], [1, "efficiency-ratio"], [1, "token-breakdown"], [1, "token-bar"], [1, "token-segment", "token-segment--input"], [1, "token-segment", "token-segment--output"], [1, "token-labels"], [1, "input-label"], [1, "output-label"], [1, "cost-per-token"], [3, "executionClick", "executions"], [1, "execution-modal", 3, "click"], [1, "execution-modal-content", 3, "click"], [1, "execution-modal-header"], [1, "modal-header-actions"], [1, "open-record-btn", 3, "click"], [1, "fa-solid", "fa-external-link-alt"], [1, "close-btn", 3, "click"], [1, "execution-modal-body"], [1, "execution-details"], [1, "loading-details"], [1, "detail-section"], [1, "detail-grid"], [1, "detail-item"], [1, "error-message"], [1, "child-executions"], [1, "child-execution"], [1, "child-info"], [1, "child-name"], [1, "child-type"], [1, "child-status"], [1, "child-metrics"], ["text", "Loading execution details...", "size", "medium"]], template: function ExecutionMonitoringComponent_Template(rf, ctx) { if (rf & 1) {
1350
1350
  i0.ɵɵelementStart(0, "div", 0);
1351
1351
  i0.ɵɵconditionalCreate(1, ExecutionMonitoringComponent_Conditional_1_Template, 2, 0, "div", 1);
1352
1352
  i0.ɵɵelementStart(2, "div", 2)(3, "h2", 3);
@@ -1383,65 +1383,59 @@ let ExecutionMonitoringComponent = class ExecutionMonitoringComponent extends Ba
1383
1383
  i0.ɵɵrepeaterCreate(26, ExecutionMonitoringComponent_For_27_Template, 1, 3, "app-kpi-card", 17, _forTrack0);
1384
1384
  i0.ɵɵpipe(28, "async");
1385
1385
  i0.ɵɵelementEnd()();
1386
- i0.ɵɵelementStart(29, "kendo-splitter", 18);
1387
- i0.ɵɵlistener("layoutChange", function ExecutionMonitoringComponent_Template_kendo_splitter_layoutChange_29_listener($event) { return ctx.onSplitterLayoutChange($event); });
1388
- i0.ɵɵelementStart(30, "kendo-splitter-pane", 19)(31, "kendo-splitter", 20);
1389
- i0.ɵɵlistener("layoutChange", function ExecutionMonitoringComponent_Template_kendo_splitter_layoutChange_31_listener($event) { return ctx.onSplitterLayoutChange($event); });
1390
- i0.ɵɵelementStart(32, "kendo-splitter-pane", 21)(33, "div", 22)(34, "div", 23)(35, "div", 24)(36, "h4", 25);
1391
- i0.ɵɵelement(37, "i", 26);
1386
+ i0.ɵɵelementStart(29, "as-split", 18)(30, "as-split-area", 19)(31, "as-split", 20)(32, "as-split-area", 19)(33, "div", 21)(34, "div", 22)(35, "div", 23)(36, "h4", 24);
1387
+ i0.ɵɵelement(37, "i", 25);
1392
1388
  i0.ɵɵtext(38, " System Health ");
1393
1389
  i0.ɵɵelementEnd()();
1394
- i0.ɵɵconditionalCreate(39, ExecutionMonitoringComponent_Conditional_39_Template, 41, 6, "div", 27);
1390
+ i0.ɵɵconditionalCreate(39, ExecutionMonitoringComponent_Conditional_39_Template, 41, 6, "div", 26);
1395
1391
  i0.ɵɵpipe(40, "async");
1396
1392
  i0.ɵɵelementEnd()()();
1397
- i0.ɵɵelementStart(41, "kendo-splitter-pane", 28)(42, "div", 29)(43, "div", 30)(44, "div", 31);
1398
- i0.ɵɵrepeaterCreate(45, ExecutionMonitoringComponent_For_46_Template, 4, 4, "div", 32, _forTrack1);
1393
+ i0.ɵɵelementStart(41, "as-split-area", 19)(42, "div", 27)(43, "div", 28)(44, "div", 29);
1394
+ i0.ɵɵrepeaterCreate(45, ExecutionMonitoringComponent_For_46_Template, 4, 4, "div", 30, _forTrack1);
1399
1395
  i0.ɵɵelementEnd();
1400
- i0.ɵɵelementStart(47, "div", 33);
1401
- i0.ɵɵconditionalCreate(48, ExecutionMonitoringComponent_Conditional_48_Template, 3, 5, "div", 34);
1402
- i0.ɵɵconditionalCreate(49, ExecutionMonitoringComponent_Conditional_49_Template, 11, 4, "div", 35);
1403
- i0.ɵɵconditionalCreate(50, ExecutionMonitoringComponent_Conditional_50_Template, 7, 2, "div", 36);
1396
+ i0.ɵɵelementStart(47, "div", 31);
1397
+ i0.ɵɵconditionalCreate(48, ExecutionMonitoringComponent_Conditional_48_Template, 3, 5, "div", 32);
1398
+ i0.ɵɵconditionalCreate(49, ExecutionMonitoringComponent_Conditional_49_Template, 11, 4, "div", 33);
1399
+ i0.ɵɵconditionalCreate(50, ExecutionMonitoringComponent_Conditional_50_Template, 7, 2, "div", 34);
1404
1400
  i0.ɵɵelementEnd()()()()()();
1405
- i0.ɵɵelementStart(51, "kendo-splitter-pane", 28)(52, "kendo-splitter", 20);
1406
- i0.ɵɵlistener("layoutChange", function ExecutionMonitoringComponent_Template_kendo_splitter_layoutChange_52_listener($event) { return ctx.onSplitterLayoutChange($event); });
1407
- i0.ɵɵelementStart(53, "kendo-splitter-pane", 37)(54, "div", 38);
1408
- i0.ɵɵelement(55, "app-performance-heatmap", 39);
1401
+ i0.ɵɵelementStart(51, "as-split-area", 19)(52, "as-split", 20)(53, "as-split-area", 19)(54, "div", 35);
1402
+ i0.ɵɵelement(55, "app-performance-heatmap", 36);
1409
1403
  i0.ɵɵpipe(56, "async");
1410
1404
  i0.ɵɵelementEnd()();
1411
- i0.ɵɵelementStart(57, "kendo-splitter-pane", 28)(58, "div", 40)(59, "div", 41)(60, "div", 42);
1405
+ i0.ɵɵelementStart(57, "as-split-area", 19)(58, "div", 37)(59, "div", 38)(60, "div", 39);
1412
1406
  i0.ɵɵlistener("click", function ExecutionMonitoringComponent_Template_div_click_60_listener() { return ctx.togglePanel("cost"); });
1413
- i0.ɵɵelementStart(61, "span", 43);
1414
- i0.ɵɵelement(62, "i", 44);
1407
+ i0.ɵɵelementStart(61, "span", 40);
1408
+ i0.ɵɵelement(62, "i", 41);
1415
1409
  i0.ɵɵtext(63, " Cost Analysis ");
1416
1410
  i0.ɵɵelementEnd();
1417
- i0.ɵɵelement(64, "i", 45);
1411
+ i0.ɵɵelement(64, "i", 42);
1418
1412
  i0.ɵɵelementEnd();
1419
- i0.ɵɵconditionalCreate(65, ExecutionMonitoringComponent_Conditional_65_Template, 3, 3, "div", 46);
1413
+ i0.ɵɵconditionalCreate(65, ExecutionMonitoringComponent_Conditional_65_Template, 3, 3, "div", 43);
1420
1414
  i0.ɵɵelementEnd();
1421
- i0.ɵɵelementStart(66, "div", 41)(67, "div", 42);
1415
+ i0.ɵɵelementStart(66, "div", 38)(67, "div", 39);
1422
1416
  i0.ɵɵlistener("click", function ExecutionMonitoringComponent_Template_div_click_67_listener() { return ctx.togglePanel("efficiency"); });
1423
- i0.ɵɵelementStart(68, "span", 43);
1424
- i0.ɵɵelement(69, "i", 47);
1417
+ i0.ɵɵelementStart(68, "span", 40);
1418
+ i0.ɵɵelement(69, "i", 44);
1425
1419
  i0.ɵɵtext(70, " Token Efficiency ");
1426
1420
  i0.ɵɵelementEnd();
1427
- i0.ɵɵelement(71, "i", 45);
1421
+ i0.ɵɵelement(71, "i", 42);
1428
1422
  i0.ɵɵelementEnd();
1429
- i0.ɵɵconditionalCreate(72, ExecutionMonitoringComponent_Conditional_72_Template, 3, 3, "div", 46);
1423
+ i0.ɵɵconditionalCreate(72, ExecutionMonitoringComponent_Conditional_72_Template, 3, 3, "div", 43);
1430
1424
  i0.ɵɵelementEnd();
1431
- i0.ɵɵelementStart(73, "div", 41)(74, "div", 42);
1425
+ i0.ɵɵelementStart(73, "div", 38)(74, "div", 39);
1432
1426
  i0.ɵɵlistener("click", function ExecutionMonitoringComponent_Template_div_click_74_listener() { return ctx.togglePanel("executions"); });
1433
- i0.ɵɵelementStart(75, "span", 43);
1434
- i0.ɵɵelement(76, "i", 48);
1427
+ i0.ɵɵelementStart(75, "span", 40);
1428
+ i0.ɵɵelement(76, "i", 45);
1435
1429
  i0.ɵɵtext(77, " Live Executions ");
1436
1430
  i0.ɵɵelementEnd();
1437
- i0.ɵɵelement(78, "i", 45);
1431
+ i0.ɵɵelement(78, "i", 42);
1438
1432
  i0.ɵɵelementEnd();
1439
- i0.ɵɵconditionalCreate(79, ExecutionMonitoringComponent_Conditional_79_Template, 3, 4, "div", 49);
1433
+ i0.ɵɵconditionalCreate(79, ExecutionMonitoringComponent_Conditional_79_Template, 3, 4, "div", 46);
1440
1434
  i0.ɵɵelementEnd()()()()()();
1441
- i0.ɵɵconditionalCreate(80, ExecutionMonitoringComponent_Conditional_80_Template, 14, 2, "div", 50);
1435
+ i0.ɵɵconditionalCreate(80, ExecutionMonitoringComponent_Conditional_80_Template, 14, 2, "div", 47);
1442
1436
  i0.ɵɵelementEnd();
1443
1437
  } if (rf & 2) {
1444
- let tmp_12_0;
1438
+ let tmp_9_0;
1445
1439
  i0.ɵɵclassProp("loading", ctx.isLoading);
1446
1440
  i0.ɵɵadvance();
1447
1441
  i0.ɵɵconditional(ctx.isLoading ? 1 : -1);
@@ -1453,15 +1447,15 @@ let ExecutionMonitoringComponent = class ExecutionMonitoringComponent extends Ba
1453
1447
  i0.ɵɵadvance();
1454
1448
  i0.ɵɵclassProp("spinning", ctx.isLoading);
1455
1449
  i0.ɵɵadvance(4);
1456
- i0.ɵɵrepeater(i0.ɵɵpipeBind1(28, 43, ctx.kpiCards$));
1450
+ i0.ɵɵrepeater(i0.ɵɵpipeBind1(28, 36, ctx.kpiCards$));
1457
1451
  i0.ɵɵadvance(4);
1458
- i0.ɵɵproperty("resizable", true)("collapsible", false);
1452
+ i0.ɵɵproperty("size", 45);
1459
1453
  i0.ɵɵadvance(2);
1460
- i0.ɵɵproperty("resizable", true)("collapsible", true)("collapsed", false);
1454
+ i0.ɵɵproperty("size", 30);
1461
1455
  i0.ɵɵadvance(7);
1462
- i0.ɵɵconditional((tmp_12_0 = i0.ɵɵpipeBind1(40, 45, ctx.kpis$)) ? 39 : -1, tmp_12_0);
1456
+ i0.ɵɵconditional((tmp_9_0 = i0.ɵɵpipeBind1(40, 38, ctx.kpis$)) ? 39 : -1, tmp_9_0);
1463
1457
  i0.ɵɵadvance(2);
1464
- i0.ɵɵproperty("resizable", true)("collapsible", false);
1458
+ i0.ɵɵproperty("size", 70);
1465
1459
  i0.ɵɵadvance(4);
1466
1460
  i0.ɵɵrepeater(ctx.drillDownTabs);
1467
1461
  i0.ɵɵadvance(3);
@@ -1471,13 +1465,13 @@ let ExecutionMonitoringComponent = class ExecutionMonitoringComponent extends Ba
1471
1465
  i0.ɵɵadvance();
1472
1466
  i0.ɵɵconditional((ctx.activeTab == null ? null : ctx.activeTab.type) === "model-detail" ? 50 : -1);
1473
1467
  i0.ɵɵadvance();
1474
- i0.ɵɵproperty("resizable", true)("collapsible", false);
1468
+ i0.ɵɵproperty("size", 55);
1475
1469
  i0.ɵɵadvance(2);
1476
- i0.ɵɵproperty("resizable", true)("collapsible", false);
1470
+ i0.ɵɵproperty("size", 50);
1477
1471
  i0.ɵɵadvance(2);
1478
- i0.ɵɵproperty("data", i0.ɵɵpipeBind1(56, 47, ctx.performanceMatrix$) ?? i0.ɵɵpureFunction0(49, _c0))("config", ctx.heatmapConfig);
1472
+ i0.ɵɵproperty("data", i0.ɵɵpipeBind1(56, 40, ctx.performanceMatrix$) ?? i0.ɵɵpureFunction0(42, _c0))("config", ctx.heatmapConfig);
1479
1473
  i0.ɵɵadvance(2);
1480
- i0.ɵɵproperty("resizable", true)("collapsible", false);
1474
+ i0.ɵɵproperty("size", 50);
1481
1475
  i0.ɵɵadvance(7);
1482
1476
  i0.ɵɵclassProp("fa-chevron-down", !ctx.panelStates.cost)("fa-chevron-up", ctx.panelStates.cost);
1483
1477
  i0.ɵɵadvance();
@@ -1492,7 +1486,7 @@ let ExecutionMonitoringComponent = class ExecutionMonitoringComponent extends Ba
1492
1486
  i0.ɵɵconditional(ctx.panelStates.executions ? 79 : -1);
1493
1487
  i0.ɵɵadvance();
1494
1488
  i0.ɵɵconditional(ctx.selectedExecution ? 80 : -1);
1495
- } }, dependencies: [i3.NgSelectOption, i3.ɵNgSelectMultipleOption, i3.SelectControlValueAccessor, i3.NgControlStatus, i3.NgModel, i4.SplitterComponent, i4.SplitterPaneComponent, i5.LoadingComponent, i6.KPICardComponent, i7.TimeSeriesChartComponent, i8.LiveExecutionWidgetComponent, i9.PerformanceHeatmapComponent, i10.AsyncPipe, i10.TitleCasePipe, i10.DatePipe], styles: [".execution-monitoring[_ngcontent-%COMP%] {\n padding: 0;\n background: var(--mj-bg-surface-card);\n width: 100%;\n height: 100%;\n position: relative;\n overflow: auto;\n display: flex;\n flex-direction: column;\n }\n\n .execution-monitoring.loading[_ngcontent-%COMP%] {\n overflow: hidden;\n }\n\n \n\n .loading-overlay[_ngcontent-%COMP%] {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: color-mix(in srgb, var(--mj-bg-surface) 70%, transparent);\n z-index: 999;\n display: flex;\n align-items: center;\n justify-content: center;\n backdrop-filter: blur(4px);\n }\n\n \n\n .monitoring-header[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n padding: 16px 24px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n gap: 16px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n border-bottom: 1px solid var(--mj-border-default);\n position: relative;\n z-index: 10;\n }\n\n .monitoring-title[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 12px;\n }\n\n .monitoring-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 22px;\n }\n\n .monitoring-controls[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n align-items: center;\n flex-wrap: wrap;\n }\n\n .time-range-control[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n }\n\n .time-range-control[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-weight: 500;\n }\n\n .time-range-control[_ngcontent-%COMP%] select[_ngcontent-%COMP%] {\n padding: 8px 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 13px;\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-primary);\n cursor: pointer;\n transition: all 0.2s ease;\n }\n\n .time-range-control[_ngcontent-%COMP%] select[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n }\n\n .time-range-control[_ngcontent-%COMP%] select[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n }\n\n .time-range-control[_ngcontent-%COMP%] select[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .time-range-control[_ngcontent-%COMP%] select[_ngcontent-%COMP%] option[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n }\n\n .refresh-btn[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n padding: 8px 16px;\n border-radius: 8px;\n font-size: 13px;\n font-weight: 600;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 8px;\n transition: all 0.2s ease;\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n }\n\n .refresh-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-brand-primary-hover);\n transform: translateY(-1px);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 35%, transparent);\n }\n\n .refresh-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n transform: none;\n }\n\n .refresh-btn[_ngcontent-%COMP%] i.spinning[_ngcontent-%COMP%] {\n animation: _ngcontent-%COMP%_spin 1s linear infinite;\n }\n\n @keyframes _ngcontent-%COMP%_spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n }\n\n .kpi-dashboard[_ngcontent-%COMP%] {\n padding: 20px;\n }\n\n .kpi-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));\n gap: 16px;\n }\n\n .dashboard-splitter[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 500px;\n margin: 0 20px 20px 20px;\n }\n\n .dashboard-section[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: 0 4px 16px color-mix(in srgb, var(--mj-brand-primary) 8%, transparent);\n overflow: hidden;\n height: 100%;\n display: flex;\n flex-direction: column;\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 8%, transparent);\n transition: box-shadow 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n .dashboard-section[_ngcontent-%COMP%]:hover {\n box-shadow: 0 8px 24px color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n }\n\n \n\n [_nghost-%COMP%] .k-splitter-pane {\n overflow: hidden;\n }\n\n [_nghost-%COMP%] .k-splitter .k-splitter-pane {\n padding: 10px;\n }\n\n [_nghost-%COMP%] .k-splitter-horizontal > .k-splitter-pane {\n padding: 10px 5px;\n }\n\n [_nghost-%COMP%] .k-splitter-vertical > .k-splitter-pane {\n padding: 5px 10px;\n }\n\n \n\n .cost-chart-container[_ngcontent-%COMP%], .efficiency-chart-container[_ngcontent-%COMP%], .status-container[_ngcontent-%COMP%] {\n padding: 20px;\n height: 100%;\n display: flex;\n flex-direction: column;\n }\n\n .chart-header[_ngcontent-%COMP%] {\n margin-bottom: 16px;\n }\n\n .chart-title[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .chart-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n }\n\n .cost-bars[_ngcontent-%COMP%], .efficiency-items[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 12px;\n }\n\n .cost-bar-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 8px 0;\n border-bottom: 1px solid var(--mj-border-default);\n }\n\n .cost-bar-item[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n }\n\n .cost-bar-info[_ngcontent-%COMP%] {\n min-width: 120px;\n display: flex;\n flex-direction: column;\n gap: 2px;\n }\n\n .model-name[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-text-primary);\n }\n\n .cost-value[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-brand-primary);\n font-weight: 600;\n }\n\n .cost-bar-container[_ngcontent-%COMP%] {\n flex: 1;\n height: 8px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n border-radius: 4px;\n overflow: hidden;\n }\n\n .cost-bar[_ngcontent-%COMP%] {\n height: 100%;\n background: var(--mj-brand-primary);\n border-radius: 4px;\n transition: width 0.4s cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n .token-info[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-muted);\n min-width: 80px;\n text-align: right;\n }\n\n \n\n .efficiency-item[_ngcontent-%COMP%] {\n padding: 12px 0;\n border-bottom: 1px solid var(--mj-border-default);\n }\n\n .efficiency-item[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n }\n\n .efficiency-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 8px;\n }\n\n .efficiency-ratio[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-brand-primary);\n font-weight: 600;\n }\n\n .token-breakdown[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n }\n\n .token-bar[_ngcontent-%COMP%] {\n height: 8px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n border-radius: 4px;\n overflow: hidden;\n display: flex;\n }\n\n .token-segment[_ngcontent-%COMP%] {\n height: 100%;\n transition: width 0.4s cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n .token-segment--input[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n }\n\n .token-segment--output[_ngcontent-%COMP%] {\n background: var(--mj-brand-accent);\n }\n\n .token-labels[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n font-size: 10px;\n color: var(--mj-text-muted);\n }\n\n .input-label[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-weight: 500;\n }\n\n .output-label[_ngcontent-%COMP%] {\n color: var(--mj-brand-accent);\n font-weight: 500;\n }\n\n .cost-per-token[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-disabled);\n margin-top: 4px;\n }\n\n \n\n .status-metrics[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n flex: 1;\n }\n\n .status-metric[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\n }\n\n .status-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n }\n\n .status-icon--success[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n }\n\n .status-icon--warning[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n }\n\n .status-icon--info[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n }\n\n .status-icon--primary[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n }\n\n .status-info[_ngcontent-%COMP%] {\n flex: 1;\n }\n\n .status-label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n font-weight: 500;\n }\n\n .status-value[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 2px 0;\n }\n\n .status-subtitle[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-disabled);\n }\n\n \n\n .execution-modal[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: rgba(0, 0, 0, 0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n padding: 20px;\n }\n\n .execution-modal-content[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border-radius: 8px;\n max-width: 800px;\n width: 100%;\n max-height: 80vh;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n }\n\n .execution-modal-header[_ngcontent-%COMP%] {\n padding: 20px;\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n\n .execution-modal-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n }\n\n .modal-header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n align-items: center;\n }\n\n .open-record-btn[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n padding: 8px 16px;\n border-radius: 8px;\n font-size: 13px;\n font-weight: 600;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n }\n\n .open-record-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary-hover);\n transform: translateY(-1px);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 35%, transparent);\n }\n\n .open-record-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n }\n\n .close-btn[_ngcontent-%COMP%] {\n background: none;\n border: none;\n font-size: 16px;\n color: var(--mj-text-disabled);\n cursor: pointer;\n padding: 4px;\n }\n\n .close-btn[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-primary);\n }\n\n .execution-modal-body[_ngcontent-%COMP%] {\n padding: 20px;\n overflow-y: auto;\n flex: 1;\n }\n\n .execution-details[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 20px;\n }\n\n .detail-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n border-bottom: 1px solid var(--mj-border-default);\n padding-bottom: 6px;\n }\n\n .detail-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 12px;\n }\n\n .detail-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n }\n\n .detail-item[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n font-weight: 500;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n }\n\n .detail-item[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-primary);\n }\n\n .status-badge[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 10px;\n font-weight: 500;\n text-transform: uppercase;\n }\n\n .status-badge--completed[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n }\n\n .status-badge--running[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n }\n\n .status-badge--failed[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n }\n\n .error-message[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 10%, var(--mj-bg-surface));\n border: 1px solid var(--mj-status-warning);\n border-radius: 4px;\n padding: 12px;\n font-size: 12px;\n color: var(--mj-status-error);\n font-family: monospace;\n }\n\n .child-executions[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n\n .child-execution[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-radius: 4px;\n padding: 12px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n\n .child-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .child-name[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-text-primary);\n }\n\n .child-type[_ngcontent-%COMP%] {\n font-size: 10px;\n background: var(--mj-border-default);\n padding: 2px 6px;\n border-radius: 3px;\n color: var(--mj-text-muted);\n }\n\n .child-status[_ngcontent-%COMP%] {\n font-size: 10px;\n padding: 2px 6px;\n border-radius: 3px;\n }\n\n .child-metrics[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n font-size: 11px;\n color: var(--mj-text-muted);\n }\n\n .loading-details[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px;\n gap: 12px;\n }\n\n \n\n .drill-down-container[_ngcontent-%COMP%] {\n height: 100%;\n display: flex;\n flex-direction: column;\n }\n\n .drill-down-tabs[_ngcontent-%COMP%] {\n height: 100%;\n display: flex;\n flex-direction: column;\n }\n\n .tab-header[_ngcontent-%COMP%] {\n display: flex;\n border-bottom: 1px solid color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n background: var(--mj-bg-surface-card);\n min-height: 44px;\n overflow-x: auto;\n }\n\n .tab-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 18px;\n background: transparent;\n border: none;\n border-bottom: 2px solid transparent;\n cursor: pointer;\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-muted);\n white-space: nowrap;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n min-width: 120px;\n justify-content: space-between;\n }\n\n .tab-item[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 5%, transparent);\n color: var(--mj-brand-primary);\n }\n\n .tab-item.active[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n color: var(--mj-brand-primary);\n border-bottom-color: var(--mj-brand-primary);\n font-weight: 600;\n }\n\n .tab-title[_ngcontent-%COMP%] {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .tab-close[_ngcontent-%COMP%] {\n background: none;\n border: none;\n color: var(--mj-text-disabled);\n cursor: pointer;\n padding: 2px;\n border-radius: 2px;\n font-size: 10px;\n width: 16px;\n height: 16px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n }\n\n .tab-close[_ngcontent-%COMP%]:hover {\n background: rgba(0, 0, 0, 0.1);\n color: var(--mj-text-primary);\n }\n\n .tab-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n }\n\n .tab-pane[_ngcontent-%COMP%] {\n height: 100%;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n }\n\n .trends-chart[_ngcontent-%COMP%] {\n padding: 0;\n }\n\n .trends-chart[_ngcontent-%COMP%] app-time-series-chart[_ngcontent-%COMP%] {\n height: 100%;\n display: block;\n overflow: hidden;\n }\n\n \n\n .tab-pane.trends-chart[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n overflow: hidden;\n }\n\n \n\n .executions-drill-down[_ngcontent-%COMP%] {\n padding: 20px;\n overflow-y: auto;\n }\n\n .drill-down-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 20px;\n padding-bottom: 12px;\n border-bottom: 1px solid var(--mj-border-default);\n }\n\n .drill-down-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .drill-down-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n align-items: center;\n font-size: 12px;\n }\n\n .timestamp[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-sunken);\n padding: 4px 8px;\n border-radius: 4px;\n }\n\n .metric-badge[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n padding: 4px 10px;\n border-radius: 6px;\n font-weight: 600;\n box-shadow: 0 2px 4px color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n }\n\n .loading-spinner[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 40px;\n color: var(--mj-text-muted);\n gap: 12px;\n }\n\n .executions-table[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 0;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\n }\n\n .table-header[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 80px 1fr 120px 100px 100px 80px 100px 120px;\n gap: 12px;\n background: var(--mj-bg-surface-card);\n padding: 12px 16px;\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n }\n\n .table-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 80px 1fr 120px 100px 100px 80px 100px 120px;\n gap: 12px;\n padding: 12px 16px;\n border-top: 1px solid var(--mj-bg-surface-sunken);\n cursor: pointer;\n transition: background 0.2s ease;\n align-items: center;\n }\n\n .table-row[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n }\n\n .table-cell[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .type-badge[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-text-muted) 10%, var(--mj-bg-surface));\n color: var(--mj-text-muted);\n padding: 3px 8px;\n border-radius: 4px;\n font-size: 10px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n }\n\n .type-badge--prompt[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n }\n\n .type-badge--agent[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n }\n\n .no-data[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n color: var(--mj-text-disabled);\n gap: 16px;\n }\n\n .no-data[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 48px;\n color: var(--mj-border-default);\n }\n\n .no-data[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n }\n\n \n\n .model-detail[_ngcontent-%COMP%] {\n padding: 20px;\n overflow-y: auto;\n }\n\n .model-details[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 24px;\n }\n\n .model-info-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 16px;\n }\n\n .info-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\n }\n\n .info-item[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin: 0;\n }\n\n .info-item[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-primary);\n font-weight: 500;\n }\n\n .status-indicator[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n }\n\n .status-indicator.active[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n }\n\n .status-indicator.active[_ngcontent-%COMP%]::before {\n content: '';\n width: 6px;\n height: 6px;\n background: var(--mj-status-success);\n border-radius: 50%;\n }\n\n .model-description[_ngcontent-%COMP%] {\n padding: 20px;\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n }\n\n .model-description[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n }\n\n .model-description[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 13px;\n color: var(--mj-text-muted);\n line-height: 1.5;\n }\n\n \n\n .clickable[_ngcontent-%COMP%] {\n cursor: pointer;\n transition: transform 0.2s ease, box-shadow 0.2s ease;\n }\n\n .clickable[_ngcontent-%COMP%]:hover {\n transform: translateY(-2px);\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n }\n\n \n\n .analysis-panels[_ngcontent-%COMP%] {\n padding: 12px;\n height: 100%;\n overflow-y: auto;\n background: var(--mj-bg-surface-card);\n }\n\n .analysis-panel[_ngcontent-%COMP%] {\n margin-bottom: 12px;\n border-radius: 10px;\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 8%, transparent);\n background: var(--mj-bg-surface);\n overflow: hidden;\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 8%, transparent);\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n .analysis-panel[_ngcontent-%COMP%]:hover {\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n }\n\n .analysis-panel[_ngcontent-%COMP%]:last-child {\n margin-bottom: 0;\n }\n\n .panel-header[_ngcontent-%COMP%] {\n padding: 14px 18px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid color-mix(in srgb, var(--mj-brand-primary) 8%, transparent);\n cursor: pointer;\n display: flex;\n justify-content: space-between;\n align-items: center;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n .panel-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n }\n\n .panel-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n font-weight: 600;\n color: var(--mj-text-primary);\n font-size: 14px;\n }\n\n .panel-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n width: 18px;\n }\n\n .panel-toggle-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 12px;\n transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n .panel-content[_ngcontent-%COMP%] {\n padding: 18px;\n border-top: 1px solid color-mix(in srgb, var(--mj-brand-primary) 5%, transparent);\n animation: _ngcontent-%COMP%_slideDown 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n @keyframes _ngcontent-%COMP%_slideDown {\n from {\n opacity: 0;\n max-height: 0;\n }\n to {\n opacity: 1;\n max-height: 500px;\n }\n }\n\n .live-executions-panel[_ngcontent-%COMP%] {\n padding: 0;\n }\n\n .live-executions-panel[_ngcontent-%COMP%] app-live-execution-widget[_ngcontent-%COMP%] {\n height: 300px;\n display: block;\n }\n\n \n\n @media (max-width: 1200px) {\n .dashboard-splitter[_ngcontent-%COMP%] {\n min-height: 400px;\n }\n \n .table-header[_ngcontent-%COMP%], \n .table-row[_ngcontent-%COMP%] {\n grid-template-columns: 60px 1fr 100px 80px 80px 60px 80px 100px;\n gap: 8px;\n }\n \n .model-info-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n \n .analysis-panels[_ngcontent-%COMP%] {\n padding: 8px;\n }\n \n .analysis-panel[_ngcontent-%COMP%] {\n margin-bottom: 8px;\n }\n }\n\n @media (max-width: 768px) {\n .execution-monitoring[_ngcontent-%COMP%] {\n padding: 12px;\n }\n \n .monitoring-header[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n }\n \n .monitoring-controls[_ngcontent-%COMP%] {\n width: 100%;\n justify-content: flex-start;\n }\n \n .dashboard-splitter[_ngcontent-%COMP%] {\n min-height: 350px;\n }\n \n .kpi-grid[_ngcontent-%COMP%] {\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n }\n\n \n\n [_nghost-%COMP%] .k-splitter .k-splitter-pane {\n padding: 5px;\n }\n\n [_nghost-%COMP%] .k-splitter-horizontal > .k-splitter-pane {\n padding: 5px 2px;\n }\n\n [_nghost-%COMP%] .k-splitter-vertical > .k-splitter-pane {\n padding: 2px 5px;\n }\n \n .tab-header[_ngcontent-%COMP%] {\n overflow-x: auto;\n }\n \n .tab-item[_ngcontent-%COMP%] {\n min-width: 100px;\n padding: 6px 12px;\n }\n \n .table-header[_ngcontent-%COMP%], \n .table-row[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n gap: 4px;\n text-align: left;\n }\n \n .table-row[_ngcontent-%COMP%] {\n display: block;\n padding: 16px;\n }\n \n .table-cell[_ngcontent-%COMP%] {\n display: block;\n margin-bottom: 8px;\n }\n \n .table-cell[_ngcontent-%COMP%]:before {\n content: attr(data-label) ': ';\n font-weight: 600;\n color: var(--mj-text-muted);\n font-size: 11px;\n text-transform: uppercase;\n }\n \n .executions-drill-down[_ngcontent-%COMP%], \n .model-detail[_ngcontent-%COMP%] {\n padding: 12px;\n }\n \n .panel-content[_ngcontent-%COMP%] {\n padding: 12px;\n }\n \n .panel-header[_ngcontent-%COMP%] {\n padding: 10px 12px;\n }\n \n .panel-title[_ngcontent-%COMP%] {\n font-size: 13px;\n }\n }"], changeDetection: 0 });
1489
+ } }, dependencies: [i3.NgSelectOption, i3.ɵNgSelectMultipleOption, i3.SelectControlValueAccessor, i3.NgControlStatus, i3.NgModel, i4.SplitComponent, i4.SplitAreaComponent, i5.LoadingComponent, i6.KPICardComponent, i7.TimeSeriesChartComponent, i8.LiveExecutionWidgetComponent, i9.PerformanceHeatmapComponent, i10.AsyncPipe, i10.TitleCasePipe, i10.DatePipe], styles: [".execution-monitoring[_ngcontent-%COMP%] {\n padding: 0;\n background: var(--mj-bg-surface-card);\n width: 100%;\n height: 100%;\n position: relative;\n overflow: auto;\n display: flex;\n flex-direction: column;\n }\n\n .execution-monitoring.loading[_ngcontent-%COMP%] {\n overflow: hidden;\n }\n\n \n\n .loading-overlay[_ngcontent-%COMP%] {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: color-mix(in srgb, var(--mj-bg-surface) 70%, transparent);\n z-index: 999;\n display: flex;\n align-items: center;\n justify-content: center;\n backdrop-filter: blur(4px);\n }\n\n \n\n .monitoring-header[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n padding: 16px 24px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n gap: 16px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n border-bottom: 1px solid var(--mj-border-default);\n position: relative;\n z-index: 10;\n }\n\n .monitoring-title[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 12px;\n }\n\n .monitoring-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 22px;\n }\n\n .monitoring-controls[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n align-items: center;\n flex-wrap: wrap;\n }\n\n .time-range-control[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n }\n\n .time-range-control[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-weight: 500;\n }\n\n .time-range-control[_ngcontent-%COMP%] select[_ngcontent-%COMP%] {\n padding: 8px 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 13px;\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-primary);\n cursor: pointer;\n transition: all 0.2s ease;\n }\n\n .time-range-control[_ngcontent-%COMP%] select[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n }\n\n .time-range-control[_ngcontent-%COMP%] select[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n }\n\n .time-range-control[_ngcontent-%COMP%] select[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .time-range-control[_ngcontent-%COMP%] select[_ngcontent-%COMP%] option[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n }\n\n .refresh-btn[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n padding: 8px 16px;\n border-radius: 8px;\n font-size: 13px;\n font-weight: 600;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 8px;\n transition: all 0.2s ease;\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n }\n\n .refresh-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-brand-primary-hover);\n transform: translateY(-1px);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 35%, transparent);\n }\n\n .refresh-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n transform: none;\n }\n\n .refresh-btn[_ngcontent-%COMP%] i.spinning[_ngcontent-%COMP%] {\n animation: _ngcontent-%COMP%_spin 1s linear infinite;\n }\n\n @keyframes _ngcontent-%COMP%_spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n }\n\n .kpi-dashboard[_ngcontent-%COMP%] {\n padding: 20px;\n }\n\n .kpi-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));\n gap: 16px;\n }\n\n .dashboard-splitter[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 500px;\n margin: 0 20px 20px 20px;\n }\n\n .dashboard-section[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: 0 4px 16px color-mix(in srgb, var(--mj-brand-primary) 8%, transparent);\n overflow: hidden;\n height: 100%;\n display: flex;\n flex-direction: column;\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 8%, transparent);\n transition: box-shadow 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n .dashboard-section[_ngcontent-%COMP%]:hover {\n box-shadow: 0 8px 24px color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n }\n\n \n\n [_nghost-%COMP%] as-split-area > .as-split-area-content {\n overflow: hidden;\n padding: 10px;\n }\n\n \n\n .cost-chart-container[_ngcontent-%COMP%], .efficiency-chart-container[_ngcontent-%COMP%], .status-container[_ngcontent-%COMP%] {\n padding: 20px;\n height: 100%;\n display: flex;\n flex-direction: column;\n }\n\n .chart-header[_ngcontent-%COMP%] {\n margin-bottom: 16px;\n }\n\n .chart-title[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .chart-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n }\n\n .cost-bars[_ngcontent-%COMP%], .efficiency-items[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 12px;\n }\n\n .cost-bar-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 8px 0;\n border-bottom: 1px solid var(--mj-border-default);\n }\n\n .cost-bar-item[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n }\n\n .cost-bar-info[_ngcontent-%COMP%] {\n min-width: 120px;\n display: flex;\n flex-direction: column;\n gap: 2px;\n }\n\n .model-name[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-text-primary);\n }\n\n .cost-value[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-brand-primary);\n font-weight: 600;\n }\n\n .cost-bar-container[_ngcontent-%COMP%] {\n flex: 1;\n height: 8px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n border-radius: 4px;\n overflow: hidden;\n }\n\n .cost-bar[_ngcontent-%COMP%] {\n height: 100%;\n background: var(--mj-brand-primary);\n border-radius: 4px;\n transition: width 0.4s cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n .token-info[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-muted);\n min-width: 80px;\n text-align: right;\n }\n\n \n\n .efficiency-item[_ngcontent-%COMP%] {\n padding: 12px 0;\n border-bottom: 1px solid var(--mj-border-default);\n }\n\n .efficiency-item[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n }\n\n .efficiency-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 8px;\n }\n\n .efficiency-ratio[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-brand-primary);\n font-weight: 600;\n }\n\n .token-breakdown[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n }\n\n .token-bar[_ngcontent-%COMP%] {\n height: 8px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n border-radius: 4px;\n overflow: hidden;\n display: flex;\n }\n\n .token-segment[_ngcontent-%COMP%] {\n height: 100%;\n transition: width 0.4s cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n .token-segment--input[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n }\n\n .token-segment--output[_ngcontent-%COMP%] {\n background: var(--mj-brand-accent);\n }\n\n .token-labels[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n font-size: 10px;\n color: var(--mj-text-muted);\n }\n\n .input-label[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-weight: 500;\n }\n\n .output-label[_ngcontent-%COMP%] {\n color: var(--mj-brand-accent);\n font-weight: 500;\n }\n\n .cost-per-token[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-disabled);\n margin-top: 4px;\n }\n\n \n\n .status-metrics[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n flex: 1;\n }\n\n .status-metric[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\n }\n\n .status-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n }\n\n .status-icon--success[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n }\n\n .status-icon--warning[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n }\n\n .status-icon--info[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n }\n\n .status-icon--primary[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n }\n\n .status-info[_ngcontent-%COMP%] {\n flex: 1;\n }\n\n .status-label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n font-weight: 500;\n }\n\n .status-value[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 2px 0;\n }\n\n .status-subtitle[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-disabled);\n }\n\n \n\n .execution-modal[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: rgba(0, 0, 0, 0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n padding: 20px;\n }\n\n .execution-modal-content[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border-radius: 8px;\n max-width: 800px;\n width: 100%;\n max-height: 80vh;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n }\n\n .execution-modal-header[_ngcontent-%COMP%] {\n padding: 20px;\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n\n .execution-modal-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n }\n\n .modal-header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n align-items: center;\n }\n\n .open-record-btn[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n padding: 8px 16px;\n border-radius: 8px;\n font-size: 13px;\n font-weight: 600;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n }\n\n .open-record-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary-hover);\n transform: translateY(-1px);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 35%, transparent);\n }\n\n .open-record-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n }\n\n .close-btn[_ngcontent-%COMP%] {\n background: none;\n border: none;\n font-size: 16px;\n color: var(--mj-text-disabled);\n cursor: pointer;\n padding: 4px;\n }\n\n .close-btn[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-primary);\n }\n\n .execution-modal-body[_ngcontent-%COMP%] {\n padding: 20px;\n overflow-y: auto;\n flex: 1;\n }\n\n .execution-details[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 20px;\n }\n\n .detail-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n border-bottom: 1px solid var(--mj-border-default);\n padding-bottom: 6px;\n }\n\n .detail-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 12px;\n }\n\n .detail-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n }\n\n .detail-item[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n font-weight: 500;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n }\n\n .detail-item[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-primary);\n }\n\n .status-badge[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 10px;\n font-weight: 500;\n text-transform: uppercase;\n }\n\n .status-badge--completed[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n }\n\n .status-badge--running[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n }\n\n .status-badge--failed[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n }\n\n .error-message[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 10%, var(--mj-bg-surface));\n border: 1px solid var(--mj-status-warning);\n border-radius: 4px;\n padding: 12px;\n font-size: 12px;\n color: var(--mj-status-error);\n font-family: monospace;\n }\n\n .child-executions[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n\n .child-execution[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-radius: 4px;\n padding: 12px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n\n .child-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .child-name[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-text-primary);\n }\n\n .child-type[_ngcontent-%COMP%] {\n font-size: 10px;\n background: var(--mj-border-default);\n padding: 2px 6px;\n border-radius: 3px;\n color: var(--mj-text-muted);\n }\n\n .child-status[_ngcontent-%COMP%] {\n font-size: 10px;\n padding: 2px 6px;\n border-radius: 3px;\n }\n\n .child-metrics[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n font-size: 11px;\n color: var(--mj-text-muted);\n }\n\n .loading-details[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px;\n gap: 12px;\n }\n\n \n\n .drill-down-container[_ngcontent-%COMP%] {\n height: 100%;\n display: flex;\n flex-direction: column;\n }\n\n .drill-down-tabs[_ngcontent-%COMP%] {\n height: 100%;\n display: flex;\n flex-direction: column;\n }\n\n .tab-header[_ngcontent-%COMP%] {\n display: flex;\n border-bottom: 1px solid color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n background: var(--mj-bg-surface-card);\n min-height: 44px;\n overflow-x: auto;\n }\n\n .tab-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 18px;\n background: transparent;\n border: none;\n border-bottom: 2px solid transparent;\n cursor: pointer;\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-muted);\n white-space: nowrap;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n min-width: 120px;\n justify-content: space-between;\n }\n\n .tab-item[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 5%, transparent);\n color: var(--mj-brand-primary);\n }\n\n .tab-item.active[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n color: var(--mj-brand-primary);\n border-bottom-color: var(--mj-brand-primary);\n font-weight: 600;\n }\n\n .tab-title[_ngcontent-%COMP%] {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .tab-close[_ngcontent-%COMP%] {\n background: none;\n border: none;\n color: var(--mj-text-disabled);\n cursor: pointer;\n padding: 2px;\n border-radius: 2px;\n font-size: 10px;\n width: 16px;\n height: 16px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n }\n\n .tab-close[_ngcontent-%COMP%]:hover {\n background: rgba(0, 0, 0, 0.1);\n color: var(--mj-text-primary);\n }\n\n .tab-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n }\n\n .tab-pane[_ngcontent-%COMP%] {\n height: 100%;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n }\n\n .trends-chart[_ngcontent-%COMP%] {\n padding: 0;\n }\n\n .trends-chart[_ngcontent-%COMP%] app-time-series-chart[_ngcontent-%COMP%] {\n height: 100%;\n display: block;\n overflow: hidden;\n }\n\n \n\n .tab-pane.trends-chart[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n overflow: hidden;\n }\n\n \n\n .executions-drill-down[_ngcontent-%COMP%] {\n padding: 20px;\n overflow-y: auto;\n }\n\n .drill-down-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 20px;\n padding-bottom: 12px;\n border-bottom: 1px solid var(--mj-border-default);\n }\n\n .drill-down-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .drill-down-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n align-items: center;\n font-size: 12px;\n }\n\n .timestamp[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-sunken);\n padding: 4px 8px;\n border-radius: 4px;\n }\n\n .metric-badge[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n padding: 4px 10px;\n border-radius: 6px;\n font-weight: 600;\n box-shadow: 0 2px 4px color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n }\n\n .loading-spinner[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 40px;\n color: var(--mj-text-muted);\n gap: 12px;\n }\n\n .executions-table[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 0;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\n }\n\n .table-header[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 80px 1fr 120px 100px 100px 80px 100px 120px;\n gap: 12px;\n background: var(--mj-bg-surface-card);\n padding: 12px 16px;\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n }\n\n .table-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 80px 1fr 120px 100px 100px 80px 100px 120px;\n gap: 12px;\n padding: 12px 16px;\n border-top: 1px solid var(--mj-bg-surface-sunken);\n cursor: pointer;\n transition: background 0.2s ease;\n align-items: center;\n }\n\n .table-row[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n }\n\n .table-cell[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .type-badge[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-text-muted) 10%, var(--mj-bg-surface));\n color: var(--mj-text-muted);\n padding: 3px 8px;\n border-radius: 4px;\n font-size: 10px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n }\n\n .type-badge--prompt[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n }\n\n .type-badge--agent[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n }\n\n .no-data[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n color: var(--mj-text-disabled);\n gap: 16px;\n }\n\n .no-data[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 48px;\n color: var(--mj-border-default);\n }\n\n .no-data[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n }\n\n \n\n .model-detail[_ngcontent-%COMP%] {\n padding: 20px;\n overflow-y: auto;\n }\n\n .model-details[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 24px;\n }\n\n .model-info-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 16px;\n }\n\n .info-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\n }\n\n .info-item[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin: 0;\n }\n\n .info-item[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-primary);\n font-weight: 500;\n }\n\n .status-indicator[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n }\n\n .status-indicator.active[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n }\n\n .status-indicator.active[_ngcontent-%COMP%]::before {\n content: '';\n width: 6px;\n height: 6px;\n background: var(--mj-status-success);\n border-radius: 50%;\n }\n\n .model-description[_ngcontent-%COMP%] {\n padding: 20px;\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n }\n\n .model-description[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n }\n\n .model-description[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 13px;\n color: var(--mj-text-muted);\n line-height: 1.5;\n }\n\n \n\n .clickable[_ngcontent-%COMP%] {\n cursor: pointer;\n transition: transform 0.2s ease, box-shadow 0.2s ease;\n }\n\n .clickable[_ngcontent-%COMP%]:hover {\n transform: translateY(-2px);\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n }\n\n \n\n .analysis-panels[_ngcontent-%COMP%] {\n padding: 12px;\n height: 100%;\n overflow-y: auto;\n background: var(--mj-bg-surface-card);\n }\n\n .analysis-panel[_ngcontent-%COMP%] {\n margin-bottom: 12px;\n border-radius: 10px;\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 8%, transparent);\n background: var(--mj-bg-surface);\n overflow: hidden;\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 8%, transparent);\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n .analysis-panel[_ngcontent-%COMP%]:hover {\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n }\n\n .analysis-panel[_ngcontent-%COMP%]:last-child {\n margin-bottom: 0;\n }\n\n .panel-header[_ngcontent-%COMP%] {\n padding: 14px 18px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid color-mix(in srgb, var(--mj-brand-primary) 8%, transparent);\n cursor: pointer;\n display: flex;\n justify-content: space-between;\n align-items: center;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n .panel-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n }\n\n .panel-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n font-weight: 600;\n color: var(--mj-text-primary);\n font-size: 14px;\n }\n\n .panel-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n width: 18px;\n }\n\n .panel-toggle-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 12px;\n transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n .panel-content[_ngcontent-%COMP%] {\n padding: 18px;\n border-top: 1px solid color-mix(in srgb, var(--mj-brand-primary) 5%, transparent);\n animation: _ngcontent-%COMP%_slideDown 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n @keyframes _ngcontent-%COMP%_slideDown {\n from {\n opacity: 0;\n max-height: 0;\n }\n to {\n opacity: 1;\n max-height: 500px;\n }\n }\n\n .live-executions-panel[_ngcontent-%COMP%] {\n padding: 0;\n }\n\n .live-executions-panel[_ngcontent-%COMP%] app-live-execution-widget[_ngcontent-%COMP%] {\n height: 300px;\n display: block;\n }\n\n \n\n @media (max-width: 1200px) {\n .dashboard-splitter[_ngcontent-%COMP%] {\n min-height: 400px;\n }\n \n .table-header[_ngcontent-%COMP%], \n .table-row[_ngcontent-%COMP%] {\n grid-template-columns: 60px 1fr 100px 80px 80px 60px 80px 100px;\n gap: 8px;\n }\n \n .model-info-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n \n .analysis-panels[_ngcontent-%COMP%] {\n padding: 8px;\n }\n \n .analysis-panel[_ngcontent-%COMP%] {\n margin-bottom: 8px;\n }\n }\n\n @media (max-width: 768px) {\n .execution-monitoring[_ngcontent-%COMP%] {\n padding: 12px;\n }\n \n .monitoring-header[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n }\n \n .monitoring-controls[_ngcontent-%COMP%] {\n width: 100%;\n justify-content: flex-start;\n }\n \n .dashboard-splitter[_ngcontent-%COMP%] {\n min-height: 350px;\n }\n \n .kpi-grid[_ngcontent-%COMP%] {\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n }\n\n \n\n [_nghost-%COMP%] as-split-area > .as-split-area-content {\n padding: 5px;\n }\n\n .tab-header[_ngcontent-%COMP%] {\n overflow-x: auto;\n }\n \n .tab-item[_ngcontent-%COMP%] {\n min-width: 100px;\n padding: 6px 12px;\n }\n \n .table-header[_ngcontent-%COMP%], \n .table-row[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n gap: 4px;\n text-align: left;\n }\n \n .table-row[_ngcontent-%COMP%] {\n display: block;\n padding: 16px;\n }\n \n .table-cell[_ngcontent-%COMP%] {\n display: block;\n margin-bottom: 8px;\n }\n \n .table-cell[_ngcontent-%COMP%]:before {\n content: attr(data-label) ': ';\n font-weight: 600;\n color: var(--mj-text-muted);\n font-size: 11px;\n text-transform: uppercase;\n }\n \n .executions-drill-down[_ngcontent-%COMP%], \n .model-detail[_ngcontent-%COMP%] {\n padding: 12px;\n }\n \n .panel-content[_ngcontent-%COMP%] {\n padding: 12px;\n }\n \n .panel-header[_ngcontent-%COMP%] {\n padding: 10px 12px;\n }\n \n .panel-title[_ngcontent-%COMP%] {\n font-size: 13px;\n }\n }"], changeDetection: 0 });
1496
1490
  };
1497
1491
  ExecutionMonitoringComponent = __decorate([
1498
1492
  RegisterClass(BaseResourceComponent, 'AIMonitorResource')
@@ -1548,12 +1542,12 @@ export { ExecutionMonitoringComponent };
1548
1542
  </div>
1549
1543
 
1550
1544
  <!-- Main Dashboard with Kendo Splitter -->
1551
- <kendo-splitter class="dashboard-splitter" orientation="vertical" (layoutChange)="onSplitterLayoutChange($event)">
1545
+ <as-split direction="vertical" class="dashboard-splitter">
1552
1546
  <!-- Top Row: System Health and Trends Chart -->
1553
- <kendo-splitter-pane size="45%" [resizable]="true" [collapsible]="false">
1554
- <kendo-splitter orientation="horizontal" (layoutChange)="onSplitterLayoutChange($event)">
1547
+ <as-split-area [size]="45">
1548
+ <as-split direction="horizontal">
1555
1549
  <!-- System Health -->
1556
- <kendo-splitter-pane size="30%" [resizable]="true" [collapsible]="true" [collapsed]="false">
1550
+ <as-split-area [size]="30">
1557
1551
  <div class="dashboard-section system-status">
1558
1552
  <div class="status-container">
1559
1553
  <div class="chart-header">
@@ -1611,10 +1605,10 @@ export { ExecutionMonitoringComponent };
1611
1605
  }
1612
1606
  </div>
1613
1607
  </div>
1614
- </kendo-splitter-pane>
1615
-
1608
+ </as-split-area>
1609
+
1616
1610
  <!-- Drill-down Tab Container -->
1617
- <kendo-splitter-pane [resizable]="true" [collapsible]="false">
1611
+ <as-split-area [size]="70">
1618
1612
  <div class="dashboard-section drill-down-container">
1619
1613
  <div class="drill-down-tabs">
1620
1614
  <div class="tab-header">
@@ -1774,15 +1768,15 @@ export { ExecutionMonitoringComponent };
1774
1768
  </div>
1775
1769
  </div>
1776
1770
  </div>
1777
- </kendo-splitter-pane>
1778
- </kendo-splitter>
1779
- </kendo-splitter-pane>
1771
+ </as-split-area>
1772
+ </as-split>
1773
+ </as-split-area>
1780
1774
 
1781
1775
  <!-- Bottom Row: Analysis Panels with Expansion Layout -->
1782
- <kendo-splitter-pane [resizable]="true" [collapsible]="false">
1783
- <kendo-splitter orientation="horizontal" (layoutChange)="onSplitterLayoutChange($event)">
1776
+ <as-split-area [size]="55">
1777
+ <as-split direction="horizontal">
1784
1778
  <!-- Left: Performance Heatmap -->
1785
- <kendo-splitter-pane size="50%" [resizable]="true" [collapsible]="false">
1779
+ <as-split-area [size]="50">
1786
1780
  <div class="dashboard-section performance-matrix">
1787
1781
  <app-performance-heatmap
1788
1782
  [data]="(performanceMatrix$ | async) ?? []"
@@ -1790,10 +1784,10 @@ export { ExecutionMonitoringComponent };
1790
1784
  [config]="heatmapConfig"
1791
1785
  ></app-performance-heatmap>
1792
1786
  </div>
1793
- </kendo-splitter-pane>
1787
+ </as-split-area>
1794
1788
 
1795
1789
  <!-- Right: Analysis Panels with Collapsible Sections -->
1796
- <kendo-splitter-pane [resizable]="true" [collapsible]="false">
1790
+ <as-split-area [size]="50">
1797
1791
  <div class="dashboard-section analysis-panels">
1798
1792
 
1799
1793
  <!-- Cost Analysis Panel -->
@@ -1899,10 +1893,10 @@ export { ExecutionMonitoringComponent };
1899
1893
  }
1900
1894
  </div>
1901
1895
  </div>
1902
- </kendo-splitter-pane>
1903
- </kendo-splitter>
1904
- </kendo-splitter-pane>
1905
- </kendo-splitter>
1896
+ </as-split-area>
1897
+ </as-split>
1898
+ </as-split-area>
1899
+ </as-split>
1906
1900
 
1907
1901
  <!-- Execution Details Modal -->
1908
1902
  @if (selectedExecution) {
@@ -2019,7 +2013,7 @@ export { ExecutionMonitoringComponent };
2019
2013
  </div>
2020
2014
  }
2021
2015
  </div>
2022
- `, styles: ["\n .execution-monitoring {\n padding: 0;\n background: var(--mj-bg-surface-card);\n width: 100%;\n height: 100%;\n position: relative;\n overflow: auto;\n display: flex;\n flex-direction: column;\n }\n\n .execution-monitoring.loading {\n overflow: hidden;\n }\n\n /* Loading Overlay */\n .loading-overlay {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: color-mix(in srgb, var(--mj-bg-surface) 70%, transparent);\n z-index: 999;\n display: flex;\n align-items: center;\n justify-content: center;\n backdrop-filter: blur(4px);\n }\n\n /* === Dashboard Header - Clean White Style === */\n .monitoring-header {\n background: var(--mj-bg-surface);\n padding: 16px 24px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n gap: 16px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n border-bottom: 1px solid var(--mj-border-default);\n position: relative;\n z-index: 10;\n }\n\n .monitoring-title {\n margin: 0;\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 12px;\n }\n\n .monitoring-title i {\n color: var(--mj-brand-primary);\n font-size: 22px;\n }\n\n .monitoring-controls {\n display: flex;\n gap: 12px;\n align-items: center;\n flex-wrap: wrap;\n }\n\n .time-range-control {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n }\n\n .time-range-control label {\n color: var(--mj-text-muted);\n font-weight: 500;\n }\n\n .time-range-control select {\n padding: 8px 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 13px;\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-primary);\n cursor: pointer;\n transition: all 0.2s ease;\n }\n\n .time-range-control select:hover:not(:disabled) {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n }\n\n .time-range-control select:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n }\n\n .time-range-control select:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .time-range-control select option {\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n }\n\n .refresh-btn {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n padding: 8px 16px;\n border-radius: 8px;\n font-size: 13px;\n font-weight: 600;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 8px;\n transition: all 0.2s ease;\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n }\n\n .refresh-btn:hover:not(:disabled) {\n background: var(--mj-brand-primary-hover);\n transform: translateY(-1px);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 35%, transparent);\n }\n\n .refresh-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n transform: none;\n }\n\n .refresh-btn i.spinning {\n animation: spin 1s linear infinite;\n }\n\n @keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n }\n\n .kpi-dashboard {\n padding: 20px;\n }\n\n .kpi-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));\n gap: 16px;\n }\n\n .dashboard-splitter {\n flex: 1;\n min-height: 500px;\n margin: 0 20px 20px 20px;\n }\n\n .dashboard-section {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: 0 4px 16px color-mix(in srgb, var(--mj-brand-primary) 8%, transparent);\n overflow: hidden;\n height: 100%;\n display: flex;\n flex-direction: column;\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 8%, transparent);\n transition: box-shadow 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n .dashboard-section:hover {\n box-shadow: 0 8px 24px color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n }\n\n /* Ensure splitter panes take full height */\n :host ::ng-deep .k-splitter-pane {\n overflow: hidden;\n }\n\n :host ::ng-deep .k-splitter .k-splitter-pane {\n padding: 10px;\n }\n\n :host ::ng-deep .k-splitter-horizontal > .k-splitter-pane {\n padding: 10px 5px;\n }\n\n :host ::ng-deep .k-splitter-vertical > .k-splitter-pane {\n padding: 5px 10px;\n }\n\n /* Cost Analysis Styles */\n .cost-chart-container, .efficiency-chart-container, .status-container {\n padding: 20px;\n height: 100%;\n display: flex;\n flex-direction: column;\n }\n\n .chart-header {\n margin-bottom: 16px;\n }\n\n .chart-title {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .chart-title i {\n color: var(--mj-brand-primary);\n }\n\n .cost-bars, .efficiency-items {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 12px;\n }\n\n .cost-bar-item {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 8px 0;\n border-bottom: 1px solid var(--mj-border-default);\n }\n\n .cost-bar-item:last-child {\n border-bottom: none;\n }\n\n .cost-bar-info {\n min-width: 120px;\n display: flex;\n flex-direction: column;\n gap: 2px;\n }\n\n .model-name {\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-text-primary);\n }\n\n .cost-value {\n font-size: 11px;\n color: var(--mj-brand-primary);\n font-weight: 600;\n }\n\n .cost-bar-container {\n flex: 1;\n height: 8px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n border-radius: 4px;\n overflow: hidden;\n }\n\n .cost-bar {\n height: 100%;\n background: var(--mj-brand-primary);\n border-radius: 4px;\n transition: width 0.4s cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n .token-info {\n font-size: 10px;\n color: var(--mj-text-muted);\n min-width: 80px;\n text-align: right;\n }\n\n /* Token Efficiency Styles */\n .efficiency-item {\n padding: 12px 0;\n border-bottom: 1px solid var(--mj-border-default);\n }\n\n .efficiency-item:last-child {\n border-bottom: none;\n }\n\n .efficiency-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 8px;\n }\n\n .efficiency-ratio {\n font-size: 11px;\n color: var(--mj-brand-primary);\n font-weight: 600;\n }\n\n .token-breakdown {\n display: flex;\n flex-direction: column;\n gap: 6px;\n }\n\n .token-bar {\n height: 8px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n border-radius: 4px;\n overflow: hidden;\n display: flex;\n }\n\n .token-segment {\n height: 100%;\n transition: width 0.4s cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n .token-segment--input {\n background: var(--mj-brand-primary);\n }\n\n .token-segment--output {\n background: var(--mj-brand-accent);\n }\n\n .token-labels {\n display: flex;\n justify-content: space-between;\n font-size: 10px;\n color: var(--mj-text-muted);\n }\n\n .input-label {\n color: var(--mj-brand-primary);\n font-weight: 500;\n }\n\n .output-label {\n color: var(--mj-brand-accent);\n font-weight: 500;\n }\n\n .cost-per-token {\n font-size: 10px;\n color: var(--mj-text-disabled);\n margin-top: 4px;\n }\n\n /* System Status Styles */\n .status-metrics {\n display: flex;\n flex-direction: column;\n gap: 16px;\n flex: 1;\n }\n\n .status-metric {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\n }\n\n .status-icon {\n width: 40px;\n height: 40px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n }\n\n .status-icon--success {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n }\n\n .status-icon--warning {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n }\n\n .status-icon--info {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n }\n\n .status-icon--primary {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n }\n\n .status-info {\n flex: 1;\n }\n\n .status-label {\n font-size: 12px;\n color: var(--mj-text-muted);\n font-weight: 500;\n }\n\n .status-value {\n font-size: 18px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 2px 0;\n }\n\n .status-subtitle {\n font-size: 10px;\n color: var(--mj-text-disabled);\n }\n\n /* Execution Modal Styles */\n .execution-modal {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: rgba(0, 0, 0, 0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n padding: 20px;\n }\n\n .execution-modal-content {\n background: var(--mj-bg-surface);\n border-radius: 8px;\n max-width: 800px;\n width: 100%;\n max-height: 80vh;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n }\n\n .execution-modal-header {\n padding: 20px;\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n\n .execution-modal-header h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n }\n\n .modal-header-actions {\n display: flex;\n gap: 12px;\n align-items: center;\n }\n\n .open-record-btn {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n padding: 8px 16px;\n border-radius: 8px;\n font-size: 13px;\n font-weight: 600;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n }\n\n .open-record-btn:hover {\n background: var(--mj-brand-primary-hover);\n transform: translateY(-1px);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 35%, transparent);\n }\n\n .open-record-btn i {\n font-size: 12px;\n }\n\n .close-btn {\n background: none;\n border: none;\n font-size: 16px;\n color: var(--mj-text-disabled);\n cursor: pointer;\n padding: 4px;\n }\n\n .close-btn:hover {\n color: var(--mj-text-primary);\n }\n\n .execution-modal-body {\n padding: 20px;\n overflow-y: auto;\n flex: 1;\n }\n\n .execution-details {\n display: flex;\n flex-direction: column;\n gap: 20px;\n }\n\n .detail-section h4 {\n margin: 0 0 12px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n border-bottom: 1px solid var(--mj-border-default);\n padding-bottom: 6px;\n }\n\n .detail-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 12px;\n }\n\n .detail-item {\n display: flex;\n flex-direction: column;\n gap: 4px;\n }\n\n .detail-item label {\n font-size: 11px;\n color: var(--mj-text-muted);\n font-weight: 500;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n }\n\n .detail-item span {\n font-size: 13px;\n color: var(--mj-text-primary);\n }\n\n .status-badge {\n display: inline-block;\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 10px;\n font-weight: 500;\n text-transform: uppercase;\n }\n\n .status-badge--completed {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n }\n\n .status-badge--running {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n }\n\n .status-badge--failed {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n }\n\n .error-message {\n background: color-mix(in srgb, var(--mj-status-warning) 10%, var(--mj-bg-surface));\n border: 1px solid var(--mj-status-warning);\n border-radius: 4px;\n padding: 12px;\n font-size: 12px;\n color: var(--mj-status-error);\n font-family: monospace;\n }\n\n .child-executions {\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n\n .child-execution {\n background: var(--mj-bg-surface-card);\n border-radius: 4px;\n padding: 12px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n\n .child-info {\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .child-name {\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-text-primary);\n }\n\n .child-type {\n font-size: 10px;\n background: var(--mj-border-default);\n padding: 2px 6px;\n border-radius: 3px;\n color: var(--mj-text-muted);\n }\n\n .child-status {\n font-size: 10px;\n padding: 2px 6px;\n border-radius: 3px;\n }\n\n .child-metrics {\n display: flex;\n gap: 12px;\n font-size: 11px;\n color: var(--mj-text-muted);\n }\n\n .loading-details {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px;\n gap: 12px;\n }\n\n /* Drill-down Tab Styles */\n .drill-down-container {\n height: 100%;\n display: flex;\n flex-direction: column;\n }\n\n .drill-down-tabs {\n height: 100%;\n display: flex;\n flex-direction: column;\n }\n\n .tab-header {\n display: flex;\n border-bottom: 1px solid color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n background: var(--mj-bg-surface-card);\n min-height: 44px;\n overflow-x: auto;\n }\n\n .tab-item {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 18px;\n background: transparent;\n border: none;\n border-bottom: 2px solid transparent;\n cursor: pointer;\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-muted);\n white-space: nowrap;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n min-width: 120px;\n justify-content: space-between;\n }\n\n .tab-item:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 5%, transparent);\n color: var(--mj-brand-primary);\n }\n\n .tab-item.active {\n background: var(--mj-bg-surface);\n color: var(--mj-brand-primary);\n border-bottom-color: var(--mj-brand-primary);\n font-weight: 600;\n }\n\n .tab-title {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .tab-close {\n background: none;\n border: none;\n color: var(--mj-text-disabled);\n cursor: pointer;\n padding: 2px;\n border-radius: 2px;\n font-size: 10px;\n width: 16px;\n height: 16px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n }\n\n .tab-close:hover {\n background: rgba(0, 0, 0, 0.1);\n color: var(--mj-text-primary);\n }\n\n .tab-content {\n flex: 1;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n }\n\n .tab-pane {\n height: 100%;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n }\n\n .trends-chart {\n padding: 0;\n }\n\n .trends-chart app-time-series-chart {\n height: 100%;\n display: block;\n overflow: hidden;\n }\n\n /* Ensure chart fits within tab pane */\n .tab-pane.trends-chart {\n display: flex;\n flex-direction: column;\n overflow: hidden;\n }\n\n /* Drill-down specific styles */\n .executions-drill-down {\n padding: 20px;\n overflow-y: auto;\n }\n\n .drill-down-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 20px;\n padding-bottom: 12px;\n border-bottom: 1px solid var(--mj-border-default);\n }\n\n .drill-down-header h4 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .drill-down-meta {\n display: flex;\n gap: 12px;\n align-items: center;\n font-size: 12px;\n }\n\n .timestamp {\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-sunken);\n padding: 4px 8px;\n border-radius: 4px;\n }\n\n .metric-badge {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n padding: 4px 10px;\n border-radius: 6px;\n font-weight: 600;\n box-shadow: 0 2px 4px color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n }\n\n .loading-spinner {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 40px;\n color: var(--mj-text-muted);\n gap: 12px;\n }\n\n .executions-table {\n display: flex;\n flex-direction: column;\n gap: 0;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\n }\n\n .table-header {\n display: grid;\n grid-template-columns: 80px 1fr 120px 100px 100px 80px 100px 120px;\n gap: 12px;\n background: var(--mj-bg-surface-card);\n padding: 12px 16px;\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n }\n\n .table-row {\n display: grid;\n grid-template-columns: 80px 1fr 120px 100px 100px 80px 100px 120px;\n gap: 12px;\n padding: 12px 16px;\n border-top: 1px solid var(--mj-bg-surface-sunken);\n cursor: pointer;\n transition: background 0.2s ease;\n align-items: center;\n }\n\n .table-row:hover {\n background: var(--mj-bg-surface-card);\n }\n\n .table-cell {\n font-size: 12px;\n color: var(--mj-text-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .type-badge {\n background: color-mix(in srgb, var(--mj-text-muted) 10%, var(--mj-bg-surface));\n color: var(--mj-text-muted);\n padding: 3px 8px;\n border-radius: 4px;\n font-size: 10px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n }\n\n .type-badge--prompt {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n }\n\n .type-badge--agent {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n }\n\n .no-data {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n color: var(--mj-text-disabled);\n gap: 16px;\n }\n\n .no-data i {\n font-size: 48px;\n color: var(--mj-border-default);\n }\n\n .no-data p {\n margin: 0;\n font-size: 14px;\n }\n\n /* Model detail styles */\n .model-detail {\n padding: 20px;\n overflow-y: auto;\n }\n\n .model-details {\n display: flex;\n flex-direction: column;\n gap: 24px;\n }\n\n .model-info-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 16px;\n }\n\n .info-item {\n display: flex;\n flex-direction: column;\n gap: 6px;\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\n }\n\n .info-item label {\n font-size: 11px;\n color: var(--mj-text-muted);\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin: 0;\n }\n\n .info-item span {\n font-size: 14px;\n color: var(--mj-text-primary);\n font-weight: 500;\n }\n\n .status-indicator {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n }\n\n .status-indicator.active {\n color: var(--mj-status-success);\n }\n\n .status-indicator.active::before {\n content: '';\n width: 6px;\n height: 6px;\n background: var(--mj-status-success);\n border-radius: 50%;\n }\n\n .model-description {\n padding: 20px;\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n }\n\n .model-description h5 {\n margin: 0 0 12px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n }\n\n .model-description p {\n margin: 0;\n font-size: 13px;\n color: var(--mj-text-muted);\n line-height: 1.5;\n }\n\n /* Clickable KPI cards */\n .clickable {\n cursor: pointer;\n transition: transform 0.2s ease, box-shadow 0.2s ease;\n }\n\n .clickable:hover {\n transform: translateY(-2px);\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n }\n\n /* Collapsible Panel Styles */\n .analysis-panels {\n padding: 12px;\n height: 100%;\n overflow-y: auto;\n background: var(--mj-bg-surface-card);\n }\n\n .analysis-panel {\n margin-bottom: 12px;\n border-radius: 10px;\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 8%, transparent);\n background: var(--mj-bg-surface);\n overflow: hidden;\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 8%, transparent);\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n .analysis-panel:hover {\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n }\n\n .analysis-panel:last-child {\n margin-bottom: 0;\n }\n\n .panel-header {\n padding: 14px 18px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid color-mix(in srgb, var(--mj-brand-primary) 8%, transparent);\n cursor: pointer;\n display: flex;\n justify-content: space-between;\n align-items: center;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n .panel-header:hover {\n background: var(--mj-bg-surface-sunken);\n }\n\n .panel-title {\n display: flex;\n align-items: center;\n gap: 10px;\n font-weight: 600;\n color: var(--mj-text-primary);\n font-size: 14px;\n }\n\n .panel-title i {\n color: var(--mj-brand-primary);\n width: 18px;\n }\n\n .panel-toggle-icon {\n color: var(--mj-brand-primary);\n font-size: 12px;\n transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n .panel-content {\n padding: 18px;\n border-top: 1px solid color-mix(in srgb, var(--mj-brand-primary) 5%, transparent);\n animation: slideDown 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n @keyframes slideDown {\n from {\n opacity: 0;\n max-height: 0;\n }\n to {\n opacity: 1;\n max-height: 500px;\n }\n }\n\n .live-executions-panel {\n padding: 0;\n }\n\n .live-executions-panel app-live-execution-widget {\n height: 300px;\n display: block;\n }\n\n /* Responsive Design */\n @media (max-width: 1200px) {\n .dashboard-splitter {\n min-height: 400px;\n }\n \n .table-header,\n .table-row {\n grid-template-columns: 60px 1fr 100px 80px 80px 60px 80px 100px;\n gap: 8px;\n }\n \n .model-info-grid {\n grid-template-columns: 1fr;\n }\n \n .analysis-panels {\n padding: 8px;\n }\n \n .analysis-panel {\n margin-bottom: 8px;\n }\n }\n\n @media (max-width: 768px) {\n .execution-monitoring {\n padding: 12px;\n }\n \n .monitoring-header {\n flex-direction: column;\n align-items: flex-start;\n }\n \n .monitoring-controls {\n width: 100%;\n justify-content: flex-start;\n }\n \n .dashboard-splitter {\n min-height: 350px;\n }\n \n .kpi-grid {\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n }\n\n /* Reduce padding on smaller screens */\n :host ::ng-deep .k-splitter .k-splitter-pane {\n padding: 5px;\n }\n\n :host ::ng-deep .k-splitter-horizontal > .k-splitter-pane {\n padding: 5px 2px;\n }\n\n :host ::ng-deep .k-splitter-vertical > .k-splitter-pane {\n padding: 2px 5px;\n }\n \n .tab-header {\n overflow-x: auto;\n }\n \n .tab-item {\n min-width: 100px;\n padding: 6px 12px;\n }\n \n .table-header,\n .table-row {\n grid-template-columns: 1fr;\n gap: 4px;\n text-align: left;\n }\n \n .table-row {\n display: block;\n padding: 16px;\n }\n \n .table-cell {\n display: block;\n margin-bottom: 8px;\n }\n \n .table-cell:before {\n content: attr(data-label) ': ';\n font-weight: 600;\n color: var(--mj-text-muted);\n font-size: 11px;\n text-transform: uppercase;\n }\n \n .executions-drill-down,\n .model-detail {\n padding: 12px;\n }\n \n .panel-content {\n padding: 12px;\n }\n \n .panel-header {\n padding: 10px 12px;\n }\n \n .panel-title {\n font-size: 13px;\n }\n }\n "] }]
2016
+ `, styles: ["\n .execution-monitoring {\n padding: 0;\n background: var(--mj-bg-surface-card);\n width: 100%;\n height: 100%;\n position: relative;\n overflow: auto;\n display: flex;\n flex-direction: column;\n }\n\n .execution-monitoring.loading {\n overflow: hidden;\n }\n\n /* Loading Overlay */\n .loading-overlay {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: color-mix(in srgb, var(--mj-bg-surface) 70%, transparent);\n z-index: 999;\n display: flex;\n align-items: center;\n justify-content: center;\n backdrop-filter: blur(4px);\n }\n\n /* === Dashboard Header - Clean White Style === */\n .monitoring-header {\n background: var(--mj-bg-surface);\n padding: 16px 24px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n gap: 16px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n border-bottom: 1px solid var(--mj-border-default);\n position: relative;\n z-index: 10;\n }\n\n .monitoring-title {\n margin: 0;\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 12px;\n }\n\n .monitoring-title i {\n color: var(--mj-brand-primary);\n font-size: 22px;\n }\n\n .monitoring-controls {\n display: flex;\n gap: 12px;\n align-items: center;\n flex-wrap: wrap;\n }\n\n .time-range-control {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n }\n\n .time-range-control label {\n color: var(--mj-text-muted);\n font-weight: 500;\n }\n\n .time-range-control select {\n padding: 8px 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 13px;\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-primary);\n cursor: pointer;\n transition: all 0.2s ease;\n }\n\n .time-range-control select:hover:not(:disabled) {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n }\n\n .time-range-control select:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n }\n\n .time-range-control select:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .time-range-control select option {\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n }\n\n .refresh-btn {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n padding: 8px 16px;\n border-radius: 8px;\n font-size: 13px;\n font-weight: 600;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 8px;\n transition: all 0.2s ease;\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n }\n\n .refresh-btn:hover:not(:disabled) {\n background: var(--mj-brand-primary-hover);\n transform: translateY(-1px);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 35%, transparent);\n }\n\n .refresh-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n transform: none;\n }\n\n .refresh-btn i.spinning {\n animation: spin 1s linear infinite;\n }\n\n @keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n }\n\n .kpi-dashboard {\n padding: 20px;\n }\n\n .kpi-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));\n gap: 16px;\n }\n\n .dashboard-splitter {\n flex: 1;\n min-height: 500px;\n margin: 0 20px 20px 20px;\n }\n\n .dashboard-section {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: 0 4px 16px color-mix(in srgb, var(--mj-brand-primary) 8%, transparent);\n overflow: hidden;\n height: 100%;\n display: flex;\n flex-direction: column;\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 8%, transparent);\n transition: box-shadow 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n .dashboard-section:hover {\n box-shadow: 0 8px 24px color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n }\n\n /* Ensure splitter areas take full height */\n :host ::ng-deep as-split-area > .as-split-area-content {\n overflow: hidden;\n padding: 10px;\n }\n\n /* Cost Analysis Styles */\n .cost-chart-container, .efficiency-chart-container, .status-container {\n padding: 20px;\n height: 100%;\n display: flex;\n flex-direction: column;\n }\n\n .chart-header {\n margin-bottom: 16px;\n }\n\n .chart-title {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .chart-title i {\n color: var(--mj-brand-primary);\n }\n\n .cost-bars, .efficiency-items {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 12px;\n }\n\n .cost-bar-item {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 8px 0;\n border-bottom: 1px solid var(--mj-border-default);\n }\n\n .cost-bar-item:last-child {\n border-bottom: none;\n }\n\n .cost-bar-info {\n min-width: 120px;\n display: flex;\n flex-direction: column;\n gap: 2px;\n }\n\n .model-name {\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-text-primary);\n }\n\n .cost-value {\n font-size: 11px;\n color: var(--mj-brand-primary);\n font-weight: 600;\n }\n\n .cost-bar-container {\n flex: 1;\n height: 8px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n border-radius: 4px;\n overflow: hidden;\n }\n\n .cost-bar {\n height: 100%;\n background: var(--mj-brand-primary);\n border-radius: 4px;\n transition: width 0.4s cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n .token-info {\n font-size: 10px;\n color: var(--mj-text-muted);\n min-width: 80px;\n text-align: right;\n }\n\n /* Token Efficiency Styles */\n .efficiency-item {\n padding: 12px 0;\n border-bottom: 1px solid var(--mj-border-default);\n }\n\n .efficiency-item:last-child {\n border-bottom: none;\n }\n\n .efficiency-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 8px;\n }\n\n .efficiency-ratio {\n font-size: 11px;\n color: var(--mj-brand-primary);\n font-weight: 600;\n }\n\n .token-breakdown {\n display: flex;\n flex-direction: column;\n gap: 6px;\n }\n\n .token-bar {\n height: 8px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n border-radius: 4px;\n overflow: hidden;\n display: flex;\n }\n\n .token-segment {\n height: 100%;\n transition: width 0.4s cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n .token-segment--input {\n background: var(--mj-brand-primary);\n }\n\n .token-segment--output {\n background: var(--mj-brand-accent);\n }\n\n .token-labels {\n display: flex;\n justify-content: space-between;\n font-size: 10px;\n color: var(--mj-text-muted);\n }\n\n .input-label {\n color: var(--mj-brand-primary);\n font-weight: 500;\n }\n\n .output-label {\n color: var(--mj-brand-accent);\n font-weight: 500;\n }\n\n .cost-per-token {\n font-size: 10px;\n color: var(--mj-text-disabled);\n margin-top: 4px;\n }\n\n /* System Status Styles */\n .status-metrics {\n display: flex;\n flex-direction: column;\n gap: 16px;\n flex: 1;\n }\n\n .status-metric {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\n }\n\n .status-icon {\n width: 40px;\n height: 40px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n }\n\n .status-icon--success {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n }\n\n .status-icon--warning {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n }\n\n .status-icon--info {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n }\n\n .status-icon--primary {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n }\n\n .status-info {\n flex: 1;\n }\n\n .status-label {\n font-size: 12px;\n color: var(--mj-text-muted);\n font-weight: 500;\n }\n\n .status-value {\n font-size: 18px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 2px 0;\n }\n\n .status-subtitle {\n font-size: 10px;\n color: var(--mj-text-disabled);\n }\n\n /* Execution Modal Styles */\n .execution-modal {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: rgba(0, 0, 0, 0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n padding: 20px;\n }\n\n .execution-modal-content {\n background: var(--mj-bg-surface);\n border-radius: 8px;\n max-width: 800px;\n width: 100%;\n max-height: 80vh;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n }\n\n .execution-modal-header {\n padding: 20px;\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n\n .execution-modal-header h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n }\n\n .modal-header-actions {\n display: flex;\n gap: 12px;\n align-items: center;\n }\n\n .open-record-btn {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n padding: 8px 16px;\n border-radius: 8px;\n font-size: 13px;\n font-weight: 600;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n }\n\n .open-record-btn:hover {\n background: var(--mj-brand-primary-hover);\n transform: translateY(-1px);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 35%, transparent);\n }\n\n .open-record-btn i {\n font-size: 12px;\n }\n\n .close-btn {\n background: none;\n border: none;\n font-size: 16px;\n color: var(--mj-text-disabled);\n cursor: pointer;\n padding: 4px;\n }\n\n .close-btn:hover {\n color: var(--mj-text-primary);\n }\n\n .execution-modal-body {\n padding: 20px;\n overflow-y: auto;\n flex: 1;\n }\n\n .execution-details {\n display: flex;\n flex-direction: column;\n gap: 20px;\n }\n\n .detail-section h4 {\n margin: 0 0 12px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n border-bottom: 1px solid var(--mj-border-default);\n padding-bottom: 6px;\n }\n\n .detail-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 12px;\n }\n\n .detail-item {\n display: flex;\n flex-direction: column;\n gap: 4px;\n }\n\n .detail-item label {\n font-size: 11px;\n color: var(--mj-text-muted);\n font-weight: 500;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n }\n\n .detail-item span {\n font-size: 13px;\n color: var(--mj-text-primary);\n }\n\n .status-badge {\n display: inline-block;\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 10px;\n font-weight: 500;\n text-transform: uppercase;\n }\n\n .status-badge--completed {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n }\n\n .status-badge--running {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n }\n\n .status-badge--failed {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n }\n\n .error-message {\n background: color-mix(in srgb, var(--mj-status-warning) 10%, var(--mj-bg-surface));\n border: 1px solid var(--mj-status-warning);\n border-radius: 4px;\n padding: 12px;\n font-size: 12px;\n color: var(--mj-status-error);\n font-family: monospace;\n }\n\n .child-executions {\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n\n .child-execution {\n background: var(--mj-bg-surface-card);\n border-radius: 4px;\n padding: 12px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n\n .child-info {\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .child-name {\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-text-primary);\n }\n\n .child-type {\n font-size: 10px;\n background: var(--mj-border-default);\n padding: 2px 6px;\n border-radius: 3px;\n color: var(--mj-text-muted);\n }\n\n .child-status {\n font-size: 10px;\n padding: 2px 6px;\n border-radius: 3px;\n }\n\n .child-metrics {\n display: flex;\n gap: 12px;\n font-size: 11px;\n color: var(--mj-text-muted);\n }\n\n .loading-details {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px;\n gap: 12px;\n }\n\n /* Drill-down Tab Styles */\n .drill-down-container {\n height: 100%;\n display: flex;\n flex-direction: column;\n }\n\n .drill-down-tabs {\n height: 100%;\n display: flex;\n flex-direction: column;\n }\n\n .tab-header {\n display: flex;\n border-bottom: 1px solid color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n background: var(--mj-bg-surface-card);\n min-height: 44px;\n overflow-x: auto;\n }\n\n .tab-item {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 18px;\n background: transparent;\n border: none;\n border-bottom: 2px solid transparent;\n cursor: pointer;\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-muted);\n white-space: nowrap;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n min-width: 120px;\n justify-content: space-between;\n }\n\n .tab-item:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 5%, transparent);\n color: var(--mj-brand-primary);\n }\n\n .tab-item.active {\n background: var(--mj-bg-surface);\n color: var(--mj-brand-primary);\n border-bottom-color: var(--mj-brand-primary);\n font-weight: 600;\n }\n\n .tab-title {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .tab-close {\n background: none;\n border: none;\n color: var(--mj-text-disabled);\n cursor: pointer;\n padding: 2px;\n border-radius: 2px;\n font-size: 10px;\n width: 16px;\n height: 16px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n }\n\n .tab-close:hover {\n background: rgba(0, 0, 0, 0.1);\n color: var(--mj-text-primary);\n }\n\n .tab-content {\n flex: 1;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n }\n\n .tab-pane {\n height: 100%;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n }\n\n .trends-chart {\n padding: 0;\n }\n\n .trends-chart app-time-series-chart {\n height: 100%;\n display: block;\n overflow: hidden;\n }\n\n /* Ensure chart fits within tab pane */\n .tab-pane.trends-chart {\n display: flex;\n flex-direction: column;\n overflow: hidden;\n }\n\n /* Drill-down specific styles */\n .executions-drill-down {\n padding: 20px;\n overflow-y: auto;\n }\n\n .drill-down-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 20px;\n padding-bottom: 12px;\n border-bottom: 1px solid var(--mj-border-default);\n }\n\n .drill-down-header h4 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .drill-down-meta {\n display: flex;\n gap: 12px;\n align-items: center;\n font-size: 12px;\n }\n\n .timestamp {\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-sunken);\n padding: 4px 8px;\n border-radius: 4px;\n }\n\n .metric-badge {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n padding: 4px 10px;\n border-radius: 6px;\n font-weight: 600;\n box-shadow: 0 2px 4px color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n }\n\n .loading-spinner {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 40px;\n color: var(--mj-text-muted);\n gap: 12px;\n }\n\n .executions-table {\n display: flex;\n flex-direction: column;\n gap: 0;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\n }\n\n .table-header {\n display: grid;\n grid-template-columns: 80px 1fr 120px 100px 100px 80px 100px 120px;\n gap: 12px;\n background: var(--mj-bg-surface-card);\n padding: 12px 16px;\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n }\n\n .table-row {\n display: grid;\n grid-template-columns: 80px 1fr 120px 100px 100px 80px 100px 120px;\n gap: 12px;\n padding: 12px 16px;\n border-top: 1px solid var(--mj-bg-surface-sunken);\n cursor: pointer;\n transition: background 0.2s ease;\n align-items: center;\n }\n\n .table-row:hover {\n background: var(--mj-bg-surface-card);\n }\n\n .table-cell {\n font-size: 12px;\n color: var(--mj-text-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .type-badge {\n background: color-mix(in srgb, var(--mj-text-muted) 10%, var(--mj-bg-surface));\n color: var(--mj-text-muted);\n padding: 3px 8px;\n border-radius: 4px;\n font-size: 10px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n }\n\n .type-badge--prompt {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n }\n\n .type-badge--agent {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n }\n\n .no-data {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n color: var(--mj-text-disabled);\n gap: 16px;\n }\n\n .no-data i {\n font-size: 48px;\n color: var(--mj-border-default);\n }\n\n .no-data p {\n margin: 0;\n font-size: 14px;\n }\n\n /* Model detail styles */\n .model-detail {\n padding: 20px;\n overflow-y: auto;\n }\n\n .model-details {\n display: flex;\n flex-direction: column;\n gap: 24px;\n }\n\n .model-info-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 16px;\n }\n\n .info-item {\n display: flex;\n flex-direction: column;\n gap: 6px;\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\n }\n\n .info-item label {\n font-size: 11px;\n color: var(--mj-text-muted);\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin: 0;\n }\n\n .info-item span {\n font-size: 14px;\n color: var(--mj-text-primary);\n font-weight: 500;\n }\n\n .status-indicator {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n }\n\n .status-indicator.active {\n color: var(--mj-status-success);\n }\n\n .status-indicator.active::before {\n content: '';\n width: 6px;\n height: 6px;\n background: var(--mj-status-success);\n border-radius: 50%;\n }\n\n .model-description {\n padding: 20px;\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n }\n\n .model-description h5 {\n margin: 0 0 12px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n }\n\n .model-description p {\n margin: 0;\n font-size: 13px;\n color: var(--mj-text-muted);\n line-height: 1.5;\n }\n\n /* Clickable KPI cards */\n .clickable {\n cursor: pointer;\n transition: transform 0.2s ease, box-shadow 0.2s ease;\n }\n\n .clickable:hover {\n transform: translateY(-2px);\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n }\n\n /* Collapsible Panel Styles */\n .analysis-panels {\n padding: 12px;\n height: 100%;\n overflow-y: auto;\n background: var(--mj-bg-surface-card);\n }\n\n .analysis-panel {\n margin-bottom: 12px;\n border-radius: 10px;\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 8%, transparent);\n background: var(--mj-bg-surface);\n overflow: hidden;\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 8%, transparent);\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n .analysis-panel:hover {\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n }\n\n .analysis-panel:last-child {\n margin-bottom: 0;\n }\n\n .panel-header {\n padding: 14px 18px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid color-mix(in srgb, var(--mj-brand-primary) 8%, transparent);\n cursor: pointer;\n display: flex;\n justify-content: space-between;\n align-items: center;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n .panel-header:hover {\n background: var(--mj-bg-surface-sunken);\n }\n\n .panel-title {\n display: flex;\n align-items: center;\n gap: 10px;\n font-weight: 600;\n color: var(--mj-text-primary);\n font-size: 14px;\n }\n\n .panel-title i {\n color: var(--mj-brand-primary);\n width: 18px;\n }\n\n .panel-toggle-icon {\n color: var(--mj-brand-primary);\n font-size: 12px;\n transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n .panel-content {\n padding: 18px;\n border-top: 1px solid color-mix(in srgb, var(--mj-brand-primary) 5%, transparent);\n animation: slideDown 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n @keyframes slideDown {\n from {\n opacity: 0;\n max-height: 0;\n }\n to {\n opacity: 1;\n max-height: 500px;\n }\n }\n\n .live-executions-panel {\n padding: 0;\n }\n\n .live-executions-panel app-live-execution-widget {\n height: 300px;\n display: block;\n }\n\n /* Responsive Design */\n @media (max-width: 1200px) {\n .dashboard-splitter {\n min-height: 400px;\n }\n \n .table-header,\n .table-row {\n grid-template-columns: 60px 1fr 100px 80px 80px 60px 80px 100px;\n gap: 8px;\n }\n \n .model-info-grid {\n grid-template-columns: 1fr;\n }\n \n .analysis-panels {\n padding: 8px;\n }\n \n .analysis-panel {\n margin-bottom: 8px;\n }\n }\n\n @media (max-width: 768px) {\n .execution-monitoring {\n padding: 12px;\n }\n \n .monitoring-header {\n flex-direction: column;\n align-items: flex-start;\n }\n \n .monitoring-controls {\n width: 100%;\n justify-content: flex-start;\n }\n \n .dashboard-splitter {\n min-height: 350px;\n }\n \n .kpi-grid {\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n }\n\n /* Reduce padding on smaller screens */\n :host ::ng-deep as-split-area > .as-split-area-content {\n padding: 5px;\n }\n\n .tab-header {\n overflow-x: auto;\n }\n \n .tab-item {\n min-width: 100px;\n padding: 6px 12px;\n }\n \n .table-header,\n .table-row {\n grid-template-columns: 1fr;\n gap: 4px;\n text-align: left;\n }\n \n .table-row {\n display: block;\n padding: 16px;\n }\n \n .table-cell {\n display: block;\n margin-bottom: 8px;\n }\n \n .table-cell:before {\n content: attr(data-label) ': ';\n font-weight: 600;\n color: var(--mj-text-muted);\n font-size: 11px;\n text-transform: uppercase;\n }\n \n .executions-drill-down,\n .model-detail {\n padding: 12px;\n }\n \n .panel-content {\n padding: 12px;\n }\n \n .panel-header {\n padding: 10px 12px;\n }\n \n .panel-title {\n font-size: 13px;\n }\n }\n "] }]
2023
2017
  }], () => [{ type: i1.AIInstrumentationService }, { type: i2.NavigationService }, { type: i0.ChangeDetectorRef }], null); })();
2024
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ExecutionMonitoringComponent, { className: "ExecutionMonitoringComponent", filePath: "src/AI/components/execution-monitoring.component.ts", lineNumber: 1786 }); })();
2018
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ExecutionMonitoringComponent, { className: "ExecutionMonitoringComponent", filePath: "src/AI/components/execution-monitoring.component.ts", lineNumber: 1767 }); })();
2025
2019
  //# sourceMappingURL=execution-monitoring.component.js.map