@memberjunction/ng-dashboards 5.34.1 → 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 (346) 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.js +773 -783
  235. package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
  236. package/dist/Testing/components/testing-analytics-resource.component.d.ts +2 -1
  237. package/dist/Testing/components/testing-analytics-resource.component.d.ts.map +1 -1
  238. package/dist/Testing/components/testing-analytics-resource.component.js +7 -14
  239. package/dist/Testing/components/testing-analytics-resource.component.js.map +1 -1
  240. package/dist/Testing/components/testing-analytics.component.d.ts +3 -1
  241. package/dist/Testing/components/testing-analytics.component.d.ts.map +1 -1
  242. package/dist/Testing/components/testing-analytics.component.js +420 -393
  243. package/dist/Testing/components/testing-analytics.component.js.map +1 -1
  244. package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts +2 -1
  245. package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts.map +1 -1
  246. package/dist/Testing/components/testing-dashboard-tab-resource.component.js +16 -19
  247. package/dist/Testing/components/testing-dashboard-tab-resource.component.js.map +1 -1
  248. package/dist/Testing/components/testing-dashboard-tab.component.d.ts +3 -1
  249. package/dist/Testing/components/testing-dashboard-tab.component.d.ts.map +1 -1
  250. package/dist/Testing/components/testing-dashboard-tab.component.js +157 -122
  251. package/dist/Testing/components/testing-dashboard-tab.component.js.map +1 -1
  252. package/dist/Testing/components/testing-explorer-resource.component.d.ts +2 -1
  253. package/dist/Testing/components/testing-explorer-resource.component.d.ts.map +1 -1
  254. package/dist/Testing/components/testing-explorer-resource.component.js +7 -12
  255. package/dist/Testing/components/testing-explorer-resource.component.js.map +1 -1
  256. package/dist/Testing/components/testing-explorer.component.d.ts +8 -1
  257. package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
  258. package/dist/Testing/components/testing-explorer.component.js +587 -608
  259. package/dist/Testing/components/testing-explorer.component.js.map +1 -1
  260. package/dist/Testing/components/testing-review-resource.component.d.ts +4 -1
  261. package/dist/Testing/components/testing-review-resource.component.d.ts.map +1 -1
  262. package/dist/Testing/components/testing-review-resource.component.js +9 -12
  263. package/dist/Testing/components/testing-review-resource.component.js.map +1 -1
  264. package/dist/Testing/components/testing-review.component.d.ts +3 -1
  265. package/dist/Testing/components/testing-review.component.d.ts.map +1 -1
  266. package/dist/Testing/components/testing-review.component.js +310 -274
  267. package/dist/Testing/components/testing-review.component.js.map +1 -1
  268. package/dist/Testing/components/testing-runs-resource.component.d.ts +2 -1
  269. package/dist/Testing/components/testing-runs-resource.component.d.ts.map +1 -1
  270. package/dist/Testing/components/testing-runs-resource.component.js +16 -19
  271. package/dist/Testing/components/testing-runs-resource.component.js.map +1 -1
  272. package/dist/Testing/components/testing-runs.component.d.ts +3 -1
  273. package/dist/Testing/components/testing-runs.component.d.ts.map +1 -1
  274. package/dist/Testing/components/testing-runs.component.js +307 -273
  275. package/dist/Testing/components/testing-runs.component.js.map +1 -1
  276. package/dist/Testing/testing-dashboard.component.d.ts +2 -0
  277. package/dist/Testing/testing-dashboard.component.d.ts.map +1 -1
  278. package/dist/Testing/testing-dashboard.component.js +107 -93
  279. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  280. package/dist/VersionHistory/components/diff-resource.component.js +185 -188
  281. package/dist/VersionHistory/components/diff-resource.component.js.map +1 -1
  282. package/dist/VersionHistory/components/graph-resource.component.js +154 -184
  283. package/dist/VersionHistory/components/graph-resource.component.js.map +1 -1
  284. package/dist/VersionHistory/components/labels-resource.component.d.ts +7 -0
  285. package/dist/VersionHistory/components/labels-resource.component.d.ts.map +1 -1
  286. package/dist/VersionHistory/components/labels-resource.component.js +350 -354
  287. package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
  288. package/dist/VersionHistory/components/restore-resource.component.js +163 -169
  289. package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
  290. package/dist/actions-dashboards.module.d.ts +15 -16
  291. package/dist/actions-dashboards.module.d.ts.map +1 -1
  292. package/dist/actions-dashboards.module.js +34 -11
  293. package/dist/actions-dashboards.module.js.map +1 -1
  294. package/dist/ai-dashboards.module.d.ts +45 -48
  295. package/dist/ai-dashboards.module.d.ts.map +1 -1
  296. package/dist/ai-dashboards.module.js +36 -10
  297. package/dist/ai-dashboards.module.js.map +1 -1
  298. package/dist/archiving-dashboards.module.d.ts +2 -1
  299. package/dist/archiving-dashboards.module.d.ts.map +1 -1
  300. package/dist/archiving-dashboards.module.js +12 -2
  301. package/dist/archiving-dashboards.module.js.map +1 -1
  302. package/dist/communication-dashboards.module.d.ts +2 -1
  303. package/dist/communication-dashboards.module.d.ts.map +1 -1
  304. package/dist/communication-dashboards.module.js +24 -3
  305. package/dist/communication-dashboards.module.js.map +1 -1
  306. package/dist/core-dashboards.module.d.ts +1 -1
  307. package/dist/core-dashboards.module.d.ts.map +1 -1
  308. package/dist/core-dashboards.module.js +31 -1
  309. package/dist/core-dashboards.module.js.map +1 -1
  310. package/dist/credentials-dashboards.module.d.ts +1 -1
  311. package/dist/credentials-dashboards.module.d.ts.map +1 -1
  312. package/dist/credentials-dashboards.module.js +28 -1
  313. package/dist/credentials-dashboards.module.js.map +1 -1
  314. package/dist/lists-dashboards.module.d.ts +1 -1
  315. package/dist/lists-dashboards.module.d.ts.map +1 -1
  316. package/dist/lists-dashboards.module.js +28 -1
  317. package/dist/lists-dashboards.module.js.map +1 -1
  318. package/dist/public-api.d.ts +2 -2
  319. package/dist/public-api.d.ts.map +1 -1
  320. package/dist/public-api.js +3 -3
  321. package/dist/public-api.js.map +1 -1
  322. package/dist/scheduling-dashboards.module.d.ts +1 -1
  323. package/dist/scheduling-dashboards.module.d.ts.map +1 -1
  324. package/dist/scheduling-dashboards.module.js +31 -1
  325. package/dist/scheduling-dashboards.module.js.map +1 -1
  326. package/dist/testing-dashboards.module.d.ts +8 -7
  327. package/dist/testing-dashboards.module.d.ts.map +1 -1
  328. package/dist/testing-dashboards.module.js +30 -0
  329. package/dist/testing-dashboards.module.js.map +1 -1
  330. package/package.json +52 -52
  331. package/dist/AI/components/agents/agent-filter-panel.component.d.ts +0 -56
  332. package/dist/AI/components/agents/agent-filter-panel.component.d.ts.map +0 -1
  333. package/dist/AI/components/agents/agent-filter-panel.component.js +0 -285
  334. package/dist/AI/components/agents/agent-filter-panel.component.js.map +0 -1
  335. package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts +0 -49
  336. package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts.map +0 -1
  337. package/dist/AI/components/prompts/prompt-filter-panel.component.js +0 -184
  338. package/dist/AI/components/prompts/prompt-filter-panel.component.js.map +0 -1
  339. package/dist/AI/components/system/system-config-filter-panel.component.d.ts +0 -33
  340. package/dist/AI/components/system/system-config-filter-panel.component.d.ts.map +0 -1
  341. package/dist/AI/components/system/system-config-filter-panel.component.js +0 -144
  342. package/dist/AI/components/system/system-config-filter-panel.component.js.map +0 -1
  343. package/dist/Actions/components/explorer/action-toolbar.component.d.ts +0 -63
  344. package/dist/Actions/components/explorer/action-toolbar.component.d.ts.map +0 -1
  345. package/dist/Actions/components/explorer/action-toolbar.component.js +0 -463
  346. package/dist/Actions/components/explorer/action-toolbar.component.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"system-configuration.component.js","sourceRoot":"","sources":["../../../../src/AI/components/system/system-configuration.component.ts","../../../../src/AI/components/system/system-configuration.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, OnInit, ChangeDetectorRef } from '@angular/core';\nimport { LogError, LogStatus, CompositeKey } from '@memberjunction/core';\nimport { MJAIConfigurationEntity, MJAIConfigurationParamEntity, ResourceData } from '@memberjunction/core-entities';\nimport { AIEngineBase } from '@memberjunction/ai-engine-base';\nimport { RegisterClass , UUIDsEqual } from '@memberjunction/global';\nimport { BaseResourceComponent, NavigationService } from '@memberjunction/ng-shared';\nimport { MJAIPromptEntityExtended } from '@memberjunction/ai-core-plus';\n\ninterface SystemConfigFilter {\n searchTerm: string;\n status: string;\n isDefault: string;\n}\n\ninterface ConfigurationWithParams extends MJAIConfigurationEntity {\n params?: MJAIConfigurationParamEntity[];\n isExpanded?: boolean;\n compressionPrompt?: MJAIPromptEntityExtended | null;\n summarizationPrompt?: MJAIPromptEntityExtended | null;\n}\n/**\n * AI Configuration Resource - displays AI system configuration management\n * Extends BaseResourceComponent to work with the resource type system\n */\n@RegisterClass(BaseResourceComponent, 'AIConfigResource')\n@Component({\n standalone: false,\n selector: 'app-system-configuration',\n templateUrl: './system-configuration.component.html',\n styleUrls: ['./system-configuration.component.css']\n})\nexport class SystemConfigurationComponent extends BaseResourceComponent implements OnInit {\n\n public isLoading = false;\n public error: string | null = null;\n public filterPanelVisible = true;\n public viewMode: 'grid' | 'list' = 'grid';\n\n public configurations: ConfigurationWithParams[] = [];\n public filteredConfigurations: ConfigurationWithParams[] = [];\n public allParams: MJAIConfigurationParamEntity[] = [];\n public allPrompts: MJAIPromptEntityExtended[] = [];\n\n public currentFilters: SystemConfigFilter = {\n searchTerm: '',\n status: 'all',\n isDefault: 'all'\n };\n\n // Sorting\n public sortColumn: string = 'Name';\n public sortDirection: 'asc' | 'desc' = 'asc';\n\n // Detail panel\n public selectedConfig: ConfigurationWithParams | null = null;\n public detailPanelVisible = false;\n\n // Stats\n public totalConfigs = 0;\n public activeConfigs = 0;\n public defaultConfig: ConfigurationWithParams | null = null;\n\n constructor(\n private cdr: ChangeDetectorRef\n ) {\n super();\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.loadData();\n }\n\n public async loadData(): Promise<void> {\n try {\n this.isLoading = true;\n this.error = null;\n this.cdr.detectChanges();\n\n // Ensure AIEngineBase is configured (no-op if already loaded)\n await AIEngineBase.Instance.Config(false);\n\n // Get cached data from AIEngineBase\n const configs = AIEngineBase.Instance.Configurations;\n const params = AIEngineBase.Instance.ConfigurationParams;\n const prompts = AIEngineBase.Instance.Prompts;\n\n // Create extended configurations with associated data\n this.configurations = configs.map(config => {\n const extended = config as ConfigurationWithParams;\n extended.params = params.filter(p => UUIDsEqual(p.ConfigurationID, config.ID));\n extended.isExpanded = false;\n\n // Find linked prompts\n if (config.DefaultPromptForContextCompressionID) {\n extended.compressionPrompt = prompts.find(p => UUIDsEqual(p.ID, config.DefaultPromptForContextCompressionID)) || null;\n }\n if (config.DefaultPromptForContextSummarizationID) {\n extended.summarizationPrompt = prompts.find(p => UUIDsEqual(p.ID, config.DefaultPromptForContextSummarizationID)) || null;\n }\n\n return extended;\n });\n\n this.allParams = params;\n this.allPrompts = prompts;\n\n // Calculate stats\n this.totalConfigs = this.configurations.length;\n this.activeConfigs = this.configurations.filter(c => c.Status === 'Active').length;\n this.defaultConfig = this.configurations.find(c => c.IsDefault) || null;\n\n this.applyFilters();\n LogStatus('AI Configurations loaded successfully');\n } catch (error) {\n this.error = 'Failed to load AI configurations. Please try again.';\n LogError('Error loading AI configurations', undefined, error);\n } finally {\n this.isLoading = false;\n this.NotifyLoadComplete();\n this.cdr.detectChanges();\n }\n }\n\n public toggleFilterPanel(): void {\n this.filterPanelVisible = !this.filterPanelVisible;\n }\n\n public setViewMode(mode: 'grid' | 'list'): void {\n this.viewMode = mode;\n }\n\n public toggleExpanded(config: ConfigurationWithParams): void {\n config.isExpanded = !config.isExpanded;\n }\n\n public onFiltersChange(filters: SystemConfigFilter): void {\n this.currentFilters = { ...filters };\n this.applyFilters();\n }\n\n public onFilterChange(): void {\n this.applyFilters();\n }\n\n public onResetFilters(): void {\n this.currentFilters = {\n searchTerm: '',\n status: 'all',\n isDefault: 'all'\n };\n this.applyFilters();\n }\n\n private applyFilters(): void {\n let filtered = [...this.configurations];\n\n // Apply search filter\n if (this.currentFilters.searchTerm) {\n const searchTerm = this.currentFilters.searchTerm.toLowerCase();\n filtered = filtered.filter(config =>\n config.Name.toLowerCase().includes(searchTerm) ||\n (config.Description || '').toLowerCase().includes(searchTerm) ||\n (config.params?.some(p => p.Name.toLowerCase().includes(searchTerm) ||\n (p.Description || '').toLowerCase().includes(searchTerm)))\n );\n }\n\n // Apply status filter\n if (this.currentFilters.status !== 'all') {\n filtered = filtered.filter(config => config.Status === this.currentFilters.status);\n }\n\n // Apply default configuration filter\n if (this.currentFilters.isDefault !== 'all') {\n const isDefault = this.currentFilters.isDefault === 'true';\n filtered = filtered.filter(config => config.IsDefault === isDefault);\n }\n\n // Apply sorting\n this.filteredConfigurations = this.applySorting(filtered);\n this.cdr.detectChanges();\n }\n\n /**\n * Sort the configurations by the specified column\n */\n public sortBy(column: string): void {\n if (this.sortColumn === column) {\n // Toggle direction if same column\n this.sortDirection = this.sortDirection === 'asc' ? 'desc' : 'asc';\n } else {\n // New column, default to ascending\n this.sortColumn = column;\n this.sortDirection = 'asc';\n }\n this.applyFilters();\n }\n\n /**\n * Apply sorting to the filtered list\n */\n private applySorting(configs: ConfigurationWithParams[]): ConfigurationWithParams[] {\n return configs.sort((a, b) => {\n let valueA: string | number | boolean | null | undefined;\n let valueB: string | number | boolean | null | undefined;\n\n switch (this.sortColumn) {\n case 'Name':\n valueA = a.Name;\n valueB = b.Name;\n break;\n case 'Status':\n valueA = a.Status;\n valueB = b.Status;\n break;\n case 'Parameters':\n valueA = a.params?.length || 0;\n valueB = b.params?.length || 0;\n break;\n case 'Updated':\n valueA = a.__mj_UpdatedAt ? new Date(a.__mj_UpdatedAt).getTime() : 0;\n valueB = b.__mj_UpdatedAt ? new Date(b.__mj_UpdatedAt).getTime() : 0;\n break;\n default:\n valueA = a.Name;\n valueB = b.Name;\n }\n\n // Handle numeric comparison\n if (typeof valueA === 'number' && typeof valueB === 'number') {\n const comparison = valueA - valueB;\n return this.sortDirection === 'desc' ? -comparison : comparison;\n }\n\n // Handle string/other comparison\n const strA = (valueA ?? '').toString().toLowerCase();\n const strB = (valueB ?? '').toString().toLowerCase();\n\n const comparison = strA.localeCompare(strB);\n return this.sortDirection === 'desc' ? -comparison : comparison;\n });\n }\n\n public onOpenConfiguration(config: ConfigurationWithParams): void {\n const compositeKey = new CompositeKey([{ FieldName: 'ID', Value: config.ID }]);\n this.navigationService.OpenEntityRecord('MJ: AI Configurations', compositeKey);\n }\n\n public onOpenPrompt(promptId: string): void {\n const compositeKey = new CompositeKey([{ FieldName: 'ID', Value: promptId }]);\n this.navigationService.OpenEntityRecord('MJ: AI Prompts', compositeKey);\n }\n\n public onOpenParam(param: MJAIConfigurationParamEntity): void {\n const compositeKey = new CompositeKey([{ FieldName: 'ID', Value: param.ID }]);\n this.navigationService.OpenEntityRecord('MJ: AI Configuration Params', compositeKey);\n }\n\n /**\n * Show the detail panel for a configuration\n */\n public showConfigDetails(config: ConfigurationWithParams, event?: Event): void {\n if (event) {\n event.stopPropagation();\n }\n this.selectedConfig = config;\n this.detailPanelVisible = true;\n }\n\n /**\n * Close the detail panel\n */\n public closeDetailPanel(): void {\n this.detailPanelVisible = false;\n // Delay clearing selectedConfig for smoother animation\n setTimeout(() => {\n if (!this.detailPanelVisible) {\n this.selectedConfig = null;\n }\n }, 300);\n }\n\n /**\n * Open the full entity record from the detail panel\n */\n public openConfigFromPanel(): void {\n if (this.selectedConfig) {\n this.onOpenConfiguration(this.selectedConfig);\n }\n }\n\n public getStatusClass(status: string): string {\n switch (status) {\n case 'Active': return 'status-active';\n case 'Preview': return 'status-preview';\n case 'Inactive': return 'status-inactive';\n case 'Deprecated': return 'status-deprecated';\n default: return 'status-unknown';\n }\n }\n\n public getStatusIcon(status: string): string {\n switch (status) {\n case 'Active': return 'fa-solid fa-circle-check';\n case 'Preview': return 'fa-solid fa-flask';\n case 'Inactive': return 'fa-solid fa-circle-pause';\n case 'Deprecated': return 'fa-solid fa-triangle-exclamation';\n default: return 'fa-solid fa-circle-question';\n }\n }\n\n public getParamTypeIcon(type: string): string {\n switch (type) {\n case 'string': return 'fa-solid fa-font';\n case 'number': return 'fa-solid fa-hashtag';\n case 'boolean': return 'fa-solid fa-toggle-on';\n case 'date': return 'fa-solid fa-calendar';\n case 'object': return 'fa-solid fa-brackets-curly';\n default: return 'fa-solid fa-code';\n }\n }\n\n public formatParamValue(param: MJAIConfigurationParamEntity): string {\n if (!param.Value) return '(not set)';\n\n switch (param.Type) {\n case 'boolean':\n return param.Value === 'true' ? 'Yes' : 'No';\n case 'object':\n try {\n return JSON.stringify(JSON.parse(param.Value), null, 2).substring(0, 50) + '...';\n } catch {\n return param.Value.substring(0, 50) + '...';\n }\n default:\n return param.Value.length > 50 ? param.Value.substring(0, 50) + '...' : param.Value;\n }\n }\n\n public formatDate(date: Date): string {\n if (!date) return 'N/A';\n return new Date(date).toLocaleDateString('en-US', {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n hour: '2-digit',\n minute: '2-digit'\n });\n }\n\n // BaseResourceComponent abstract method implementations\n async GetResourceDisplayName(_data: ResourceData): Promise<string> {\n return 'AI Configuration';\n }\n\n async GetResourceIconClass(_data: ResourceData): Promise<string> {\n return 'fa-solid fa-sliders';\n }\n}\n","<div class=\"system-configuration-container\">\n <!-- Header -->\n <div class=\"dashboard-header\">\n <div class=\"header-info\">\n <h2 class=\"dashboard-title\">\n <i class=\"fa-solid fa-sliders\"></i>\n AI Configuration\n </h2>\n <button\n type=\"button\"\n class=\"filter-toggle-btn\"\n (click)=\"toggleFilterPanel()\"\n title=\"Toggle Filters\">\n <i class=\"fa-solid fa-filter\"></i>\n @if (filterPanelVisible) {\n Hide Filters\n } @else {\n Show Filters\n }\n </button>\n <span class=\"config-count\">\n {{ filteredConfigurations.length }} of {{ configurations.length }} configurations\n </span>\n </div>\n\n <div class=\"header-controls\">\n <!-- View Toggle -->\n <div class=\"view-toggle\">\n <button\n type=\"button\"\n class=\"view-btn\"\n [class.active]=\"viewMode === 'grid'\"\n (click)=\"setViewMode('grid')\"\n title=\"Grid View\">\n <i class=\"fa-solid fa-grid-2\"></i>\n </button>\n <button\n type=\"button\"\n class=\"view-btn\"\n [class.active]=\"viewMode === 'list'\"\n (click)=\"setViewMode('list')\"\n title=\"List View\">\n <i class=\"fa-solid fa-list\"></i>\n </button>\n </div>\n\n <button\n type=\"button\"\n class=\"control-btn\"\n (click)=\"loadData()\"\n [disabled]=\"isLoading\"\n title=\"Refresh\">\n <i class=\"fa-solid fa-refresh\" [class.fa-spin]=\"isLoading\"></i>\n Refresh\n </button>\n </div>\n </div>\n\n <!-- Main Content with Splitter -->\n <div class=\"main-content\">\n <as-split direction=\"horizontal\" class=\"main-splitter\">\n\n <!-- Filter Panel (Left) -->\n @if (filterPanelVisible) {\n <as-split-area [size]=\"20\" [minSize]=\"15\" [maxSize]=\"30\">\n <mj-system-config-filter-panel\n [configurations]=\"configurations\"\n [filteredConfigurations]=\"filteredConfigurations\"\n [filters]=\"currentFilters\"\n (filtersChange)=\"onFiltersChange($event)\"\n (filterChange)=\"onFilterChange()\"\n (resetFilters)=\"onResetFilters()\"\n (closePanel)=\"toggleFilterPanel()\">\n </mj-system-config-filter-panel>\n </as-split-area>\n }\n\n <!-- Configurations List Panel -->\n <as-split-area>\n <div class=\"configurations-content\">\n <!-- Loading State -->\n @if (isLoading) {\n <div class=\"loading-container\">\n <mj-loading text=\"Loading AI configurations...\" size=\"large\"></mj-loading>\n </div>\n }\n\n <!-- Error State -->\n @if (error && !isLoading) {\n <div class=\"error-container\">\n <p class=\"error-message\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n {{ error }}\n </p>\n </div>\n }\n\n <!-- Configurations Content -->\n @if (!isLoading && !error) {\n @if (filteredConfigurations.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-sliders\"></i>\n <h3>No configurations found</h3>\n <p>No AI configurations match your current filters. Try adjusting your search criteria or create a new configuration.</p>\n </div>\n } @else {\n <!-- Grid View -->\n @if (viewMode === 'grid') {\n <div class=\"configurations-grid\">\n @for (config of filteredConfigurations; track config.ID) {\n <div class=\"config-card\" [class.expanded]=\"config.isExpanded\">\n <!-- Card Header -->\n <div class=\"card-header\" (click)=\"toggleExpanded(config)\">\n <div class=\"config-info\">\n <div class=\"config-icon\">\n <i class=\"fa-solid fa-sliders\"></i>\n </div>\n <div class=\"config-details\">\n <h4 class=\"config-name\">{{ config.Name }}</h4>\n <div class=\"config-meta\">\n @if (config.IsDefault) {\n <span class=\"default-badge\">\n <i class=\"fa-solid fa-star\"></i>\n Default\n </span>\n }\n <span class=\"status-badge\" [ngClass]=\"getStatusClass(config.Status)\">\n <i [class]=\"getStatusIcon(config.Status)\"></i>\n {{ config.Status }}\n </span>\n </div>\n </div>\n </div>\n\n <i class=\"fa-solid fa-chevron-down expand-icon\"\n [class.rotated]=\"config.isExpanded\"></i>\n </div>\n\n <!-- Card Body -->\n <div class=\"card-body\">\n @if (config.Description) {\n <p class=\"config-description\">{{ config.Description }}</p>\n } @else {\n <p class=\"config-description text-muted\">No description provided</p>\n }\n\n <!-- Expanded Content -->\n @if (config.isExpanded) {\n <div class=\"expanded-content\">\n <!-- Stats Grid -->\n <div class=\"config-stats\">\n <div class=\"stat-item\">\n <span class=\"stat-label\">Parameters</span>\n <span class=\"stat-value\">{{ config.params?.length || 0 }}</span>\n </div>\n <div class=\"stat-item\">\n <span class=\"stat-label\">Created</span>\n <span class=\"stat-value\">{{ formatDate(config.__mj_CreatedAt) }}</span>\n </div>\n <div class=\"stat-item\">\n <span class=\"stat-label\">Updated</span>\n <span class=\"stat-value\">{{ formatDate(config.__mj_UpdatedAt) }}</span>\n </div>\n </div>\n\n <!-- Linked Prompts -->\n <div class=\"prompts-section\">\n <h5 class=\"section-title\">\n <i class=\"fa-solid fa-message-lines\"></i>\n Linked Prompts\n </h5>\n <div class=\"prompt-links\">\n @if (config.compressionPrompt) {\n <div class=\"prompt-link\" (click)=\"onOpenPrompt(config.DefaultPromptForContextCompressionID!); $event.stopPropagation()\">\n <div class=\"prompt-link-info\">\n <div class=\"prompt-link-icon\">\n <i class=\"fa-solid fa-compress\"></i>\n </div>\n <div class=\"prompt-link-details\">\n <span class=\"prompt-link-label\">Context Compression</span>\n <span class=\"prompt-link-name\">{{ config.compressionPrompt.Name }}</span>\n </div>\n </div>\n <i class=\"fa-solid fa-arrow-right prompt-link-arrow\"></i>\n </div>\n } @else {\n <div class=\"no-prompt\">No compression prompt configured</div>\n }\n\n @if (config.summarizationPrompt) {\n <div class=\"prompt-link\" (click)=\"onOpenPrompt(config.DefaultPromptForContextSummarizationID!); $event.stopPropagation()\">\n <div class=\"prompt-link-info\">\n <div class=\"prompt-link-icon\">\n <i class=\"fa-solid fa-file-lines\"></i>\n </div>\n <div class=\"prompt-link-details\">\n <span class=\"prompt-link-label\">Context Summarization</span>\n <span class=\"prompt-link-name\">{{ config.summarizationPrompt.Name }}</span>\n </div>\n </div>\n <i class=\"fa-solid fa-arrow-right prompt-link-arrow\"></i>\n </div>\n } @else {\n <div class=\"no-prompt\">No summarization prompt configured</div>\n }\n </div>\n </div>\n\n <!-- Configuration Parameters -->\n @if (config.params && config.params.length > 0) {\n <div class=\"params-section\">\n <h5 class=\"section-title\">\n <i class=\"fa-solid fa-gear\"></i>\n Configuration Parameters\n </h5>\n <div class=\"params-grid\">\n @for (param of config.params; track param.ID) {\n <div class=\"param-item\" (click)=\"onOpenParam(param); $event.stopPropagation()\">\n <div class=\"param-info\">\n <div class=\"param-type-icon\">\n <i [class]=\"getParamTypeIcon(param.Type)\"></i>\n </div>\n <div class=\"param-details\">\n <span class=\"param-name\">{{ param.Name }}</span>\n <span class=\"param-type\">{{ param.Type }}</span>\n </div>\n </div>\n <span class=\"param-value\">{{ formatParamValue(param) }}</span>\n </div>\n }\n </div>\n </div>\n } @else {\n <div class=\"params-section\">\n <h5 class=\"section-title\">\n <i class=\"fa-solid fa-gear\"></i>\n Configuration Parameters\n </h5>\n <div class=\"no-params\">No parameters configured</div>\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Card Actions -->\n <div class=\"card-actions\" (click)=\"$event.stopPropagation()\">\n <button\n type=\"button\"\n class=\"action-btn\"\n (click)=\"showConfigDetails(config, $event)\"\n title=\"View Details\">\n <i class=\"fa-solid fa-eye\"></i>\n Details\n </button>\n\n <button\n type=\"button\"\n class=\"action-btn action-btn-primary\"\n (click)=\"onOpenConfiguration(config)\">\n <i class=\"fa-solid fa-edit\"></i>\n Configure\n </button>\n </div>\n </div>\n }\n </div>\n }\n\n <!-- List View -->\n @if (viewMode === 'list') {\n <div class=\"configurations-list\">\n <table class=\"configurations-table\">\n <thead>\n <tr>\n <th (click)=\"sortBy('Name')\"\n [class.sorted]=\"sortColumn === 'Name'\"\n [class.desc]=\"sortColumn === 'Name' && sortDirection === 'desc'\">\n <span class=\"sort-header\">\n Configuration\n <i class=\"fa-solid fa-chevron-up sort-icon\"></i>\n </span>\n </th>\n <th (click)=\"sortBy('Status')\"\n [class.sorted]=\"sortColumn === 'Status'\"\n [class.desc]=\"sortColumn === 'Status' && sortDirection === 'desc'\">\n <span class=\"sort-header\">\n Status\n <i class=\"fa-solid fa-chevron-up sort-icon\"></i>\n </span>\n </th>\n <th (click)=\"sortBy('Parameters')\"\n [class.sorted]=\"sortColumn === 'Parameters'\"\n [class.desc]=\"sortColumn === 'Parameters' && sortDirection === 'desc'\">\n <span class=\"sort-header\">\n Parameters\n <i class=\"fa-solid fa-chevron-up sort-icon\"></i>\n </span>\n </th>\n <th (click)=\"sortBy('Updated')\"\n [class.sorted]=\"sortColumn === 'Updated'\"\n [class.desc]=\"sortColumn === 'Updated' && sortDirection === 'desc'\">\n <span class=\"sort-header\">\n Updated\n <i class=\"fa-solid fa-chevron-up sort-icon\"></i>\n </span>\n </th>\n <th>Actions</th>\n </tr>\n </thead>\n <tbody>\n @for (config of filteredConfigurations; track config.ID) {\n <tr>\n <td>\n <div class=\"config-name-cell\">\n <div class=\"config-icon-small\">\n <i class=\"fa-solid fa-sliders\"></i>\n </div>\n <div>\n <div class=\"config-name-text\">\n {{ config.Name }}\n @if (config.IsDefault) {\n <span class=\"default-badge\" style=\"margin-left: 8px;\">\n <i class=\"fa-solid fa-star\"></i>\n Default\n </span>\n }\n </div>\n @if (config.Description) {\n <div class=\"config-description-small\">{{ config.Description }}</div>\n }\n </div>\n </div>\n </td>\n <td>\n <span class=\"status-badge\" [ngClass]=\"getStatusClass(config.Status)\">\n <i [class]=\"getStatusIcon(config.Status)\"></i>\n {{ config.Status }}\n </span>\n </td>\n <td>{{ config.params?.length || 0 }}</td>\n <td>{{ formatDate(config.__mj_UpdatedAt) }}</td>\n <td>\n <div class=\"table-actions\">\n <button\n type=\"button\"\n class=\"action-btn-small\"\n (click)=\"showConfigDetails(config)\"\n title=\"View Details\">\n <i class=\"fa-solid fa-eye\"></i>\n </button>\n <button\n type=\"button\"\n class=\"action-btn-small primary\"\n (click)=\"onOpenConfiguration(config)\">\n <i class=\"fa-solid fa-edit\"></i>\n </button>\n </div>\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n }\n }\n </div>\n </as-split-area>\n </as-split>\n </div>\n\n <!-- Detail Panel Overlay -->\n @if (detailPanelVisible) {\n <div class=\"detail-panel-overlay\" (click)=\"closeDetailPanel()\"></div>\n }\n\n <!-- Detail Panel -->\n <div class=\"detail-panel\" [class.visible]=\"detailPanelVisible\">\n @if (selectedConfig) {\n <!-- Panel Header -->\n <div class=\"detail-panel-header\">\n <div class=\"detail-panel-title\">\n <div class=\"detail-icon\">\n <i class=\"fa-solid fa-sliders\"></i>\n </div>\n <div class=\"detail-title-info\">\n <h3>{{ selectedConfig.Name }}</h3>\n <span class=\"detail-subtitle\">AI Configuration</span>\n </div>\n </div>\n <button class=\"detail-panel-close\" (click)=\"closeDetailPanel()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n\n <!-- Panel Content -->\n <div class=\"detail-panel-content\">\n <!-- Status Section -->\n <div class=\"detail-section\">\n <div class=\"detail-badges\">\n <span class=\"status-badge\" [ngClass]=\"getStatusClass(selectedConfig.Status)\">\n <i [class]=\"getStatusIcon(selectedConfig.Status)\"></i>\n {{ selectedConfig.Status }}\n </span>\n @if (selectedConfig.IsDefault) {\n <span class=\"feature-badge default\">\n <i class=\"fa-solid fa-star\"></i>\n Default Configuration\n </span>\n }\n </div>\n </div>\n\n <!-- Description -->\n @if (selectedConfig.Description) {\n <div class=\"detail-section\">\n <h4 class=\"detail-section-title\">\n <i class=\"fa-solid fa-align-left\"></i>\n Description\n </h4>\n <p class=\"detail-description\">{{ selectedConfig.Description }}</p>\n </div>\n }\n\n <!-- Configuration Stats -->\n <div class=\"detail-section\">\n <h4 class=\"detail-section-title\">\n <i class=\"fa-solid fa-chart-bar\"></i>\n Overview\n </h4>\n <div class=\"detail-grid\">\n <div class=\"detail-item\">\n <span class=\"detail-label\">Parameters</span>\n <span class=\"detail-value\">{{ selectedConfig.params?.length || 0 }}</span>\n </div>\n <div class=\"detail-item\">\n <span class=\"detail-label\">Status</span>\n <span class=\"detail-value\">{{ selectedConfig.Status }}</span>\n </div>\n </div>\n </div>\n\n <!-- Linked Prompts -->\n <div class=\"detail-section\">\n <h4 class=\"detail-section-title\">\n <i class=\"fa-solid fa-message-lines\"></i>\n Linked Prompts\n </h4>\n <div class=\"detail-grid single-column\">\n <div class=\"detail-item\">\n <span class=\"detail-label\">Context Compression</span>\n <span class=\"detail-value\">\n @if (selectedConfig.compressionPrompt) {\n {{ selectedConfig.compressionPrompt.Name }}\n } @else {\n <span class=\"muted\">Not configured</span>\n }\n </span>\n </div>\n <div class=\"detail-item\">\n <span class=\"detail-label\">Context Summarization</span>\n <span class=\"detail-value\">\n @if (selectedConfig.summarizationPrompt) {\n {{ selectedConfig.summarizationPrompt.Name }}\n } @else {\n <span class=\"muted\">Not configured</span>\n }\n </span>\n </div>\n </div>\n </div>\n\n <!-- Parameters Preview -->\n @if (selectedConfig.params && selectedConfig.params.length > 0) {\n <div class=\"detail-section\">\n <h4 class=\"detail-section-title\">\n <i class=\"fa-solid fa-gear\"></i>\n Parameters ({{ selectedConfig.params.length }})\n </h4>\n <div class=\"detail-params-list\">\n @for (param of selectedConfig.params.slice(0, 5); track param.ID) {\n <div class=\"detail-param-item\">\n <div class=\"param-info\">\n <i [class]=\"getParamTypeIcon(param.Type)\"></i>\n <span class=\"param-name\">{{ param.Name }}</span>\n </div>\n <span class=\"param-value\">{{ formatParamValue(param) }}</span>\n </div>\n }\n @if (selectedConfig.params.length > 5) {\n <div class=\"params-more\">\n +{{ selectedConfig.params.length - 5 }} more parameters\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Timestamps -->\n <div class=\"detail-section\">\n <h4 class=\"detail-section-title\">\n <i class=\"fa-solid fa-clock\"></i>\n Timestamps\n </h4>\n <div class=\"detail-grid\">\n <div class=\"detail-item\">\n <span class=\"detail-label\">Created</span>\n <span class=\"detail-value\">{{ formatDate(selectedConfig.__mj_CreatedAt) }}</span>\n </div>\n <div class=\"detail-item\">\n <span class=\"detail-label\">Updated</span>\n <span class=\"detail-value\">{{ formatDate(selectedConfig.__mj_UpdatedAt) }}</span>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Panel Actions -->\n <div class=\"detail-panel-actions\">\n <button\n type=\"button\"\n class=\"detail-action-btn primary\"\n (click)=\"openConfigFromPanel()\">\n <i class=\"fa-solid fa-edit\"></i>\n Open Full Record\n </button>\n </div>\n }\n </div>\n</div>\n"]}
1
+ {"version":3,"file":"system-configuration.component.js","sourceRoot":"","sources":["../../../../src/AI/components/system/system-configuration.component.ts","../../../../src/AI/components/system/system-configuration.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, OnInit, ChangeDetectorRef } from '@angular/core';\nimport { LogError, LogStatus, CompositeKey } from '@memberjunction/core';\nimport { MJAIConfigurationEntity, MJAIConfigurationParamEntity, ResourceData } from '@memberjunction/core-entities';\nimport { AIEngineBase } from '@memberjunction/ai-engine-base';\nimport { RegisterClass , UUIDsEqual } from '@memberjunction/global';\nimport { BaseResourceComponent, NavigationService } from '@memberjunction/ng-shared';\nimport { MJAIPromptEntityExtended } from '@memberjunction/ai-core-plus';\nimport { FilterFieldConfig } from '@memberjunction/ng-ui-components';\n\ninterface SystemConfigFilter {\n searchTerm: string;\n status: string;\n isDefault: string;\n}\n\ninterface ConfigurationWithParams extends MJAIConfigurationEntity {\n params?: MJAIConfigurationParamEntity[];\n isExpanded?: boolean;\n compressionPrompt?: MJAIPromptEntityExtended | null;\n summarizationPrompt?: MJAIPromptEntityExtended | null;\n}\n/**\n * AI Configuration Resource - displays AI system configuration management\n * Extends BaseResourceComponent to work with the resource type system\n */\n@RegisterClass(BaseResourceComponent, 'AIConfigResource')\n@Component({\n standalone: false,\n selector: 'app-system-configuration',\n templateUrl: './system-configuration.component.html',\n styleUrls: ['./system-configuration.component.css']\n})\nexport class SystemConfigurationComponent extends BaseResourceComponent implements OnInit {\n\n public isLoading = false;\n public error: string | null = null;\n public filterPanelVisible = true;\n public viewMode: 'grid' | 'list' = 'grid';\n\n public configurations: ConfigurationWithParams[] = [];\n public filteredConfigurations: ConfigurationWithParams[] = [];\n public allParams: MJAIConfigurationParamEntity[] = [];\n public allPrompts: MJAIPromptEntityExtended[] = [];\n\n public currentFilters: SystemConfigFilter = {\n searchTerm: '',\n status: 'all',\n isDefault: 'all'\n };\n\n // Sorting\n public sortColumn: string = 'Name';\n public sortDirection: 'asc' | 'desc' = 'asc';\n\n // Detail panel\n public selectedConfig: ConfigurationWithParams | null = null;\n public detailPanelVisible = false;\n\n // Stats\n public totalConfigs = 0;\n public activeConfigs = 0;\n public defaultConfig: ConfigurationWithParams | null = null;\n\n constructor(\n private cdr: ChangeDetectorRef\n ) {\n super();\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.loadData();\n }\n\n public async loadData(): Promise<void> {\n try {\n this.isLoading = true;\n this.error = null;\n this.cdr.detectChanges();\n\n // Ensure AIEngineBase is configured (no-op if already loaded)\n await AIEngineBase.Instance.Config(false);\n\n // Get cached data from AIEngineBase\n const configs = AIEngineBase.Instance.Configurations;\n const params = AIEngineBase.Instance.ConfigurationParams;\n const prompts = AIEngineBase.Instance.Prompts;\n\n // Create extended configurations with associated data\n this.configurations = configs.map(config => {\n const extended = config as ConfigurationWithParams;\n extended.params = params.filter(p => UUIDsEqual(p.ConfigurationID, config.ID));\n extended.isExpanded = false;\n\n // Find linked prompts\n if (config.DefaultPromptForContextCompressionID) {\n extended.compressionPrompt = prompts.find(p => UUIDsEqual(p.ID, config.DefaultPromptForContextCompressionID)) || null;\n }\n if (config.DefaultPromptForContextSummarizationID) {\n extended.summarizationPrompt = prompts.find(p => UUIDsEqual(p.ID, config.DefaultPromptForContextSummarizationID)) || null;\n }\n\n return extended;\n });\n\n this.allParams = params;\n this.allPrompts = prompts;\n\n // Calculate stats\n this.totalConfigs = this.configurations.length;\n this.activeConfigs = this.configurations.filter(c => c.Status === 'Active').length;\n this.defaultConfig = this.configurations.find(c => c.IsDefault) || null;\n\n this.applyFilters();\n LogStatus('AI Configurations loaded successfully');\n } catch (error) {\n this.error = 'Failed to load AI configurations. Please try again.';\n LogError('Error loading AI configurations', undefined, error);\n } finally {\n this.isLoading = false;\n this.NotifyLoadComplete();\n this.cdr.detectChanges();\n }\n }\n\n public toggleFilterPanel(): void {\n this.filterPanelVisible = !this.filterPanelVisible;\n }\n\n public setViewMode(mode: 'grid' | 'list'): void {\n this.viewMode = mode;\n }\n\n public toggleExpanded(config: ConfigurationWithParams): void {\n config.isExpanded = !config.isExpanded;\n }\n\n public onFiltersChange(filters: SystemConfigFilter): void {\n this.currentFilters = { ...filters };\n this.applyFilters();\n }\n\n public onFilterChange(): void {\n this.applyFilters();\n }\n\n public onResetFilters(): void {\n this.currentFilters = {\n searchTerm: '',\n status: 'all',\n isDefault: 'all'\n };\n this.applyFilters();\n }\n\n /** View-mode options for the shared <mj-view-toggle>. */\n public readonly configViewOptions = [\n { key: 'grid', icon: 'fa-solid fa-grip', title: 'Grid View' },\n { key: 'list', icon: 'fa-solid fa-list', title: 'List View' },\n ];\n\n /** Reset only the popover filters — leave searchTerm (toolbar) untouched. */\n public resetPopoverFilters(): void {\n this.currentFilters = { ...this.currentFilters, status: 'all', isDefault: 'all' };\n this.applyFilters();\n }\n\n /** Number of active filter criteria inside the popover (excludes searchTerm — surfaced separately). */\n public get ActiveFilterCount(): number {\n let n = 0;\n if (this.currentFilters.status && this.currentFilters.status !== 'all') n++;\n if (this.currentFilters.isDefault && this.currentFilters.isDefault !== 'all') n++;\n return n;\n }\n\n /** Values record consumed by the centralized <mj-filter-panel>. */\n public get configFilterValues(): Record<string, unknown> {\n return {\n status: this.currentFilters.status,\n isDefault: this.currentFilters.isDefault,\n };\n }\n\n /** Field config consumed by the centralized <mj-filter-panel>. */\n public get configFilterFields(): FilterFieldConfig[] {\n return [\n {\n key: 'status',\n type: 'dropdown',\n label: 'Status',\n icon: 'fa-solid fa-toggle-on',\n options: [\n { text: 'All Statuses', value: 'all' },\n { text: 'Active', value: 'Active' },\n { text: 'Inactive', value: 'Inactive' },\n { text: 'Deprecated', value: 'Deprecated' },\n { text: 'Preview', value: 'Preview' },\n ],\n },\n {\n key: 'isDefault',\n type: 'dropdown',\n label: 'Default',\n icon: 'fa-solid fa-star',\n options: [\n { text: 'All Configurations', value: 'all' },\n { text: 'Default Only', value: 'true' },\n { text: 'Non-Default Only', value: 'false' },\n ],\n },\n ];\n }\n\n /** Receive the updated values record from <mj-filter-panel> and apply it. */\n public onFilterValuesChange(values: Record<string, unknown>): void {\n this.currentFilters = {\n ...this.currentFilters,\n status: (values['status'] as string) ?? 'all',\n isDefault: (values['isDefault'] as string) ?? 'all',\n };\n this.applyFilters();\n }\n\n /** Update searchTerm from the toolbar search input. */\n public onSearchTermChange(value: string): void {\n this.currentFilters = { ...this.currentFilters, searchTerm: value ?? '' };\n this.applyFilters();\n }\n\n private applyFilters(): void {\n let filtered = [...this.configurations];\n\n // Apply search filter\n if (this.currentFilters.searchTerm) {\n const searchTerm = this.currentFilters.searchTerm.toLowerCase();\n filtered = filtered.filter(config =>\n config.Name.toLowerCase().includes(searchTerm) ||\n (config.Description || '').toLowerCase().includes(searchTerm) ||\n (config.params?.some(p => p.Name.toLowerCase().includes(searchTerm) ||\n (p.Description || '').toLowerCase().includes(searchTerm)))\n );\n }\n\n // Apply status filter\n if (this.currentFilters.status !== 'all') {\n filtered = filtered.filter(config => config.Status === this.currentFilters.status);\n }\n\n // Apply default configuration filter\n if (this.currentFilters.isDefault !== 'all') {\n const isDefault = this.currentFilters.isDefault === 'true';\n filtered = filtered.filter(config => config.IsDefault === isDefault);\n }\n\n // Apply sorting\n this.filteredConfigurations = this.applySorting(filtered);\n this.cdr.detectChanges();\n }\n\n /**\n * Sort the configurations by the specified column\n */\n public sortBy(column: string): void {\n if (this.sortColumn === column) {\n // Toggle direction if same column\n this.sortDirection = this.sortDirection === 'asc' ? 'desc' : 'asc';\n } else {\n // New column, default to ascending\n this.sortColumn = column;\n this.sortDirection = 'asc';\n }\n this.applyFilters();\n }\n\n /**\n * Apply sorting to the filtered list\n */\n private applySorting(configs: ConfigurationWithParams[]): ConfigurationWithParams[] {\n return configs.sort((a, b) => {\n let valueA: string | number | boolean | null | undefined;\n let valueB: string | number | boolean | null | undefined;\n\n switch (this.sortColumn) {\n case 'Name':\n valueA = a.Name;\n valueB = b.Name;\n break;\n case 'Status':\n valueA = a.Status;\n valueB = b.Status;\n break;\n case 'Parameters':\n valueA = a.params?.length || 0;\n valueB = b.params?.length || 0;\n break;\n case 'Updated':\n valueA = a.__mj_UpdatedAt ? new Date(a.__mj_UpdatedAt).getTime() : 0;\n valueB = b.__mj_UpdatedAt ? new Date(b.__mj_UpdatedAt).getTime() : 0;\n break;\n default:\n valueA = a.Name;\n valueB = b.Name;\n }\n\n // Handle numeric comparison\n if (typeof valueA === 'number' && typeof valueB === 'number') {\n const comparison = valueA - valueB;\n return this.sortDirection === 'desc' ? -comparison : comparison;\n }\n\n // Handle string/other comparison\n const strA = (valueA ?? '').toString().toLowerCase();\n const strB = (valueB ?? '').toString().toLowerCase();\n\n const comparison = strA.localeCompare(strB);\n return this.sortDirection === 'desc' ? -comparison : comparison;\n });\n }\n\n public onOpenConfiguration(config: ConfigurationWithParams): void {\n const compositeKey = new CompositeKey([{ FieldName: 'ID', Value: config.ID }]);\n this.navigationService.OpenEntityRecord('MJ: AI Configurations', compositeKey);\n }\n\n public onOpenPrompt(promptId: string): void {\n const compositeKey = new CompositeKey([{ FieldName: 'ID', Value: promptId }]);\n this.navigationService.OpenEntityRecord('MJ: AI Prompts', compositeKey);\n }\n\n public onOpenParam(param: MJAIConfigurationParamEntity): void {\n const compositeKey = new CompositeKey([{ FieldName: 'ID', Value: param.ID }]);\n this.navigationService.OpenEntityRecord('MJ: AI Configuration Params', compositeKey);\n }\n\n /**\n * Show the detail panel for a configuration\n */\n public showConfigDetails(config: ConfigurationWithParams, event?: Event): void {\n if (event) {\n event.stopPropagation();\n }\n this.selectedConfig = config;\n this.detailPanelVisible = true;\n }\n\n /**\n * Close the detail panel\n */\n public closeDetailPanel(): void {\n this.detailPanelVisible = false;\n // Delay clearing selectedConfig for smoother animation\n setTimeout(() => {\n if (!this.detailPanelVisible) {\n this.selectedConfig = null;\n }\n }, 300);\n }\n\n /**\n * Open the full entity record from the detail panel\n */\n public openConfigFromPanel(): void {\n if (this.selectedConfig) {\n this.onOpenConfiguration(this.selectedConfig);\n }\n }\n\n public getStatusClass(status: string): string {\n switch (status) {\n case 'Active': return 'status-active';\n case 'Preview': return 'status-preview';\n case 'Inactive': return 'status-inactive';\n case 'Deprecated': return 'status-deprecated';\n default: return 'status-unknown';\n }\n }\n\n public getStatusIcon(status: string): string {\n switch (status) {\n case 'Active': return 'fa-solid fa-circle-check';\n case 'Preview': return 'fa-solid fa-flask';\n case 'Inactive': return 'fa-solid fa-circle-pause';\n case 'Deprecated': return 'fa-solid fa-triangle-exclamation';\n default: return 'fa-solid fa-circle-question';\n }\n }\n\n public getParamTypeIcon(type: string): string {\n switch (type) {\n case 'string': return 'fa-solid fa-font';\n case 'number': return 'fa-solid fa-hashtag';\n case 'boolean': return 'fa-solid fa-toggle-on';\n case 'date': return 'fa-solid fa-calendar';\n case 'object': return 'fa-solid fa-brackets-curly';\n default: return 'fa-solid fa-code';\n }\n }\n\n public formatParamValue(param: MJAIConfigurationParamEntity): string {\n if (!param.Value) return '(not set)';\n\n switch (param.Type) {\n case 'boolean':\n return param.Value === 'true' ? 'Yes' : 'No';\n case 'object':\n try {\n return JSON.stringify(JSON.parse(param.Value), null, 2).substring(0, 50) + '...';\n } catch {\n return param.Value.substring(0, 50) + '...';\n }\n default:\n return param.Value.length > 50 ? param.Value.substring(0, 50) + '...' : param.Value;\n }\n }\n\n public formatDate(date: Date): string {\n if (!date) return 'N/A';\n return new Date(date).toLocaleDateString('en-US', {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n hour: '2-digit',\n minute: '2-digit'\n });\n }\n\n // BaseResourceComponent abstract method implementations\n async GetResourceDisplayName(_data: ResourceData): Promise<string> {\n return 'AI Configuration';\n }\n\n async GetResourceIconClass(_data: ResourceData): Promise<string> {\n return 'fa-solid fa-sliders';\n }\n}\n","<mj-page-layout>\n <!-- Header -->\n <mj-page-header\n Title=\"Configuration\"\n Icon=\"fa-solid fa-cogs\">\n <div meta>\n <mj-stat-badge\n [Count]=\"filteredConfigurations.length\"\n [Total]=\"configurations.length\"\n Label=\"configurations\">\n </mj-stat-badge>\n </div>\n <div actions>\n <mj-filter-popover\n [ActiveCount]=\"ActiveFilterCount\"\n [ShowClearAll]=\"ActiveFilterCount > 0\"\n (ClearAllRequested)=\"resetPopoverFilters()\">\n <mj-filter-panel\n [Fields]=\"configFilterFields\"\n [Values]=\"configFilterValues\"\n (ValuesChange)=\"onFilterValuesChange($event)\"\n (Reset)=\"resetPopoverFilters()\">\n </mj-filter-panel>\n </mj-filter-popover>\n\n <mj-view-toggle\n [Options]=\"configViewOptions\"\n [ActiveKey]=\"viewMode\"\n (KeyChange)=\"setViewMode($any($event))\">\n </mj-view-toggle>\n\n <mj-refresh-button [Loading]=\"isLoading\" (Clicked)=\"loadData()\"></mj-refresh-button>\n </div>\n <div toolbar>\n <mj-page-search\n Placeholder=\"Search configurations...\"\n [Value]=\"currentFilters.searchTerm\"\n (ValueChange)=\"onSearchTermChange($event)\">\n </mj-page-search>\n </div>\n </mj-page-header>\n\n <!-- Main Content (no sidebar — filters live in the popover above) -->\n <mj-page-body [Flex]=\"true\">\n <!-- Loading State -->\n @if (isLoading) {\n <div class=\"loading-container\">\n <mj-loading text=\"Loading AI configurations...\" size=\"large\"></mj-loading>\n </div>\n }\n\n <!-- Error State -->\n @if (error && !isLoading) {\n <div class=\"error-container\">\n <p class=\"error-message\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n {{ error }}\n </p>\n </div>\n }\n\n <!-- Configurations Content -->\n @if (!isLoading && !error) {\n @if (filteredConfigurations.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-sliders\"></i>\n <h3>No configurations found</h3>\n <p>No AI configurations match your current filters. Try adjusting your search criteria or create a new configuration.</p>\n </div>\n } @else {\n <!-- Grid View -->\n @if (viewMode === 'grid') {\n <div class=\"configurations-grid\">\n @for (config of filteredConfigurations; track config.ID) {\n <div class=\"config-card\" [class.expanded]=\"config.isExpanded\">\n <!-- Card Header -->\n <div class=\"card-header\" (click)=\"toggleExpanded(config)\">\n <div class=\"config-info\">\n <div class=\"config-icon\">\n <i class=\"fa-solid fa-sliders\"></i>\n </div>\n <div class=\"config-details\">\n <h4 class=\"config-name\">{{ config.Name }}</h4>\n <div class=\"config-meta\">\n @if (config.IsDefault) {\n <span class=\"default-badge\">\n <i class=\"fa-solid fa-star\"></i>\n Default\n </span>\n }\n <span class=\"status-badge\" [ngClass]=\"getStatusClass(config.Status)\">\n <i [class]=\"getStatusIcon(config.Status)\"></i>\n {{ config.Status }}\n </span>\n </div>\n </div>\n </div>\n\n <i class=\"fa-solid fa-chevron-down expand-icon\"\n [class.rotated]=\"config.isExpanded\"></i>\n </div>\n\n <!-- Card Body -->\n <div class=\"card-body\">\n @if (config.Description) {\n <p class=\"config-description\">{{ config.Description }}</p>\n } @else {\n <p class=\"config-description text-muted\">No description provided</p>\n }\n\n <!-- Expanded Content -->\n @if (config.isExpanded) {\n <div class=\"expanded-content\">\n <!-- Stats Grid -->\n <div class=\"config-stats\">\n <div class=\"stat-item\">\n <span class=\"stat-label\">Parameters</span>\n <span class=\"stat-value\">{{ config.params?.length || 0 }}</span>\n </div>\n <div class=\"stat-item\">\n <span class=\"stat-label\">Created</span>\n <span class=\"stat-value\">{{ formatDate(config.__mj_CreatedAt) }}</span>\n </div>\n <div class=\"stat-item\">\n <span class=\"stat-label\">Updated</span>\n <span class=\"stat-value\">{{ formatDate(config.__mj_UpdatedAt) }}</span>\n </div>\n </div>\n\n <!-- Linked Prompts -->\n <div class=\"prompts-section\">\n <h5 class=\"section-title\">\n <i class=\"fa-solid fa-message-lines\"></i>\n Linked Prompts\n </h5>\n <div class=\"prompt-links\">\n @if (config.compressionPrompt) {\n <div class=\"prompt-link\" (click)=\"onOpenPrompt(config.DefaultPromptForContextCompressionID!); $event.stopPropagation()\">\n <div class=\"prompt-link-info\">\n <div class=\"prompt-link-icon\">\n <i class=\"fa-solid fa-compress\"></i>\n </div>\n <div class=\"prompt-link-details\">\n <span class=\"prompt-link-label\">Context Compression</span>\n <span class=\"prompt-link-name\">{{ config.compressionPrompt.Name }}</span>\n </div>\n </div>\n <i class=\"fa-solid fa-arrow-right prompt-link-arrow\"></i>\n </div>\n } @else {\n <div class=\"no-prompt\">No compression prompt configured</div>\n }\n\n @if (config.summarizationPrompt) {\n <div class=\"prompt-link\" (click)=\"onOpenPrompt(config.DefaultPromptForContextSummarizationID!); $event.stopPropagation()\">\n <div class=\"prompt-link-info\">\n <div class=\"prompt-link-icon\">\n <i class=\"fa-solid fa-file-lines\"></i>\n </div>\n <div class=\"prompt-link-details\">\n <span class=\"prompt-link-label\">Context Summarization</span>\n <span class=\"prompt-link-name\">{{ config.summarizationPrompt.Name }}</span>\n </div>\n </div>\n <i class=\"fa-solid fa-arrow-right prompt-link-arrow\"></i>\n </div>\n } @else {\n <div class=\"no-prompt\">No summarization prompt configured</div>\n }\n </div>\n </div>\n\n <!-- Configuration Parameters -->\n @if (config.params && config.params.length > 0) {\n <div class=\"params-section\">\n <h5 class=\"section-title\">\n <i class=\"fa-solid fa-gear\"></i>\n Configuration Parameters\n </h5>\n <div class=\"params-grid\">\n @for (param of config.params; track param.ID) {\n <div class=\"param-item\" (click)=\"onOpenParam(param); $event.stopPropagation()\">\n <div class=\"param-info\">\n <div class=\"param-type-icon\">\n <i [class]=\"getParamTypeIcon(param.Type)\"></i>\n </div>\n <div class=\"param-details\">\n <span class=\"param-name\">{{ param.Name }}</span>\n <span class=\"param-type\">{{ param.Type }}</span>\n </div>\n </div>\n <span class=\"param-value\">{{ formatParamValue(param) }}</span>\n </div>\n }\n </div>\n </div>\n } @else {\n <div class=\"params-section\">\n <h5 class=\"section-title\">\n <i class=\"fa-solid fa-gear\"></i>\n Configuration Parameters\n </h5>\n <div class=\"no-params\">No parameters configured</div>\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Card Actions -->\n <div class=\"card-actions\" (click)=\"$event.stopPropagation()\">\n <button\n type=\"button\"\n class=\"action-btn\"\n (click)=\"showConfigDetails(config, $event)\"\n title=\"View Details\">\n <i class=\"fa-solid fa-eye\"></i>\n Details\n </button>\n\n <button\n type=\"button\"\n class=\"action-btn action-btn-primary\"\n (click)=\"onOpenConfiguration(config)\">\n <i class=\"fa-solid fa-edit\"></i>\n Configure\n </button>\n </div>\n </div>\n }\n </div>\n }\n\n <!-- List View -->\n @if (viewMode === 'list') {\n <div class=\"configurations-list\">\n <table class=\"configurations-table\">\n <thead>\n <tr>\n <th (click)=\"sortBy('Name')\"\n [class.sorted]=\"sortColumn === 'Name'\"\n [class.desc]=\"sortColumn === 'Name' && sortDirection === 'desc'\">\n <span class=\"sort-header\">\n Configuration\n <i class=\"fa-solid fa-chevron-up sort-icon\"></i>\n </span>\n </th>\n <th (click)=\"sortBy('Status')\"\n [class.sorted]=\"sortColumn === 'Status'\"\n [class.desc]=\"sortColumn === 'Status' && sortDirection === 'desc'\">\n <span class=\"sort-header\">\n Status\n <i class=\"fa-solid fa-chevron-up sort-icon\"></i>\n </span>\n </th>\n <th (click)=\"sortBy('Parameters')\"\n [class.sorted]=\"sortColumn === 'Parameters'\"\n [class.desc]=\"sortColumn === 'Parameters' && sortDirection === 'desc'\">\n <span class=\"sort-header\">\n Parameters\n <i class=\"fa-solid fa-chevron-up sort-icon\"></i>\n </span>\n </th>\n <th (click)=\"sortBy('Updated')\"\n [class.sorted]=\"sortColumn === 'Updated'\"\n [class.desc]=\"sortColumn === 'Updated' && sortDirection === 'desc'\">\n <span class=\"sort-header\">\n Updated\n <i class=\"fa-solid fa-chevron-up sort-icon\"></i>\n </span>\n </th>\n <th>Actions</th>\n </tr>\n </thead>\n <tbody>\n @for (config of filteredConfigurations; track config.ID) {\n <tr>\n <td>\n <div class=\"config-name-cell\">\n <div class=\"config-icon-small\">\n <i class=\"fa-solid fa-sliders\"></i>\n </div>\n <div>\n <div class=\"config-name-text\">\n {{ config.Name }}\n @if (config.IsDefault) {\n <span class=\"default-badge\" style=\"margin-left: 8px;\">\n <i class=\"fa-solid fa-star\"></i>\n Default\n </span>\n }\n </div>\n @if (config.Description) {\n <div class=\"config-description-small\">{{ config.Description }}</div>\n }\n </div>\n </div>\n </td>\n <td>\n <span class=\"status-badge\" [ngClass]=\"getStatusClass(config.Status)\">\n <i [class]=\"getStatusIcon(config.Status)\"></i>\n {{ config.Status }}\n </span>\n </td>\n <td>{{ config.params?.length || 0 }}</td>\n <td>{{ formatDate(config.__mj_UpdatedAt) }}</td>\n <td>\n <div class=\"table-actions\">\n <button\n type=\"button\"\n class=\"action-btn-small\"\n (click)=\"showConfigDetails(config)\"\n title=\"View Details\">\n <i class=\"fa-solid fa-eye\"></i>\n </button>\n <button\n type=\"button\"\n class=\"action-btn-small primary\"\n (click)=\"onOpenConfiguration(config)\">\n <i class=\"fa-solid fa-edit\"></i>\n </button>\n </div>\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n }\n }\n </mj-page-body>\n\n <!-- Detail Panel Overlay -->\n @if (detailPanelVisible) {\n <div class=\"detail-panel-overlay\" (click)=\"closeDetailPanel()\"></div>\n }\n\n <!-- Detail Panel -->\n <div class=\"detail-panel\" [class.visible]=\"detailPanelVisible\">\n @if (selectedConfig) {\n <!-- Panel Header -->\n <div class=\"detail-panel-header\">\n <div class=\"detail-panel-title\">\n <div class=\"detail-icon\">\n <i class=\"fa-solid fa-sliders\"></i>\n </div>\n <div class=\"detail-title-info\">\n <h3>{{ selectedConfig.Name }}</h3>\n <span class=\"detail-subtitle\">AI Configuration</span>\n </div>\n </div>\n <button class=\"detail-panel-close\" (click)=\"closeDetailPanel()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n\n <!-- Panel Content -->\n <div class=\"detail-panel-content\">\n <!-- Status Section -->\n <div class=\"detail-section\">\n <div class=\"detail-badges\">\n <span class=\"status-badge\" [ngClass]=\"getStatusClass(selectedConfig.Status)\">\n <i [class]=\"getStatusIcon(selectedConfig.Status)\"></i>\n {{ selectedConfig.Status }}\n </span>\n @if (selectedConfig.IsDefault) {\n <span class=\"feature-badge default\">\n <i class=\"fa-solid fa-star\"></i>\n Default Configuration\n </span>\n }\n </div>\n </div>\n\n <!-- Description -->\n @if (selectedConfig.Description) {\n <div class=\"detail-section\">\n <h4 class=\"detail-section-title\">\n <i class=\"fa-solid fa-align-left\"></i>\n Description\n </h4>\n <p class=\"detail-description\">{{ selectedConfig.Description }}</p>\n </div>\n }\n\n <!-- Configuration Stats -->\n <div class=\"detail-section\">\n <h4 class=\"detail-section-title\">\n <i class=\"fa-solid fa-chart-bar\"></i>\n Overview\n </h4>\n <div class=\"detail-grid\">\n <div class=\"detail-item\">\n <span class=\"detail-label\">Parameters</span>\n <span class=\"detail-value\">{{ selectedConfig.params?.length || 0 }}</span>\n </div>\n <div class=\"detail-item\">\n <span class=\"detail-label\">Status</span>\n <span class=\"detail-value\">{{ selectedConfig.Status }}</span>\n </div>\n </div>\n </div>\n\n <!-- Linked Prompts -->\n <div class=\"detail-section\">\n <h4 class=\"detail-section-title\">\n <i class=\"fa-solid fa-message-lines\"></i>\n Linked Prompts\n </h4>\n <div class=\"detail-grid single-column\">\n <div class=\"detail-item\">\n <span class=\"detail-label\">Context Compression</span>\n <span class=\"detail-value\">\n @if (selectedConfig.compressionPrompt) {\n {{ selectedConfig.compressionPrompt.Name }}\n } @else {\n <span class=\"muted\">Not configured</span>\n }\n </span>\n </div>\n <div class=\"detail-item\">\n <span class=\"detail-label\">Context Summarization</span>\n <span class=\"detail-value\">\n @if (selectedConfig.summarizationPrompt) {\n {{ selectedConfig.summarizationPrompt.Name }}\n } @else {\n <span class=\"muted\">Not configured</span>\n }\n </span>\n </div>\n </div>\n </div>\n\n <!-- Parameters Preview -->\n @if (selectedConfig.params && selectedConfig.params.length > 0) {\n <div class=\"detail-section\">\n <h4 class=\"detail-section-title\">\n <i class=\"fa-solid fa-gear\"></i>\n Parameters ({{ selectedConfig.params.length }})\n </h4>\n <div class=\"detail-params-list\">\n @for (param of selectedConfig.params.slice(0, 5); track param.ID) {\n <div class=\"detail-param-item\">\n <div class=\"param-info\">\n <i [class]=\"getParamTypeIcon(param.Type)\"></i>\n <span class=\"param-name\">{{ param.Name }}</span>\n </div>\n <span class=\"param-value\">{{ formatParamValue(param) }}</span>\n </div>\n }\n @if (selectedConfig.params.length > 5) {\n <div class=\"params-more\">\n +{{ selectedConfig.params.length - 5 }} more parameters\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Timestamps -->\n <div class=\"detail-section\">\n <h4 class=\"detail-section-title\">\n <i class=\"fa-solid fa-clock\"></i>\n Timestamps\n </h4>\n <div class=\"detail-grid\">\n <div class=\"detail-item\">\n <span class=\"detail-label\">Created</span>\n <span class=\"detail-value\">{{ formatDate(selectedConfig.__mj_CreatedAt) }}</span>\n </div>\n <div class=\"detail-item\">\n <span class=\"detail-label\">Updated</span>\n <span class=\"detail-value\">{{ formatDate(selectedConfig.__mj_UpdatedAt) }}</span>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Panel Actions -->\n <div class=\"detail-panel-actions\">\n <button\n type=\"button\"\n class=\"detail-action-btn primary\"\n (click)=\"openConfigFromPanel()\">\n <i class=\"fa-solid fa-edit\"></i>\n Open Full Record\n </button>\n </div>\n }\n </div>\n</mj-page-layout>\n"]}