@memberjunction/ng-dashboards 5.34.0 → 5.35.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 (348) hide show
  1. package/dist/AI/components/agents/agent-configuration.component.d.ts +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 +399 -292
  4. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
  5. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts +8 -2
  6. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts.map +1 -1
  7. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js +87 -85
  8. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js.map +1 -1
  9. package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts +75 -0
  10. package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts.map +1 -1
  11. package/dist/AI/components/analytics/ai-analytics-resource.component.js +400 -89
  12. package/dist/AI/components/analytics/ai-analytics-resource.component.js.map +1 -1
  13. package/dist/AI/components/analytics/analytics-filter-bar.component.d.ts +5 -0
  14. package/dist/AI/components/analytics/analytics-filter-bar.component.d.ts.map +1 -1
  15. package/dist/AI/components/analytics/analytics-filter-bar.component.js +184 -135
  16. package/dist/AI/components/analytics/analytics-filter-bar.component.js.map +1 -1
  17. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts +8 -2
  18. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts.map +1 -1
  19. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js +104 -103
  20. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js.map +1 -1
  21. package/dist/AI/components/analytics/error-analysis/error-analysis.component.d.ts +8 -2
  22. package/dist/AI/components/analytics/error-analysis/error-analysis.component.d.ts.map +1 -1
  23. package/dist/AI/components/analytics/error-analysis/error-analysis.component.js +76 -74
  24. package/dist/AI/components/analytics/error-analysis/error-analysis.component.js.map +1 -1
  25. package/dist/AI/components/analytics/executive-summary/executive-summary.component.d.ts.map +1 -1
  26. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js +67 -87
  27. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js.map +1 -1
  28. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts +12 -19
  29. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts.map +1 -1
  30. package/dist/AI/components/analytics/model-performance/model-performance.component.js +96 -203
  31. package/dist/AI/components/analytics/model-performance/model-performance.component.js.map +1 -1
  32. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts.map +1 -1
  33. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js +110 -126
  34. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js.map +1 -1
  35. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts.map +1 -1
  36. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js +61 -77
  37. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js.map +1 -1
  38. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +990 -992
  39. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
  40. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts +6 -3
  41. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
  42. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +493 -490
  43. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
  44. package/dist/AI/components/models/model-management.component.d.ts +17 -0
  45. package/dist/AI/components/models/model-management.component.d.ts.map +1 -1
  46. package/dist/AI/components/models/model-management.component.js +370 -425
  47. package/dist/AI/components/models/model-management.component.js.map +1 -1
  48. package/dist/AI/components/prompts/prompt-management.component.d.ts +17 -0
  49. package/dist/AI/components/prompts/prompt-management.component.d.ts.map +1 -1
  50. package/dist/AI/components/prompts/prompt-management.component.js +317 -357
  51. package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
  52. package/dist/AI/components/requests/agent-requests-resource.component.d.ts +11 -0
  53. package/dist/AI/components/requests/agent-requests-resource.component.d.ts.map +1 -1
  54. package/dist/AI/components/requests/agent-requests-resource.component.js +170 -175
  55. package/dist/AI/components/requests/agent-requests-resource.component.js.map +1 -1
  56. package/dist/AI/components/system/system-configuration.component.d.ts +19 -0
  57. package/dist/AI/components/system/system-configuration.component.d.ts.map +1 -1
  58. package/dist/AI/components/system/system-configuration.component.js +403 -362
  59. package/dist/AI/components/system/system-configuration.component.js.map +1 -1
  60. package/dist/AI/components/tags/tags-resource.component.js +781 -783
  61. package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
  62. package/dist/AI/components/vectors/vector-management-resource.component.d.ts +8 -3
  63. package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
  64. package/dist/AI/components/vectors/vector-management-resource.component.js +547 -521
  65. package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
  66. package/dist/Actions/components/actions-overview.component.d.ts +6 -0
  67. package/dist/Actions/components/actions-overview.component.d.ts.map +1 -1
  68. package/dist/Actions/components/actions-overview.component.js +79 -30
  69. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  70. package/dist/Actions/components/execution-monitoring.component.d.ts +9 -3
  71. package/dist/Actions/components/execution-monitoring.component.d.ts.map +1 -1
  72. package/dist/Actions/components/execution-monitoring.component.js +196 -142
  73. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  74. package/dist/Actions/components/explorer/action-explorer.component.d.ts +41 -1
  75. package/dist/Actions/components/explorer/action-explorer.component.d.ts.map +1 -1
  76. package/dist/Actions/components/explorer/action-explorer.component.js +388 -94
  77. package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
  78. package/dist/Actions/components/explorer/index.d.ts +0 -1
  79. package/dist/Actions/components/explorer/index.d.ts.map +1 -1
  80. package/dist/Actions/components/explorer/index.js +0 -1
  81. package/dist/Actions/components/explorer/index.js.map +1 -1
  82. package/dist/Admin/admin-data-schema.component.js +32 -40
  83. package/dist/Admin/admin-data-schema.component.js.map +1 -1
  84. package/dist/Admin/admin-dev-tools-resource.component.js +32 -40
  85. package/dist/Admin/admin-dev-tools-resource.component.js.map +1 -1
  86. package/dist/Admin/admin-identity-access.component.js +32 -40
  87. package/dist/Admin/admin-identity-access.component.js.map +1 -1
  88. package/dist/Admin/admin-monitoring.component.js +32 -40
  89. package/dist/Admin/admin-monitoring.component.js.map +1 -1
  90. package/dist/ApplicationRoles/application-roles-resource.component.js +76 -82
  91. package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -1
  92. package/dist/Archiving/components/archive-config-resource.component.d.ts.map +1 -1
  93. package/dist/Archiving/components/archive-config-resource.component.js +24 -5
  94. package/dist/Archiving/components/archive-config-resource.component.js.map +1 -1
  95. package/dist/Archiving/components/archive-runs-resource.component.d.ts.map +1 -1
  96. package/dist/Archiving/components/archive-runs-resource.component.js +24 -5
  97. package/dist/Archiving/components/archive-runs-resource.component.js.map +1 -1
  98. package/dist/Communication/communication-logs-resource.component.d.ts +1 -1
  99. package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
  100. package/dist/Communication/communication-logs-resource.component.js +80 -99
  101. package/dist/Communication/communication-logs-resource.component.js.map +1 -1
  102. package/dist/Communication/communication-monitor-resource.component.d.ts.map +1 -1
  103. package/dist/Communication/communication-monitor-resource.component.js +127 -106
  104. package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
  105. package/dist/Communication/communication-providers-resource.component.d.ts.map +1 -1
  106. package/dist/Communication/communication-providers-resource.component.js +44 -45
  107. package/dist/Communication/communication-providers-resource.component.js.map +1 -1
  108. package/dist/Communication/communication-runs-resource.component.d.ts.map +1 -1
  109. package/dist/Communication/communication-runs-resource.component.js +60 -58
  110. package/dist/Communication/communication-runs-resource.component.js.map +1 -1
  111. package/dist/Communication/communication-templates-resource.component.d.ts +1 -1
  112. package/dist/Communication/communication-templates-resource.component.d.ts.map +1 -1
  113. package/dist/Communication/communication-templates-resource.component.js +139 -162
  114. package/dist/Communication/communication-templates-resource.component.js.map +1 -1
  115. package/dist/Credentials/components/credentials-audit-resource.component.d.ts +7 -0
  116. package/dist/Credentials/components/credentials-audit-resource.component.d.ts.map +1 -1
  117. package/dist/Credentials/components/credentials-audit-resource.component.js +310 -297
  118. package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
  119. package/dist/Credentials/components/credentials-categories-resource.component.js +245 -266
  120. package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
  121. package/dist/Credentials/components/credentials-list-resource.component.d.ts +7 -0
  122. package/dist/Credentials/components/credentials-list-resource.component.d.ts.map +1 -1
  123. package/dist/Credentials/components/credentials-list-resource.component.js +381 -399
  124. package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
  125. package/dist/Credentials/components/credentials-overview-resource.component.js +222 -228
  126. package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
  127. package/dist/Credentials/components/credentials-types-resource.component.d.ts +6 -0
  128. package/dist/Credentials/components/credentials-types-resource.component.d.ts.map +1 -1
  129. package/dist/Credentials/components/credentials-types-resource.component.js +294 -305
  130. package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
  131. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts +8 -0
  132. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts.map +1 -1
  133. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js +21 -0
  134. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js.map +1 -1
  135. package/dist/DatabaseDesigner/components/entity-list.component.js +147 -160
  136. package/dist/DatabaseDesigner/components/entity-list.component.js.map +1 -1
  137. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts +1 -1
  138. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts.map +1 -1
  139. package/dist/DatabaseDesigner/database-designer-dashboards.module.js +19 -1
  140. package/dist/DatabaseDesigner/database-designer-dashboards.module.js.map +1 -1
  141. package/dist/EntityAdmin/entity-admin-dashboard.component.js +20 -16
  142. package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
  143. package/dist/Home/home-dashboard.component.d.ts +6 -0
  144. package/dist/Home/home-dashboard.component.d.ts.map +1 -1
  145. package/dist/Home/home-dashboard.component.js +521 -485
  146. package/dist/Home/home-dashboard.component.js.map +1 -1
  147. package/dist/Integration/components/activity/activity.component.d.ts +8 -0
  148. package/dist/Integration/components/activity/activity.component.d.ts.map +1 -1
  149. package/dist/Integration/components/activity/activity.component.js +309 -318
  150. package/dist/Integration/components/activity/activity.component.js.map +1 -1
  151. package/dist/Integration/components/connections/connections.component.js +866 -847
  152. package/dist/Integration/components/connections/connections.component.js.map +1 -1
  153. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js +234 -233
  154. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js.map +1 -1
  155. package/dist/Integration/components/overview/overview.component.js +182 -163
  156. package/dist/Integration/components/overview/overview.component.js.map +1 -1
  157. package/dist/Integration/components/pipelines/pipelines.component.d.ts +2 -0
  158. package/dist/Integration/components/pipelines/pipelines.component.d.ts.map +1 -1
  159. package/dist/Integration/components/pipelines/pipelines.component.js +610 -606
  160. package/dist/Integration/components/pipelines/pipelines.component.js.map +1 -1
  161. package/dist/Integration/components/schedules/schedules.component.js +241 -241
  162. package/dist/Integration/components/schedules/schedules.component.js.map +1 -1
  163. package/dist/Integration/integration.module.d.ts +1 -1
  164. package/dist/Integration/integration.module.d.ts.map +1 -1
  165. package/dist/Integration/integration.module.js +28 -1
  166. package/dist/Integration/integration.module.js.map +1 -1
  167. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +673 -674
  168. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
  169. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +54 -51
  170. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -1
  171. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +745 -703
  172. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
  173. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts +12 -1
  174. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts.map +1 -1
  175. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js +191 -120
  176. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js.map +1 -1
  177. package/dist/Lists/components/lists-browse-resource.component.d.ts +18 -1
  178. package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
  179. package/dist/Lists/components/lists-browse-resource.component.js +486 -532
  180. package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
  181. package/dist/Lists/components/lists-categories-resource.component.d.ts.map +1 -1
  182. package/dist/Lists/components/lists-categories-resource.component.js +152 -160
  183. package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
  184. package/dist/Lists/components/lists-my-lists-resource.component.d.ts.map +1 -1
  185. package/dist/Lists/components/lists-my-lists-resource.component.js +302 -319
  186. package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
  187. package/dist/Lists/components/lists-operations-resource.component.d.ts.map +1 -1
  188. package/dist/Lists/components/lists-operations-resource.component.js +234 -246
  189. package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
  190. package/dist/MCP/mcp-dashboard.component.d.ts +20 -0
  191. package/dist/MCP/mcp-dashboard.component.d.ts.map +1 -1
  192. package/dist/MCP/mcp-dashboard.component.js +1248 -1338
  193. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  194. package/dist/MCP/mcp.module.d.ts +1 -1
  195. package/dist/MCP/mcp.module.d.ts.map +1 -1
  196. package/dist/MCP/mcp.module.js +34 -1
  197. package/dist/MCP/mcp.module.js.map +1 -1
  198. package/dist/Permissions/audit-log-resource.component.js +76 -85
  199. package/dist/Permissions/audit-log-resource.component.js.map +1 -1
  200. package/dist/Permissions/resource-access-resource.component.js +64 -69
  201. package/dist/Permissions/resource-access-resource.component.js.map +1 -1
  202. package/dist/Permissions/user-access-resource.component.js +63 -74
  203. package/dist/Permissions/user-access-resource.component.js.map +1 -1
  204. package/dist/QueryBrowser/query-browser-resource.component.js +2 -2
  205. package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
  206. package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts +2 -1
  207. package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts.map +1 -1
  208. package/dist/Scheduling/components/scheduling-activity-resource.component.js +11 -12
  209. package/dist/Scheduling/components/scheduling-activity-resource.component.js.map +1 -1
  210. package/dist/Scheduling/components/scheduling-activity.component.d.ts +9 -1
  211. package/dist/Scheduling/components/scheduling-activity.component.d.ts.map +1 -1
  212. package/dist/Scheduling/components/scheduling-activity.component.js +250 -197
  213. package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -1
  214. package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts +2 -1
  215. package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts.map +1 -1
  216. package/dist/Scheduling/components/scheduling-jobs-resource.component.js +11 -12
  217. package/dist/Scheduling/components/scheduling-jobs-resource.component.js.map +1 -1
  218. package/dist/Scheduling/components/scheduling-jobs.component.d.ts +9 -1
  219. package/dist/Scheduling/components/scheduling-jobs.component.d.ts.map +1 -1
  220. package/dist/Scheduling/components/scheduling-jobs.component.js +203 -147
  221. package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
  222. package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts +2 -1
  223. package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts.map +1 -1
  224. package/dist/Scheduling/components/scheduling-overview-resource.component.js +11 -12
  225. package/dist/Scheduling/components/scheduling-overview-resource.component.js.map +1 -1
  226. package/dist/Scheduling/components/scheduling-overview.component.d.ts +3 -1
  227. package/dist/Scheduling/components/scheduling-overview.component.d.ts.map +1 -1
  228. package/dist/Scheduling/components/scheduling-overview.component.js +224 -190
  229. package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
  230. package/dist/Scheduling/scheduling-dashboard.component.d.ts +19 -6
  231. package/dist/Scheduling/scheduling-dashboard.component.d.ts.map +1 -1
  232. package/dist/Scheduling/scheduling-dashboard.component.js +262 -104
  233. package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
  234. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts +4 -0
  235. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts.map +1 -1
  236. package/dist/SystemDiagnostics/system-diagnostics.component.js +812 -784
  237. package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
  238. package/dist/Testing/components/testing-analytics-resource.component.d.ts +2 -1
  239. package/dist/Testing/components/testing-analytics-resource.component.d.ts.map +1 -1
  240. package/dist/Testing/components/testing-analytics-resource.component.js +7 -14
  241. package/dist/Testing/components/testing-analytics-resource.component.js.map +1 -1
  242. package/dist/Testing/components/testing-analytics.component.d.ts +3 -1
  243. package/dist/Testing/components/testing-analytics.component.d.ts.map +1 -1
  244. package/dist/Testing/components/testing-analytics.component.js +420 -393
  245. package/dist/Testing/components/testing-analytics.component.js.map +1 -1
  246. package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts +2 -1
  247. package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts.map +1 -1
  248. package/dist/Testing/components/testing-dashboard-tab-resource.component.js +16 -19
  249. package/dist/Testing/components/testing-dashboard-tab-resource.component.js.map +1 -1
  250. package/dist/Testing/components/testing-dashboard-tab.component.d.ts +3 -1
  251. package/dist/Testing/components/testing-dashboard-tab.component.d.ts.map +1 -1
  252. package/dist/Testing/components/testing-dashboard-tab.component.js +157 -122
  253. package/dist/Testing/components/testing-dashboard-tab.component.js.map +1 -1
  254. package/dist/Testing/components/testing-explorer-resource.component.d.ts +2 -1
  255. package/dist/Testing/components/testing-explorer-resource.component.d.ts.map +1 -1
  256. package/dist/Testing/components/testing-explorer-resource.component.js +7 -12
  257. package/dist/Testing/components/testing-explorer-resource.component.js.map +1 -1
  258. package/dist/Testing/components/testing-explorer.component.d.ts +8 -1
  259. package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
  260. package/dist/Testing/components/testing-explorer.component.js +587 -608
  261. package/dist/Testing/components/testing-explorer.component.js.map +1 -1
  262. package/dist/Testing/components/testing-review-resource.component.d.ts +4 -1
  263. package/dist/Testing/components/testing-review-resource.component.d.ts.map +1 -1
  264. package/dist/Testing/components/testing-review-resource.component.js +9 -12
  265. package/dist/Testing/components/testing-review-resource.component.js.map +1 -1
  266. package/dist/Testing/components/testing-review.component.d.ts +3 -1
  267. package/dist/Testing/components/testing-review.component.d.ts.map +1 -1
  268. package/dist/Testing/components/testing-review.component.js +310 -274
  269. package/dist/Testing/components/testing-review.component.js.map +1 -1
  270. package/dist/Testing/components/testing-runs-resource.component.d.ts +2 -1
  271. package/dist/Testing/components/testing-runs-resource.component.d.ts.map +1 -1
  272. package/dist/Testing/components/testing-runs-resource.component.js +16 -19
  273. package/dist/Testing/components/testing-runs-resource.component.js.map +1 -1
  274. package/dist/Testing/components/testing-runs.component.d.ts +3 -1
  275. package/dist/Testing/components/testing-runs.component.d.ts.map +1 -1
  276. package/dist/Testing/components/testing-runs.component.js +307 -273
  277. package/dist/Testing/components/testing-runs.component.js.map +1 -1
  278. package/dist/Testing/testing-dashboard.component.d.ts +2 -0
  279. package/dist/Testing/testing-dashboard.component.d.ts.map +1 -1
  280. package/dist/Testing/testing-dashboard.component.js +107 -93
  281. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  282. package/dist/VersionHistory/components/diff-resource.component.js +185 -188
  283. package/dist/VersionHistory/components/diff-resource.component.js.map +1 -1
  284. package/dist/VersionHistory/components/graph-resource.component.js +154 -184
  285. package/dist/VersionHistory/components/graph-resource.component.js.map +1 -1
  286. package/dist/VersionHistory/components/labels-resource.component.d.ts +7 -0
  287. package/dist/VersionHistory/components/labels-resource.component.d.ts.map +1 -1
  288. package/dist/VersionHistory/components/labels-resource.component.js +350 -354
  289. package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
  290. package/dist/VersionHistory/components/restore-resource.component.js +163 -169
  291. package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
  292. package/dist/actions-dashboards.module.d.ts +15 -16
  293. package/dist/actions-dashboards.module.d.ts.map +1 -1
  294. package/dist/actions-dashboards.module.js +34 -11
  295. package/dist/actions-dashboards.module.js.map +1 -1
  296. package/dist/ai-dashboards.module.d.ts +45 -48
  297. package/dist/ai-dashboards.module.d.ts.map +1 -1
  298. package/dist/ai-dashboards.module.js +36 -10
  299. package/dist/ai-dashboards.module.js.map +1 -1
  300. package/dist/archiving-dashboards.module.d.ts +2 -1
  301. package/dist/archiving-dashboards.module.d.ts.map +1 -1
  302. package/dist/archiving-dashboards.module.js +12 -2
  303. package/dist/archiving-dashboards.module.js.map +1 -1
  304. package/dist/communication-dashboards.module.d.ts +2 -1
  305. package/dist/communication-dashboards.module.d.ts.map +1 -1
  306. package/dist/communication-dashboards.module.js +24 -3
  307. package/dist/communication-dashboards.module.js.map +1 -1
  308. package/dist/core-dashboards.module.d.ts +1 -1
  309. package/dist/core-dashboards.module.d.ts.map +1 -1
  310. package/dist/core-dashboards.module.js +31 -1
  311. package/dist/core-dashboards.module.js.map +1 -1
  312. package/dist/credentials-dashboards.module.d.ts +1 -1
  313. package/dist/credentials-dashboards.module.d.ts.map +1 -1
  314. package/dist/credentials-dashboards.module.js +28 -1
  315. package/dist/credentials-dashboards.module.js.map +1 -1
  316. package/dist/lists-dashboards.module.d.ts +1 -1
  317. package/dist/lists-dashboards.module.d.ts.map +1 -1
  318. package/dist/lists-dashboards.module.js +28 -1
  319. package/dist/lists-dashboards.module.js.map +1 -1
  320. package/dist/public-api.d.ts +2 -2
  321. package/dist/public-api.d.ts.map +1 -1
  322. package/dist/public-api.js +3 -3
  323. package/dist/public-api.js.map +1 -1
  324. package/dist/scheduling-dashboards.module.d.ts +1 -1
  325. package/dist/scheduling-dashboards.module.d.ts.map +1 -1
  326. package/dist/scheduling-dashboards.module.js +31 -1
  327. package/dist/scheduling-dashboards.module.js.map +1 -1
  328. package/dist/testing-dashboards.module.d.ts +8 -7
  329. package/dist/testing-dashboards.module.d.ts.map +1 -1
  330. package/dist/testing-dashboards.module.js +30 -0
  331. package/dist/testing-dashboards.module.js.map +1 -1
  332. package/package.json +52 -52
  333. package/dist/AI/components/agents/agent-filter-panel.component.d.ts +0 -56
  334. package/dist/AI/components/agents/agent-filter-panel.component.d.ts.map +0 -1
  335. package/dist/AI/components/agents/agent-filter-panel.component.js +0 -285
  336. package/dist/AI/components/agents/agent-filter-panel.component.js.map +0 -1
  337. package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts +0 -49
  338. package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts.map +0 -1
  339. package/dist/AI/components/prompts/prompt-filter-panel.component.js +0 -184
  340. package/dist/AI/components/prompts/prompt-filter-panel.component.js.map +0 -1
  341. package/dist/AI/components/system/system-config-filter-panel.component.d.ts +0 -33
  342. package/dist/AI/components/system/system-config-filter-panel.component.d.ts.map +0 -1
  343. package/dist/AI/components/system/system-config-filter-panel.component.js +0 -144
  344. package/dist/AI/components/system/system-config-filter-panel.component.js.map +0 -1
  345. package/dist/Actions/components/explorer/action-toolbar.component.d.ts +0 -63
  346. package/dist/Actions/components/explorer/action-toolbar.component.d.ts.map +0 -1
  347. package/dist/Actions/components/explorer/action-toolbar.component.js +0 -463
  348. package/dist/Actions/components/explorer/action-toolbar.component.js.map +0 -1
@@ -15,106 +15,164 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
15
15
  * Persists the active section and filter state via UserInfoEngine settings
16
16
  * with debounced writes.
17
17
  */
18
- import { Component, ChangeDetectorRef, inject } from '@angular/core';
18
+ import { Component, ChangeDetectorRef, ViewChild, inject } from '@angular/core';
19
19
  import { Subject } from 'rxjs';
20
20
  import { debounceTime, takeUntil } from 'rxjs/operators';
21
21
  import { UserInfoEngine } from '@memberjunction/core-entities';
22
22
  import { RegisterClass } from '@memberjunction/global';
23
23
  import { BaseResourceComponent } from '@memberjunction/ng-shared';
24
+ import { AIEngineBase } from '@memberjunction/ai-engine-base';
24
25
  import * as i0 from "@angular/core";
25
- import * as i1 from "./executive-summary/executive-summary.component";
26
- import * as i2 from "./prompt-runs/prompt-run-analysis.component";
27
- import * as i3 from "./agent-runs/agent-run-analysis.component";
28
- import * as i4 from "./model-performance/model-performance.component";
29
- import * as i5 from "./cost-budget/cost-budget.component";
30
- import * as i6 from "./error-analysis/error-analysis.component";
31
- import * as i7 from "./usage-patterns/usage-patterns.component";
26
+ import * as i1 from "@memberjunction/ng-ui-components";
27
+ import * as i2 from "./executive-summary/executive-summary.component";
28
+ import * as i3 from "./prompt-runs/prompt-run-analysis.component";
29
+ import * as i4 from "./agent-runs/agent-run-analysis.component";
30
+ import * as i5 from "./model-performance/model-performance.component";
31
+ import * as i6 from "./cost-budget/cost-budget.component";
32
+ import * as i7 from "./error-analysis/error-analysis.component";
33
+ import * as i8 from "./usage-patterns/usage-patterns.component";
34
+ const _c0 = ["executiveSummary"];
35
+ const _c1 = ["promptRuns"];
32
36
  const _forTrack0 = ($index, $item) => $item.Key;
37
+ const _forTrack1 = ($index, $item) => $item.value;
38
+ function AIAnalyticsResourceComponent_Conditional_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
39
+ const _r1 = i0.ɵɵgetCurrentView();
40
+ i0.ɵɵelementStart(0, "mj-filter-popover", 14);
41
+ i0.ɵɵlistener("ClearAllRequested", function AIAnalyticsResourceComponent_Conditional_2_Conditional_1_Template_mj_filter_popover_ClearAllRequested_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.resetPopoverFilters()); });
42
+ i0.ɵɵelementStart(1, "mj-filter-panel", 15);
43
+ i0.ɵɵlistener("ValuesChange", function AIAnalyticsResourceComponent_Conditional_2_Conditional_1_Template_mj_filter_panel_ValuesChange_1_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onAnalyticsFilterValuesChange($event)); })("Reset", function AIAnalyticsResourceComponent_Conditional_2_Conditional_1_Template_mj_filter_panel_Reset_1_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.resetPopoverFilters()); });
44
+ i0.ɵɵelementEnd()();
45
+ } if (rf & 2) {
46
+ const ctx_r1 = i0.ɵɵnextContext(2);
47
+ i0.ɵɵproperty("ActiveCount", ctx_r1.ActiveFilterCount)("ShowClearAll", ctx_r1.ActiveFilterCount > 0);
48
+ i0.ɵɵadvance();
49
+ i0.ɵɵproperty("Fields", ctx_r1.analyticsFilterFields)("Values", ctx_r1.analyticsFilterValues);
50
+ } }
51
+ function AIAnalyticsResourceComponent_Conditional_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
52
+ const _r3 = i0.ɵɵgetCurrentView();
53
+ i0.ɵɵelementStart(0, "button", 16);
54
+ i0.ɵɵtwoWayListener("selectedChange", function AIAnalyticsResourceComponent_Conditional_2_Conditional_2_Template_button_selectedChange_0_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.compareActive, $event) || (ctx_r1.compareActive = $event); return i0.ɵɵresetView($event); });
55
+ i0.ɵɵlistener("selectedChange", function AIAnalyticsResourceComponent_Conditional_2_Conditional_2_Template_button_selectedChange_0_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.toggleCompare()); });
56
+ i0.ɵɵelement(1, "i", 17);
57
+ i0.ɵɵtext(2, " Compare ");
58
+ i0.ɵɵelementEnd();
59
+ } if (rf & 2) {
60
+ const ctx_r1 = i0.ɵɵnextContext(2);
61
+ i0.ɵɵproperty("toggleable", true);
62
+ i0.ɵɵtwoWayProperty("selected", ctx_r1.compareActive);
63
+ } }
64
+ function AIAnalyticsResourceComponent_Conditional_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
65
+ const _r4 = i0.ɵɵgetCurrentView();
66
+ i0.ɵɵelementStart(0, "button", 18);
67
+ i0.ɵɵlistener("click", function AIAnalyticsResourceComponent_Conditional_2_Conditional_3_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnExportClicked()); });
68
+ i0.ɵɵelement(1, "i", 19);
69
+ i0.ɵɵtext(2, " Export ");
70
+ i0.ɵɵelementEnd();
71
+ } }
72
+ function AIAnalyticsResourceComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
73
+ i0.ɵɵelementStart(0, "div", 3);
74
+ i0.ɵɵconditionalCreate(1, AIAnalyticsResourceComponent_Conditional_2_Conditional_1_Template, 2, 4, "mj-filter-popover", 11);
75
+ i0.ɵɵconditionalCreate(2, AIAnalyticsResourceComponent_Conditional_2_Conditional_2_Template, 3, 2, "button", 12);
76
+ i0.ɵɵconditionalCreate(3, AIAnalyticsResourceComponent_Conditional_2_Conditional_3_Template, 3, 0, "button", 13);
77
+ i0.ɵɵelementEnd();
78
+ } if (rf & 2) {
79
+ const ctx_r1 = i0.ɵɵnextContext();
80
+ i0.ɵɵadvance();
81
+ i0.ɵɵconditional(ctx_r1.analyticsFilterFields.length > 0 ? 1 : -1);
82
+ i0.ɵɵadvance();
83
+ i0.ɵɵconditional(ctx_r1.FilterBarConfig.ShowCompareToggle ? 2 : -1);
84
+ i0.ɵɵadvance();
85
+ i0.ɵɵconditional(ctx_r1.FilterBarConfig.ShowExportButton ? 3 : -1);
86
+ } }
87
+ function AIAnalyticsResourceComponent_Conditional_3_For_2_Template(rf, ctx) { if (rf & 1) {
88
+ const _r5 = i0.ɵɵgetCurrentView();
89
+ i0.ɵɵelementStart(0, "mj-filter-chip", 21);
90
+ i0.ɵɵlistener("Clicked", function AIAnalyticsResourceComponent_Conditional_3_For_2_Template_mj_filter_chip_Clicked_0_listener() { const chip_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnTimeRangeChange(chip_r6.value)); });
91
+ i0.ɵɵelementEnd();
92
+ } if (rf & 2) {
93
+ const chip_r6 = ctx.$implicit;
94
+ const ctx_r1 = i0.ɵɵnextContext(2);
95
+ i0.ɵɵproperty("Label", chip_r6.text)("Active", ctx_r1.CurrentTimeRange === chip_r6.value);
96
+ } }
97
+ function AIAnalyticsResourceComponent_Conditional_3_Template(rf, ctx) { if (rf & 1) {
98
+ i0.ɵɵelementStart(0, "div", 4);
99
+ i0.ɵɵrepeaterCreate(1, AIAnalyticsResourceComponent_Conditional_3_For_2_Template, 1, 2, "mj-filter-chip", 20, _forTrack1);
100
+ i0.ɵɵelementEnd();
101
+ } if (rf & 2) {
102
+ const ctx_r1 = i0.ɵɵnextContext();
103
+ i0.ɵɵadvance();
104
+ i0.ɵɵrepeater(ctx_r1.timeRangeChipOptions);
105
+ } }
33
106
  function AIAnalyticsResourceComponent_For_7_Conditional_0_Template(rf, ctx) { if (rf & 1) {
34
- i0.ɵɵelement(0, "div", 7);
107
+ i0.ɵɵelement(0, "div", 22);
35
108
  } }
36
109
  function AIAnalyticsResourceComponent_For_7_Conditional_1_Template(rf, ctx) { if (rf & 1) {
37
- const _r1 = i0.ɵɵgetCurrentView();
38
- i0.ɵɵelementStart(0, "button", 9);
39
- i0.ɵɵlistener("click", function AIAnalyticsResourceComponent_For_7_Conditional_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r1); const item_r2 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnSectionChange(item_r2.Key)); });
110
+ const _r7 = i0.ɵɵgetCurrentView();
111
+ i0.ɵɵelementStart(0, "button", 24);
112
+ i0.ɵɵlistener("click", function AIAnalyticsResourceComponent_For_7_Conditional_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r7); const item_r8 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnSectionChange(item_r8.Key)); });
40
113
  i0.ɵɵelement(1, "i");
41
114
  i0.ɵɵelementStart(2, "span");
42
115
  i0.ɵɵtext(3);
43
116
  i0.ɵɵelementEnd()();
44
117
  } if (rf & 2) {
45
- const item_r2 = i0.ɵɵnextContext().$implicit;
46
- const ctx_r2 = i0.ɵɵnextContext();
47
- i0.ɵɵclassProp("active", ctx_r2.ActiveSection === item_r2.Key);
118
+ const item_r8 = i0.ɵɵnextContext().$implicit;
119
+ const ctx_r1 = i0.ɵɵnextContext();
120
+ i0.ɵɵclassProp("active", ctx_r1.ActiveSection === item_r8.Key);
48
121
  i0.ɵɵadvance();
49
- i0.ɵɵclassMap(item_r2.Icon);
122
+ i0.ɵɵclassMap(item_r8.Icon);
50
123
  i0.ɵɵadvance(2);
51
- i0.ɵɵtextInterpolate(item_r2.Label);
124
+ i0.ɵɵtextInterpolate(item_r8.Label);
52
125
  } }
53
126
  function AIAnalyticsResourceComponent_For_7_Template(rf, ctx) { if (rf & 1) {
54
- i0.ɵɵconditionalCreate(0, AIAnalyticsResourceComponent_For_7_Conditional_0_Template, 1, 0, "div", 7)(1, AIAnalyticsResourceComponent_For_7_Conditional_1_Template, 4, 5, "button", 8);
127
+ i0.ɵɵconditionalCreate(0, AIAnalyticsResourceComponent_For_7_Conditional_0_Template, 1, 0, "div", 22)(1, AIAnalyticsResourceComponent_For_7_Conditional_1_Template, 4, 5, "button", 23);
55
128
  } if (rf & 2) {
56
- const item_r2 = ctx.$implicit;
57
- i0.ɵɵconditional(item_r2.Key === "divider" ? 0 : 1);
129
+ const item_r8 = ctx.$implicit;
130
+ i0.ɵɵconditional(item_r8.Key === "divider" ? 0 : 1);
58
131
  } }
59
132
  function AIAnalyticsResourceComponent_Case_9_Template(rf, ctx) { if (rf & 1) {
60
- const _r4 = i0.ɵɵgetCurrentView();
61
- i0.ɵɵelementStart(0, "app-analytics-executive-summary", 10);
62
- i0.ɵɵlistener("TimeRangeChange", function AIAnalyticsResourceComponent_Case_9_Template_app_analytics_executive_summary_TimeRangeChange_0_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnTimeRangeChange($event)); })("FiltersChange", function AIAnalyticsResourceComponent_Case_9_Template_app_analytics_executive_summary_FiltersChange_0_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnFiltersChange($event)); })("SectionNavigate", function AIAnalyticsResourceComponent_Case_9_Template_app_analytics_executive_summary_SectionNavigate_0_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnSectionChange($event)); });
133
+ const _r9 = i0.ɵɵgetCurrentView();
134
+ i0.ɵɵelementStart(0, "app-analytics-executive-summary", 25, 0);
135
+ i0.ɵɵlistener("SectionNavigate", function AIAnalyticsResourceComponent_Case_9_Template_app_analytics_executive_summary_SectionNavigate_0_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnSectionChange($event)); });
63
136
  i0.ɵɵelementEnd();
64
137
  } if (rf & 2) {
65
- const ctx_r2 = i0.ɵɵnextContext();
66
- i0.ɵɵproperty("TimeRange", ctx_r2.CurrentTimeRange)("Filters", ctx_r2.CurrentFilters);
138
+ const ctx_r1 = i0.ɵɵnextContext();
139
+ i0.ɵɵproperty("TimeRange", ctx_r1.CurrentTimeRange)("Filters", ctx_r1.CurrentFilters);
67
140
  } }
68
141
  function AIAnalyticsResourceComponent_Case_10_Template(rf, ctx) { if (rf & 1) {
69
- const _r5 = i0.ɵɵgetCurrentView();
70
- i0.ɵɵelementStart(0, "app-analytics-prompt-runs", 11);
71
- i0.ɵɵlistener("TimeRangeChange", function AIAnalyticsResourceComponent_Case_10_Template_app_analytics_prompt_runs_TimeRangeChange_0_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnTimeRangeChange($event)); })("FiltersChange", function AIAnalyticsResourceComponent_Case_10_Template_app_analytics_prompt_runs_FiltersChange_0_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnFiltersChange($event)); });
72
- i0.ɵɵelementEnd();
142
+ i0.ɵɵelement(0, "app-analytics-prompt-runs", 8, 1);
73
143
  } if (rf & 2) {
74
- const ctx_r2 = i0.ɵɵnextContext();
75
- i0.ɵɵproperty("TimeRange", ctx_r2.CurrentTimeRange)("Filters", ctx_r2.CurrentFilters);
144
+ const ctx_r1 = i0.ɵɵnextContext();
145
+ i0.ɵɵproperty("TimeRange", ctx_r1.CurrentTimeRange)("Filters", ctx_r1.CurrentFilters);
76
146
  } }
77
147
  function AIAnalyticsResourceComponent_Case_11_Template(rf, ctx) { if (rf & 1) {
78
- const _r6 = i0.ɵɵgetCurrentView();
79
- i0.ɵɵelementStart(0, "app-analytics-agent-runs", 12);
80
- i0.ɵɵlistener("TimeRangeChange", function AIAnalyticsResourceComponent_Case_11_Template_app_analytics_agent_runs_TimeRangeChange_0_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnTimeRangeChange($event)); });
81
- i0.ɵɵelementEnd();
148
+ i0.ɵɵelement(0, "app-analytics-agent-runs", 8);
82
149
  } if (rf & 2) {
83
- const ctx_r2 = i0.ɵɵnextContext();
84
- i0.ɵɵproperty("TimeRange", ctx_r2.CurrentTimeRange);
150
+ const ctx_r1 = i0.ɵɵnextContext();
151
+ i0.ɵɵproperty("TimeRange", ctx_r1.CurrentTimeRange)("Filters", ctx_r1.CurrentFilters);
85
152
  } }
86
153
  function AIAnalyticsResourceComponent_Case_12_Template(rf, ctx) { if (rf & 1) {
87
- const _r7 = i0.ɵɵgetCurrentView();
88
- i0.ɵɵelementStart(0, "app-analytics-model-performance", 12);
89
- i0.ɵɵlistener("TimeRangeChange", function AIAnalyticsResourceComponent_Case_12_Template_app_analytics_model_performance_TimeRangeChange_0_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnTimeRangeChange($event)); });
90
- i0.ɵɵelementEnd();
154
+ i0.ɵɵelement(0, "app-analytics-model-performance", 9);
91
155
  } if (rf & 2) {
92
- const ctx_r2 = i0.ɵɵnextContext();
93
- i0.ɵɵproperty("TimeRange", ctx_r2.CurrentTimeRange);
156
+ const ctx_r1 = i0.ɵɵnextContext();
157
+ i0.ɵɵproperty("TimeRange", ctx_r1.CurrentTimeRange)("SortBy", ctx_r1.CurrentSortBy)("SelectedVendor", ctx_r1.CurrentVendor);
94
158
  } }
95
159
  function AIAnalyticsResourceComponent_Case_13_Template(rf, ctx) { if (rf & 1) {
96
- const _r8 = i0.ɵɵgetCurrentView();
97
- i0.ɵɵelementStart(0, "app-analytics-cost-budget", 11);
98
- i0.ɵɵlistener("TimeRangeChange", function AIAnalyticsResourceComponent_Case_13_Template_app_analytics_cost_budget_TimeRangeChange_0_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnTimeRangeChange($event)); })("FiltersChange", function AIAnalyticsResourceComponent_Case_13_Template_app_analytics_cost_budget_FiltersChange_0_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnFiltersChange($event)); });
99
- i0.ɵɵelementEnd();
160
+ i0.ɵɵelement(0, "app-analytics-cost-budget", 8);
100
161
  } if (rf & 2) {
101
- const ctx_r2 = i0.ɵɵnextContext();
102
- i0.ɵɵproperty("TimeRange", ctx_r2.CurrentTimeRange)("Filters", ctx_r2.CurrentFilters);
162
+ const ctx_r1 = i0.ɵɵnextContext();
163
+ i0.ɵɵproperty("TimeRange", ctx_r1.CurrentTimeRange)("Filters", ctx_r1.CurrentFilters);
103
164
  } }
104
165
  function AIAnalyticsResourceComponent_Case_14_Template(rf, ctx) { if (rf & 1) {
105
- i0.ɵɵelement(0, "app-analytics-error-analysis", 5);
166
+ i0.ɵɵelement(0, "app-analytics-error-analysis", 8);
106
167
  } if (rf & 2) {
107
- const ctx_r2 = i0.ɵɵnextContext();
108
- i0.ɵɵproperty("TimeRange", ctx_r2.CurrentTimeRange)("Filters", ctx_r2.CurrentFilters);
168
+ const ctx_r1 = i0.ɵɵnextContext();
169
+ i0.ɵɵproperty("TimeRange", ctx_r1.CurrentTimeRange)("Filters", ctx_r1.CurrentFilters);
109
170
  } }
110
171
  function AIAnalyticsResourceComponent_Case_15_Template(rf, ctx) { if (rf & 1) {
111
- const _r9 = i0.ɵɵgetCurrentView();
112
- i0.ɵɵelementStart(0, "app-analytics-usage-patterns", 12);
113
- i0.ɵɵlistener("TimeRangeChange", function AIAnalyticsResourceComponent_Case_15_Template_app_analytics_usage_patterns_TimeRangeChange_0_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnTimeRangeChange($event)); });
114
- i0.ɵɵelementEnd();
172
+ i0.ɵɵelement(0, "app-analytics-usage-patterns", 10);
115
173
  } if (rf & 2) {
116
- const ctx_r2 = i0.ɵɵnextContext();
117
- i0.ɵɵproperty("TimeRange", ctx_r2.CurrentTimeRange);
174
+ const ctx_r1 = i0.ɵɵnextContext();
175
+ i0.ɵɵproperty("TimeRange", ctx_r1.CurrentTimeRange);
118
176
  } }
119
177
  let AIAnalyticsResourceComponent = class AIAnalyticsResourceComponent extends BaseResourceComponent {
120
178
  USER_SETTINGS_KEY = 'AI.Analytics.UserPreferences';
@@ -122,6 +180,8 @@ let AIAnalyticsResourceComponent = class AIAnalyticsResourceComponent extends Ba
122
180
  destroy$ = new Subject();
123
181
  settingsLoaded = false;
124
182
  cdr = inject(ChangeDetectorRef);
183
+ executiveSummary;
184
+ promptRuns;
125
185
  ActiveSection = 'executive-summary';
126
186
  CurrentTimeRange = '24h';
127
187
  CurrentFilters = {
@@ -130,6 +190,195 @@ let AIAnalyticsResourceComponent = class AIAnalyticsResourceComponent extends Ba
130
190
  Prompts: [],
131
191
  Statuses: []
132
192
  };
193
+ /** Single-value SortBy used by Model Performance (lives on the shared chrome). */
194
+ CurrentSortBy = 'cost-efficiency';
195
+ /** Single-value Vendor filter used by Model Performance (lives on the shared chrome). */
196
+ CurrentVendor = '';
197
+ /** SortBy options for Model Performance leaderboard. */
198
+ sortByOptions = [
199
+ { text: 'By Performance', value: 'cost-efficiency' },
200
+ { text: 'By Cost', value: 'cost' },
201
+ { text: 'By Speed', value: 'speed' },
202
+ { text: 'By Reliability', value: 'reliability' },
203
+ { text: 'By Usage', value: 'usage-volume' }
204
+ ];
205
+ /** Vendor options, lazily built from AIEngineBase for Model Performance leaderboard. */
206
+ get vendorOptions() {
207
+ return AIEngineBase.Instance?.Vendors?.map(v => ({ text: v.Name ?? '', value: v.ID ?? '' }))
208
+ ?.sort((a, b) => a.text.localeCompare(b.text)) ?? [];
209
+ }
210
+ /** Per-section filter-bar config — switched on ActiveSection. */
211
+ get FilterBarConfig() {
212
+ switch (this.ActiveSection) {
213
+ case 'executive-summary':
214
+ return { ShowModelFilter: false, ShowAgentFilter: false, ShowPromptFilter: false, ShowStatusFilter: false, ShowSortBy: false, ShowVendor: false, ShowCompareToggle: true, ShowExportButton: false, TimeRangeOptions: ['1h', '6h', '24h', '7d', '30d'] };
215
+ case 'prompt-runs':
216
+ return { ShowModelFilter: true, ShowAgentFilter: true, ShowPromptFilter: true, ShowStatusFilter: true, ShowSortBy: false, ShowVendor: false, ShowCompareToggle: false, ShowExportButton: true, TimeRangeOptions: ['1h', '6h', '24h', '7d', '30d'] };
217
+ case 'agent-runs':
218
+ return { ShowModelFilter: false, ShowAgentFilter: true, ShowPromptFilter: false, ShowStatusFilter: true, ShowSortBy: false, ShowVendor: false, ShowCompareToggle: false, ShowExportButton: false, TimeRangeOptions: ['1h', '6h', '24h', '7d', '30d'] };
219
+ case 'model-performance':
220
+ return { ShowModelFilter: false, ShowAgentFilter: false, ShowPromptFilter: false, ShowStatusFilter: false, ShowSortBy: true, ShowVendor: true, ShowCompareToggle: false, ShowExportButton: false, TimeRangeOptions: ['24h', '7d', '30d'] };
221
+ case 'cost-budget':
222
+ return { ShowModelFilter: true, ShowAgentFilter: false, ShowPromptFilter: false, ShowStatusFilter: false, ShowSortBy: false, ShowVendor: false, ShowCompareToggle: false, ShowExportButton: false, TimeRangeOptions: ['7d', '30d', '90d', 'MTD', 'YTD'] };
223
+ case 'error-analysis':
224
+ return { ShowModelFilter: true, ShowAgentFilter: false, ShowPromptFilter: true, ShowStatusFilter: false, ShowSortBy: false, ShowVendor: false, ShowCompareToggle: false, ShowExportButton: false, TimeRangeOptions: ['1h', '6h', '24h', '7d', '30d'] };
225
+ case 'usage-patterns':
226
+ return { ShowModelFilter: false, ShowAgentFilter: false, ShowPromptFilter: false, ShowStatusFilter: false, ShowSortBy: false, ShowVendor: false, ShowCompareToggle: false, ShowExportButton: false, TimeRangeOptions: ['1h', '6h', '24h', '7d', '30d'] };
227
+ default:
228
+ return { ShowModelFilter: false, ShowAgentFilter: false, ShowPromptFilter: false, ShowStatusFilter: false, ShowSortBy: false, ShowVendor: false, ShowCompareToggle: false, ShowExportButton: false, TimeRangeOptions: ['1h', '6h', '24h', '7d', '30d'] };
229
+ }
230
+ }
231
+ /**
232
+ * Always true now — every section uses the shared chrome filter bar.
233
+ * Kept as a getter for future per-section carve-outs.
234
+ */
235
+ get ShowSharedFilterBar() {
236
+ return true;
237
+ }
238
+ /** Status options used by the popover dropdown when the section has ShowStatusFilter. */
239
+ statusOptions = [
240
+ { text: 'Success', value: 'Success' },
241
+ { text: 'Error', value: 'Error' },
242
+ { text: 'Running', value: 'Running' },
243
+ { text: 'Pending', value: 'Pending' },
244
+ { text: 'Canceled', value: 'Canceled' },
245
+ ];
246
+ /** Built lazily from AIEngineBase. */
247
+ get modelOptions() {
248
+ return AIEngineBase.Instance?.Models?.map(m => ({ text: m.Name ?? '', value: m.ID }))
249
+ ?.sort((a, b) => a.text.localeCompare(b.text)) ?? [];
250
+ }
251
+ get agentOptions() {
252
+ return AIEngineBase.Instance?.Agents
253
+ ?.filter(a => a.Status === 'Active')
254
+ ?.map(a => ({ text: a.Name ?? '', value: a.ID }))
255
+ ?.sort((a, b) => a.text.localeCompare(b.text)) ?? [];
256
+ }
257
+ get promptOptions() {
258
+ return AIEngineBase.Instance?.Prompts?.map(p => ({ text: p.Name ?? '', value: p.ID }))
259
+ ?.sort((a, b) => a.text.localeCompare(b.text)) ?? [];
260
+ }
261
+ /** Time-range chip options for the toolbar slot. */
262
+ get timeRangeChipOptions() {
263
+ return this.FilterBarConfig.TimeRangeOptions.map(t => ({ text: t, value: t }));
264
+ }
265
+ /** Compare-mode visual state (kept on the shell now that analytics-filter-bar is gone). */
266
+ compareActive = false;
267
+ /** Build the FilterFieldConfig[] for the popover based on the active section. */
268
+ get analyticsFilterFields() {
269
+ const cfg = this.FilterBarConfig;
270
+ const fields = [];
271
+ if (cfg.ShowModelFilter) {
272
+ fields.push({
273
+ key: 'Models',
274
+ type: 'dropdown',
275
+ label: 'Model',
276
+ icon: 'fa-solid fa-microchip',
277
+ filterable: this.modelOptions.length > 10,
278
+ options: [{ text: 'All Models', value: '' }, ...this.modelOptions],
279
+ });
280
+ }
281
+ if (cfg.ShowAgentFilter) {
282
+ fields.push({
283
+ key: 'Agents',
284
+ type: 'dropdown',
285
+ label: 'Agent',
286
+ icon: 'fa-solid fa-robot',
287
+ filterable: this.agentOptions.length > 10,
288
+ options: [{ text: 'All Agents', value: '' }, ...this.agentOptions],
289
+ });
290
+ }
291
+ if (cfg.ShowPromptFilter) {
292
+ fields.push({
293
+ key: 'Prompts',
294
+ type: 'dropdown',
295
+ label: 'Prompt',
296
+ icon: 'fa-solid fa-comment-dots',
297
+ filterable: this.promptOptions.length > 10,
298
+ options: [{ text: 'All Prompts', value: '' }, ...this.promptOptions],
299
+ });
300
+ }
301
+ if (cfg.ShowStatusFilter) {
302
+ fields.push({
303
+ key: 'Statuses',
304
+ type: 'dropdown',
305
+ label: 'Status',
306
+ icon: 'fa-solid fa-toggle-on',
307
+ options: [{ text: 'All Statuses', value: '' }, ...this.statusOptions],
308
+ });
309
+ }
310
+ if (cfg.ShowSortBy) {
311
+ fields.push({
312
+ key: 'SortBy',
313
+ type: 'dropdown',
314
+ label: 'Sort By',
315
+ icon: 'fa-solid fa-arrow-down-wide-short',
316
+ options: this.sortByOptions,
317
+ });
318
+ }
319
+ if (cfg.ShowVendor) {
320
+ fields.push({
321
+ key: 'Vendor',
322
+ type: 'dropdown',
323
+ label: 'Vendor',
324
+ icon: 'fa-solid fa-building',
325
+ filterable: this.vendorOptions.length > 10,
326
+ options: [{ text: 'All Vendors', value: '' }, ...this.vendorOptions],
327
+ });
328
+ }
329
+ return fields;
330
+ }
331
+ /** Single-value flattened state for the centralized panel (the panel takes scalar values; we hold arrays in CurrentFilters). */
332
+ get analyticsFilterValues() {
333
+ return {
334
+ Models: this.CurrentFilters.Models?.[0] ?? '',
335
+ Agents: this.CurrentFilters.Agents?.[0] ?? '',
336
+ Prompts: this.CurrentFilters.Prompts?.[0] ?? '',
337
+ Statuses: this.CurrentFilters.Statuses?.[0] ?? '',
338
+ SortBy: this.CurrentSortBy,
339
+ Vendor: this.CurrentVendor,
340
+ };
341
+ }
342
+ /** Receive popover updates and translate scalar → array shape used by GlobalFilterState. */
343
+ onAnalyticsFilterValuesChange(values) {
344
+ const next = {
345
+ Models: values['Models'] ? [values['Models']] : [],
346
+ Agents: values['Agents'] ? [values['Agents']] : [],
347
+ Prompts: values['Prompts'] ? [values['Prompts']] : [],
348
+ Statuses: values['Statuses'] ? [values['Statuses']] : [],
349
+ };
350
+ this.OnFiltersChange(next);
351
+ if ('SortBy' in values) {
352
+ this.CurrentSortBy = values['SortBy'] || 'cost-efficiency';
353
+ }
354
+ if ('Vendor' in values) {
355
+ this.CurrentVendor = values['Vendor'] || '';
356
+ }
357
+ }
358
+ /** Reset only the popover filters — leaves TimeRange and CompareActive alone. */
359
+ resetPopoverFilters() {
360
+ this.OnFiltersChange({ Models: [], Agents: [], Prompts: [], Statuses: [] });
361
+ // SortBy + Vendor reset only when Model Performance is the active section.
362
+ if (this.ActiveSection === 'model-performance') {
363
+ this.CurrentSortBy = 'cost-efficiency';
364
+ this.CurrentVendor = '';
365
+ }
366
+ }
367
+ /** Active filter count for the popover badge. */
368
+ get ActiveFilterCount() {
369
+ const f = this.CurrentFilters;
370
+ let count = (f.Models?.length ?? 0) + (f.Agents?.length ?? 0) + (f.Prompts?.length ?? 0) + (f.Statuses?.length ?? 0);
371
+ // SortBy counts as "active" when it differs from the default.
372
+ if (this.FilterBarConfig.ShowSortBy && this.CurrentSortBy && this.CurrentSortBy !== 'cost-efficiency')
373
+ count++;
374
+ if (this.FilterBarConfig.ShowVendor && this.CurrentVendor)
375
+ count++;
376
+ return count;
377
+ }
378
+ /** Toggle Compare mode — the mjButton directive owns the [(selected)] flip, so this handler only forwards the new value. */
379
+ toggleCompare() {
380
+ this.OnCompareToggled(this.compareActive);
381
+ }
133
382
  NavItems = [
134
383
  { Label: 'Executive Summary', Icon: 'fa-solid fa-gauge-high', Key: 'executive-summary' },
135
384
  { Label: 'Prompt Runs', Icon: 'fa-solid fa-comment-dots', Key: 'prompt-runs' },
@@ -176,6 +425,14 @@ let AIAnalyticsResourceComponent = class AIAnalyticsResourceComponent extends Ba
176
425
  this.CurrentFilters = filters;
177
426
  this.saveUserSettings();
178
427
  }
428
+ /** Compare-toggle button — only visible on Executive Summary; forwards to that section. */
429
+ OnCompareToggled(value) {
430
+ this.executiveSummary?.OnCompareToggled?.(value);
431
+ }
432
+ /** Export button — only visible on Prompt Runs; forwards to that section. */
433
+ OnExportClicked() {
434
+ this.promptRuns?.ExportCSV?.();
435
+ }
179
436
  // ── Private Helpers ──
180
437
  setupSettingsDebounce() {
181
438
  this.settingsPersistSubject.pipe(debounceTime(500), takeUntil(this.destroy$)).subscribe(() => this.persistUserSettings());
@@ -246,24 +503,36 @@ let AIAnalyticsResourceComponent = class AIAnalyticsResourceComponent extends Ba
246
503
  }
247
504
  }
248
505
  static ɵfac = /*@__PURE__*/ (() => { let ɵAIAnalyticsResourceComponent_BaseFactory; return function AIAnalyticsResourceComponent_Factory(__ngFactoryType__) { return (ɵAIAnalyticsResourceComponent_BaseFactory || (ɵAIAnalyticsResourceComponent_BaseFactory = i0.ɵɵgetInheritedFactory(AIAnalyticsResourceComponent)))(__ngFactoryType__ || AIAnalyticsResourceComponent); }; })();
249
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AIAnalyticsResourceComponent, selectors: [["app-ai-analytics-resource"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 16, vars: 1, consts: [[1, "analytics-shell"], [1, "analytics-nav"], [1, "nav-header"], [1, "fa-solid", "fa-chart-line"], [1, "analytics-content"], [3, "TimeRange", "Filters"], [3, "TimeRange"], [1, "nav-divider"], [1, "nav-item", 3, "active"], [1, "nav-item", 3, "click"], [3, "TimeRangeChange", "FiltersChange", "SectionNavigate", "TimeRange", "Filters"], [3, "TimeRangeChange", "FiltersChange", "TimeRange", "Filters"], [3, "TimeRangeChange", "TimeRange"]], template: function AIAnalyticsResourceComponent_Template(rf, ctx) { if (rf & 1) {
250
- i0.ɵɵelementStart(0, "div", 0)(1, "nav", 1)(2, "div", 2);
251
- i0.ɵɵelement(3, "i", 3);
252
- i0.ɵɵelementStart(4, "span");
253
- i0.ɵɵtext(5, "AI Analytics");
254
- i0.ɵɵelementEnd()();
506
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AIAnalyticsResourceComponent, selectors: [["app-ai-analytics-resource"]], viewQuery: function AIAnalyticsResourceComponent_Query(rf, ctx) { if (rf & 1) {
507
+ i0.ɵɵviewQuery(_c0, 5)(_c1, 5);
508
+ } if (rf & 2) {
509
+ let _t;
510
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.executiveSummary = _t.first);
511
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.promptRuns = _t.first);
512
+ } }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 16, vars: 4, consts: [["executiveSummary", ""], ["promptRuns", ""], ["Title", "Analytics", "Icon", "fa-solid fa-chart-line"], ["actions", ""], ["toolbar", "", 1, "time-range-chips"], [1, "analytics-shell", 3, "Padding"], [1, "analytics-nav"], [1, "analytics-content"], [3, "TimeRange", "Filters"], [3, "TimeRange", "SortBy", "SelectedVendor"], [3, "TimeRange"], [3, "ActiveCount", "ShowClearAll"], ["mjButton", "", "variant", "secondary", "size", "sm", 3, "toggleable", "selected"], ["mjButton", "", "variant", "secondary", "size", "sm"], [3, "ClearAllRequested", "ActiveCount", "ShowClearAll"], [3, "ValuesChange", "Reset", "Fields", "Values"], ["mjButton", "", "variant", "secondary", "size", "sm", 3, "selectedChange", "toggleable", "selected"], [1, "fa-solid", "fa-code-compare"], ["mjButton", "", "variant", "secondary", "size", "sm", 3, "click"], [1, "fa-solid", "fa-download"], [3, "Label", "Active"], [3, "Clicked", "Label", "Active"], [1, "nav-divider"], [1, "nav-item", 3, "active"], [1, "nav-item", 3, "click"], [3, "SectionNavigate", "TimeRange", "Filters"]], template: function AIAnalyticsResourceComponent_Template(rf, ctx) { if (rf & 1) {
513
+ i0.ɵɵelementStart(0, "mj-page-layout")(1, "mj-page-header", 2);
514
+ i0.ɵɵconditionalCreate(2, AIAnalyticsResourceComponent_Conditional_2_Template, 4, 3, "div", 3);
515
+ i0.ɵɵconditionalCreate(3, AIAnalyticsResourceComponent_Conditional_3_Template, 3, 0, "div", 4);
516
+ i0.ɵɵelementEnd();
517
+ i0.ɵɵelementStart(4, "mj-page-body", 5)(5, "nav", 6);
255
518
  i0.ɵɵrepeaterCreate(6, AIAnalyticsResourceComponent_For_7_Template, 2, 1, null, null, _forTrack0);
256
519
  i0.ɵɵelementEnd();
257
- i0.ɵɵelementStart(8, "div", 4);
258
- i0.ɵɵconditionalCreate(9, AIAnalyticsResourceComponent_Case_9_Template, 1, 2, "app-analytics-executive-summary", 5)(10, AIAnalyticsResourceComponent_Case_10_Template, 1, 2, "app-analytics-prompt-runs", 5)(11, AIAnalyticsResourceComponent_Case_11_Template, 1, 1, "app-analytics-agent-runs", 6)(12, AIAnalyticsResourceComponent_Case_12_Template, 1, 1, "app-analytics-model-performance", 6)(13, AIAnalyticsResourceComponent_Case_13_Template, 1, 2, "app-analytics-cost-budget", 5)(14, AIAnalyticsResourceComponent_Case_14_Template, 1, 2, "app-analytics-error-analysis", 5)(15, AIAnalyticsResourceComponent_Case_15_Template, 1, 1, "app-analytics-usage-patterns", 6);
259
- i0.ɵɵelementEnd()();
520
+ i0.ɵɵelementStart(8, "div", 7);
521
+ i0.ɵɵconditionalCreate(9, AIAnalyticsResourceComponent_Case_9_Template, 2, 2, "app-analytics-executive-summary", 8)(10, AIAnalyticsResourceComponent_Case_10_Template, 2, 2, "app-analytics-prompt-runs", 8)(11, AIAnalyticsResourceComponent_Case_11_Template, 1, 2, "app-analytics-agent-runs", 8)(12, AIAnalyticsResourceComponent_Case_12_Template, 1, 3, "app-analytics-model-performance", 9)(13, AIAnalyticsResourceComponent_Case_13_Template, 1, 2, "app-analytics-cost-budget", 8)(14, AIAnalyticsResourceComponent_Case_14_Template, 1, 2, "app-analytics-error-analysis", 8)(15, AIAnalyticsResourceComponent_Case_15_Template, 1, 1, "app-analytics-usage-patterns", 10);
522
+ i0.ɵɵelementEnd()()();
260
523
  } if (rf & 2) {
261
- let tmp_1_0;
262
- i0.ɵɵadvance(6);
524
+ let tmp_4_0;
525
+ i0.ɵɵadvance(2);
526
+ i0.ɵɵconditional(ctx.ShowSharedFilterBar ? 2 : -1);
527
+ i0.ɵɵadvance();
528
+ i0.ɵɵconditional(ctx.ShowSharedFilterBar && ctx.timeRangeChipOptions.length > 0 ? 3 : -1);
529
+ i0.ɵɵadvance();
530
+ i0.ɵɵproperty("Padding", false);
531
+ i0.ɵɵadvance(2);
263
532
  i0.ɵɵrepeater(ctx.NavItems);
264
533
  i0.ɵɵadvance(3);
265
- i0.ɵɵconditional((tmp_1_0 = ctx.ActiveSection) === "executive-summary" ? 9 : tmp_1_0 === "prompt-runs" ? 10 : tmp_1_0 === "agent-runs" ? 11 : tmp_1_0 === "model-performance" ? 12 : tmp_1_0 === "cost-budget" ? 13 : tmp_1_0 === "error-analysis" ? 14 : tmp_1_0 === "usage-patterns" ? 15 : -1);
266
- } }, dependencies: [i1.AnalyticsExecutiveSummaryComponent, i2.AnalyticsPromptRunsComponent, i3.AnalyticsAgentRunsComponent, i4.AnalyticsModelPerformanceComponent, i5.AnalyticsCostBudgetComponent, i6.AnalyticsErrorAnalysisComponent, i7.AnalyticsUsagePatternsComponent], styles: ["[_nghost-%COMP%] {\n display: block;\n height: 100%;\n }\n\n .analytics-shell[_ngcontent-%COMP%] {\n display: flex;\n height: 100%;\n background: var(--mj-bg-page);\n }\n\n \n\n\n .analytics-nav[_ngcontent-%COMP%] {\n width: 220px;\n min-width: 220px;\n background: var(--mj-bg-surface);\n border-right: 1px solid var(--mj-border-default);\n display: flex;\n flex-direction: column;\n padding: 12px 0;\n overflow-y: auto;\n }\n\n .nav-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 8px 18px 16px;\n font-size: 15px;\n font-weight: 700;\n color: var(--mj-text-primary);\n border-bottom: 1px solid var(--mj-border-subtle);\n margin-bottom: 8px;\n }\n\n .nav-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 16px;\n }\n\n .nav-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 18px;\n border: none;\n border-left: 3px solid transparent;\n background: transparent;\n color: var(--mj-text-secondary);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: background 0.15s, color 0.15s, border-color 0.15s;\n text-align: left;\n width: 100%;\n }\n\n .nav-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n }\n\n .nav-item.active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border-left-color: var(--mj-brand-primary);\n font-weight: 600;\n }\n\n .nav-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n width: 18px;\n text-align: center;\n font-size: 14px;\n }\n\n .nav-divider[_ngcontent-%COMP%] {\n height: 1px;\n background: var(--mj-border-subtle);\n margin: 8px 18px;\n }\n\n \n\n\n .analytics-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 24px;\n }\n\n \n\n\n .section-placeholder[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 80px 24px;\n color: var(--mj-text-muted);\n }\n\n .placeholder-icon[_ngcontent-%COMP%] {\n font-size: 48px;\n margin-bottom: 20px;\n color: var(--mj-brand-primary);\n opacity: 0.4;\n }\n\n .section-placeholder[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n font-size: 20px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 8px;\n }\n\n .section-placeholder[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-muted);\n margin: 0;\n max-width: 420px;\n }\n\n \n\n\n @media (max-width: 768px) {\n .analytics-shell[_ngcontent-%COMP%] {\n flex-direction: column;\n }\n\n .analytics-nav[_ngcontent-%COMP%] {\n width: 100%;\n min-width: unset;\n flex-direction: row;\n overflow-x: auto;\n overflow-y: hidden;\n border-right: none;\n border-bottom: 1px solid var(--mj-border-default);\n padding: 0 8px;\n gap: 2px;\n }\n\n .nav-header[_ngcontent-%COMP%] {\n display: none;\n }\n\n .nav-divider[_ngcontent-%COMP%] {\n width: 1px;\n height: 28px;\n margin: auto 4px;\n }\n\n .nav-item[_ngcontent-%COMP%] {\n white-space: nowrap;\n border-left: none;\n border-bottom: 3px solid transparent;\n padding: 10px 14px;\n }\n\n .nav-item.active[_ngcontent-%COMP%] {\n border-left-color: transparent;\n border-bottom-color: var(--mj-brand-primary);\n }\n\n .analytics-content[_ngcontent-%COMP%] {\n padding: 16px;\n }\n }"] });
534
+ i0.ɵɵconditional((tmp_4_0 = ctx.ActiveSection) === "executive-summary" ? 9 : tmp_4_0 === "prompt-runs" ? 10 : tmp_4_0 === "agent-runs" ? 11 : tmp_4_0 === "model-performance" ? 12 : tmp_4_0 === "cost-budget" ? 13 : tmp_4_0 === "error-analysis" ? 14 : tmp_4_0 === "usage-patterns" ? 15 : -1);
535
+ } }, dependencies: [i1.MJButtonDirective, i1.MJPageHeaderComponent, i1.MJPageLayoutComponent, i1.MJPageBodyComponent, i1.MJFilterPopoverComponent, i1.MJFilterPanelComponent, i1.MJFilterChipComponent, i2.AnalyticsExecutiveSummaryComponent, i3.AnalyticsPromptRunsComponent, i4.AnalyticsAgentRunsComponent, i5.AnalyticsModelPerformanceComponent, i6.AnalyticsCostBudgetComponent, i7.AnalyticsErrorAnalysisComponent, i8.AnalyticsUsagePatternsComponent], styles: ["[_nghost-%COMP%] {\n display: block;\n height: 100%;\n }\n\n .analytics-shell[_ngcontent-%COMP%] {\n display: flex;\n flex: 1;\n min-height: 0;\n background: var(--mj-bg-page);\n }\n\n \n\n\n .analytics-nav[_ngcontent-%COMP%] {\n width: 220px;\n min-width: 220px;\n background: var(--mj-bg-surface);\n border-right: 1px solid var(--mj-border-default);\n display: flex;\n flex-direction: column;\n padding: 12px 0;\n overflow-y: auto;\n }\n\n .nav-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 18px;\n border: none;\n border-left: 3px solid transparent;\n background: transparent;\n color: var(--mj-text-secondary);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: background 0.15s, color 0.15s, border-color 0.15s;\n text-align: left;\n width: 100%;\n }\n\n .nav-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n }\n\n .nav-item.active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border-left-color: var(--mj-brand-primary);\n font-weight: 600;\n }\n\n .nav-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n width: 18px;\n text-align: center;\n font-size: 14px;\n }\n\n .nav-divider[_ngcontent-%COMP%] {\n height: 1px;\n background: var(--mj-border-subtle);\n margin: 8px 18px;\n }\n\n \n\n\n .analytics-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 24px;\n }\n\n \n\n\n .section-placeholder[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 80px 24px;\n color: var(--mj-text-muted);\n }\n\n .placeholder-icon[_ngcontent-%COMP%] {\n font-size: 48px;\n margin-bottom: 20px;\n color: var(--mj-brand-primary);\n opacity: 0.4;\n }\n\n .section-placeholder[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n font-size: 20px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 8px;\n }\n\n .section-placeholder[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-muted);\n margin: 0;\n max-width: 420px;\n }\n\n \n\n\n @media (max-width: 768px) {\n .analytics-shell[_ngcontent-%COMP%] {\n flex-direction: column;\n }\n\n .analytics-nav[_ngcontent-%COMP%] {\n width: 100%;\n min-width: unset;\n flex-direction: row;\n overflow-x: auto;\n overflow-y: hidden;\n border-right: none;\n border-bottom: 1px solid var(--mj-border-default);\n padding: 0 8px;\n gap: 2px;\n }\n\n .nav-header[_ngcontent-%COMP%] {\n display: none;\n }\n\n .nav-divider[_ngcontent-%COMP%] {\n width: 1px;\n height: 28px;\n margin: auto 4px;\n }\n\n .nav-item[_ngcontent-%COMP%] {\n white-space: nowrap;\n border-left: none;\n border-bottom: 3px solid transparent;\n padding: 10px 14px;\n }\n\n .nav-item.active[_ngcontent-%COMP%] {\n border-left-color: transparent;\n border-bottom-color: var(--mj-brand-primary);\n }\n\n .analytics-content[_ngcontent-%COMP%] {\n padding: 16px;\n }\n }"] });
267
536
  };
268
537
  AIAnalyticsResourceComponent = __decorate([
269
538
  RegisterClass(BaseResourceComponent, 'AIAnalyticsResource')
@@ -272,12 +541,51 @@ export { AIAnalyticsResourceComponent };
272
541
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AIAnalyticsResourceComponent, [{
273
542
  type: Component,
274
543
  args: [{ standalone: false, selector: 'app-ai-analytics-resource', template: `
275
- <div class="analytics-shell">
276
- <nav class="analytics-nav">
277
- <div class="nav-header">
278
- <i class="fa-solid fa-chart-line"></i>
279
- <span>AI Analytics</span>
544
+ <mj-page-layout>
545
+ <mj-page-header
546
+ Title="Analytics"
547
+ Icon="fa-solid fa-chart-line">
548
+ @if (ShowSharedFilterBar) {
549
+ <div actions>
550
+ @if (analyticsFilterFields.length > 0) {
551
+ <mj-filter-popover
552
+ [ActiveCount]="ActiveFilterCount"
553
+ [ShowClearAll]="ActiveFilterCount > 0"
554
+ (ClearAllRequested)="resetPopoverFilters()">
555
+ <mj-filter-panel
556
+ [Fields]="analyticsFilterFields"
557
+ [Values]="analyticsFilterValues"
558
+ (ValuesChange)="onAnalyticsFilterValuesChange($event)"
559
+ (Reset)="resetPopoverFilters()">
560
+ </mj-filter-panel>
561
+ </mj-filter-popover>
562
+ }
563
+ @if (FilterBarConfig.ShowCompareToggle) {
564
+ <button mjButton variant="secondary" size="sm" [toggleable]="true" [(selected)]="compareActive" (selectedChange)="toggleCompare()">
565
+ <i class="fa-solid fa-code-compare"></i> Compare
566
+ </button>
567
+ }
568
+ @if (FilterBarConfig.ShowExportButton) {
569
+ <button mjButton variant="secondary" size="sm" (click)="OnExportClicked()">
570
+ <i class="fa-solid fa-download"></i> Export
571
+ </button>
572
+ }
280
573
  </div>
574
+ }
575
+ @if (ShowSharedFilterBar && timeRangeChipOptions.length > 0) {
576
+ <div toolbar class="time-range-chips">
577
+ @for (chip of timeRangeChipOptions; track chip.value) {
578
+ <mj-filter-chip
579
+ [Label]="chip.text"
580
+ [Active]="CurrentTimeRange === chip.value"
581
+ (Clicked)="OnTimeRangeChange(chip.value)">
582
+ </mj-filter-chip>
583
+ }
584
+ </div>
585
+ }
586
+ </mj-page-header>
587
+ <mj-page-body [Padding]="false" class="analytics-shell">
588
+ <nav class="analytics-nav">
281
589
  @for (item of NavItems; track item.Key) {
282
590
  @if (item.Key === 'divider') {
283
591
  <div class="nav-divider"></div>
@@ -297,39 +605,36 @@ export { AIAnalyticsResourceComponent };
297
605
  @switch (ActiveSection) {
298
606
  @case ('executive-summary') {
299
607
  <app-analytics-executive-summary
608
+ #executiveSummary
300
609
  [TimeRange]="CurrentTimeRange"
301
610
  [Filters]="CurrentFilters"
302
- (TimeRangeChange)="OnTimeRangeChange($event)"
303
- (FiltersChange)="OnFiltersChange($event)"
304
611
  (SectionNavigate)="OnSectionChange($event)"
305
612
  ></app-analytics-executive-summary>
306
613
  }
307
614
  @case ('prompt-runs') {
308
615
  <app-analytics-prompt-runs
616
+ #promptRuns
309
617
  [TimeRange]="CurrentTimeRange"
310
618
  [Filters]="CurrentFilters"
311
- (TimeRangeChange)="OnTimeRangeChange($event)"
312
- (FiltersChange)="OnFiltersChange($event)"
313
619
  ></app-analytics-prompt-runs>
314
620
  }
315
621
  @case ('agent-runs') {
316
622
  <app-analytics-agent-runs
317
623
  [TimeRange]="CurrentTimeRange"
318
- (TimeRangeChange)="OnTimeRangeChange($event)"
624
+ [Filters]="CurrentFilters"
319
625
  ></app-analytics-agent-runs>
320
626
  }
321
627
  @case ('model-performance') {
322
628
  <app-analytics-model-performance
323
629
  [TimeRange]="CurrentTimeRange"
324
- (TimeRangeChange)="OnTimeRangeChange($event)"
630
+ [SortBy]="CurrentSortBy"
631
+ [SelectedVendor]="CurrentVendor"
325
632
  ></app-analytics-model-performance>
326
633
  }
327
634
  @case ('cost-budget') {
328
635
  <app-analytics-cost-budget
329
636
  [TimeRange]="CurrentTimeRange"
330
637
  [Filters]="CurrentFilters"
331
- (TimeRangeChange)="OnTimeRangeChange($event)"
332
- (FiltersChange)="OnFiltersChange($event)"
333
638
  ></app-analytics-cost-budget>
334
639
  }
335
640
  @case ('error-analysis') {
@@ -341,15 +646,21 @@ export { AIAnalyticsResourceComponent };
341
646
  @case ('usage-patterns') {
342
647
  <app-analytics-usage-patterns
343
648
  [TimeRange]="CurrentTimeRange"
344
- (TimeRangeChange)="OnTimeRangeChange($event)"
345
649
  ></app-analytics-usage-patterns>
346
650
  }
347
651
  }
348
652
  </div>
349
- </div>
350
- `, styles: ["\n :host {\n display: block;\n height: 100%;\n }\n\n .analytics-shell {\n display: flex;\n height: 100%;\n background: var(--mj-bg-page);\n }\n\n /* \u2500\u2500 Left Navigation \u2500\u2500 */\n\n .analytics-nav {\n width: 220px;\n min-width: 220px;\n background: var(--mj-bg-surface);\n border-right: 1px solid var(--mj-border-default);\n display: flex;\n flex-direction: column;\n padding: 12px 0;\n overflow-y: auto;\n }\n\n .nav-header {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 8px 18px 16px;\n font-size: 15px;\n font-weight: 700;\n color: var(--mj-text-primary);\n border-bottom: 1px solid var(--mj-border-subtle);\n margin-bottom: 8px;\n }\n\n .nav-header i {\n color: var(--mj-brand-primary);\n font-size: 16px;\n }\n\n .nav-item {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 18px;\n border: none;\n border-left: 3px solid transparent;\n background: transparent;\n color: var(--mj-text-secondary);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: background 0.15s, color 0.15s, border-color 0.15s;\n text-align: left;\n width: 100%;\n }\n\n .nav-item:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n }\n\n .nav-item.active {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border-left-color: var(--mj-brand-primary);\n font-weight: 600;\n }\n\n .nav-item i {\n width: 18px;\n text-align: center;\n font-size: 14px;\n }\n\n .nav-divider {\n height: 1px;\n background: var(--mj-border-subtle);\n margin: 8px 18px;\n }\n\n /* \u2500\u2500 Content Area \u2500\u2500 */\n\n .analytics-content {\n flex: 1;\n overflow-y: auto;\n padding: 24px;\n }\n\n /* \u2500\u2500 Section Placeholders \u2500\u2500 */\n\n .section-placeholder {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 80px 24px;\n color: var(--mj-text-muted);\n }\n\n .placeholder-icon {\n font-size: 48px;\n margin-bottom: 20px;\n color: var(--mj-brand-primary);\n opacity: 0.4;\n }\n\n .section-placeholder h2 {\n font-size: 20px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 8px;\n }\n\n .section-placeholder p {\n font-size: 14px;\n color: var(--mj-text-muted);\n margin: 0;\n max-width: 420px;\n }\n\n /* \u2500\u2500 Responsive: collapse nav to horizontal strip \u2500\u2500 */\n\n @media (max-width: 768px) {\n .analytics-shell {\n flex-direction: column;\n }\n\n .analytics-nav {\n width: 100%;\n min-width: unset;\n flex-direction: row;\n overflow-x: auto;\n overflow-y: hidden;\n border-right: none;\n border-bottom: 1px solid var(--mj-border-default);\n padding: 0 8px;\n gap: 2px;\n }\n\n .nav-header {\n display: none;\n }\n\n .nav-divider {\n width: 1px;\n height: 28px;\n margin: auto 4px;\n }\n\n .nav-item {\n white-space: nowrap;\n border-left: none;\n border-bottom: 3px solid transparent;\n padding: 10px 14px;\n }\n\n .nav-item.active {\n border-left-color: transparent;\n border-bottom-color: var(--mj-brand-primary);\n }\n\n .analytics-content {\n padding: 16px;\n }\n }\n "] }]
351
- }], null, null); })();
352
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AIAnalyticsResourceComponent, { className: "AIAnalyticsResourceComponent", filePath: "src/AI/components/analytics/ai-analytics-resource.component.ts", lineNumber: 279 }); })();
653
+ </mj-page-body>
654
+ </mj-page-layout>
655
+ `, styles: ["\n :host {\n display: block;\n height: 100%;\n }\n\n .analytics-shell {\n display: flex;\n flex: 1;\n min-height: 0;\n background: var(--mj-bg-page);\n }\n\n /* \u2500\u2500 Left Navigation \u2500\u2500 */\n\n .analytics-nav {\n width: 220px;\n min-width: 220px;\n background: var(--mj-bg-surface);\n border-right: 1px solid var(--mj-border-default);\n display: flex;\n flex-direction: column;\n padding: 12px 0;\n overflow-y: auto;\n }\n\n .nav-item {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 18px;\n border: none;\n border-left: 3px solid transparent;\n background: transparent;\n color: var(--mj-text-secondary);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: background 0.15s, color 0.15s, border-color 0.15s;\n text-align: left;\n width: 100%;\n }\n\n .nav-item:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n }\n\n .nav-item.active {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border-left-color: var(--mj-brand-primary);\n font-weight: 600;\n }\n\n .nav-item i {\n width: 18px;\n text-align: center;\n font-size: 14px;\n }\n\n .nav-divider {\n height: 1px;\n background: var(--mj-border-subtle);\n margin: 8px 18px;\n }\n\n /* \u2500\u2500 Content Area \u2500\u2500 */\n\n .analytics-content {\n flex: 1;\n overflow-y: auto;\n padding: 24px;\n }\n\n /* \u2500\u2500 Section Placeholders \u2500\u2500 */\n\n .section-placeholder {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 80px 24px;\n color: var(--mj-text-muted);\n }\n\n .placeholder-icon {\n font-size: 48px;\n margin-bottom: 20px;\n color: var(--mj-brand-primary);\n opacity: 0.4;\n }\n\n .section-placeholder h2 {\n font-size: 20px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 8px;\n }\n\n .section-placeholder p {\n font-size: 14px;\n color: var(--mj-text-muted);\n margin: 0;\n max-width: 420px;\n }\n\n /* \u2500\u2500 Responsive: collapse nav to horizontal strip \u2500\u2500 */\n\n @media (max-width: 768px) {\n .analytics-shell {\n flex-direction: column;\n }\n\n .analytics-nav {\n width: 100%;\n min-width: unset;\n flex-direction: row;\n overflow-x: auto;\n overflow-y: hidden;\n border-right: none;\n border-bottom: 1px solid var(--mj-border-default);\n padding: 0 8px;\n gap: 2px;\n }\n\n .nav-header {\n display: none;\n }\n\n .nav-divider {\n width: 1px;\n height: 28px;\n margin: auto 4px;\n }\n\n .nav-item {\n white-space: nowrap;\n border-left: none;\n border-bottom: 3px solid transparent;\n padding: 10px 14px;\n }\n\n .nav-item.active {\n border-left-color: transparent;\n border-bottom-color: var(--mj-brand-primary);\n }\n\n .analytics-content {\n padding: 16px;\n }\n }\n "] }]
656
+ }], null, { executiveSummary: [{
657
+ type: ViewChild,
658
+ args: ['executiveSummary']
659
+ }], promptRuns: [{
660
+ type: ViewChild,
661
+ args: ['promptRuns']
662
+ }] }); })();
663
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AIAnalyticsResourceComponent, { className: "AIAnalyticsResourceComponent", filePath: "src/AI/components/analytics/ai-analytics-resource.component.ts", lineNumber: 303 }); })();
353
664
  export function LoadAIAnalyticsResource() {
354
665
  // Prevents tree-shaking of the @RegisterClass decorator
355
666
  }