@memberjunction/ng-dashboards 5.38.0 → 5.40.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 (321) hide show
  1. package/README.md +14 -7
  2. package/dist/AI/components/agents/agent-configuration.component.js +199 -198
  3. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
  4. package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts.map +1 -1
  5. package/dist/AI/components/analytics/ai-analytics-resource.component.js +20 -17
  6. package/dist/AI/components/analytics/ai-analytics-resource.component.js.map +1 -1
  7. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts +15 -0
  8. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts.map +1 -1
  9. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js +166 -58
  10. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js.map +1 -1
  11. package/dist/AI/components/analytics/executive-summary/executive-summary.component.d.ts.map +1 -1
  12. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js +2 -1
  13. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js.map +1 -1
  14. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts +1 -0
  15. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts.map +1 -1
  16. package/dist/AI/components/analytics/model-performance/model-performance.component.js +55 -36
  17. package/dist/AI/components/analytics/model-performance/model-performance.component.js.map +1 -1
  18. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts +9 -1
  19. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts.map +1 -1
  20. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js +158 -117
  21. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js.map +1 -1
  22. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts +1 -0
  23. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts.map +1 -1
  24. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js +22 -8
  25. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js.map +1 -1
  26. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts +217 -860
  27. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
  28. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +1717 -7802
  29. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
  30. package/dist/AI/components/autotagging/components/classify-item-drilldown.component.d.ts +56 -0
  31. package/dist/AI/components/autotagging/components/classify-item-drilldown.component.d.ts.map +1 -0
  32. package/dist/AI/components/autotagging/components/classify-item-drilldown.component.js +423 -0
  33. package/dist/AI/components/autotagging/components/classify-item-drilldown.component.js.map +1 -0
  34. package/dist/AI/components/autotagging/components/classify-item-grid.component.d.ts +70 -0
  35. package/dist/AI/components/autotagging/components/classify-item-grid.component.d.ts.map +1 -0
  36. package/dist/AI/components/autotagging/components/classify-item-grid.component.js +308 -0
  37. package/dist/AI/components/autotagging/components/classify-item-grid.component.js.map +1 -0
  38. package/dist/AI/components/autotagging/components/classify-org-context-editor.component.d.ts +29 -0
  39. package/dist/AI/components/autotagging/components/classify-org-context-editor.component.d.ts.map +1 -0
  40. package/dist/AI/components/autotagging/components/classify-org-context-editor.component.js +186 -0
  41. package/dist/AI/components/autotagging/components/classify-org-context-editor.component.js.map +1 -0
  42. package/dist/AI/components/autotagging/components/classify-overview-analytics.component.d.ts +69 -0
  43. package/dist/AI/components/autotagging/components/classify-overview-analytics.component.d.ts.map +1 -0
  44. package/dist/AI/components/autotagging/components/classify-overview-analytics.component.js +278 -0
  45. package/dist/AI/components/autotagging/components/classify-overview-analytics.component.js.map +1 -0
  46. package/dist/AI/components/autotagging/components/classify-seed-taxonomy.component.d.ts +73 -0
  47. package/dist/AI/components/autotagging/components/classify-seed-taxonomy.component.d.ts.map +1 -0
  48. package/dist/AI/components/autotagging/components/classify-seed-taxonomy.component.js +393 -0
  49. package/dist/AI/components/autotagging/components/classify-seed-taxonomy.component.js.map +1 -0
  50. package/dist/AI/components/autotagging/dialogs/classify-setup-wizard.component.d.ts +122 -0
  51. package/dist/AI/components/autotagging/dialogs/classify-setup-wizard.component.d.ts.map +1 -0
  52. package/dist/AI/components/autotagging/dialogs/classify-setup-wizard.component.js +908 -0
  53. package/dist/AI/components/autotagging/dialogs/classify-setup-wizard.component.js.map +1 -0
  54. package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.d.ts +87 -0
  55. package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.d.ts.map +1 -0
  56. package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.js +475 -0
  57. package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.js.map +1 -0
  58. package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.d.ts +29 -0
  59. package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.d.ts.map +1 -0
  60. package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.js +208 -0
  61. package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.js.map +1 -0
  62. package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.d.ts +21 -0
  63. package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.d.ts.map +1 -0
  64. package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.js +70 -0
  65. package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.js.map +1 -0
  66. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.d.ts +333 -0
  67. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.d.ts.map +1 -0
  68. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.js +2125 -0
  69. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.js.map +1 -0
  70. package/dist/AI/components/autotagging/shared/classify.dryrun.d.ts +61 -0
  71. package/dist/AI/components/autotagging/shared/classify.dryrun.d.ts.map +1 -0
  72. package/dist/AI/components/autotagging/shared/classify.dryrun.js +78 -0
  73. package/dist/AI/components/autotagging/shared/classify.dryrun.js.map +1 -0
  74. package/dist/AI/components/autotagging/shared/classify.format.d.ts +58 -0
  75. package/dist/AI/components/autotagging/shared/classify.format.d.ts.map +1 -0
  76. package/dist/AI/components/autotagging/shared/classify.format.js +260 -0
  77. package/dist/AI/components/autotagging/shared/classify.format.js.map +1 -0
  78. package/dist/AI/components/autotagging/shared/classify.types.d.ts +319 -0
  79. package/dist/AI/components/autotagging/shared/classify.types.d.ts.map +1 -0
  80. package/dist/AI/components/autotagging/shared/classify.types.js +6 -0
  81. package/dist/AI/components/autotagging/shared/classify.types.js.map +1 -0
  82. package/dist/AI/components/autotagging/tabs/health-tab.component.d.ts +103 -0
  83. package/dist/AI/components/autotagging/tabs/health-tab.component.d.ts.map +1 -0
  84. package/dist/AI/components/autotagging/tabs/health-tab.component.js +571 -0
  85. package/dist/AI/components/autotagging/tabs/health-tab.component.js.map +1 -0
  86. package/dist/AI/components/autotagging/tabs/history-tab.component.d.ts +77 -0
  87. package/dist/AI/components/autotagging/tabs/history-tab.component.d.ts.map +1 -0
  88. package/dist/AI/components/autotagging/tabs/history-tab.component.js +519 -0
  89. package/dist/AI/components/autotagging/tabs/history-tab.component.js.map +1 -0
  90. package/dist/AI/components/autotagging/tabs/inbox-tab.component.d.ts +107 -0
  91. package/dist/AI/components/autotagging/tabs/inbox-tab.component.d.ts.map +1 -0
  92. package/dist/AI/components/autotagging/tabs/inbox-tab.component.js +719 -0
  93. package/dist/AI/components/autotagging/tabs/inbox-tab.component.js.map +1 -0
  94. package/dist/AI/components/autotagging/tabs/pipeline-tab.component.d.ts +131 -0
  95. package/dist/AI/components/autotagging/tabs/pipeline-tab.component.d.ts.map +1 -0
  96. package/dist/AI/components/autotagging/tabs/pipeline-tab.component.js +813 -0
  97. package/dist/AI/components/autotagging/tabs/pipeline-tab.component.js.map +1 -0
  98. package/dist/AI/components/autotagging/tabs/sources-tab.component.d.ts +177 -0
  99. package/dist/AI/components/autotagging/tabs/sources-tab.component.d.ts.map +1 -0
  100. package/dist/AI/components/autotagging/tabs/sources-tab.component.js +1465 -0
  101. package/dist/AI/components/autotagging/tabs/sources-tab.component.js.map +1 -0
  102. package/dist/AI/components/autotagging/tabs/tags-tab.component.d.ts +78 -0
  103. package/dist/AI/components/autotagging/tabs/tags-tab.component.d.ts.map +1 -0
  104. package/dist/AI/components/autotagging/tabs/tags-tab.component.js +492 -0
  105. package/dist/AI/components/autotagging/tabs/tags-tab.component.js.map +1 -0
  106. package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.d.ts +397 -0
  107. package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.d.ts.map +1 -0
  108. package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.js +3490 -0
  109. package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.js.map +1 -0
  110. package/dist/AI/components/autotagging/tabs/types-tab.component.d.ts +56 -0
  111. package/dist/AI/components/autotagging/tabs/types-tab.component.d.ts.map +1 -0
  112. package/dist/AI/components/autotagging/tabs/types-tab.component.js +271 -0
  113. package/dist/AI/components/autotagging/tabs/types-tab.component.js.map +1 -0
  114. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts +3 -0
  115. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
  116. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +306 -290
  117. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
  118. package/dist/AI/components/execution-monitoring.component.js +1 -1
  119. package/dist/AI/components/execution-monitoring.component.js.map +1 -1
  120. package/dist/AI/components/models/model-management.component.js +209 -208
  121. package/dist/AI/components/models/model-management.component.js.map +1 -1
  122. package/dist/AI/components/prompts/prompt-management.component.js +130 -128
  123. package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
  124. package/dist/AI/components/requests/agent-requests-resource.component.js +61 -61
  125. package/dist/AI/components/requests/agent-requests-resource.component.js.map +1 -1
  126. package/dist/AI/components/system/system-configuration.component.js +17 -17
  127. package/dist/AI/components/system/system-configuration.component.js.map +1 -1
  128. package/dist/AI/components/tags/tags-resource.component.d.ts +1 -0
  129. package/dist/AI/components/tags/tags-resource.component.d.ts.map +1 -1
  130. package/dist/AI/components/tags/tags-resource.component.js +578 -538
  131. package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
  132. package/dist/AI/components/vectors/vector-management-resource.component.d.ts +3 -0
  133. package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
  134. package/dist/AI/components/vectors/vector-management-resource.component.js +331 -303
  135. package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
  136. package/dist/AI/services/ai-instrumentation.service.d.ts +5 -0
  137. package/dist/AI/services/ai-instrumentation.service.d.ts.map +1 -1
  138. package/dist/AI/services/ai-instrumentation.service.js +14 -2
  139. package/dist/AI/services/ai-instrumentation.service.js.map +1 -1
  140. package/dist/AI/services/cache-metrics.d.ts +50 -0
  141. package/dist/AI/services/cache-metrics.d.ts.map +1 -0
  142. package/dist/AI/services/cache-metrics.js +43 -0
  143. package/dist/AI/services/cache-metrics.js.map +1 -0
  144. package/dist/APIKeys/api-applications-panel.component.js +2 -2
  145. package/dist/APIKeys/api-key-create-dialog.component.js +2 -2
  146. package/dist/APIKeys/api-key-edit-panel.component.js +2 -2
  147. package/dist/APIKeys/api-keys-resource.component.js +132 -131
  148. package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
  149. package/dist/Actions/components/actions-overview.component.js +141 -141
  150. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  151. package/dist/Actions/components/execution-monitoring.component.js +15 -15
  152. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  153. package/dist/Actions/components/explorer/action-explorer.component.d.ts +0 -5
  154. package/dist/Actions/components/explorer/action-explorer.component.d.ts.map +1 -1
  155. package/dist/Actions/components/explorer/action-explorer.component.js +139 -212
  156. package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
  157. package/dist/Admin/admin-data-schema.component.js +2 -2
  158. package/dist/Admin/admin-data-schema.component.js.map +1 -1
  159. package/dist/Admin/admin-dev-tools-resource.component.js +2 -2
  160. package/dist/Admin/admin-dev-tools-resource.component.js.map +1 -1
  161. package/dist/Admin/admin-identity-access.component.js +2 -2
  162. package/dist/Admin/admin-identity-access.component.js.map +1 -1
  163. package/dist/Admin/admin-monitoring.component.js +2 -2
  164. package/dist/Admin/admin-monitoring.component.js.map +1 -1
  165. package/dist/ApplicationRoles/application-roles-resource.component.js +54 -49
  166. package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -1
  167. package/dist/Communication/communication-logs-resource.component.d.ts +6 -0
  168. package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
  169. package/dist/Communication/communication-logs-resource.component.js +72 -50
  170. package/dist/Communication/communication-logs-resource.component.js.map +1 -1
  171. package/dist/Communication/communication-monitor-resource.component.js +103 -102
  172. package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
  173. package/dist/Communication/communication-providers-resource.component.js +52 -51
  174. package/dist/Communication/communication-providers-resource.component.js.map +1 -1
  175. package/dist/Communication/communication-runs-resource.component.js +39 -38
  176. package/dist/Communication/communication-runs-resource.component.js.map +1 -1
  177. package/dist/Communication/communication-templates-resource.component.d.ts +6 -0
  178. package/dist/Communication/communication-templates-resource.component.d.ts.map +1 -1
  179. package/dist/Communication/communication-templates-resource.component.js +92 -89
  180. package/dist/Communication/communication-templates-resource.component.js.map +1 -1
  181. package/dist/Credentials/components/credentials-audit-resource.component.js +136 -135
  182. package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
  183. package/dist/Credentials/components/credentials-categories-resource.component.js +155 -152
  184. package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
  185. package/dist/Credentials/components/credentials-list-resource.component.js +119 -118
  186. package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
  187. package/dist/Credentials/components/credentials-overview-resource.component.js +129 -128
  188. package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
  189. package/dist/Credentials/components/credentials-types-resource.component.js +107 -106
  190. package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
  191. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts +31 -340
  192. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
  193. package/dist/DataExplorer/data-explorer-dashboard.component.js +468 -1958
  194. package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
  195. package/dist/DataExplorer/data-explorer-resource.component.d.ts.map +1 -1
  196. package/dist/DataExplorer/data-explorer-resource.component.js +10 -0
  197. package/dist/DataExplorer/data-explorer-resource.component.js.map +1 -1
  198. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js +1 -1
  199. package/dist/DatabaseDesigner/components/entity-list.component.js +115 -114
  200. package/dist/DatabaseDesigner/components/entity-list.component.js.map +1 -1
  201. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts +5 -6
  202. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts.map +1 -1
  203. package/dist/DatabaseDesigner/database-designer-dashboards.module.js +4 -5
  204. package/dist/DatabaseDesigner/database-designer-dashboards.module.js.map +1 -1
  205. package/dist/DevTools/app-state-inspector.component.js +18 -17
  206. package/dist/DevTools/app-state-inspector.component.js.map +1 -1
  207. package/dist/DevTools/class-registry.component.js +88 -85
  208. package/dist/DevTools/class-registry.component.js.map +1 -1
  209. package/dist/DevTools/event-monitor.component.js +155 -150
  210. package/dist/DevTools/event-monitor.component.js.map +1 -1
  211. package/dist/DevTools/graphql-console.component.js +245 -243
  212. package/dist/DevTools/graphql-console.component.js.map +1 -1
  213. package/dist/DevTools/layout-inspector.component.js +18 -17
  214. package/dist/DevTools/layout-inspector.component.js.map +1 -1
  215. package/dist/EntityAdmin/entity-admin-dashboard.component.js +20 -19
  216. package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
  217. package/dist/Home/home-dashboard.component.js +2 -2
  218. package/dist/Integration/components/activity/activity.component.d.ts.map +1 -1
  219. package/dist/Integration/components/activity/activity.component.js +236 -229
  220. package/dist/Integration/components/activity/activity.component.js.map +1 -1
  221. package/dist/Integration/components/connections/connections.component.js +390 -389
  222. package/dist/Integration/components/connections/connections.component.js.map +1 -1
  223. package/dist/Integration/components/overview/overview.component.js +2 -2
  224. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts.map +1 -1
  225. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +14 -11
  226. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
  227. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts +27 -2
  228. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts.map +1 -1
  229. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +244 -119
  230. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -1
  231. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +293 -291
  232. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
  233. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js +62 -61
  234. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js.map +1 -1
  235. package/dist/KnowledgeHub/components/visualize/record-drilldown/record-drilldown.component.d.ts +65 -0
  236. package/dist/KnowledgeHub/components/visualize/record-drilldown/record-drilldown.component.d.ts.map +1 -0
  237. package/dist/KnowledgeHub/components/visualize/record-drilldown/record-drilldown.component.js +176 -0
  238. package/dist/KnowledgeHub/components/visualize/record-drilldown/record-drilldown.component.js.map +1 -0
  239. package/dist/KnowledgeHub/components/visualize/tag-cloud/tag-cloud.component.d.ts +81 -0
  240. package/dist/KnowledgeHub/components/visualize/tag-cloud/tag-cloud.component.d.ts.map +1 -0
  241. package/dist/KnowledgeHub/components/visualize/tag-cloud/tag-cloud.component.js +308 -0
  242. package/dist/KnowledgeHub/components/visualize/tag-cloud/tag-cloud.component.js.map +1 -0
  243. package/dist/KnowledgeHub/components/visualize/visualize-resource.component.d.ts +85 -0
  244. package/dist/KnowledgeHub/components/visualize/visualize-resource.component.d.ts.map +1 -0
  245. package/dist/KnowledgeHub/components/visualize/visualize-resource.component.js +362 -0
  246. package/dist/KnowledgeHub/components/visualize/visualize-resource.component.js.map +1 -0
  247. package/dist/KnowledgeHub/index.d.ts +3 -0
  248. package/dist/KnowledgeHub/index.d.ts.map +1 -1
  249. package/dist/KnowledgeHub/index.js +3 -0
  250. package/dist/KnowledgeHub/index.js.map +1 -1
  251. package/dist/Lists/components/lists-browse-resource.component.d.ts +6 -2
  252. package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
  253. package/dist/Lists/components/lists-browse-resource.component.js +525 -566
  254. package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
  255. package/dist/Lists/components/lists-categories-resource.component.js +135 -134
  256. package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
  257. package/dist/Lists/components/lists-my-lists-resource.component.js +199 -198
  258. package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
  259. package/dist/MCP/components/mcp-server-dialog.component.js +2 -2
  260. package/dist/MCP/mcp-dashboard.component.js +443 -438
  261. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  262. package/dist/QueryBrowser/query-browser-resource.component.js +1 -1
  263. package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
  264. package/dist/Scheduling/components/scheduling-activity.component.d.ts.map +1 -1
  265. package/dist/Scheduling/components/scheduling-activity.component.js +146 -147
  266. package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -1
  267. package/dist/Scheduling/components/scheduling-jobs.component.js +76 -75
  268. package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
  269. package/dist/Scheduling/components/scheduling-overview.component.js +97 -96
  270. package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
  271. package/dist/Scheduling/scheduling-dashboard.component.js +24 -22
  272. package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
  273. package/dist/Scheduling/services/scheduling-instrumentation.service.d.ts +2 -0
  274. package/dist/Scheduling/services/scheduling-instrumentation.service.d.ts.map +1 -1
  275. package/dist/Scheduling/services/scheduling-instrumentation.service.js +1 -0
  276. package/dist/Scheduling/services/scheduling-instrumentation.service.js.map +1 -1
  277. package/dist/Testing/components/testing-dashboard-tab-resource.component.js +1 -1
  278. package/dist/Testing/components/testing-explorer.component.d.ts +14 -4
  279. package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
  280. package/dist/Testing/components/testing-explorer.component.js +436 -427
  281. package/dist/Testing/components/testing-explorer.component.js.map +1 -1
  282. package/dist/Testing/components/testing-runs-resource.component.js +1 -1
  283. package/dist/Testing/components/testing-runs.component.js +116 -115
  284. package/dist/Testing/components/testing-runs.component.js.map +1 -1
  285. package/dist/Testing/testing-dashboard.component.js +6 -7
  286. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  287. package/dist/VersionHistory/components/labels-resource.component.js +173 -172
  288. package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
  289. package/dist/VersionHistory/components/restore-resource.component.d.ts +6 -0
  290. package/dist/VersionHistory/components/restore-resource.component.d.ts.map +1 -1
  291. package/dist/VersionHistory/components/restore-resource.component.js +116 -92
  292. package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
  293. package/dist/ai-dashboards.module.d.ts +57 -35
  294. package/dist/ai-dashboards.module.d.ts.map +1 -1
  295. package/dist/ai-dashboards.module.js +80 -1
  296. package/dist/ai-dashboards.module.js.map +1 -1
  297. package/dist/communication-dashboards.module.d.ts +1 -1
  298. package/dist/communication-dashboards.module.d.ts.map +1 -1
  299. package/dist/communication-dashboards.module.js +7 -1
  300. package/dist/communication-dashboards.module.js.map +1 -1
  301. package/dist/data-explorer-dashboards.module.d.ts +12 -14
  302. package/dist/data-explorer-dashboards.module.d.ts.map +1 -1
  303. package/dist/data-explorer-dashboards.module.js +5 -14
  304. package/dist/data-explorer-dashboards.module.js.map +1 -1
  305. package/dist/public-api.d.ts +3 -0
  306. package/dist/public-api.d.ts.map +1 -1
  307. package/dist/public-api.js +3 -0
  308. package/dist/public-api.js.map +1 -1
  309. package/dist/testing-dashboards.module.d.ts +4 -5
  310. package/dist/testing-dashboards.module.d.ts.map +1 -1
  311. package/dist/testing-dashboards.module.js +7 -5
  312. package/dist/testing-dashboards.module.js.map +1 -1
  313. package/package.json +57 -54
  314. package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.d.ts +0 -79
  315. package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.d.ts.map +0 -1
  316. package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.js +0 -195
  317. package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.js.map +0 -1
  318. package/dist/DataExplorer/components/view-selector/view-selector.component.d.ts +0 -226
  319. package/dist/DataExplorer/components/view-selector/view-selector.component.d.ts.map +0 -1
  320. package/dist/DataExplorer/components/view-selector/view-selector.component.js +0 -861
  321. package/dist/DataExplorer/components/view-selector/view-selector.component.js.map +0 -1
@@ -22,43 +22,43 @@ import * as i5 from "@memberjunction/ng-ui-components";
22
22
  import * as i6 from "@angular/common";
23
23
  import * as i7 from "../../../shared/pipes/highlight-search.pipe";
24
24
  const _forTrack0 = ($index, $item) => $item.ID;
25
- function AgentConfigurationComponent_Conditional_16_Template(rf, ctx) { if (rf & 1) {
26
- i0.ɵɵelementStart(0, "div", 14);
27
- i0.ɵɵelement(1, "mj-loading", 17);
25
+ function AgentConfigurationComponent_Conditional_17_Template(rf, ctx) { if (rf & 1) {
26
+ i0.ɵɵelementStart(0, "div", 15);
27
+ i0.ɵɵelement(1, "mj-loading", 18);
28
28
  i0.ɵɵelementEnd();
29
29
  } }
30
- function AgentConfigurationComponent_Conditional_17_Conditional_0_Template(rf, ctx) { if (rf & 1) {
30
+ function AgentConfigurationComponent_Conditional_18_Conditional_0_Template(rf, ctx) { if (rf & 1) {
31
31
  const _r1 = i0.ɵɵgetCurrentView();
32
- i0.ɵɵelementStart(0, "div", 18);
33
- i0.ɵɵelement(1, "i", 19);
32
+ i0.ɵɵelementStart(0, "div", 19);
33
+ i0.ɵɵelement(1, "i", 20);
34
34
  i0.ɵɵelementStart(2, "h3");
35
35
  i0.ɵɵtext(3, "No agents found");
36
36
  i0.ɵɵelementEnd();
37
37
  i0.ɵɵelementStart(4, "p");
38
38
  i0.ɵɵtext(5, "No agents match your current filters. Try adjusting your search criteria or create a new agent.");
39
39
  i0.ɵɵelementEnd();
40
- i0.ɵɵelementStart(6, "button", 20);
41
- i0.ɵɵlistener("click", function AgentConfigurationComponent_Conditional_17_Conditional_0_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.createNewAgent()); });
42
- i0.ɵɵelement(7, "i", 10);
40
+ i0.ɵɵelementStart(6, "button", 21);
41
+ i0.ɵɵlistener("click", function AgentConfigurationComponent_Conditional_18_Conditional_0_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.createNewAgent()); });
42
+ i0.ɵɵelement(7, "i", 5);
43
43
  i0.ɵɵtext(8, " Create New Agent ");
44
44
  i0.ɵɵelementEnd()();
45
45
  } }
46
- function AgentConfigurationComponent_Conditional_17_Conditional_1_Conditional_0_For_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
47
- i0.ɵɵelement(0, "img", 29);
46
+ function AgentConfigurationComponent_Conditional_18_Conditional_1_Conditional_0_For_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
47
+ i0.ɵɵelement(0, "img", 30);
48
48
  } if (rf & 2) {
49
49
  const agent_r4 = i0.ɵɵnextContext().$implicit;
50
50
  i0.ɵɵproperty("src", agent_r4.LogoURL, i0.ɵɵsanitizeUrl)("alt", agent_r4.Name + " logo");
51
51
  } }
52
- function AgentConfigurationComponent_Conditional_17_Conditional_1_Conditional_0_For_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
52
+ function AgentConfigurationComponent_Conditional_18_Conditional_1_Conditional_0_For_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
53
53
  i0.ɵɵelement(0, "i");
54
54
  } if (rf & 2) {
55
55
  const agent_r4 = i0.ɵɵnextContext().$implicit;
56
56
  const ctx_r1 = i0.ɵɵnextContext(4);
57
57
  i0.ɵɵclassMap(ctx_r1.getAgentIcon(agent_r4));
58
58
  } }
59
- function AgentConfigurationComponent_Conditional_17_Conditional_1_Conditional_0_For_2_Conditional_13_Template(rf, ctx) { if (rf & 1) {
60
- i0.ɵɵelementStart(0, "span", 45);
61
- i0.ɵɵelement(1, "i", 46);
59
+ function AgentConfigurationComponent_Conditional_18_Conditional_1_Conditional_0_For_2_Conditional_13_Template(rf, ctx) { if (rf & 1) {
60
+ i0.ɵɵelementStart(0, "span", 46);
61
+ i0.ɵɵelement(1, "i", 47);
62
62
  i0.ɵɵtext(2);
63
63
  i0.ɵɵelementEnd();
64
64
  } if (rf & 2) {
@@ -67,24 +67,24 @@ function AgentConfigurationComponent_Conditional_17_Conditional_1_Conditional_0_
67
67
  i0.ɵɵadvance(2);
68
68
  i0.ɵɵtextInterpolate1(" ", agent_r4.Status, " ");
69
69
  } }
70
- function AgentConfigurationComponent_Conditional_17_Conditional_1_Conditional_0_For_2_Conditional_16_Template(rf, ctx) { if (rf & 1) {
71
- i0.ɵɵelement(0, "p", 39);
70
+ function AgentConfigurationComponent_Conditional_18_Conditional_1_Conditional_0_For_2_Conditional_16_Template(rf, ctx) { if (rf & 1) {
71
+ i0.ɵɵelement(0, "p", 40);
72
72
  i0.ɵɵpipe(1, "highlightSearch");
73
73
  } if (rf & 2) {
74
74
  const agent_r4 = i0.ɵɵnextContext().$implicit;
75
75
  const ctx_r1 = i0.ɵɵnextContext(4);
76
76
  i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(1, 1, agent_r4.Description, ctx_r1.currentFilters.searchTerm), i0.ɵɵsanitizeHtml);
77
77
  } }
78
- function AgentConfigurationComponent_Conditional_17_Conditional_1_Conditional_0_For_2_Conditional_17_Template(rf, ctx) { if (rf & 1) {
79
- i0.ɵɵelementStart(0, "p", 40);
78
+ function AgentConfigurationComponent_Conditional_18_Conditional_1_Conditional_0_For_2_Conditional_17_Template(rf, ctx) { if (rf & 1) {
79
+ i0.ɵɵelementStart(0, "p", 41);
80
80
  i0.ɵɵtext(1, "No description provided");
81
81
  i0.ɵɵelementEnd();
82
82
  } }
83
- function AgentConfigurationComponent_Conditional_17_Conditional_1_Conditional_0_For_2_Conditional_18_Conditional_2_Template(rf, ctx) { if (rf & 1) {
84
- i0.ɵɵelementStart(0, "div", 48)(1, "span", 49);
83
+ function AgentConfigurationComponent_Conditional_18_Conditional_1_Conditional_0_For_2_Conditional_18_Conditional_2_Template(rf, ctx) { if (rf & 1) {
84
+ i0.ɵɵelementStart(0, "div", 49)(1, "span", 50);
85
85
  i0.ɵɵtext(2, "Parent");
86
86
  i0.ɵɵelementEnd();
87
- i0.ɵɵelementStart(3, "span", 50);
87
+ i0.ɵɵelementStart(3, "span", 51);
88
88
  i0.ɵɵtext(4);
89
89
  i0.ɵɵelementEnd()();
90
90
  } if (rf & 2) {
@@ -92,22 +92,22 @@ function AgentConfigurationComponent_Conditional_17_Conditional_1_Conditional_0_
92
92
  i0.ɵɵadvance(4);
93
93
  i0.ɵɵtextInterpolate(agent_r4.Parent);
94
94
  } }
95
- function AgentConfigurationComponent_Conditional_17_Conditional_1_Conditional_0_For_2_Conditional_18_Conditional_7_Template(rf, ctx) { if (rf & 1) {
96
- i0.ɵɵelement(0, "i", 51);
95
+ function AgentConfigurationComponent_Conditional_18_Conditional_1_Conditional_0_For_2_Conditional_18_Conditional_7_Template(rf, ctx) { if (rf & 1) {
96
+ i0.ɵɵelement(0, "i", 52);
97
97
  i0.ɵɵtext(1, " Enabled ");
98
98
  } }
99
- function AgentConfigurationComponent_Conditional_17_Conditional_1_Conditional_0_For_2_Conditional_18_Conditional_8_Template(rf, ctx) { if (rf & 1) {
100
- i0.ɵɵelement(0, "i", 52);
99
+ function AgentConfigurationComponent_Conditional_18_Conditional_1_Conditional_0_For_2_Conditional_18_Conditional_8_Template(rf, ctx) { if (rf & 1) {
100
+ i0.ɵɵelement(0, "i", 53);
101
101
  i0.ɵɵtext(1, " Disabled ");
102
102
  } }
103
- function AgentConfigurationComponent_Conditional_17_Conditional_1_Conditional_0_For_2_Conditional_18_Template(rf, ctx) { if (rf & 1) {
104
- i0.ɵɵelementStart(0, "div", 41)(1, "div", 47);
105
- i0.ɵɵconditionalCreate(2, AgentConfigurationComponent_Conditional_17_Conditional_1_Conditional_0_For_2_Conditional_18_Conditional_2_Template, 5, 1, "div", 48);
106
- i0.ɵɵelementStart(3, "div", 48)(4, "span", 49);
103
+ function AgentConfigurationComponent_Conditional_18_Conditional_1_Conditional_0_For_2_Conditional_18_Template(rf, ctx) { if (rf & 1) {
104
+ i0.ɵɵelementStart(0, "div", 42)(1, "div", 48);
105
+ i0.ɵɵconditionalCreate(2, AgentConfigurationComponent_Conditional_18_Conditional_1_Conditional_0_For_2_Conditional_18_Conditional_2_Template, 5, 1, "div", 49);
106
+ i0.ɵɵelementStart(3, "div", 49)(4, "span", 50);
107
107
  i0.ɵɵtext(5, "Context Compression");
108
108
  i0.ɵɵelementEnd();
109
- i0.ɵɵelementStart(6, "span", 50);
110
- i0.ɵɵconditionalCreate(7, AgentConfigurationComponent_Conditional_17_Conditional_1_Conditional_0_For_2_Conditional_18_Conditional_7_Template, 2, 0)(8, AgentConfigurationComponent_Conditional_17_Conditional_1_Conditional_0_For_2_Conditional_18_Conditional_8_Template, 2, 0);
109
+ i0.ɵɵelementStart(6, "span", 51);
110
+ i0.ɵɵconditionalCreate(7, AgentConfigurationComponent_Conditional_18_Conditional_1_Conditional_0_For_2_Conditional_18_Conditional_7_Template, 2, 0)(8, AgentConfigurationComponent_Conditional_18_Conditional_1_Conditional_0_For_2_Conditional_18_Conditional_8_Template, 2, 0);
111
111
  i0.ɵɵelementEnd()()()();
112
112
  } if (rf & 2) {
113
113
  const agent_r4 = i0.ɵɵnextContext().$implicit;
@@ -116,47 +116,47 @@ function AgentConfigurationComponent_Conditional_17_Conditional_1_Conditional_0_
116
116
  i0.ɵɵadvance(5);
117
117
  i0.ɵɵconditional(agent_r4.EnableContextCompression ? 7 : 8);
118
118
  } }
119
- function AgentConfigurationComponent_Conditional_17_Conditional_1_Conditional_0_For_2_Conditional_20_Template(rf, ctx) { if (rf & 1) {
119
+ function AgentConfigurationComponent_Conditional_18_Conditional_1_Conditional_0_For_2_Conditional_20_Template(rf, ctx) { if (rf & 1) {
120
120
  const _r5 = i0.ɵɵgetCurrentView();
121
- i0.ɵɵelementStart(0, "button", 53);
122
- i0.ɵɵlistener("click", function AgentConfigurationComponent_Conditional_17_Conditional_1_Conditional_0_For_2_Conditional_20_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r5); const agent_r4 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.showAgentDetails(agent_r4, $event)); });
123
- i0.ɵɵelement(1, "i", 54);
121
+ i0.ɵɵelementStart(0, "button", 54);
122
+ i0.ɵɵlistener("click", function AgentConfigurationComponent_Conditional_18_Conditional_1_Conditional_0_For_2_Conditional_20_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r5); const agent_r4 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.showAgentDetails(agent_r4, $event)); });
123
+ i0.ɵɵelement(1, "i", 55);
124
124
  i0.ɵɵtext(2, " Details ");
125
125
  i0.ɵɵelementEnd();
126
126
  } }
127
- function AgentConfigurationComponent_Conditional_17_Conditional_1_Conditional_0_For_2_Conditional_21_Template(rf, ctx) { if (rf & 1) {
127
+ function AgentConfigurationComponent_Conditional_18_Conditional_1_Conditional_0_For_2_Conditional_21_Template(rf, ctx) { if (rf & 1) {
128
128
  const _r6 = i0.ɵɵgetCurrentView();
129
- i0.ɵɵelementStart(0, "button", 55);
130
- i0.ɵɵlistener("click", function AgentConfigurationComponent_Conditional_17_Conditional_1_Conditional_0_For_2_Conditional_21_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r6); const agent_r4 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); ctx_r1.runAgent(agent_r4); return i0.ɵɵresetView($event.stopPropagation()); });
131
- i0.ɵɵelement(1, "i", 56);
129
+ i0.ɵɵelementStart(0, "button", 56);
130
+ i0.ɵɵlistener("click", function AgentConfigurationComponent_Conditional_18_Conditional_1_Conditional_0_For_2_Conditional_21_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r6); const agent_r4 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); ctx_r1.runAgent(agent_r4); return i0.ɵɵresetView($event.stopPropagation()); });
131
+ i0.ɵɵelement(1, "i", 57);
132
132
  i0.ɵɵtext(2, " Run ");
133
133
  i0.ɵɵelementEnd();
134
134
  } }
135
- function AgentConfigurationComponent_Conditional_17_Conditional_1_Conditional_0_For_2_Template(rf, ctx) { if (rf & 1) {
135
+ function AgentConfigurationComponent_Conditional_18_Conditional_1_Conditional_0_For_2_Template(rf, ctx) { if (rf & 1) {
136
136
  const _r3 = i0.ɵɵgetCurrentView();
137
- i0.ɵɵelementStart(0, "div", 25)(1, "div", 26);
138
- i0.ɵɵlistener("click", function AgentConfigurationComponent_Conditional_17_Conditional_1_Conditional_0_For_2_Template_div_click_1_listener() { const agent_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.toggleAgentExpansion(agent_r4.ID)); });
139
- i0.ɵɵelementStart(2, "div", 27)(3, "div", 28);
140
- i0.ɵɵconditionalCreate(4, AgentConfigurationComponent_Conditional_17_Conditional_1_Conditional_0_For_2_Conditional_4_Template, 1, 2, "img", 29)(5, AgentConfigurationComponent_Conditional_17_Conditional_1_Conditional_0_For_2_Conditional_5_Template, 1, 2, "i", 30);
137
+ i0.ɵɵelementStart(0, "div", 26)(1, "div", 27);
138
+ i0.ɵɵlistener("click", function AgentConfigurationComponent_Conditional_18_Conditional_1_Conditional_0_For_2_Template_div_click_1_listener() { const agent_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.toggleAgentExpansion(agent_r4.ID)); });
139
+ i0.ɵɵelementStart(2, "div", 28)(3, "div", 29);
140
+ i0.ɵɵconditionalCreate(4, AgentConfigurationComponent_Conditional_18_Conditional_1_Conditional_0_For_2_Conditional_4_Template, 1, 2, "img", 30)(5, AgentConfigurationComponent_Conditional_18_Conditional_1_Conditional_0_For_2_Conditional_5_Template, 1, 2, "i", 31);
141
141
  i0.ɵɵelementEnd();
142
- i0.ɵɵelementStart(6, "div", 31);
143
- i0.ɵɵelement(7, "h4", 32);
142
+ i0.ɵɵelementStart(6, "div", 32);
143
+ i0.ɵɵelement(7, "h4", 33);
144
144
  i0.ɵɵpipe(8, "highlightSearch");
145
- i0.ɵɵelementStart(9, "div", 33)(10, "span", 34);
146
- i0.ɵɵelement(11, "i", 35);
145
+ i0.ɵɵelementStart(9, "div", 34)(10, "span", 35);
146
+ i0.ɵɵelement(11, "i", 36);
147
147
  i0.ɵɵtext(12);
148
148
  i0.ɵɵelementEnd();
149
- i0.ɵɵconditionalCreate(13, AgentConfigurationComponent_Conditional_17_Conditional_1_Conditional_0_For_2_Conditional_13_Template, 3, 3, "span", 36);
149
+ i0.ɵɵconditionalCreate(13, AgentConfigurationComponent_Conditional_18_Conditional_1_Conditional_0_For_2_Conditional_13_Template, 3, 3, "span", 37);
150
150
  i0.ɵɵelementEnd()()();
151
- i0.ɵɵelement(14, "i", 37);
151
+ i0.ɵɵelement(14, "i", 38);
152
152
  i0.ɵɵelementEnd();
153
- i0.ɵɵelementStart(15, "div", 38);
154
- i0.ɵɵconditionalCreate(16, AgentConfigurationComponent_Conditional_17_Conditional_1_Conditional_0_For_2_Conditional_16_Template, 2, 4, "p", 39)(17, AgentConfigurationComponent_Conditional_17_Conditional_1_Conditional_0_For_2_Conditional_17_Template, 2, 0, "p", 40);
155
- i0.ɵɵconditionalCreate(18, AgentConfigurationComponent_Conditional_17_Conditional_1_Conditional_0_For_2_Conditional_18_Template, 9, 2, "div", 41);
153
+ i0.ɵɵelementStart(15, "div", 39);
154
+ i0.ɵɵconditionalCreate(16, AgentConfigurationComponent_Conditional_18_Conditional_1_Conditional_0_For_2_Conditional_16_Template, 2, 4, "p", 40)(17, AgentConfigurationComponent_Conditional_18_Conditional_1_Conditional_0_For_2_Conditional_17_Template, 2, 0, "p", 41);
155
+ i0.ɵɵconditionalCreate(18, AgentConfigurationComponent_Conditional_18_Conditional_1_Conditional_0_For_2_Conditional_18_Template, 9, 2, "div", 42);
156
156
  i0.ɵɵelementEnd();
157
- i0.ɵɵelementStart(19, "div", 42);
158
- i0.ɵɵconditionalCreate(20, AgentConfigurationComponent_Conditional_17_Conditional_1_Conditional_0_For_2_Conditional_20_Template, 3, 0, "button", 43);
159
- i0.ɵɵconditionalCreate(21, AgentConfigurationComponent_Conditional_17_Conditional_1_Conditional_0_For_2_Conditional_21_Template, 3, 0, "button", 44);
157
+ i0.ɵɵelementStart(19, "div", 43);
158
+ i0.ɵɵconditionalCreate(20, AgentConfigurationComponent_Conditional_18_Conditional_1_Conditional_0_For_2_Conditional_20_Template, 3, 0, "button", 44);
159
+ i0.ɵɵconditionalCreate(21, AgentConfigurationComponent_Conditional_18_Conditional_1_Conditional_0_For_2_Conditional_21_Template, 3, 0, "button", 45);
160
160
  i0.ɵɵelementEnd()();
161
161
  } if (rf & 2) {
162
162
  const agent_r4 = ctx.$implicit;
@@ -183,78 +183,78 @@ function AgentConfigurationComponent_Conditional_17_Conditional_1_Conditional_0_
183
183
  i0.ɵɵadvance();
184
184
  i0.ɵɵconditional(agent_r4.Status === "Active" && ctx_r1.UserCanReadAgents ? 21 : -1);
185
185
  } }
186
- function AgentConfigurationComponent_Conditional_17_Conditional_1_Conditional_0_Template(rf, ctx) { if (rf & 1) {
187
- i0.ɵɵelementStart(0, "div", 21);
188
- i0.ɵɵrepeaterCreate(1, AgentConfigurationComponent_Conditional_17_Conditional_1_Conditional_0_For_2_Template, 22, 17, "div", 24, _forTrack0);
186
+ function AgentConfigurationComponent_Conditional_18_Conditional_1_Conditional_0_Template(rf, ctx) { if (rf & 1) {
187
+ i0.ɵɵelementStart(0, "div", 22);
188
+ i0.ɵɵrepeaterCreate(1, AgentConfigurationComponent_Conditional_18_Conditional_1_Conditional_0_For_2_Template, 22, 17, "div", 25, _forTrack0);
189
189
  i0.ɵɵelementEnd();
190
190
  } if (rf & 2) {
191
191
  const ctx_r1 = i0.ɵɵnextContext(3);
192
192
  i0.ɵɵadvance();
193
193
  i0.ɵɵrepeater(ctx_r1.filteredAgents);
194
194
  } }
195
- function AgentConfigurationComponent_Conditional_17_Conditional_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
195
+ function AgentConfigurationComponent_Conditional_18_Conditional_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
196
196
  const _r7 = i0.ɵɵgetCurrentView();
197
- i0.ɵɵelementStart(0, "div", 22)(1, "mj-tree", 57);
198
- i0.ɵɵlistener("AfterNodeClick", function AgentConfigurationComponent_Conditional_17_Conditional_1_Conditional_1_Template_mj_tree_AfterNodeClick_1_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.onTreeNodeClick($event)); })("AfterNodeDoubleClick", function AgentConfigurationComponent_Conditional_17_Conditional_1_Conditional_1_Template_mj_tree_AfterNodeDoubleClick_1_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.onTreeNodeDoubleClick($event)); });
197
+ i0.ɵɵelementStart(0, "div", 23)(1, "mj-tree", 58);
198
+ i0.ɵɵlistener("AfterNodeClick", function AgentConfigurationComponent_Conditional_18_Conditional_1_Conditional_1_Template_mj_tree_AfterNodeClick_1_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.onTreeNodeClick($event)); })("AfterNodeDoubleClick", function AgentConfigurationComponent_Conditional_18_Conditional_1_Conditional_1_Template_mj_tree_AfterNodeDoubleClick_1_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.onTreeNodeDoubleClick($event)); });
199
199
  i0.ɵɵelementEnd()();
200
200
  } if (rf & 2) {
201
201
  const ctx_r1 = i0.ɵɵnextContext(3);
202
202
  i0.ɵɵadvance();
203
203
  i0.ɵɵproperty("BranchConfig", ctx_r1.CategoryBranchConfig)("LeafConfig", ctx_r1.AgentLeafConfig)("SelectionMode", "single")("SelectableTypes", "leaf")("ShowDescriptions", true)("ShowBadges", true)("ShowExpandCollapseAll", true)("EmptyMessage", "No agents found")("EmptyIcon", "fa-solid fa-robot");
204
204
  } }
205
- function AgentConfigurationComponent_Conditional_17_Conditional_1_Conditional_2_For_18_Conditional_4_Template(rf, ctx) { if (rf & 1) {
206
- i0.ɵɵelement(0, "img", 64);
205
+ function AgentConfigurationComponent_Conditional_18_Conditional_1_Conditional_2_For_18_Conditional_4_Template(rf, ctx) { if (rf & 1) {
206
+ i0.ɵɵelement(0, "img", 65);
207
207
  } if (rf & 2) {
208
208
  const agent_r9 = i0.ɵɵnextContext().$implicit;
209
209
  i0.ɵɵproperty("src", agent_r9.LogoURL, i0.ɵɵsanitizeUrl)("alt", agent_r9.Name + " logo");
210
210
  } }
211
- function AgentConfigurationComponent_Conditional_17_Conditional_1_Conditional_2_For_18_Conditional_5_Template(rf, ctx) { if (rf & 1) {
211
+ function AgentConfigurationComponent_Conditional_18_Conditional_1_Conditional_2_For_18_Conditional_5_Template(rf, ctx) { if (rf & 1) {
212
212
  i0.ɵɵelement(0, "i");
213
213
  } if (rf & 2) {
214
214
  const agent_r9 = i0.ɵɵnextContext().$implicit;
215
215
  const ctx_r1 = i0.ɵɵnextContext(4);
216
216
  i0.ɵɵclassMap(ctx_r1.getAgentIcon(agent_r9));
217
217
  } }
218
- function AgentConfigurationComponent_Conditional_17_Conditional_1_Conditional_2_For_18_Conditional_9_Template(rf, ctx) { if (rf & 1) {
219
- i0.ɵɵelement(0, "div", 65);
218
+ function AgentConfigurationComponent_Conditional_18_Conditional_1_Conditional_2_For_18_Conditional_9_Template(rf, ctx) { if (rf & 1) {
219
+ i0.ɵɵelement(0, "div", 66);
220
220
  i0.ɵɵpipe(1, "highlightSearch");
221
221
  } if (rf & 2) {
222
222
  const agent_r9 = i0.ɵɵnextContext().$implicit;
223
223
  const ctx_r1 = i0.ɵɵnextContext(4);
224
224
  i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(1, 1, agent_r9.Description, ctx_r1.currentFilters.searchTerm), i0.ɵɵsanitizeHtml);
225
225
  } }
226
- function AgentConfigurationComponent_Conditional_17_Conditional_1_Conditional_2_For_18_Conditional_18_Template(rf, ctx) { if (rf & 1) {
226
+ function AgentConfigurationComponent_Conditional_18_Conditional_1_Conditional_2_For_18_Conditional_18_Template(rf, ctx) { if (rf & 1) {
227
227
  const _r10 = i0.ɵɵgetCurrentView();
228
- i0.ɵɵelementStart(0, "button", 71);
229
- i0.ɵɵlistener("click", function AgentConfigurationComponent_Conditional_17_Conditional_1_Conditional_2_For_18_Conditional_18_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r10); const agent_r9 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.showAgentDetails(agent_r9)); });
230
- i0.ɵɵelement(1, "i", 54);
228
+ i0.ɵɵelementStart(0, "button", 72);
229
+ i0.ɵɵlistener("click", function AgentConfigurationComponent_Conditional_18_Conditional_1_Conditional_2_For_18_Conditional_18_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r10); const agent_r9 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.showAgentDetails(agent_r9)); });
230
+ i0.ɵɵelement(1, "i", 55);
231
231
  i0.ɵɵelementEnd();
232
232
  } }
233
- function AgentConfigurationComponent_Conditional_17_Conditional_1_Conditional_2_For_18_Conditional_19_Template(rf, ctx) { if (rf & 1) {
233
+ function AgentConfigurationComponent_Conditional_18_Conditional_1_Conditional_2_For_18_Conditional_19_Template(rf, ctx) { if (rf & 1) {
234
234
  const _r11 = i0.ɵɵgetCurrentView();
235
- i0.ɵɵelementStart(0, "button", 72);
236
- i0.ɵɵlistener("click", function AgentConfigurationComponent_Conditional_17_Conditional_1_Conditional_2_For_18_Conditional_19_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r11); const agent_r9 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.runAgent(agent_r9)); });
237
- i0.ɵɵelement(1, "i", 56);
235
+ i0.ɵɵelementStart(0, "button", 73);
236
+ i0.ɵɵlistener("click", function AgentConfigurationComponent_Conditional_18_Conditional_1_Conditional_2_For_18_Conditional_19_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r11); const agent_r9 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.runAgent(agent_r9)); });
237
+ i0.ɵɵelement(1, "i", 57);
238
238
  i0.ɵɵelementEnd();
239
239
  } }
240
- function AgentConfigurationComponent_Conditional_17_Conditional_1_Conditional_2_For_18_Template(rf, ctx) { if (rf & 1) {
241
- i0.ɵɵelementStart(0, "tr")(1, "td")(2, "div", 62)(3, "div", 63);
242
- i0.ɵɵconditionalCreate(4, AgentConfigurationComponent_Conditional_17_Conditional_1_Conditional_2_For_18_Conditional_4_Template, 1, 2, "img", 64)(5, AgentConfigurationComponent_Conditional_17_Conditional_1_Conditional_2_For_18_Conditional_5_Template, 1, 2, "i", 30);
240
+ function AgentConfigurationComponent_Conditional_18_Conditional_1_Conditional_2_For_18_Template(rf, ctx) { if (rf & 1) {
241
+ i0.ɵɵelementStart(0, "tr")(1, "td")(2, "div", 63)(3, "div", 64);
242
+ i0.ɵɵconditionalCreate(4, AgentConfigurationComponent_Conditional_18_Conditional_1_Conditional_2_For_18_Conditional_4_Template, 1, 2, "img", 65)(5, AgentConfigurationComponent_Conditional_18_Conditional_1_Conditional_2_For_18_Conditional_5_Template, 1, 2, "i", 31);
243
243
  i0.ɵɵelementEnd();
244
244
  i0.ɵɵelementStart(6, "div");
245
- i0.ɵɵelement(7, "div", 32);
245
+ i0.ɵɵelement(7, "div", 33);
246
246
  i0.ɵɵpipe(8, "highlightSearch");
247
- i0.ɵɵconditionalCreate(9, AgentConfigurationComponent_Conditional_17_Conditional_1_Conditional_2_For_18_Conditional_9_Template, 2, 4, "div", 65);
247
+ i0.ɵɵconditionalCreate(9, AgentConfigurationComponent_Conditional_18_Conditional_1_Conditional_2_For_18_Conditional_9_Template, 2, 4, "div", 66);
248
248
  i0.ɵɵelementEnd()()();
249
- i0.ɵɵelementStart(10, "td")(11, "span", 66);
249
+ i0.ɵɵelementStart(10, "td")(11, "span", 67);
250
250
  i0.ɵɵtext(12);
251
251
  i0.ɵɵelementEnd()();
252
- i0.ɵɵelementStart(13, "td")(14, "span", 67);
252
+ i0.ɵɵelementStart(13, "td")(14, "span", 68);
253
253
  i0.ɵɵtext(15);
254
254
  i0.ɵɵelementEnd()();
255
- i0.ɵɵelementStart(16, "td")(17, "div", 68);
256
- i0.ɵɵconditionalCreate(18, AgentConfigurationComponent_Conditional_17_Conditional_1_Conditional_2_For_18_Conditional_18_Template, 2, 0, "button", 69);
257
- i0.ɵɵconditionalCreate(19, AgentConfigurationComponent_Conditional_17_Conditional_1_Conditional_2_For_18_Conditional_19_Template, 2, 0, "button", 70);
255
+ i0.ɵɵelementStart(16, "td")(17, "div", 69);
256
+ i0.ɵɵconditionalCreate(18, AgentConfigurationComponent_Conditional_18_Conditional_1_Conditional_2_For_18_Conditional_18_Template, 2, 0, "button", 70);
257
+ i0.ɵɵconditionalCreate(19, AgentConfigurationComponent_Conditional_18_Conditional_1_Conditional_2_For_18_Conditional_19_Template, 2, 0, "button", 71);
258
258
  i0.ɵɵelementEnd()()();
259
259
  } if (rf & 2) {
260
260
  const agent_r9 = ctx.$implicit;
@@ -278,28 +278,28 @@ function AgentConfigurationComponent_Conditional_17_Conditional_1_Conditional_2_
278
278
  i0.ɵɵadvance();
279
279
  i0.ɵɵconditional(agent_r9.Status === "Active" && ctx_r1.UserCanReadAgents ? 19 : -1);
280
280
  } }
281
- function AgentConfigurationComponent_Conditional_17_Conditional_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
281
+ function AgentConfigurationComponent_Conditional_18_Conditional_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
282
282
  const _r8 = i0.ɵɵgetCurrentView();
283
- i0.ɵɵelementStart(0, "div", 23)(1, "table", 58)(2, "thead")(3, "tr")(4, "th", 59);
284
- i0.ɵɵlistener("click", function AgentConfigurationComponent_Conditional_17_Conditional_1_Conditional_2_Template_th_click_4_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.sortBy("Name")); });
285
- i0.ɵɵelementStart(5, "span", 60);
283
+ i0.ɵɵelementStart(0, "div", 24)(1, "table", 59)(2, "thead")(3, "tr")(4, "th", 60);
284
+ i0.ɵɵlistener("click", function AgentConfigurationComponent_Conditional_18_Conditional_1_Conditional_2_Template_th_click_4_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.sortBy("Name")); });
285
+ i0.ɵɵelementStart(5, "span", 61);
286
286
  i0.ɵɵtext(6, " Name ");
287
- i0.ɵɵelement(7, "i", 61);
287
+ i0.ɵɵelement(7, "i", 62);
288
288
  i0.ɵɵelementEnd()();
289
289
  i0.ɵɵelementStart(8, "th");
290
290
  i0.ɵɵtext(9, "Type");
291
291
  i0.ɵɵelementEnd();
292
- i0.ɵɵelementStart(10, "th", 59);
293
- i0.ɵɵlistener("click", function AgentConfigurationComponent_Conditional_17_Conditional_1_Conditional_2_Template_th_click_10_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.sortBy("Status")); });
294
- i0.ɵɵelementStart(11, "span", 60);
292
+ i0.ɵɵelementStart(10, "th", 60);
293
+ i0.ɵɵlistener("click", function AgentConfigurationComponent_Conditional_18_Conditional_1_Conditional_2_Template_th_click_10_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.sortBy("Status")); });
294
+ i0.ɵɵelementStart(11, "span", 61);
295
295
  i0.ɵɵtext(12, " Status ");
296
- i0.ɵɵelement(13, "i", 61);
296
+ i0.ɵɵelement(13, "i", 62);
297
297
  i0.ɵɵelementEnd()();
298
298
  i0.ɵɵelementStart(14, "th");
299
299
  i0.ɵɵtext(15, "Actions");
300
300
  i0.ɵɵelementEnd()()();
301
301
  i0.ɵɵelementStart(16, "tbody");
302
- i0.ɵɵrepeaterCreate(17, AgentConfigurationComponent_Conditional_17_Conditional_1_Conditional_2_For_18_Template, 20, 14, "tr", null, _forTrack0);
302
+ i0.ɵɵrepeaterCreate(17, AgentConfigurationComponent_Conditional_18_Conditional_1_Conditional_2_For_18_Template, 20, 14, "tr", null, _forTrack0);
303
303
  i0.ɵɵelementEnd()()();
304
304
  } if (rf & 2) {
305
305
  const ctx_r1 = i0.ɵɵnextContext(3);
@@ -310,10 +310,10 @@ function AgentConfigurationComponent_Conditional_17_Conditional_1_Conditional_2_
310
310
  i0.ɵɵadvance(7);
311
311
  i0.ɵɵrepeater(ctx_r1.filteredAgents);
312
312
  } }
313
- function AgentConfigurationComponent_Conditional_17_Conditional_1_Template(rf, ctx) { if (rf & 1) {
314
- i0.ɵɵconditionalCreate(0, AgentConfigurationComponent_Conditional_17_Conditional_1_Conditional_0_Template, 3, 0, "div", 21);
315
- i0.ɵɵconditionalCreate(1, AgentConfigurationComponent_Conditional_17_Conditional_1_Conditional_1_Template, 2, 9, "div", 22);
316
- i0.ɵɵconditionalCreate(2, AgentConfigurationComponent_Conditional_17_Conditional_1_Conditional_2_Template, 19, 8, "div", 23);
313
+ function AgentConfigurationComponent_Conditional_18_Conditional_1_Template(rf, ctx) { if (rf & 1) {
314
+ i0.ɵɵconditionalCreate(0, AgentConfigurationComponent_Conditional_18_Conditional_1_Conditional_0_Template, 3, 0, "div", 22);
315
+ i0.ɵɵconditionalCreate(1, AgentConfigurationComponent_Conditional_18_Conditional_1_Conditional_1_Template, 2, 9, "div", 23);
316
+ i0.ɵɵconditionalCreate(2, AgentConfigurationComponent_Conditional_18_Conditional_1_Conditional_2_Template, 19, 8, "div", 24);
317
317
  } if (rf & 2) {
318
318
  const ctx_r1 = i0.ɵɵnextContext(2);
319
319
  i0.ɵɵconditional(ctx_r1.viewMode === "grid" ? 0 : -1);
@@ -322,42 +322,42 @@ function AgentConfigurationComponent_Conditional_17_Conditional_1_Template(rf, c
322
322
  i0.ɵɵadvance();
323
323
  i0.ɵɵconditional(ctx_r1.viewMode === "list" ? 2 : -1);
324
324
  } }
325
- function AgentConfigurationComponent_Conditional_17_Template(rf, ctx) { if (rf & 1) {
326
- i0.ɵɵconditionalCreate(0, AgentConfigurationComponent_Conditional_17_Conditional_0_Template, 9, 0, "div", 18)(1, AgentConfigurationComponent_Conditional_17_Conditional_1_Template, 3, 3);
325
+ function AgentConfigurationComponent_Conditional_18_Template(rf, ctx) { if (rf & 1) {
326
+ i0.ɵɵconditionalCreate(0, AgentConfigurationComponent_Conditional_18_Conditional_0_Template, 9, 0, "div", 19)(1, AgentConfigurationComponent_Conditional_18_Conditional_1_Template, 3, 3);
327
327
  } if (rf & 2) {
328
328
  const ctx_r1 = i0.ɵɵnextContext();
329
329
  i0.ɵɵconditional(ctx_r1.filteredAgents.length === 0 ? 0 : 1);
330
330
  } }
331
- function AgentConfigurationComponent_Conditional_18_Template(rf, ctx) { if (rf & 1) {
331
+ function AgentConfigurationComponent_Conditional_19_Template(rf, ctx) { if (rf & 1) {
332
332
  const _r12 = i0.ɵɵgetCurrentView();
333
- i0.ɵɵelementStart(0, "div", 73);
334
- i0.ɵɵlistener("click", function AgentConfigurationComponent_Conditional_18_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeDetailPanel()); });
333
+ i0.ɵɵelementStart(0, "div", 74);
334
+ i0.ɵɵlistener("click", function AgentConfigurationComponent_Conditional_19_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeDetailPanel()); });
335
335
  i0.ɵɵelementEnd();
336
336
  } }
337
- function AgentConfigurationComponent_Conditional_20_Conditional_3_Template(rf, ctx) { if (rf & 1) {
338
- i0.ɵɵelement(0, "img", 77);
337
+ function AgentConfigurationComponent_Conditional_21_Conditional_3_Template(rf, ctx) { if (rf & 1) {
338
+ i0.ɵɵelement(0, "img", 78);
339
339
  } if (rf & 2) {
340
340
  const ctx_r1 = i0.ɵɵnextContext(2);
341
341
  i0.ɵɵproperty("src", ctx_r1.selectedAgent.LogoURL, i0.ɵɵsanitizeUrl)("alt", ctx_r1.selectedAgent.Name + " logo");
342
342
  } }
343
- function AgentConfigurationComponent_Conditional_20_Conditional_4_Template(rf, ctx) { if (rf & 1) {
343
+ function AgentConfigurationComponent_Conditional_21_Conditional_4_Template(rf, ctx) { if (rf & 1) {
344
344
  i0.ɵɵelement(0, "i");
345
345
  } if (rf & 2) {
346
346
  const ctx_r1 = i0.ɵɵnextContext(2);
347
347
  i0.ɵɵclassMap(ctx_r1.getAgentIcon(ctx_r1.selectedAgent));
348
348
  } }
349
- function AgentConfigurationComponent_Conditional_20_Conditional_18_Template(rf, ctx) { if (rf & 1) {
350
- i0.ɵɵelementStart(0, "span", 85);
351
- i0.ɵɵelement(1, "i", 97);
349
+ function AgentConfigurationComponent_Conditional_21_Conditional_18_Template(rf, ctx) { if (rf & 1) {
350
+ i0.ɵɵelementStart(0, "span", 86);
351
+ i0.ɵɵelement(1, "i", 98);
352
352
  i0.ɵɵtext(2, " Exposed as Action ");
353
353
  i0.ɵɵelementEnd();
354
354
  } }
355
- function AgentConfigurationComponent_Conditional_20_Conditional_19_Template(rf, ctx) { if (rf & 1) {
356
- i0.ɵɵelementStart(0, "div", 83)(1, "h4", 86);
357
- i0.ɵɵelement(2, "i", 98);
355
+ function AgentConfigurationComponent_Conditional_21_Conditional_19_Template(rf, ctx) { if (rf & 1) {
356
+ i0.ɵɵelementStart(0, "div", 84)(1, "h4", 87);
357
+ i0.ɵɵelement(2, "i", 99);
358
358
  i0.ɵɵtext(3, " Description ");
359
359
  i0.ɵɵelementEnd();
360
- i0.ɵɵelementStart(4, "p", 99);
360
+ i0.ɵɵelementStart(4, "p", 100);
361
361
  i0.ɵɵtext(5);
362
362
  i0.ɵɵelementEnd()();
363
363
  } if (rf & 2) {
@@ -365,11 +365,11 @@ function AgentConfigurationComponent_Conditional_20_Conditional_19_Template(rf,
365
365
  i0.ɵɵadvance(5);
366
366
  i0.ɵɵtextInterpolate(ctx_r1.selectedAgent.Description);
367
367
  } }
368
- function AgentConfigurationComponent_Conditional_20_Conditional_31_Template(rf, ctx) { if (rf & 1) {
369
- i0.ɵɵelementStart(0, "div", 89)(1, "span", 90);
368
+ function AgentConfigurationComponent_Conditional_21_Conditional_31_Template(rf, ctx) { if (rf & 1) {
369
+ i0.ɵɵelementStart(0, "div", 90)(1, "span", 91);
370
370
  i0.ɵɵtext(2, "Parent Agent");
371
371
  i0.ɵɵelementEnd();
372
- i0.ɵɵelementStart(3, "span", 91);
372
+ i0.ɵɵelementStart(3, "span", 92);
373
373
  i0.ɵɵtext(4);
374
374
  i0.ɵɵelementEnd()();
375
375
  } if (rf & 2) {
@@ -377,105 +377,105 @@ function AgentConfigurationComponent_Conditional_20_Conditional_31_Template(rf,
377
377
  i0.ɵɵadvance(4);
378
378
  i0.ɵɵtextInterpolate(ctx_r1.getParentAgentName(ctx_r1.selectedAgent));
379
379
  } }
380
- function AgentConfigurationComponent_Conditional_20_Conditional_36_Template(rf, ctx) { if (rf & 1) {
381
- i0.ɵɵelement(0, "i", 100);
380
+ function AgentConfigurationComponent_Conditional_21_Conditional_36_Template(rf, ctx) { if (rf & 1) {
381
+ i0.ɵɵelement(0, "i", 101);
382
382
  i0.ɵɵtext(1, " Enabled ");
383
383
  } }
384
- function AgentConfigurationComponent_Conditional_20_Conditional_37_Template(rf, ctx) { if (rf & 1) {
385
- i0.ɵɵelement(0, "i", 101);
384
+ function AgentConfigurationComponent_Conditional_21_Conditional_37_Template(rf, ctx) { if (rf & 1) {
385
+ i0.ɵɵelement(0, "i", 102);
386
386
  i0.ɵɵtext(1, " Disabled ");
387
387
  } }
388
- function AgentConfigurationComponent_Conditional_20_Conditional_42_Template(rf, ctx) { if (rf & 1) {
389
- i0.ɵɵelement(0, "i", 100);
388
+ function AgentConfigurationComponent_Conditional_21_Conditional_42_Template(rf, ctx) { if (rf & 1) {
389
+ i0.ɵɵelement(0, "i", 101);
390
390
  i0.ɵɵtext(1, " Yes ");
391
391
  } }
392
- function AgentConfigurationComponent_Conditional_20_Conditional_43_Template(rf, ctx) { if (rf & 1) {
393
- i0.ɵɵelement(0, "i", 101);
392
+ function AgentConfigurationComponent_Conditional_21_Conditional_43_Template(rf, ctx) { if (rf & 1) {
393
+ i0.ɵɵelement(0, "i", 102);
394
394
  i0.ɵɵtext(1, " No ");
395
395
  } }
396
- function AgentConfigurationComponent_Conditional_20_Conditional_67_Template(rf, ctx) { if (rf & 1) {
396
+ function AgentConfigurationComponent_Conditional_21_Conditional_67_Template(rf, ctx) { if (rf & 1) {
397
397
  const _r14 = i0.ɵɵgetCurrentView();
398
- i0.ɵɵelementStart(0, "button", 102);
399
- i0.ɵɵlistener("click", function AgentConfigurationComponent_Conditional_20_Conditional_67_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.runAgent(ctx_r1.selectedAgent)); });
400
- i0.ɵɵelement(1, "i", 56);
398
+ i0.ɵɵelementStart(0, "button", 103);
399
+ i0.ɵɵlistener("click", function AgentConfigurationComponent_Conditional_21_Conditional_67_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.runAgent(ctx_r1.selectedAgent)); });
400
+ i0.ɵɵelement(1, "i", 57);
401
401
  i0.ɵɵtext(2, " Run Agent ");
402
402
  i0.ɵɵelementEnd();
403
403
  } }
404
- function AgentConfigurationComponent_Conditional_20_Template(rf, ctx) { if (rf & 1) {
404
+ function AgentConfigurationComponent_Conditional_21_Template(rf, ctx) { if (rf & 1) {
405
405
  const _r13 = i0.ɵɵgetCurrentView();
406
- i0.ɵɵelementStart(0, "div", 74)(1, "div", 75)(2, "div", 76);
407
- i0.ɵɵconditionalCreate(3, AgentConfigurationComponent_Conditional_20_Conditional_3_Template, 1, 2, "img", 77)(4, AgentConfigurationComponent_Conditional_20_Conditional_4_Template, 1, 2, "i", 30);
406
+ i0.ɵɵelementStart(0, "div", 75)(1, "div", 76)(2, "div", 77);
407
+ i0.ɵɵconditionalCreate(3, AgentConfigurationComponent_Conditional_21_Conditional_3_Template, 1, 2, "img", 78)(4, AgentConfigurationComponent_Conditional_21_Conditional_4_Template, 1, 2, "i", 31);
408
408
  i0.ɵɵelementEnd();
409
- i0.ɵɵelementStart(5, "div", 78)(6, "h3");
409
+ i0.ɵɵelementStart(5, "div", 79)(6, "h3");
410
410
  i0.ɵɵtext(7);
411
411
  i0.ɵɵelementEnd();
412
- i0.ɵɵelementStart(8, "span", 79);
412
+ i0.ɵɵelementStart(8, "span", 80);
413
413
  i0.ɵɵtext(9);
414
414
  i0.ɵɵelementEnd()()();
415
- i0.ɵɵelementStart(10, "button", 80);
416
- i0.ɵɵlistener("click", function AgentConfigurationComponent_Conditional_20_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeDetailPanel()); });
417
- i0.ɵɵelement(11, "i", 81);
415
+ i0.ɵɵelementStart(10, "button", 81);
416
+ i0.ɵɵlistener("click", function AgentConfigurationComponent_Conditional_21_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeDetailPanel()); });
417
+ i0.ɵɵelement(11, "i", 82);
418
418
  i0.ɵɵelementEnd()();
419
- i0.ɵɵelementStart(12, "div", 82)(13, "div", 83)(14, "div", 84)(15, "span", 67);
420
- i0.ɵɵelement(16, "i", 46);
419
+ i0.ɵɵelementStart(12, "div", 83)(13, "div", 84)(14, "div", 85)(15, "span", 68);
420
+ i0.ɵɵelement(16, "i", 47);
421
421
  i0.ɵɵtext(17);
422
422
  i0.ɵɵelementEnd();
423
- i0.ɵɵconditionalCreate(18, AgentConfigurationComponent_Conditional_20_Conditional_18_Template, 3, 0, "span", 85);
423
+ i0.ɵɵconditionalCreate(18, AgentConfigurationComponent_Conditional_21_Conditional_18_Template, 3, 0, "span", 86);
424
424
  i0.ɵɵelementEnd()();
425
- i0.ɵɵconditionalCreate(19, AgentConfigurationComponent_Conditional_20_Conditional_19_Template, 6, 1, "div", 83);
426
- i0.ɵɵelementStart(20, "div", 83)(21, "h4", 86);
427
- i0.ɵɵelement(22, "i", 87);
425
+ i0.ɵɵconditionalCreate(19, AgentConfigurationComponent_Conditional_21_Conditional_19_Template, 6, 1, "div", 84);
426
+ i0.ɵɵelementStart(20, "div", 84)(21, "h4", 87);
427
+ i0.ɵɵelement(22, "i", 88);
428
428
  i0.ɵɵtext(23, " Configuration ");
429
429
  i0.ɵɵelementEnd();
430
- i0.ɵɵelementStart(24, "div", 88)(25, "div", 89)(26, "span", 90);
430
+ i0.ɵɵelementStart(24, "div", 89)(25, "div", 90)(26, "span", 91);
431
431
  i0.ɵɵtext(27, "Execution Mode");
432
432
  i0.ɵɵelementEnd();
433
- i0.ɵɵelementStart(28, "span", 91);
433
+ i0.ɵɵelementStart(28, "span", 92);
434
434
  i0.ɵɵelement(29, "i");
435
435
  i0.ɵɵtext(30);
436
436
  i0.ɵɵelementEnd()();
437
- i0.ɵɵconditionalCreate(31, AgentConfigurationComponent_Conditional_20_Conditional_31_Template, 5, 1, "div", 89);
438
- i0.ɵɵelementStart(32, "div", 89)(33, "span", 90);
437
+ i0.ɵɵconditionalCreate(31, AgentConfigurationComponent_Conditional_21_Conditional_31_Template, 5, 1, "div", 90);
438
+ i0.ɵɵelementStart(32, "div", 90)(33, "span", 91);
439
439
  i0.ɵɵtext(34, "Context Compression");
440
440
  i0.ɵɵelementEnd();
441
- i0.ɵɵelementStart(35, "span", 91);
442
- i0.ɵɵconditionalCreate(36, AgentConfigurationComponent_Conditional_20_Conditional_36_Template, 2, 0)(37, AgentConfigurationComponent_Conditional_20_Conditional_37_Template, 2, 0);
441
+ i0.ɵɵelementStart(35, "span", 92);
442
+ i0.ɵɵconditionalCreate(36, AgentConfigurationComponent_Conditional_21_Conditional_36_Template, 2, 0)(37, AgentConfigurationComponent_Conditional_21_Conditional_37_Template, 2, 0);
443
443
  i0.ɵɵelementEnd()();
444
- i0.ɵɵelementStart(38, "div", 89)(39, "span", 90);
444
+ i0.ɵɵelementStart(38, "div", 90)(39, "span", 91);
445
445
  i0.ɵɵtext(40, "Exposed as Action");
446
446
  i0.ɵɵelementEnd();
447
- i0.ɵɵelementStart(41, "span", 91);
448
- i0.ɵɵconditionalCreate(42, AgentConfigurationComponent_Conditional_20_Conditional_42_Template, 2, 0)(43, AgentConfigurationComponent_Conditional_20_Conditional_43_Template, 2, 0);
447
+ i0.ɵɵelementStart(41, "span", 92);
448
+ i0.ɵɵconditionalCreate(42, AgentConfigurationComponent_Conditional_21_Conditional_42_Template, 2, 0)(43, AgentConfigurationComponent_Conditional_21_Conditional_43_Template, 2, 0);
449
449
  i0.ɵɵelementEnd()();
450
- i0.ɵɵelementStart(44, "div", 89)(45, "span", 90);
450
+ i0.ɵɵelementStart(44, "div", 90)(45, "span", 91);
451
451
  i0.ɵɵtext(46, "Model Selection");
452
452
  i0.ɵɵelementEnd();
453
- i0.ɵɵelementStart(47, "span", 91);
453
+ i0.ɵɵelementStart(47, "span", 92);
454
454
  i0.ɵɵtext(48);
455
455
  i0.ɵɵelementEnd()()()();
456
- i0.ɵɵelementStart(49, "div", 83)(50, "h4", 86);
457
- i0.ɵɵelement(51, "i", 92);
456
+ i0.ɵɵelementStart(49, "div", 84)(50, "h4", 87);
457
+ i0.ɵɵelement(51, "i", 93);
458
458
  i0.ɵɵtext(52, " Timestamps ");
459
459
  i0.ɵɵelementEnd();
460
- i0.ɵɵelementStart(53, "div", 88)(54, "div", 89)(55, "span", 90);
460
+ i0.ɵɵelementStart(53, "div", 89)(54, "div", 90)(55, "span", 91);
461
461
  i0.ɵɵtext(56, "Created");
462
462
  i0.ɵɵelementEnd();
463
- i0.ɵɵelementStart(57, "span", 91);
463
+ i0.ɵɵelementStart(57, "span", 92);
464
464
  i0.ɵɵtext(58);
465
465
  i0.ɵɵpipe(59, "date");
466
466
  i0.ɵɵelementEnd()();
467
- i0.ɵɵelementStart(60, "div", 89)(61, "span", 90);
467
+ i0.ɵɵelementStart(60, "div", 90)(61, "span", 91);
468
468
  i0.ɵɵtext(62, "Updated");
469
469
  i0.ɵɵelementEnd();
470
- i0.ɵɵelementStart(63, "span", 91);
470
+ i0.ɵɵelementStart(63, "span", 92);
471
471
  i0.ɵɵtext(64);
472
472
  i0.ɵɵpipe(65, "date");
473
473
  i0.ɵɵelementEnd()()()()();
474
- i0.ɵɵelementStart(66, "div", 93);
475
- i0.ɵɵconditionalCreate(67, AgentConfigurationComponent_Conditional_20_Conditional_67_Template, 3, 0, "button", 94);
476
- i0.ɵɵelementStart(68, "button", 95);
477
- i0.ɵɵlistener("click", function AgentConfigurationComponent_Conditional_20_Template_button_click_68_listener() { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.openAgentFromPanel()); });
478
- i0.ɵɵelement(69, "i", 96);
474
+ i0.ɵɵelementStart(66, "div", 94);
475
+ i0.ɵɵconditionalCreate(67, AgentConfigurationComponent_Conditional_21_Conditional_67_Template, 3, 0, "button", 95);
476
+ i0.ɵɵelementStart(68, "button", 96);
477
+ i0.ɵɵlistener("click", function AgentConfigurationComponent_Conditional_21_Template_button_click_68_listener() { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.openAgentFromPanel()); });
478
+ i0.ɵɵelement(69, "i", 97);
479
479
  i0.ɵɵtext(70, " Open Full Record ");
480
480
  i0.ɵɵelementEnd()();
481
481
  } if (rf & 2) {
@@ -1282,40 +1282,43 @@ let AgentConfigurationComponent = class AgentConfigurationComponent extends Base
1282
1282
  return 'fa-solid fa-robot';
1283
1283
  }
1284
1284
  static ɵfac = function AgentConfigurationComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || AgentConfigurationComponent)(i0.ɵɵdirectiveInject(i1.AITestHarnessDialogService), i0.ɵɵdirectiveInject(i2.CreateAgentService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
1285
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AgentConfigurationComponent, selectors: [["app-agent-configuration"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 21, vars: 20, consts: [["Title", "Agents", "Icon", "fa-solid fa-robot"], ["meta", ""], ["Label", "agents", 3, "Count", "Total"], ["actions", ""], [3, "ClearAllRequested", "ActiveCount", "ShowClearAll"], [3, "ValuesChange", "Reset", "Fields", "Values"], ["Label", "Category", "Icon", "fa-solid fa-folder-tree"], ["SelectionMode", "single", "SelectableTypes", "branch", "Placeholder", "All Categories", 3, "ValueChange", "BranchConfig", "Value", "Clearable", "EnableSearch"], [3, "KeyChange", "Options", "ActiveKey"], ["mjButton", "", "variant", "primary", "size", "sm", "title", "Create New Agent", 3, "click"], [1, "fa-solid", "fa-plus"], ["toolbar", ""], ["Placeholder", "Search agents...", 3, "ValueChange", "Value"], [3, "Flex"], [1, "loading-container"], [1, "detail-panel-overlay"], [1, "detail-panel"], ["text", "Loading agents...", "size", "large"], [1, "empty-state"], [1, "fa-solid", "fa-robot"], ["type", "button", 1, "empty-state-btn", 3, "click"], [1, "agents-grid"], [1, "agents-tree"], [1, "agents-list"], [1, "agent-card", 3, "expanded"], [1, "agent-card"], [1, "card-header", 3, "click"], [1, "agent-info"], [1, "agent-icon"], [1, "agent-logo", 3, "src", "alt"], [3, "class"], [1, "agent-details"], [1, "agent-name", 3, "innerHTML"], [1, "agent-meta"], [1, "meta-item", "type-badge"], [1, "fa-solid", "fa-tag"], [1, "meta-item", 3, "class"], [1, "fa-solid", "fa-chevron-down", "expand-icon"], [1, "card-body"], [1, "agent-description", 3, "innerHTML"], [1, "agent-description", "text-muted"], [1, "expanded-content"], [1, "card-actions"], ["type", "button", "title", "View Details", 1, "action-btn"], ["type", "button", "title", "Run Agent", 1, "action-btn", "action-btn-primary"], [1, "meta-item"], [1, "fa-solid", "fa-circle", 2, "font-size", "8px"], [1, "agent-stats"], [1, "stat-item"], [1, "stat-label"], [1, "stat-value"], [1, "fa-solid", "fa-check", 2, "color", "#28a745"], [1, "fa-solid", "fa-times", 2, "color", "#dc3545"], ["type", "button", "title", "View Details", 1, "action-btn", 3, "click"], [1, "fa-solid", "fa-eye"], ["type", "button", "title", "Run Agent", 1, "action-btn", "action-btn-primary", 3, "click"], [1, "fa-solid", "fa-play"], [3, "AfterNodeClick", "AfterNodeDoubleClick", "BranchConfig", "LeafConfig", "SelectionMode", "SelectableTypes", "ShowDescriptions", "ShowBadges", "ShowExpandCollapseAll", "EmptyMessage", "EmptyIcon"], [1, "agents-table"], [3, "click"], [1, "sort-header"], [1, "fa-solid", "fa-chevron-up", "sort-icon"], [1, "agent-name-cell"], [1, "agent-icon-small"], [1, "agent-logo-small", 3, "src", "alt"], [1, "agent-description-small", 3, "innerHTML"], [1, "type-badge"], [1, "status-badge"], [1, "table-actions"], ["type", "button", "title", "View Details", 1, "action-btn-small"], ["type", "button", "title", "Run Agent", 1, "action-btn-small", "primary"], ["type", "button", "title", "View Details", 1, "action-btn-small", 3, "click"], ["type", "button", "title", "Run Agent", 1, "action-btn-small", "primary", 3, "click"], [1, "detail-panel-overlay", 3, "click"], [1, "detail-panel-header"], [1, "detail-panel-title"], [1, "detail-icon"], [1, "detail-logo", 3, "src", "alt"], [1, "detail-title-info"], [1, "detail-subtitle"], [1, "detail-panel-close", 3, "click"], [1, "fa-solid", "fa-times"], [1, "detail-panel-content"], [1, "detail-section"], [1, "detail-badges"], [1, "feature-badge"], [1, "detail-section-title"], [1, "fa-solid", "fa-cog"], [1, "detail-grid"], [1, "detail-item"], [1, "detail-label"], [1, "detail-value"], [1, "fa-solid", "fa-clock"], [1, "detail-panel-actions"], ["type", "button", 1, "detail-action-btn", "secondary"], ["type", "button", 1, "detail-action-btn", "primary", 3, "click"], [1, "fa-solid", "fa-external-link-alt"], [1, "fa-solid", "fa-bolt"], [1, "fa-solid", "fa-align-left"], [1, "detail-description"], [1, "fa-solid", "fa-check", 2, "color", "#10b981"], [1, "fa-solid", "fa-times", 2, "color", "#ef4444"], ["type", "button", 1, "detail-action-btn", "secondary", 3, "click"]], template: function AgentConfigurationComponent_Template(rf, ctx) { if (rf & 1) {
1285
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AgentConfigurationComponent, selectors: [["app-agent-configuration"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 22, vars: 20, consts: [["Title", "Agents", "Icon", "fa-solid fa-robot"], ["meta", ""], ["Label", "agents", 3, "Count", "Total"], ["actions", ""], ["mjButton", "", "variant", "primary", "size", "sm", "title", "Create New Agent", 3, "click"], [1, "fa-solid", "fa-plus"], [1, "action-btn-label"], ["toolbar", ""], ["Placeholder", "Search agents...", 3, "ValueChange", "Value"], [3, "ClearAllRequested", "ActiveCount", "ShowClearAll"], [3, "ValuesChange", "Reset", "Fields", "Values"], ["Label", "Category", "Icon", "fa-solid fa-folder-tree"], ["SelectionMode", "single", "SelectableTypes", "branch", "Placeholder", "All Categories", 3, "ValueChange", "BranchConfig", "Value", "Clearable", "EnableSearch"], [3, "KeyChange", "Options", "ActiveKey"], [3, "Flex"], [1, "loading-container"], [1, "detail-panel-overlay"], [1, "detail-panel"], ["text", "Loading agents...", "size", "large"], [1, "empty-state"], [1, "fa-solid", "fa-robot"], ["type", "button", 1, "empty-state-btn", 3, "click"], [1, "agents-grid"], [1, "agents-tree"], [1, "agents-list"], [1, "agent-card", 3, "expanded"], [1, "agent-card"], [1, "card-header", 3, "click"], [1, "agent-info"], [1, "agent-icon"], [1, "agent-logo", 3, "src", "alt"], [3, "class"], [1, "agent-details"], [1, "agent-name", 3, "innerHTML"], [1, "agent-meta"], [1, "meta-item", "type-badge"], [1, "fa-solid", "fa-tag"], [1, "meta-item", 3, "class"], [1, "fa-solid", "fa-chevron-down", "expand-icon"], [1, "card-body"], [1, "agent-description", 3, "innerHTML"], [1, "agent-description", "text-muted"], [1, "expanded-content"], [1, "card-actions"], ["type", "button", "title", "View Details", 1, "action-btn"], ["type", "button", "title", "Run Agent", 1, "action-btn", "action-btn-primary"], [1, "meta-item"], [1, "fa-solid", "fa-circle", 2, "font-size", "8px"], [1, "agent-stats"], [1, "stat-item"], [1, "stat-label"], [1, "stat-value"], [1, "fa-solid", "fa-check", 2, "color", "#28a745"], [1, "fa-solid", "fa-times", 2, "color", "#dc3545"], ["type", "button", "title", "View Details", 1, "action-btn", 3, "click"], [1, "fa-solid", "fa-eye"], ["type", "button", "title", "Run Agent", 1, "action-btn", "action-btn-primary", 3, "click"], [1, "fa-solid", "fa-play"], [3, "AfterNodeClick", "AfterNodeDoubleClick", "BranchConfig", "LeafConfig", "SelectionMode", "SelectableTypes", "ShowDescriptions", "ShowBadges", "ShowExpandCollapseAll", "EmptyMessage", "EmptyIcon"], [1, "agents-table"], [3, "click"], [1, "sort-header"], [1, "fa-solid", "fa-chevron-up", "sort-icon"], [1, "agent-name-cell"], [1, "agent-icon-small"], [1, "agent-logo-small", 3, "src", "alt"], [1, "agent-description-small", 3, "innerHTML"], [1, "type-badge"], [1, "status-badge"], [1, "table-actions"], ["type", "button", "title", "View Details", 1, "action-btn-small"], ["type", "button", "title", "Run Agent", 1, "action-btn-small", "primary"], ["type", "button", "title", "View Details", 1, "action-btn-small", 3, "click"], ["type", "button", "title", "Run Agent", 1, "action-btn-small", "primary", 3, "click"], [1, "detail-panel-overlay", 3, "click"], [1, "detail-panel-header"], [1, "detail-panel-title"], [1, "detail-icon"], [1, "detail-logo", 3, "src", "alt"], [1, "detail-title-info"], [1, "detail-subtitle"], [1, "detail-panel-close", 3, "click"], [1, "fa-solid", "fa-times"], [1, "detail-panel-content"], [1, "detail-section"], [1, "detail-badges"], [1, "feature-badge"], [1, "detail-section-title"], [1, "fa-solid", "fa-cog"], [1, "detail-grid"], [1, "detail-item"], [1, "detail-label"], [1, "detail-value"], [1, "fa-solid", "fa-clock"], [1, "detail-panel-actions"], ["type", "button", 1, "detail-action-btn", "secondary"], ["type", "button", 1, "detail-action-btn", "primary", 3, "click"], [1, "fa-solid", "fa-external-link-alt"], [1, "fa-solid", "fa-bolt"], [1, "fa-solid", "fa-align-left"], [1, "detail-description"], [1, "fa-solid", "fa-check", 2, "color", "#10b981"], [1, "fa-solid", "fa-times", 2, "color", "#ef4444"], ["type", "button", 1, "detail-action-btn", "secondary", 3, "click"]], template: function AgentConfigurationComponent_Template(rf, ctx) { if (rf & 1) {
1286
1286
  i0.ɵɵelementStart(0, "mj-page-layout")(1, "mj-page-header", 0)(2, "div", 1);
1287
1287
  i0.ɵɵelement(3, "mj-stat-badge", 2);
1288
1288
  i0.ɵɵelementEnd();
1289
- i0.ɵɵelementStart(4, "div", 3)(5, "mj-filter-popover", 4);
1290
- i0.ɵɵlistener("ClearAllRequested", function AgentConfigurationComponent_Template_mj_filter_popover_ClearAllRequested_5_listener() { return ctx.onResetFilters(); });
1291
- i0.ɵɵelementStart(6, "mj-filter-panel", 5);
1292
- i0.ɵɵlistener("ValuesChange", function AgentConfigurationComponent_Template_mj_filter_panel_ValuesChange_6_listener($event) { return ctx.onFilterValuesChange($event); })("Reset", function AgentConfigurationComponent_Template_mj_filter_panel_Reset_6_listener() { return ctx.onResetFilters(); });
1293
- i0.ɵɵelementStart(7, "mj-filter-field", 6)(8, "mj-tree-dropdown", 7);
1294
- i0.ɵɵlistener("ValueChange", function AgentConfigurationComponent_Template_mj_tree_dropdown_ValueChange_8_listener($event) { return ctx.onCategoryChange($event); });
1295
- i0.ɵɵelementEnd()()()();
1296
- i0.ɵɵelementStart(9, "mj-view-toggle", 8);
1297
- i0.ɵɵlistener("KeyChange", function AgentConfigurationComponent_Template_mj_view_toggle_KeyChange_9_listener($event) { return ctx.setViewMode($event); });
1289
+ i0.ɵɵelementStart(4, "div", 3)(5, "button", 4);
1290
+ i0.ɵɵlistener("click", function AgentConfigurationComponent_Template_button_click_5_listener() { return ctx.createNewAgent(); });
1291
+ i0.ɵɵelement(6, "i", 5);
1292
+ i0.ɵɵelementStart(7, "span", 6);
1293
+ i0.ɵɵtext(8, "New Agent");
1294
+ i0.ɵɵelementEnd()()();
1295
+ i0.ɵɵelementStart(9, "div", 7)(10, "mj-page-search", 8);
1296
+ i0.ɵɵlistener("ValueChange", function AgentConfigurationComponent_Template_mj_page_search_ValueChange_10_listener($event) { return ctx.onSearchTermChange($event); });
1298
1297
  i0.ɵɵelementEnd();
1299
- i0.ɵɵelementStart(10, "button", 9);
1300
- i0.ɵɵlistener("click", function AgentConfigurationComponent_Template_button_click_10_listener() { return ctx.createNewAgent(); });
1301
- i0.ɵɵelement(11, "i", 10);
1302
- i0.ɵɵtext(12, " New Agent ");
1303
- i0.ɵɵelementEnd()();
1304
- i0.ɵɵelementStart(13, "div", 11)(14, "mj-page-search", 12);
1305
- i0.ɵɵlistener("ValueChange", function AgentConfigurationComponent_Template_mj_page_search_ValueChange_14_listener($event) { return ctx.onSearchTermChange($event); });
1298
+ i0.ɵɵelementStart(11, "mj-filter-popover", 9);
1299
+ i0.ɵɵlistener("ClearAllRequested", function AgentConfigurationComponent_Template_mj_filter_popover_ClearAllRequested_11_listener() { return ctx.onResetFilters(); });
1300
+ i0.ɵɵelementStart(12, "mj-filter-panel", 10);
1301
+ i0.ɵɵlistener("ValuesChange", function AgentConfigurationComponent_Template_mj_filter_panel_ValuesChange_12_listener($event) { return ctx.onFilterValuesChange($event); })("Reset", function AgentConfigurationComponent_Template_mj_filter_panel_Reset_12_listener() { return ctx.onResetFilters(); });
1302
+ i0.ɵɵelementStart(13, "mj-filter-field", 11)(14, "mj-tree-dropdown", 12);
1303
+ i0.ɵɵlistener("ValueChange", function AgentConfigurationComponent_Template_mj_tree_dropdown_ValueChange_14_listener($event) { return ctx.onCategoryChange($event); });
1304
+ i0.ɵɵelementEnd()()()();
1305
+ i0.ɵɵelementStart(15, "mj-view-toggle", 13);
1306
+ i0.ɵɵlistener("KeyChange", function AgentConfigurationComponent_Template_mj_view_toggle_KeyChange_15_listener($event) { return ctx.setViewMode($event); });
1306
1307
  i0.ɵɵelementEnd()()();
1307
- i0.ɵɵelementStart(15, "mj-page-body", 13);
1308
- i0.ɵɵconditionalCreate(16, AgentConfigurationComponent_Conditional_16_Template, 2, 0, "div", 14);
1309
- i0.ɵɵconditionalCreate(17, AgentConfigurationComponent_Conditional_17_Template, 2, 1);
1308
+ i0.ɵɵelementStart(16, "mj-page-body", 14);
1309
+ i0.ɵɵconditionalCreate(17, AgentConfigurationComponent_Conditional_17_Template, 2, 0, "div", 15);
1310
+ i0.ɵɵconditionalCreate(18, AgentConfigurationComponent_Conditional_18_Template, 2, 1);
1310
1311
  i0.ɵɵelementEnd();
1311
- i0.ɵɵconditionalCreate(18, AgentConfigurationComponent_Conditional_18_Template, 1, 0, "div", 15);
1312
- i0.ɵɵelementStart(19, "div", 16);
1313
- i0.ɵɵconditionalCreate(20, AgentConfigurationComponent_Conditional_20_Template, 71, 26);
1312
+ i0.ɵɵconditionalCreate(19, AgentConfigurationComponent_Conditional_19_Template, 1, 0, "div", 16);
1313
+ i0.ɵɵelementStart(20, "div", 17);
1314
+ i0.ɵɵconditionalCreate(21, AgentConfigurationComponent_Conditional_21_Template, 71, 26);
1314
1315
  i0.ɵɵelementEnd()();
1315
1316
  } if (rf & 2) {
1316
1317
  i0.ɵɵadvance(3);
1317
1318
  i0.ɵɵproperty("Count", ctx.filteredAgents.length)("Total", ctx.agents.length);
1318
- i0.ɵɵadvance(2);
1319
+ i0.ɵɵadvance(7);
1320
+ i0.ɵɵproperty("Value", ctx.currentFilters.searchTerm);
1321
+ i0.ɵɵadvance();
1319
1322
  i0.ɵɵproperty("ActiveCount", ctx.ActiveFilterCount)("ShowClearAll", ctx.ActiveFilterCount > 0);
1320
1323
  i0.ɵɵadvance();
1321
1324
  i0.ɵɵproperty("Fields", ctx.agentFilterFields)("Values", ctx.currentFilters);
@@ -1323,21 +1326,19 @@ let AgentConfigurationComponent = class AgentConfigurationComponent extends Base
1323
1326
  i0.ɵɵproperty("BranchConfig", ctx.CategoryBranchConfig)("Value", ctx.SelectedCategoryKey)("Clearable", true)("EnableSearch", true);
1324
1327
  i0.ɵɵadvance();
1325
1328
  i0.ɵɵproperty("Options", ctx.agentViewOptions)("ActiveKey", ctx.viewMode);
1326
- i0.ɵɵadvance(5);
1327
- i0.ɵɵproperty("Value", ctx.currentFilters.searchTerm);
1328
1329
  i0.ɵɵadvance();
1329
1330
  i0.ɵɵproperty("Flex", true);
1330
1331
  i0.ɵɵadvance();
1331
- i0.ɵɵconditional(ctx.isLoading ? 16 : -1);
1332
+ i0.ɵɵconditional(ctx.isLoading ? 17 : -1);
1332
1333
  i0.ɵɵadvance();
1333
- i0.ɵɵconditional(!ctx.isLoading ? 17 : -1);
1334
+ i0.ɵɵconditional(!ctx.isLoading ? 18 : -1);
1334
1335
  i0.ɵɵadvance();
1335
- i0.ɵɵconditional(ctx.detailPanelVisible ? 18 : -1);
1336
+ i0.ɵɵconditional(ctx.detailPanelVisible ? 19 : -1);
1336
1337
  i0.ɵɵadvance();
1337
1338
  i0.ɵɵclassProp("visible", ctx.detailPanelVisible);
1338
1339
  i0.ɵɵadvance();
1339
- i0.ɵɵconditional(ctx.selectedAgent ? 20 : -1);
1340
- } }, dependencies: [i3.LoadingComponent, i4.TreeComponent, i4.TreeDropdownComponent, i5.MJButtonDirective, i5.MJPageHeaderComponent, i5.MJPageLayoutComponent, i5.MJPageBodyComponent, i5.MJFilterPopoverComponent, i5.MJPageSearchComponent, i5.MJFilterPanelComponent, i5.MJFilterFieldComponent, i5.MJViewToggleComponent, i5.MJStatBadgeComponent, i6.DatePipe, i7.HighlightSearchPipe], styles: ["\n\n\n\n\n\n\n\n\n\n\n\n\n[_nghost-%COMP%] mj-page-body[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n}\n\n\n\n\n.control-btn[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n padding: 10px 18px;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.control-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-border-strong);\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n}\n\n.control-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n.control-btn.primary[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary-hover);\n color: var(--mj-text-inverse);\n}\n\n.control-btn.primary[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary-hover);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 35%, transparent);\n}\n\n\n.main-splitter[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n}\n\n\n\nas-split[_ngcontent-%COMP%] {\n background: transparent;\n}\n\n\n\n\n\n\n\n\n\n.agents-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(400px, 1fr));\n gap: 24px;\n}\n\n.agent-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border-radius: 16px;\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -1px rgba(0, 0, 0, 0.03);\n border: 1px solid var(--mj-border-default);\n transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);\n overflow: hidden;\n position: relative;\n}\n\n.agent-card[_ngcontent-%COMP%]::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 4px;\n background: var(--mj-brand-primary);\n opacity: 0;\n transition: opacity 0.3s ease;\n}\n\n.agent-card[_ngcontent-%COMP%]:hover {\n box-shadow: 0 20px 40px -15px color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n transform: translateY(-4px);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-bg-surface));\n}\n\n.agent-card[_ngcontent-%COMP%]:hover::before {\n opacity: 1;\n}\n\n.agent-card.expanded[_ngcontent-%COMP%] {\n box-shadow: 0 25px 50px -12px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n border-color: var(--mj-brand-accent);\n}\n\n.agent-card.expanded[_ngcontent-%COMP%]::before {\n opacity: 1;\n}\n\n.card-header[_ngcontent-%COMP%] {\n padding: 24px;\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n cursor: pointer;\n user-select: none;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n transition: background-color 0.2s;\n}\n\n.card-header[_ngcontent-%COMP%]:hover {\n background-color: var(--mj-bg-surface-hover);\n}\n\n.agent-info[_ngcontent-%COMP%] {\n display: flex;\n gap: 18px;\n flex: 1;\n}\n\n.agent-icon[_ngcontent-%COMP%] {\n width: 56px;\n height: 56px;\n border-radius: 14px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n background: var(--mj-brand-primary);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.agent-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-inverse);\n font-size: 24px;\n}\n\n.agent-icon[_ngcontent-%COMP%] .agent-logo[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 14px;\n}\n\n.agent-details[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.agent-name[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 18px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin-bottom: 8px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.agent-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 14px;\n flex-wrap: wrap;\n}\n\n.meta-item[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n display: flex;\n align-items: center;\n gap: 6px;\n background: var(--mj-bg-surface-sunken);\n padding: 4px 10px;\n border-radius: 6px;\n}\n\n.meta-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-brand-primary);\n}\n\n.meta-item.status-active[_ngcontent-%COMP%] {\n color: var(--mj-color-success-700);\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n}\n\n.meta-item.status-active[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-color-success-700);\n}\n\n.meta-item.status-pending[_ngcontent-%COMP%] {\n color: var(--mj-color-warning-700);\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n}\n\n.meta-item.status-pending[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-color-warning-700);\n}\n\n.meta-item.status-disabled[_ngcontent-%COMP%], \n.meta-item.status-inactive[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n background: var(--mj-border-default);\n}\n\n.meta-item.status-disabled[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.meta-item.status-inactive[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n\n\n.type-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n border-radius: 6px;\n font-size: 12px;\n font-weight: 600;\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n color: var(--mj-brand-primary-hover);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-bg-surface));\n}\n\n.type-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-brand-primary);\n}\n\n\n\n.meta-item.type-badge[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n color: var(--mj-brand-primary-hover);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-bg-surface));\n}\n\n.meta-item.type-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.expand-icon[_ngcontent-%COMP%] {\n font-size: 16px;\n color: var(--mj-text-disabled);\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n padding: 8px;\n border-radius: 8px;\n}\n\n.expand-icon[_ngcontent-%COMP%]:hover {\n color: var(--mj-brand-primary);\n background: var(--mj-bg-surface-sunken);\n}\n\n.expand-icon.rotated[_ngcontent-%COMP%] {\n transform: rotate(180deg);\n color: var(--mj-brand-primary);\n}\n\n.card-body[_ngcontent-%COMP%] {\n padding: 0 24px 24px 24px;\n}\n\n.agent-description[_ngcontent-%COMP%] {\n margin: 18px 0 0 0;\n font-size: 14px;\n line-height: 1.7;\n color: var(--mj-text-muted);\n}\n\n.agent-description.text-muted[_ngcontent-%COMP%] {\n font-style: italic;\n color: var(--mj-text-disabled);\n}\n\n\n\n.expanded-content[_ngcontent-%COMP%] {\n margin-top: 20px;\n padding-top: 20px;\n border-top: 1px solid var(--mj-border-default);\n animation: _ngcontent-%COMP%_slideDown 0.35s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n@keyframes _ngcontent-%COMP%_slideDown {\n from {\n opacity: 0;\n transform: translateY(-12px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n.agent-stats[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));\n gap: 18px;\n}\n\n.stat-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n border: 1px solid var(--mj-border-default);\n}\n\n.stat-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.stat-value[_ngcontent-%COMP%] {\n font-size: 15px;\n color: var(--mj-text-primary);\n font-weight: 600;\n}\n\n\n\n.card-actions[_ngcontent-%COMP%] {\n padding: 18px 24px;\n background: var(--mj-bg-surface-card);\n border-top: 1px solid var(--mj-border-default);\n display: flex;\n gap: 12px;\n justify-content: flex-end;\n}\n\n.action-btn[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 2px solid var(--mj-border-default);\n padding: 10px 20px;\n border-radius: 10px;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.action-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n transform: translateY(-1px);\n}\n\n.action-btn-primary[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n border-color: transparent;\n color: var(--mj-text-inverse);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.action-btn-primary[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary-hover);\n transform: translateY(-2px);\n box-shadow: 0 6px 16px color-mix(in srgb, var(--mj-brand-primary) 40%, transparent);\n}\n\n\n\n.agents-list[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border-radius: 16px;\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05);\n border: 1px solid var(--mj-border-default);\n overflow: hidden;\n}\n\n.agents-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n}\n\n.agents-table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n}\n\n.agents-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n padding: 16px 20px;\n text-align: left;\n font-size: 12px;\n font-weight: 700;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n cursor: pointer;\n user-select: none;\n transition: all 0.2s ease;\n}\n\n.agents-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default);\n color: var(--mj-brand-primary);\n}\n\n.agents-table[_ngcontent-%COMP%] th.sorted[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n}\n\n.sort-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.sort-icon[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-disabled);\n transition: all 0.2s ease;\n}\n\n.agents-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%]:hover .sort-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.agents-table[_ngcontent-%COMP%] th.sorted[_ngcontent-%COMP%] .sort-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.agents-table[_ngcontent-%COMP%] th.sorted.desc[_ngcontent-%COMP%] .sort-icon[_ngcontent-%COMP%] {\n transform: rotate(180deg);\n}\n\n.agents-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] {\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n transition: background-color 0.2s;\n}\n\n.agents-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.agents-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.agents-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 18px 20px;\n font-size: 14px;\n color: var(--mj-text-secondary);\n}\n\n.agent-name-cell[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 14px;\n}\n\n.agent-icon-small[_ngcontent-%COMP%] {\n width: 42px;\n height: 42px;\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n background: var(--mj-brand-primary);\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n}\n\n.agent-icon-small[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-inverse);\n font-size: 18px;\n}\n\n.agent-icon-small[_ngcontent-%COMP%] .agent-logo-small[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 10px;\n}\n\n.agent-name-cell[_ngcontent-%COMP%] .agent-name[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-primary);\n margin-bottom: 0;\n white-space: normal;\n}\n\n.agent-description-small[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-top: 4px;\n line-height: 1.4;\n}\n\n.status-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border-radius: 20px;\n font-size: 12px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.status-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 8px;\n}\n\n.status-badge.status-active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-color-success-700);\n}\n\n.status-badge.status-pending[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-color-warning-700);\n}\n\n.status-badge.status-disabled[_ngcontent-%COMP%], \n.status-badge.status-inactive[_ngcontent-%COMP%] {\n background: var(--mj-border-default);\n color: var(--mj-text-secondary);\n}\n\n.status-badge.status-unknown[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n}\n\n.execution-mode[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n color: var(--mj-text-secondary);\n}\n\n.execution-mode[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.table-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 10px;\n}\n\n.action-btn-small[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 2px solid var(--mj-border-default);\n padding: 8px 12px;\n border-radius: 8px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.action-btn-small[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n}\n\n.action-btn-small.primary[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n border-color: transparent;\n color: var(--mj-text-inverse);\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n}\n\n.action-btn-small.primary[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary-hover);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 35%, transparent);\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 100px 32px;\n color: var(--mj-text-muted);\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 80px;\n background: color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-bg-surface));\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n background-clip: text;\n margin-bottom: 28px;\n display: block;\n}\n\n.empty-state[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n color: var(--mj-text-primary);\n font-size: 24px;\n font-weight: 700;\n margin: 0 0 12px 0;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 16px;\n line-height: 1.6;\n max-width: 420px;\n margin: 0 auto 32px;\n color: var(--mj-text-muted);\n}\n\n.empty-state-btn[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n padding: 14px 28px;\n border-radius: 12px;\n font-size: 15px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n display: inline-flex;\n align-items: center;\n gap: 10px;\n box-shadow: 0 4px 15px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.empty-state-btn[_ngcontent-%COMP%]:hover {\n transform: translateY(-2px);\n box-shadow: 0 8px 25px color-mix(in srgb, var(--mj-brand-primary) 40%, transparent);\n}\n\n\n\n.loading-container[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 400px;\n}\n\n\n\n@media (max-width: 768px) {\n .dashboard-header[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 16px;\n align-items: stretch;\n padding: 16px 20px;\n }\n\n .header-info[_ngcontent-%COMP%] {\n flex-wrap: wrap;\n justify-content: center;\n }\n\n .header-controls[_ngcontent-%COMP%] {\n justify-content: center;\n }\n\n .agents-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n gap: 16px;\n }\n\n .agent-stats[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .card-header[_ngcontent-%COMP%] {\n padding: 18px;\n }\n\n .card-body[_ngcontent-%COMP%] {\n padding: 0 18px 18px 18px;\n }\n\n .card-actions[_ngcontent-%COMP%] {\n padding: 14px 18px;\n flex-wrap: wrap;\n }\n}\n\n\n\n\n\n\n.detail-panel-overlay[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.4);\n backdrop-filter: blur(4px);\n z-index: 1000;\n animation: _ngcontent-%COMP%_fadeIn 0.25s ease-out;\n}\n\n@keyframes _ngcontent-%COMP%_fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n.detail-panel[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n right: -480px;\n width: 480px;\n height: 100vh;\n background: var(--mj-bg-surface);\n box-shadow: -8px 0 32px rgba(0, 0, 0, 0.15);\n z-index: 1001;\n display: flex;\n flex-direction: column;\n transition: right 0.35s cubic-bezier(0.4, 0, 0.2, 1);\n overflow: hidden;\n}\n\n.detail-panel.visible[_ngcontent-%COMP%] {\n right: 0;\n}\n\n\n\n.detail-panel-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 24px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.detail-panel-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.detail-icon[_ngcontent-%COMP%] {\n width: 56px;\n height: 56px;\n border-radius: 14px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n background: var(--mj-brand-primary);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.detail-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-inverse);\n font-size: 24px;\n}\n\n.detail-icon[_ngcontent-%COMP%] .detail-logo[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 14px;\n}\n\n.detail-title-info[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 4px 0;\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-primary);\n}\n\n.detail-subtitle[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n font-weight: 500;\n}\n\n.detail-panel-close[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n width: 40px;\n height: 40px;\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: var(--mj-text-muted);\n}\n\n.detail-panel-close[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-border-strong);\n color: var(--mj-text-primary);\n}\n\n\n\n.detail-panel-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 24px;\n}\n\n.detail-section[_ngcontent-%COMP%] {\n margin-bottom: 28px;\n}\n\n.detail-section[_ngcontent-%COMP%]:last-child {\n margin-bottom: 0;\n}\n\n.detail-badges[_ngcontent-%COMP%] {\n display: flex;\n gap: 10px;\n flex-wrap: wrap;\n}\n\n.feature-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border-radius: 20px;\n font-size: 12px;\n font-weight: 600;\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n color: var(--mj-brand-primary-hover);\n}\n\n.feature-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n}\n\n.detail-section-title[_ngcontent-%COMP%] {\n margin: 0 0 16px 0;\n font-size: 12px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.detail-section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 14px;\n}\n\n.detail-description[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n line-height: 1.7;\n color: var(--mj-text-secondary);\n}\n\n.detail-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 16px;\n}\n\n.detail-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n padding: 14px;\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n border: 1px solid var(--mj-border-default);\n}\n\n.detail-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.detail-value[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-primary);\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.detail-value[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 13px;\n}\n\n.detail-code-block[_ngcontent-%COMP%] {\n background: var(--mj-text-primary);\n color: var(--mj-border-default);\n padding: 16px;\n border-radius: 10px;\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n font-size: 13px;\n line-height: 1.6;\n overflow-x: auto;\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n\n\n.detail-panel-actions[_ngcontent-%COMP%] {\n padding: 20px 24px;\n background: var(--mj-bg-surface-card);\n border-top: 1px solid var(--mj-border-default);\n display: flex;\n gap: 12px;\n flex-shrink: 0;\n}\n\n.detail-action-btn[_ngcontent-%COMP%] {\n flex: 1;\n padding: 14px 20px;\n border-radius: 12px;\n font-size: 14px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n}\n\n.detail-action-btn.secondary[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 2px solid var(--mj-border-default);\n color: var(--mj-text-secondary);\n}\n\n.detail-action-btn.secondary[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n background: var(--mj-bg-surface-hover);\n}\n\n.detail-action-btn.primary[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n border: 2px solid transparent;\n color: var(--mj-text-inverse);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.detail-action-btn.primary[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary-hover);\n transform: translateY(-1px);\n box-shadow: 0 6px 16px color-mix(in srgb, var(--mj-brand-primary) 40%, transparent);\n}\n\n\n\n@media (max-width: 520px) {\n .detail-panel[_ngcontent-%COMP%] {\n width: 100%;\n right: -100%;\n }\n\n .detail-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n}\n\n\n\n[_nghost-%COMP%] .search-highlight, \n.search-highlight[_ngcontent-%COMP%] {\n background-color: color-mix(in srgb, var(--mj-status-warning) 40%, var(--mj-bg-surface));\n padding: 1px 2px;\n border-radius: 2px;\n font-weight: inherit;\n}\n\n\n\n\n\n\n.agents-tree[_ngcontent-%COMP%] {\n padding: 8px 16px;\n height: 100%;\n overflow: auto;\n}"] });
1340
+ i0.ɵɵconditional(ctx.selectedAgent ? 21 : -1);
1341
+ } }, dependencies: [i3.LoadingComponent, i4.TreeComponent, i4.TreeDropdownComponent, i5.MJButtonDirective, i5.MJPageHeaderComponent, i5.MJPageLayoutComponent, i5.MJPageBodyComponent, i5.MJFilterPopoverComponent, i5.MJPageSearchComponent, i5.MJFilterPanelComponent, i5.MJFilterFieldComponent, i5.MJViewToggleComponent, i5.MJStatBadgeComponent, i6.DatePipe, i7.HighlightSearchPipe], styles: ["\n\n\n\n\n\n\n\n\n\n\n\n\n[_nghost-%COMP%] mj-page-body[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n}\n\n\n\n\n.control-btn[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n padding: 10px 18px;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.control-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-border-strong);\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n}\n\n.control-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n.control-btn.primary[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary-hover);\n color: var(--mj-text-inverse);\n}\n\n.control-btn.primary[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary-hover);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 35%, transparent);\n}\n\n\n.main-splitter[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n}\n\n\n\nas-split[_ngcontent-%COMP%] {\n background: transparent;\n}\n\n\n\n\n\n\n\n\n\n.agents-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(400px, 1fr));\n gap: 24px;\n}\n\n.agent-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border-radius: 16px;\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -1px rgba(0, 0, 0, 0.03);\n border: 1px solid var(--mj-border-default);\n transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);\n overflow: hidden;\n position: relative;\n}\n\n.agent-card[_ngcontent-%COMP%]::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 4px;\n background: var(--mj-brand-primary);\n opacity: 0;\n transition: opacity 0.3s ease;\n}\n\n.agent-card[_ngcontent-%COMP%]:hover {\n box-shadow: 0 20px 40px -15px color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n transform: translateY(-4px);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-bg-surface));\n}\n\n.agent-card[_ngcontent-%COMP%]:hover::before {\n opacity: 1;\n}\n\n.agent-card.expanded[_ngcontent-%COMP%] {\n box-shadow: 0 25px 50px -12px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n border-color: var(--mj-brand-accent);\n}\n\n.agent-card.expanded[_ngcontent-%COMP%]::before {\n opacity: 1;\n}\n\n.card-header[_ngcontent-%COMP%] {\n padding: 24px;\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n cursor: pointer;\n user-select: none;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n transition: background-color 0.2s;\n}\n\n.card-header[_ngcontent-%COMP%]:hover {\n background-color: var(--mj-bg-surface-hover);\n}\n\n.agent-info[_ngcontent-%COMP%] {\n display: flex;\n gap: 18px;\n flex: 1;\n}\n\n.agent-icon[_ngcontent-%COMP%] {\n width: 56px;\n height: 56px;\n border-radius: 14px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n background: var(--mj-brand-primary);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.agent-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-inverse);\n font-size: 24px;\n}\n\n.agent-icon[_ngcontent-%COMP%] .agent-logo[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 14px;\n}\n\n.agent-details[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.agent-name[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 18px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin-bottom: 8px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.agent-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 14px;\n flex-wrap: wrap;\n}\n\n.meta-item[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n display: flex;\n align-items: center;\n gap: 6px;\n background: var(--mj-bg-surface-sunken);\n padding: 4px 10px;\n border-radius: 6px;\n}\n\n.meta-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-brand-primary);\n}\n\n.meta-item.status-active[_ngcontent-%COMP%] {\n color: var(--mj-color-success-700);\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n}\n\n.meta-item.status-active[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-color-success-700);\n}\n\n.meta-item.status-pending[_ngcontent-%COMP%] {\n color: var(--mj-color-warning-700);\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n}\n\n.meta-item.status-pending[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-color-warning-700);\n}\n\n.meta-item.status-disabled[_ngcontent-%COMP%], \n.meta-item.status-inactive[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n background: var(--mj-border-default);\n}\n\n.meta-item.status-disabled[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.meta-item.status-inactive[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n\n\n.type-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n border-radius: 6px;\n font-size: 12px;\n font-weight: 600;\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n color: var(--mj-brand-primary-hover);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-bg-surface));\n}\n\n.type-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-brand-primary);\n}\n\n\n\n.meta-item.type-badge[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n color: var(--mj-brand-primary-hover);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-bg-surface));\n}\n\n.meta-item.type-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.expand-icon[_ngcontent-%COMP%] {\n font-size: 16px;\n color: var(--mj-text-disabled);\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n padding: 8px;\n border-radius: 8px;\n}\n\n.expand-icon[_ngcontent-%COMP%]:hover {\n color: var(--mj-brand-primary);\n background: var(--mj-bg-surface-sunken);\n}\n\n.expand-icon.rotated[_ngcontent-%COMP%] {\n transform: rotate(180deg);\n color: var(--mj-brand-primary);\n}\n\n.card-body[_ngcontent-%COMP%] {\n padding: 0 24px 24px 24px;\n}\n\n.agent-description[_ngcontent-%COMP%] {\n margin: 18px 0 0 0;\n font-size: 14px;\n line-height: 1.7;\n color: var(--mj-text-muted);\n}\n\n.agent-description.text-muted[_ngcontent-%COMP%] {\n font-style: italic;\n color: var(--mj-text-disabled);\n}\n\n\n\n.expanded-content[_ngcontent-%COMP%] {\n margin-top: 20px;\n padding-top: 20px;\n border-top: 1px solid var(--mj-border-default);\n animation: _ngcontent-%COMP%_slideDown 0.35s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n@keyframes _ngcontent-%COMP%_slideDown {\n from {\n opacity: 0;\n transform: translateY(-12px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n.agent-stats[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));\n gap: 18px;\n}\n\n.stat-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n border: 1px solid var(--mj-border-default);\n}\n\n.stat-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.stat-value[_ngcontent-%COMP%] {\n font-size: 15px;\n color: var(--mj-text-primary);\n font-weight: 600;\n}\n\n\n\n.card-actions[_ngcontent-%COMP%] {\n padding: 18px 24px;\n background: var(--mj-bg-surface-card);\n border-top: 1px solid var(--mj-border-default);\n display: flex;\n gap: 12px;\n justify-content: flex-end;\n}\n\n.action-btn[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 2px solid var(--mj-border-default);\n padding: 10px 20px;\n border-radius: 10px;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.action-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n transform: translateY(-1px);\n}\n\n.action-btn-primary[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n border-color: transparent;\n color: var(--mj-text-inverse);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.action-btn-primary[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary-hover);\n transform: translateY(-2px);\n box-shadow: 0 6px 16px color-mix(in srgb, var(--mj-brand-primary) 40%, transparent);\n}\n\n\n\n.agents-list[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border-radius: 16px;\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05);\n border: 1px solid var(--mj-border-default);\n overflow: hidden;\n}\n\n.agents-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n}\n\n.agents-table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n}\n\n.agents-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n padding: 16px 20px;\n text-align: left;\n font-size: 12px;\n font-weight: 700;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n cursor: pointer;\n user-select: none;\n transition: all 0.2s ease;\n}\n\n.agents-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default);\n color: var(--mj-brand-primary);\n}\n\n.agents-table[_ngcontent-%COMP%] th.sorted[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n}\n\n.sort-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.sort-icon[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-disabled);\n transition: all 0.2s ease;\n}\n\n.agents-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%]:hover .sort-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.agents-table[_ngcontent-%COMP%] th.sorted[_ngcontent-%COMP%] .sort-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.agents-table[_ngcontent-%COMP%] th.sorted.desc[_ngcontent-%COMP%] .sort-icon[_ngcontent-%COMP%] {\n transform: rotate(180deg);\n}\n\n.agents-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] {\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n transition: background-color 0.2s;\n}\n\n.agents-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.agents-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.agents-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 18px 20px;\n font-size: 14px;\n color: var(--mj-text-secondary);\n}\n\n.agent-name-cell[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 14px;\n}\n\n.agent-icon-small[_ngcontent-%COMP%] {\n width: 42px;\n height: 42px;\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n background: var(--mj-brand-primary);\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n}\n\n.agent-icon-small[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-inverse);\n font-size: 18px;\n}\n\n.agent-icon-small[_ngcontent-%COMP%] .agent-logo-small[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 10px;\n}\n\n.agent-name-cell[_ngcontent-%COMP%] .agent-name[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-primary);\n margin-bottom: 0;\n white-space: normal;\n}\n\n.agent-description-small[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-top: 4px;\n line-height: 1.4;\n}\n\n.status-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border-radius: 20px;\n font-size: 12px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.status-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 8px;\n}\n\n.status-badge.status-active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-color-success-700);\n}\n\n.status-badge.status-pending[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-color-warning-700);\n}\n\n.status-badge.status-disabled[_ngcontent-%COMP%], \n.status-badge.status-inactive[_ngcontent-%COMP%] {\n background: var(--mj-border-default);\n color: var(--mj-text-secondary);\n}\n\n.status-badge.status-unknown[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n}\n\n.execution-mode[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n color: var(--mj-text-secondary);\n}\n\n.execution-mode[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.table-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 10px;\n}\n\n.action-btn-small[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 2px solid var(--mj-border-default);\n padding: 8px 12px;\n border-radius: 8px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.action-btn-small[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n}\n\n.action-btn-small.primary[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n border-color: transparent;\n color: var(--mj-text-inverse);\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n}\n\n.action-btn-small.primary[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary-hover);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 35%, transparent);\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 100px 32px;\n color: var(--mj-text-muted);\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 80px;\n background: color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-bg-surface));\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n background-clip: text;\n margin-bottom: 28px;\n display: block;\n}\n\n.empty-state[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n color: var(--mj-text-primary);\n font-size: 24px;\n font-weight: 700;\n margin: 0 0 12px 0;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 16px;\n line-height: 1.6;\n max-width: 420px;\n margin: 0 auto 32px;\n color: var(--mj-text-muted);\n}\n\n.empty-state-btn[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n padding: 14px 28px;\n border-radius: 12px;\n font-size: 15px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n display: inline-flex;\n align-items: center;\n gap: 10px;\n box-shadow: 0 4px 15px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.empty-state-btn[_ngcontent-%COMP%]:hover {\n transform: translateY(-2px);\n box-shadow: 0 8px 25px color-mix(in srgb, var(--mj-brand-primary) 40%, transparent);\n}\n\n\n\n.loading-container[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 400px;\n}\n\n\n\n@media (max-width: 768px) {\n \n\n\n .agents-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n gap: 16px;\n }\n\n .agent-stats[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .card-header[_ngcontent-%COMP%] {\n padding: 18px;\n }\n\n .card-body[_ngcontent-%COMP%] {\n padding: 0 18px 18px 18px;\n }\n\n .card-actions[_ngcontent-%COMP%] {\n padding: 14px 18px;\n flex-wrap: wrap;\n }\n}\n\n\n\n\n\n\n.detail-panel-overlay[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.4);\n backdrop-filter: blur(4px);\n z-index: 1000;\n animation: _ngcontent-%COMP%_fadeIn 0.25s ease-out;\n}\n\n@keyframes _ngcontent-%COMP%_fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n.detail-panel[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n right: -480px;\n width: 480px;\n height: 100vh;\n background: var(--mj-bg-surface);\n box-shadow: -8px 0 32px rgba(0, 0, 0, 0.15);\n z-index: 1001;\n display: flex;\n flex-direction: column;\n transition: right 0.35s cubic-bezier(0.4, 0, 0.2, 1);\n overflow: hidden;\n}\n\n.detail-panel.visible[_ngcontent-%COMP%] {\n right: 0;\n}\n\n\n\n.detail-panel-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 24px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.detail-panel-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.detail-icon[_ngcontent-%COMP%] {\n width: 56px;\n height: 56px;\n border-radius: 14px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n background: var(--mj-brand-primary);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.detail-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-inverse);\n font-size: 24px;\n}\n\n.detail-icon[_ngcontent-%COMP%] .detail-logo[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 14px;\n}\n\n.detail-title-info[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 4px 0;\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-primary);\n}\n\n.detail-subtitle[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n font-weight: 500;\n}\n\n.detail-panel-close[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n width: 40px;\n height: 40px;\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: var(--mj-text-muted);\n}\n\n.detail-panel-close[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-border-strong);\n color: var(--mj-text-primary);\n}\n\n\n\n.detail-panel-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 24px;\n}\n\n.detail-section[_ngcontent-%COMP%] {\n margin-bottom: 28px;\n}\n\n.detail-section[_ngcontent-%COMP%]:last-child {\n margin-bottom: 0;\n}\n\n.detail-badges[_ngcontent-%COMP%] {\n display: flex;\n gap: 10px;\n flex-wrap: wrap;\n}\n\n.feature-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border-radius: 20px;\n font-size: 12px;\n font-weight: 600;\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n color: var(--mj-brand-primary-hover);\n}\n\n.feature-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n}\n\n.detail-section-title[_ngcontent-%COMP%] {\n margin: 0 0 16px 0;\n font-size: 12px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.detail-section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 14px;\n}\n\n.detail-description[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n line-height: 1.7;\n color: var(--mj-text-secondary);\n}\n\n.detail-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 16px;\n}\n\n.detail-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n padding: 14px;\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n border: 1px solid var(--mj-border-default);\n}\n\n.detail-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.detail-value[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-primary);\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.detail-value[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 13px;\n}\n\n.detail-code-block[_ngcontent-%COMP%] {\n background: var(--mj-text-primary);\n color: var(--mj-border-default);\n padding: 16px;\n border-radius: 10px;\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n font-size: 13px;\n line-height: 1.6;\n overflow-x: auto;\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n\n\n.detail-panel-actions[_ngcontent-%COMP%] {\n padding: 20px 24px;\n background: var(--mj-bg-surface-card);\n border-top: 1px solid var(--mj-border-default);\n display: flex;\n gap: 12px;\n flex-shrink: 0;\n}\n\n.detail-action-btn[_ngcontent-%COMP%] {\n flex: 1;\n padding: 14px 20px;\n border-radius: 12px;\n font-size: 14px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n}\n\n.detail-action-btn.secondary[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 2px solid var(--mj-border-default);\n color: var(--mj-text-secondary);\n}\n\n.detail-action-btn.secondary[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n background: var(--mj-bg-surface-hover);\n}\n\n.detail-action-btn.primary[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n border: 2px solid transparent;\n color: var(--mj-text-inverse);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.detail-action-btn.primary[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary-hover);\n transform: translateY(-1px);\n box-shadow: 0 6px 16px color-mix(in srgb, var(--mj-brand-primary) 40%, transparent);\n}\n\n\n\n@media (max-width: 520px) {\n .detail-panel[_ngcontent-%COMP%] {\n width: 100%;\n right: -100%;\n }\n\n .detail-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n}\n\n\n\n[_nghost-%COMP%] .search-highlight, \n.search-highlight[_ngcontent-%COMP%] {\n background-color: color-mix(in srgb, var(--mj-status-warning) 40%, var(--mj-bg-surface));\n padding: 1px 2px;\n border-radius: 2px;\n font-weight: inherit;\n}\n\n\n\n\n\n\n.agents-tree[_ngcontent-%COMP%] {\n padding: 8px 16px;\n height: 100%;\n overflow: auto;\n}"] });
1341
1342
  };
1342
1343
  AgentConfigurationComponent = __decorate([
1343
1344
  RegisterClass(BaseResourceComponent, 'AIAgentsResource')
@@ -1345,7 +1346,7 @@ AgentConfigurationComponent = __decorate([
1345
1346
  export { AgentConfigurationComponent };
1346
1347
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AgentConfigurationComponent, [{
1347
1348
  type: Component,
1348
- args: [{ standalone: false, selector: 'app-agent-configuration', template: "<mj-page-layout>\n <!-- Header -->\n <mj-page-header\n Title=\"Agents\"\n Icon=\"fa-solid fa-robot\">\n <!-- X-of-Y filtered count earns its meta spot per chrome conventions \u00A72. -->\n <div meta>\n <mj-stat-badge\n [Count]=\"filteredAgents.length\"\n [Total]=\"agents.length\"\n Label=\"agents\">\n </mj-stat-badge>\n </div>\n <div actions>\n <mj-filter-popover\n [ActiveCount]=\"ActiveFilterCount\"\n [ShowClearAll]=\"ActiveFilterCount > 0\"\n (ClearAllRequested)=\"onResetFilters()\">\n <mj-filter-panel\n [Fields]=\"agentFilterFields\"\n [Values]=\"$any(currentFilters)\"\n (ValuesChange)=\"onFilterValuesChange($event)\"\n (Reset)=\"onResetFilters()\">\n <!-- Custom widget: Category uses a tree-dropdown, projected via mj-filter-field -->\n <mj-filter-field Label=\"Category\" Icon=\"fa-solid fa-folder-tree\">\n <mj-tree-dropdown\n [BranchConfig]=\"CategoryBranchConfig\"\n [Value]=\"SelectedCategoryKey\"\n SelectionMode=\"single\"\n SelectableTypes=\"branch\"\n Placeholder=\"All Categories\"\n [Clearable]=\"true\"\n [EnableSearch]=\"true\"\n (ValueChange)=\"onCategoryChange($event)\">\n </mj-tree-dropdown>\n </mj-filter-field>\n </mj-filter-panel>\n </mj-filter-popover>\n\n <mj-view-toggle\n [Options]=\"agentViewOptions\"\n [ActiveKey]=\"viewMode\"\n (KeyChange)=\"setViewMode($any($event))\">\n </mj-view-toggle>\n\n <button mjButton variant=\"primary\" size=\"sm\" (click)=\"createNewAgent()\" title=\"Create New Agent\">\n <i class=\"fa-solid fa-plus\"></i>\n New Agent\n </button>\n </div>\n <div toolbar>\n <mj-page-search\n Placeholder=\"Search agents...\"\n [Value]=\"currentFilters.searchTerm\"\n (ValueChange)=\"onSearchTermChange($event)\">\n </mj-page-search>\n </div>\n </mj-page-header>\n\n <!-- Main Content (no sidebar \u2014 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 agents...\" size=\"large\"></mj-loading>\n </div>\n }\n\n <!-- Agents Display -->\n @if (!isLoading) {\n @if (filteredAgents.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-robot\"></i>\n <h3>No agents found</h3>\n <p>No agents match your current filters. Try adjusting your search criteria or create a new agent.</p>\n <button \n type=\"button\" \n class=\"empty-state-btn\"\n (click)=\"createNewAgent()\">\n <i class=\"fa-solid fa-plus\"></i>\n Create New Agent\n </button>\n </div>\n } @else {\n <!-- Grid View -->\n @if (viewMode === 'grid') {\n <div class=\"agents-grid\">\n @for (agent of filteredAgents; track agent.ID) {\n <div class=\"agent-card\" [class.expanded]=\"expandedAgentId === agent.ID\">\n <!-- Card Header -->\n <div class=\"card-header\" (click)=\"toggleAgentExpansion(agent.ID)\">\n <div class=\"agent-info\">\n <div class=\"agent-icon\" [style.background-color]=\"getAgentIconColor(agent)\">\n @if (hasLogoURL(agent)) {\n <img [src]=\"agent.LogoURL\" [alt]=\"agent.Name + ' logo'\" class=\"agent-logo\">\n } @else {\n <i [class]=\"getAgentIcon(agent)\"></i>\n }\n </div>\n <div class=\"agent-details\">\n <h4 class=\"agent-name\" [innerHTML]=\"agent.Name | highlightSearch:currentFilters.searchTerm\"></h4>\n <div class=\"agent-meta\">\n <span class=\"meta-item type-badge\">\n <i class=\"fa-solid fa-tag\"></i>\n {{ getAgentTypeName(agent) }}\n </span>\n @if (agent.Status) {\n <span class=\"meta-item\" [class]=\"'status-' + agent.Status.toLowerCase()\">\n <i class=\"fa-solid fa-circle\" style=\"font-size: 8px;\"></i>\n {{ agent.Status }}\n </span>\n }\n </div>\n </div>\n </div>\n \n <i class=\"fa-solid fa-chevron-down expand-icon\" \n [class.rotated]=\"expandedAgentId === agent.ID\"></i>\n </div>\n\n <!-- Card Body -->\n <div class=\"card-body\">\n @if (agent.Description) {\n <p class=\"agent-description\" [innerHTML]=\"agent.Description | highlightSearch:currentFilters.searchTerm\"></p>\n } @else {\n <p class=\"agent-description text-muted\">No description provided</p>\n }\n \n <!-- Expandable Content -->\n @if (expandedAgentId === agent.ID) {\n <div class=\"expanded-content\">\n <div class=\"agent-stats\">\n @if (agent.Parent) {\n <div class=\"stat-item\">\n <span class=\"stat-label\">Parent</span>\n <span class=\"stat-value\">{{ agent.Parent }}</span>\n </div>\n }\n <div class=\"stat-item\">\n <span class=\"stat-label\">Context Compression</span>\n <span class=\"stat-value\">\n @if (agent.EnableContextCompression) {\n <i class=\"fa-solid fa-check\" style=\"color: #28a745;\"></i> Enabled\n } @else {\n <i class=\"fa-solid fa-times\" style=\"color: #dc3545;\"></i> Disabled\n }\n </span>\n </div>\n </div>\n </div>\n }\n </div>\n\n <!-- Card Actions -->\n <div class=\"card-actions\">\n @if (UserCanReadAgents) {\n <button\n type=\"button\"\n class=\"action-btn\"\n (click)=\"showAgentDetails(agent, $event)\"\n title=\"View Details\">\n <i class=\"fa-solid fa-eye\"></i>\n Details\n </button>\n }\n\n @if (agent.Status === 'Active' && UserCanReadAgents) {\n <button\n type=\"button\"\n class=\"action-btn action-btn-primary\"\n (click)=\"runAgent(agent); $event.stopPropagation()\"\n title=\"Run Agent\">\n <i class=\"fa-solid fa-play\"></i>\n Run\n </button>\n }\n </div>\n </div>\n }\n </div>\n }\n \n <!-- Tree View (mj-tree component) -->\n @if (viewMode === 'tree') {\n <div class=\"agents-tree\">\n <mj-tree\n [BranchConfig]=\"CategoryBranchConfig\"\n [LeafConfig]=\"AgentLeafConfig\"\n [SelectionMode]=\"'single'\"\n [SelectableTypes]=\"'leaf'\"\n [ShowDescriptions]=\"true\"\n [ShowBadges]=\"true\"\n [ShowExpandCollapseAll]=\"true\"\n [EmptyMessage]=\"'No agents found'\"\n [EmptyIcon]=\"'fa-solid fa-robot'\"\n (AfterNodeClick)=\"onTreeNodeClick($event)\"\n (AfterNodeDoubleClick)=\"onTreeNodeDoubleClick($event)\">\n </mj-tree>\n </div>\n }\n\n <!-- List View -->\n @if (viewMode === 'list') {\n <div class=\"agents-list\">\n <table class=\"agents-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 Name\n <i class=\"fa-solid fa-chevron-up sort-icon\"></i>\n </span>\n </th>\n <th>Type</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>Actions</th>\n </tr>\n </thead>\n <tbody>\n @for (agent of filteredAgents; track agent.ID) {\n <tr>\n <td>\n <div class=\"agent-name-cell\">\n <div class=\"agent-icon-small\" [style.background-color]=\"getAgentIconColor(agent)\">\n @if (hasLogoURL(agent)) {\n <img [src]=\"agent.LogoURL\" [alt]=\"agent.Name + ' logo'\" class=\"agent-logo-small\">\n } @else {\n <i [class]=\"getAgentIcon(agent)\"></i>\n }\n </div>\n <div>\n <div class=\"agent-name\" [innerHTML]=\"agent.Name | highlightSearch:currentFilters.searchTerm\"></div>\n @if (agent.Description) {\n <div class=\"agent-description-small\" [innerHTML]=\"agent.Description | highlightSearch:currentFilters.searchTerm\"></div>\n }\n </div>\n </div>\n </td>\n <td>\n <span class=\"type-badge\">\n {{ getAgentTypeName(agent) }}\n </span>\n </td>\n <td>\n <span class=\"status-badge\" [class]=\"'status-' + (agent.Status || 'unknown').toLowerCase()\">\n {{ agent.Status || 'Unknown' }}\n </span>\n </td>\n <td>\n <div class=\"table-actions\">\n @if (UserCanReadAgents) {\n <button\n type=\"button\"\n class=\"action-btn-small\"\n (click)=\"showAgentDetails(agent)\"\n title=\"View Details\">\n <i class=\"fa-solid fa-eye\"></i>\n </button>\n }\n @if (agent.Status === 'Active' && UserCanReadAgents) {\n <button\n type=\"button\"\n class=\"action-btn-small primary\"\n (click)=\"runAgent(agent)\"\n title=\"Run Agent\">\n <i class=\"fa-solid fa-play\"></i>\n </button>\n }\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 (selectedAgent) {\n <!-- Panel Header -->\n <div class=\"detail-panel-header\">\n <div class=\"detail-panel-title\">\n <div class=\"detail-icon\" [style.background-color]=\"getAgentIconColor(selectedAgent)\">\n @if (hasLogoURL(selectedAgent)) {\n <img [src]=\"selectedAgent.LogoURL\" [alt]=\"selectedAgent.Name + ' logo'\" class=\"detail-logo\">\n } @else {\n <i [class]=\"getAgentIcon(selectedAgent)\"></i>\n }\n </div>\n <div class=\"detail-title-info\">\n <h3>{{ selectedAgent.Name }}</h3>\n <span class=\"detail-subtitle\">{{ getAgentTypeName(selectedAgent) }}</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 and Type Section -->\n <div class=\"detail-section\">\n <div class=\"detail-badges\">\n <span class=\"status-badge\" [class]=\"'status-' + (selectedAgent.Status || 'unknown').toLowerCase()\">\n <i class=\"fa-solid fa-circle\" style=\"font-size: 8px;\"></i>\n {{ selectedAgent.Status || 'Unknown' }}\n </span>\n @if (selectedAgent.ExposeAsAction) {\n <span class=\"feature-badge\">\n <i class=\"fa-solid fa-bolt\"></i>\n Exposed as Action\n </span>\n }\n </div>\n </div>\n\n <!-- Description -->\n @if (selectedAgent.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\">{{ selectedAgent.Description }}</p>\n </div>\n }\n\n <!-- Configuration Details -->\n <div class=\"detail-section\">\n <h4 class=\"detail-section-title\">\n <i class=\"fa-solid fa-cog\"></i>\n Configuration\n </h4>\n <div class=\"detail-grid\">\n <div class=\"detail-item\">\n <span class=\"detail-label\">Execution Mode</span>\n <span class=\"detail-value\">\n <i [class]=\"getExecutionModeIcon(selectedAgent.ExecutionMode)\"></i>\n {{ selectedAgent.ExecutionMode }}\n </span>\n </div>\n @if (getParentAgentName(selectedAgent)) {\n <div class=\"detail-item\">\n <span class=\"detail-label\">Parent Agent</span>\n <span class=\"detail-value\">{{ getParentAgentName(selectedAgent) }}</span>\n </div>\n }\n <div class=\"detail-item\">\n <span class=\"detail-label\">Context Compression</span>\n <span class=\"detail-value\">\n @if (selectedAgent.EnableContextCompression) {\n <i class=\"fa-solid fa-check\" style=\"color: #10b981;\"></i> Enabled\n } @else {\n <i class=\"fa-solid fa-times\" style=\"color: #ef4444;\"></i> Disabled\n }\n </span>\n </div>\n <div class=\"detail-item\">\n <span class=\"detail-label\">Exposed as Action</span>\n <span class=\"detail-value\">\n @if (selectedAgent.ExposeAsAction) {\n <i class=\"fa-solid fa-check\" style=\"color: #10b981;\"></i> Yes\n } @else {\n <i class=\"fa-solid fa-times\" style=\"color: #ef4444;\"></i> No\n }\n </span>\n </div>\n <div class=\"detail-item\">\n <span class=\"detail-label\">Model Selection</span>\n <span class=\"detail-value\">{{ selectedAgent.ModelSelectionMode }}</span>\n </div>\n </div>\n </div>\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\">{{ selectedAgent.__mj_CreatedAt | date:'medium' }}</span>\n </div>\n <div class=\"detail-item\">\n <span class=\"detail-label\">Updated</span>\n <span class=\"detail-value\">{{ selectedAgent.__mj_UpdatedAt | date:'medium' }}</span>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Panel Actions -->\n <div class=\"detail-panel-actions\">\n @if (selectedAgent.Status === 'Active') {\n <button\n type=\"button\"\n class=\"detail-action-btn secondary\"\n (click)=\"runAgent(selectedAgent)\">\n <i class=\"fa-solid fa-play\"></i>\n Run Agent\n </button>\n }\n <button\n type=\"button\"\n class=\"detail-action-btn primary\"\n (click)=\"openAgentFromPanel()\">\n <i class=\"fa-solid fa-external-link-alt\"></i>\n Open Full Record\n </button>\n </div>\n }\n </div>\n</mj-page-layout>\n\n<!-- AI Agent Test Harness - Now handled by service with minimize support -->", styles: ["/* ============================================\n AI Agents Dashboard - World-Class Design\n Clean white header with brand blue accents\n ============================================ */\n\n/* Container is now provided by <mj-page-layout> */\n\n/* Tinted card background on the body \u2014 matches the original .agents-content\n surface treatment so cards/lists sit on a lightly-tinted surface rather\n than the page background. */\n:host mj-page-body {\n background: var(--mj-bg-surface-card);\n}\n\n/* View toggle now provided by <mj-view-toggle>. */\n\n.control-btn {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n padding: 10px 18px;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.control-btn:hover {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-border-strong);\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n}\n\n.control-btn i {\n font-size: 14px;\n}\n\n.control-btn.primary {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary-hover);\n color: var(--mj-text-inverse);\n}\n\n.control-btn.primary:hover {\n background: var(--mj-brand-primary-hover);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 35%, transparent);\n}\n\n\n.main-splitter {\n flex: 1;\n min-height: 0;\n}\n\n/* Splitter Styling */\nas-split {\n background: transparent;\n}\n\n/* Filter Panel Styles - used by child component */\n\n/* Agents Content */\n\n/* Grid View */\n.agents-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(400px, 1fr));\n gap: 24px;\n}\n\n.agent-card {\n background: var(--mj-bg-surface);\n border-radius: 16px;\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -1px rgba(0, 0, 0, 0.03);\n border: 1px solid var(--mj-border-default);\n transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);\n overflow: hidden;\n position: relative;\n}\n\n.agent-card::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 4px;\n background: var(--mj-brand-primary);\n opacity: 0;\n transition: opacity 0.3s ease;\n}\n\n.agent-card:hover {\n box-shadow: 0 20px 40px -15px color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n transform: translateY(-4px);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-bg-surface));\n}\n\n.agent-card:hover::before {\n opacity: 1;\n}\n\n.agent-card.expanded {\n box-shadow: 0 25px 50px -12px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n border-color: var(--mj-brand-accent);\n}\n\n.agent-card.expanded::before {\n opacity: 1;\n}\n\n.card-header {\n padding: 24px;\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n cursor: pointer;\n user-select: none;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n transition: background-color 0.2s;\n}\n\n.card-header:hover {\n background-color: var(--mj-bg-surface-hover);\n}\n\n.agent-info {\n display: flex;\n gap: 18px;\n flex: 1;\n}\n\n.agent-icon {\n width: 56px;\n height: 56px;\n border-radius: 14px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n background: var(--mj-brand-primary);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.agent-icon i {\n color: var(--mj-text-inverse);\n font-size: 24px;\n}\n\n.agent-icon .agent-logo {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 14px;\n}\n\n.agent-details {\n flex: 1;\n min-width: 0;\n}\n\n.agent-name {\n margin: 0;\n font-size: 18px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin-bottom: 8px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.agent-meta {\n display: flex;\n gap: 14px;\n flex-wrap: wrap;\n}\n\n.meta-item {\n font-size: 13px;\n color: var(--mj-text-muted);\n display: flex;\n align-items: center;\n gap: 6px;\n background: var(--mj-bg-surface-sunken);\n padding: 4px 10px;\n border-radius: 6px;\n}\n\n.meta-item i {\n font-size: 11px;\n color: var(--mj-brand-primary);\n}\n\n.meta-item.status-active {\n color: var(--mj-color-success-700);\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n}\n\n.meta-item.status-active i {\n color: var(--mj-color-success-700);\n}\n\n.meta-item.status-pending {\n color: var(--mj-color-warning-700);\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n}\n\n.meta-item.status-pending i {\n color: var(--mj-color-warning-700);\n}\n\n.meta-item.status-disabled,\n.meta-item.status-inactive {\n color: var(--mj-text-muted);\n background: var(--mj-border-default);\n}\n\n.meta-item.status-disabled i,\n.meta-item.status-inactive i {\n color: var(--mj-text-muted);\n}\n\n/* Type Badge - for Agent Type display */\n.type-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n border-radius: 6px;\n font-size: 12px;\n font-weight: 600;\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n color: var(--mj-brand-primary-hover);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-bg-surface));\n}\n\n.type-badge i {\n font-size: 11px;\n color: var(--mj-brand-primary);\n}\n\n/* Type badge in meta context (grid view) */\n.meta-item.type-badge {\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n color: var(--mj-brand-primary-hover);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-bg-surface));\n}\n\n.meta-item.type-badge i {\n color: var(--mj-brand-primary);\n}\n\n.expand-icon {\n font-size: 16px;\n color: var(--mj-text-disabled);\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n padding: 8px;\n border-radius: 8px;\n}\n\n.expand-icon:hover {\n color: var(--mj-brand-primary);\n background: var(--mj-bg-surface-sunken);\n}\n\n.expand-icon.rotated {\n transform: rotate(180deg);\n color: var(--mj-brand-primary);\n}\n\n.card-body {\n padding: 0 24px 24px 24px;\n}\n\n.agent-description {\n margin: 18px 0 0 0;\n font-size: 14px;\n line-height: 1.7;\n color: var(--mj-text-muted);\n}\n\n.agent-description.text-muted {\n font-style: italic;\n color: var(--mj-text-disabled);\n}\n\n/* Expanded Content */\n.expanded-content {\n margin-top: 20px;\n padding-top: 20px;\n border-top: 1px solid var(--mj-border-default);\n animation: slideDown 0.35s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n@keyframes slideDown {\n from {\n opacity: 0;\n transform: translateY(-12px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n.agent-stats {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));\n gap: 18px;\n}\n\n.stat-item {\n display: flex;\n flex-direction: column;\n gap: 6px;\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n border: 1px solid var(--mj-border-default);\n}\n\n.stat-label {\n font-size: 11px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.stat-value {\n font-size: 15px;\n color: var(--mj-text-primary);\n font-weight: 600;\n}\n\n/* Card Actions */\n.card-actions {\n padding: 18px 24px;\n background: var(--mj-bg-surface-card);\n border-top: 1px solid var(--mj-border-default);\n display: flex;\n gap: 12px;\n justify-content: flex-end;\n}\n\n.action-btn {\n background: var(--mj-bg-surface);\n border: 2px solid var(--mj-border-default);\n padding: 10px 20px;\n border-radius: 10px;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.action-btn:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n transform: translateY(-1px);\n}\n\n.action-btn-primary {\n background: var(--mj-brand-primary);\n border-color: transparent;\n color: var(--mj-text-inverse);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.action-btn-primary:hover {\n background: var(--mj-brand-primary-hover);\n transform: translateY(-2px);\n box-shadow: 0 6px 16px color-mix(in srgb, var(--mj-brand-primary) 40%, transparent);\n}\n\n/* List View */\n.agents-list {\n background: var(--mj-bg-surface);\n border-radius: 16px;\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05);\n border: 1px solid var(--mj-border-default);\n overflow: hidden;\n}\n\n.agents-table {\n width: 100%;\n border-collapse: collapse;\n}\n\n.agents-table thead {\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n}\n\n.agents-table th {\n padding: 16px 20px;\n text-align: left;\n font-size: 12px;\n font-weight: 700;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n cursor: pointer;\n user-select: none;\n transition: all 0.2s ease;\n}\n\n.agents-table th:hover {\n background: var(--mj-border-default);\n color: var(--mj-brand-primary);\n}\n\n.agents-table th.sorted {\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n}\n\n.sort-header {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.sort-icon {\n font-size: 10px;\n color: var(--mj-text-disabled);\n transition: all 0.2s ease;\n}\n\n.agents-table th:hover .sort-icon {\n color: var(--mj-brand-primary);\n}\n\n.agents-table th.sorted .sort-icon {\n color: var(--mj-brand-primary);\n}\n\n.agents-table th.sorted.desc .sort-icon {\n transform: rotate(180deg);\n}\n\n.agents-table tbody tr {\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n transition: background-color 0.2s;\n}\n\n.agents-table tbody tr:last-child {\n border-bottom: none;\n}\n\n.agents-table tbody tr:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.agents-table td {\n padding: 18px 20px;\n font-size: 14px;\n color: var(--mj-text-secondary);\n}\n\n.agent-name-cell {\n display: flex;\n align-items: center;\n gap: 14px;\n}\n\n.agent-icon-small {\n width: 42px;\n height: 42px;\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n background: var(--mj-brand-primary);\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n}\n\n.agent-icon-small i {\n color: var(--mj-text-inverse);\n font-size: 18px;\n}\n\n.agent-icon-small .agent-logo-small {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 10px;\n}\n\n.agent-name-cell .agent-name {\n font-weight: 600;\n color: var(--mj-text-primary);\n margin-bottom: 0;\n white-space: normal;\n}\n\n.agent-description-small {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-top: 4px;\n line-height: 1.4;\n}\n\n.status-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border-radius: 20px;\n font-size: 12px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.status-badge i {\n font-size: 8px;\n}\n\n.status-badge.status-active {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-color-success-700);\n}\n\n.status-badge.status-pending {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-color-warning-700);\n}\n\n.status-badge.status-disabled,\n.status-badge.status-inactive {\n background: var(--mj-border-default);\n color: var(--mj-text-secondary);\n}\n\n.status-badge.status-unknown {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n}\n\n.execution-mode {\n display: flex;\n align-items: center;\n gap: 8px;\n color: var(--mj-text-secondary);\n}\n\n.execution-mode i {\n color: var(--mj-brand-primary);\n}\n\n.table-actions {\n display: flex;\n gap: 10px;\n}\n\n.action-btn-small {\n background: var(--mj-bg-surface);\n border: 2px solid var(--mj-border-default);\n padding: 8px 12px;\n border-radius: 8px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.action-btn-small:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n}\n\n.action-btn-small.primary {\n background: var(--mj-brand-primary);\n border-color: transparent;\n color: var(--mj-text-inverse);\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n}\n\n.action-btn-small.primary:hover {\n background: var(--mj-brand-primary-hover);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 35%, transparent);\n}\n\n/* Empty State */\n.empty-state {\n text-align: center;\n padding: 100px 32px;\n color: var(--mj-text-muted);\n}\n\n.empty-state i {\n font-size: 80px;\n background: color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-bg-surface));\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n background-clip: text;\n margin-bottom: 28px;\n display: block;\n}\n\n.empty-state h3 {\n color: var(--mj-text-primary);\n font-size: 24px;\n font-weight: 700;\n margin: 0 0 12px 0;\n}\n\n.empty-state p {\n font-size: 16px;\n line-height: 1.6;\n max-width: 420px;\n margin: 0 auto 32px;\n color: var(--mj-text-muted);\n}\n\n.empty-state-btn {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n padding: 14px 28px;\n border-radius: 12px;\n font-size: 15px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n display: inline-flex;\n align-items: center;\n gap: 10px;\n box-shadow: 0 4px 15px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.empty-state-btn:hover {\n transform: translateY(-2px);\n box-shadow: 0 8px 25px color-mix(in srgb, var(--mj-brand-primary) 40%, transparent);\n}\n\n/* Loading State */\n.loading-container {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 400px;\n}\n\n/* Responsive Design */\n@media (max-width: 768px) {\n .dashboard-header {\n flex-direction: column;\n gap: 16px;\n align-items: stretch;\n padding: 16px 20px;\n }\n\n .header-info {\n flex-wrap: wrap;\n justify-content: center;\n }\n\n .header-controls {\n justify-content: center;\n }\n\n .agents-grid {\n grid-template-columns: 1fr;\n gap: 16px;\n }\n\n .agent-stats {\n grid-template-columns: 1fr;\n }\n\n .card-header {\n padding: 18px;\n }\n\n .card-body {\n padding: 0 18px 18px 18px;\n }\n\n .card-actions {\n padding: 14px 18px;\n flex-wrap: wrap;\n }\n}\n\n/* =============================================\n Detail Panel - Slide-in Overlay\n ============================================= */\n\n.detail-panel-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.4);\n backdrop-filter: blur(4px);\n z-index: 1000;\n animation: fadeIn 0.25s ease-out;\n}\n\n@keyframes fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n.detail-panel {\n position: fixed;\n top: 0;\n right: -480px;\n width: 480px;\n height: 100vh;\n background: var(--mj-bg-surface);\n box-shadow: -8px 0 32px rgba(0, 0, 0, 0.15);\n z-index: 1001;\n display: flex;\n flex-direction: column;\n transition: right 0.35s cubic-bezier(0.4, 0, 0.2, 1);\n overflow: hidden;\n}\n\n.detail-panel.visible {\n right: 0;\n}\n\n/* Detail Panel Header */\n.detail-panel-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 24px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.detail-panel-title {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.detail-icon {\n width: 56px;\n height: 56px;\n border-radius: 14px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n background: var(--mj-brand-primary);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.detail-icon i {\n color: var(--mj-text-inverse);\n font-size: 24px;\n}\n\n.detail-icon .detail-logo {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 14px;\n}\n\n.detail-title-info h3 {\n margin: 0 0 4px 0;\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-primary);\n}\n\n.detail-subtitle {\n font-size: 13px;\n color: var(--mj-text-muted);\n font-weight: 500;\n}\n\n.detail-panel-close {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n width: 40px;\n height: 40px;\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: var(--mj-text-muted);\n}\n\n.detail-panel-close:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-border-strong);\n color: var(--mj-text-primary);\n}\n\n/* Detail Panel Content */\n.detail-panel-content {\n flex: 1;\n overflow-y: auto;\n padding: 24px;\n}\n\n.detail-section {\n margin-bottom: 28px;\n}\n\n.detail-section:last-child {\n margin-bottom: 0;\n}\n\n.detail-badges {\n display: flex;\n gap: 10px;\n flex-wrap: wrap;\n}\n\n.feature-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border-radius: 20px;\n font-size: 12px;\n font-weight: 600;\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n color: var(--mj-brand-primary-hover);\n}\n\n.feature-badge i {\n font-size: 11px;\n}\n\n.detail-section-title {\n margin: 0 0 16px 0;\n font-size: 12px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.detail-section-title i {\n color: var(--mj-brand-primary);\n font-size: 14px;\n}\n\n.detail-description {\n margin: 0;\n font-size: 14px;\n line-height: 1.7;\n color: var(--mj-text-secondary);\n}\n\n.detail-grid {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 16px;\n}\n\n.detail-item {\n display: flex;\n flex-direction: column;\n gap: 6px;\n padding: 14px;\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n border: 1px solid var(--mj-border-default);\n}\n\n.detail-label {\n font-size: 11px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.detail-value {\n font-size: 14px;\n color: var(--mj-text-primary);\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.detail-value i {\n font-size: 13px;\n}\n\n.detail-code-block {\n background: var(--mj-text-primary);\n color: var(--mj-border-default);\n padding: 16px;\n border-radius: 10px;\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n font-size: 13px;\n line-height: 1.6;\n overflow-x: auto;\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n/* Detail Panel Actions */\n.detail-panel-actions {\n padding: 20px 24px;\n background: var(--mj-bg-surface-card);\n border-top: 1px solid var(--mj-border-default);\n display: flex;\n gap: 12px;\n flex-shrink: 0;\n}\n\n.detail-action-btn {\n flex: 1;\n padding: 14px 20px;\n border-radius: 12px;\n font-size: 14px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n}\n\n.detail-action-btn.secondary {\n background: var(--mj-bg-surface);\n border: 2px solid var(--mj-border-default);\n color: var(--mj-text-secondary);\n}\n\n.detail-action-btn.secondary:hover {\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n background: var(--mj-bg-surface-hover);\n}\n\n.detail-action-btn.primary {\n background: var(--mj-brand-primary);\n border: 2px solid transparent;\n color: var(--mj-text-inverse);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.detail-action-btn.primary:hover {\n background: var(--mj-brand-primary-hover);\n transform: translateY(-1px);\n box-shadow: 0 6px 16px color-mix(in srgb, var(--mj-brand-primary) 40%, transparent);\n}\n\n/* Detail Panel Responsive */\n@media (max-width: 520px) {\n .detail-panel {\n width: 100%;\n right: -100%;\n }\n\n .detail-grid {\n grid-template-columns: 1fr;\n }\n}\n\n/* Search Highlight */\n:host ::ng-deep .search-highlight,\n.search-highlight {\n background-color: color-mix(in srgb, var(--mj-status-warning) 40%, var(--mj-bg-surface));\n padding: 1px 2px;\n border-radius: 2px;\n font-weight: inherit;\n}\n\n/* ============================================\n Tree View - Mac Finder Style\n ============================================ */\n\n.agents-tree {\n padding: 8px 16px;\n height: 100%;\n overflow: auto;\n}\n"] }]
1349
+ args: [{ standalone: false, selector: 'app-agent-configuration', template: "<mj-page-layout>\n <!-- Header -->\n <mj-page-header\n Title=\"Agents\"\n Icon=\"fa-solid fa-robot\">\n <!-- X-of-Y filtered count earns its meta spot per chrome conventions \u00A72. -->\n <div meta>\n <mj-stat-badge\n [Count]=\"filteredAgents.length\"\n [Total]=\"agents.length\"\n Label=\"agents\">\n </mj-stat-badge>\n </div>\n <div actions>\n <button mjButton variant=\"primary\" size=\"sm\" (click)=\"createNewAgent()\" title=\"Create New Agent\">\n <i class=\"fa-solid fa-plus\"></i>\n <span class=\"action-btn-label\">New Agent</span>\n </button>\n </div>\n <div toolbar>\n <mj-page-search\n Placeholder=\"Search agents...\"\n [Value]=\"currentFilters.searchTerm\"\n (ValueChange)=\"onSearchTermChange($event)\">\n </mj-page-search>\n <mj-filter-popover\n [ActiveCount]=\"ActiveFilterCount\"\n [ShowClearAll]=\"ActiveFilterCount > 0\"\n (ClearAllRequested)=\"onResetFilters()\">\n <mj-filter-panel\n [Fields]=\"agentFilterFields\"\n [Values]=\"$any(currentFilters)\"\n (ValuesChange)=\"onFilterValuesChange($event)\"\n (Reset)=\"onResetFilters()\">\n <!-- Custom widget: Category uses a tree-dropdown, projected via mj-filter-field -->\n <mj-filter-field Label=\"Category\" Icon=\"fa-solid fa-folder-tree\">\n <mj-tree-dropdown\n [BranchConfig]=\"CategoryBranchConfig\"\n [Value]=\"SelectedCategoryKey\"\n SelectionMode=\"single\"\n SelectableTypes=\"branch\"\n Placeholder=\"All Categories\"\n [Clearable]=\"true\"\n [EnableSearch]=\"true\"\n (ValueChange)=\"onCategoryChange($event)\">\n </mj-tree-dropdown>\n </mj-filter-field>\n </mj-filter-panel>\n </mj-filter-popover>\n <mj-view-toggle\n [Options]=\"agentViewOptions\"\n [ActiveKey]=\"viewMode\"\n (KeyChange)=\"setViewMode($any($event))\">\n </mj-view-toggle>\n </div>\n </mj-page-header>\n\n <!-- Main Content (no sidebar \u2014 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 agents...\" size=\"large\"></mj-loading>\n </div>\n }\n\n <!-- Agents Display -->\n @if (!isLoading) {\n @if (filteredAgents.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-robot\"></i>\n <h3>No agents found</h3>\n <p>No agents match your current filters. Try adjusting your search criteria or create a new agent.</p>\n <button \n type=\"button\" \n class=\"empty-state-btn\"\n (click)=\"createNewAgent()\">\n <i class=\"fa-solid fa-plus\"></i>\n Create New Agent\n </button>\n </div>\n } @else {\n <!-- Grid View -->\n @if (viewMode === 'grid') {\n <div class=\"agents-grid\">\n @for (agent of filteredAgents; track agent.ID) {\n <div class=\"agent-card\" [class.expanded]=\"expandedAgentId === agent.ID\">\n <!-- Card Header -->\n <div class=\"card-header\" (click)=\"toggleAgentExpansion(agent.ID)\">\n <div class=\"agent-info\">\n <div class=\"agent-icon\" [style.background-color]=\"getAgentIconColor(agent)\">\n @if (hasLogoURL(agent)) {\n <img [src]=\"agent.LogoURL\" [alt]=\"agent.Name + ' logo'\" class=\"agent-logo\">\n } @else {\n <i [class]=\"getAgentIcon(agent)\"></i>\n }\n </div>\n <div class=\"agent-details\">\n <h4 class=\"agent-name\" [innerHTML]=\"agent.Name | highlightSearch:currentFilters.searchTerm\"></h4>\n <div class=\"agent-meta\">\n <span class=\"meta-item type-badge\">\n <i class=\"fa-solid fa-tag\"></i>\n {{ getAgentTypeName(agent) }}\n </span>\n @if (agent.Status) {\n <span class=\"meta-item\" [class]=\"'status-' + agent.Status.toLowerCase()\">\n <i class=\"fa-solid fa-circle\" style=\"font-size: 8px;\"></i>\n {{ agent.Status }}\n </span>\n }\n </div>\n </div>\n </div>\n \n <i class=\"fa-solid fa-chevron-down expand-icon\" \n [class.rotated]=\"expandedAgentId === agent.ID\"></i>\n </div>\n\n <!-- Card Body -->\n <div class=\"card-body\">\n @if (agent.Description) {\n <p class=\"agent-description\" [innerHTML]=\"agent.Description | highlightSearch:currentFilters.searchTerm\"></p>\n } @else {\n <p class=\"agent-description text-muted\">No description provided</p>\n }\n \n <!-- Expandable Content -->\n @if (expandedAgentId === agent.ID) {\n <div class=\"expanded-content\">\n <div class=\"agent-stats\">\n @if (agent.Parent) {\n <div class=\"stat-item\">\n <span class=\"stat-label\">Parent</span>\n <span class=\"stat-value\">{{ agent.Parent }}</span>\n </div>\n }\n <div class=\"stat-item\">\n <span class=\"stat-label\">Context Compression</span>\n <span class=\"stat-value\">\n @if (agent.EnableContextCompression) {\n <i class=\"fa-solid fa-check\" style=\"color: #28a745;\"></i> Enabled\n } @else {\n <i class=\"fa-solid fa-times\" style=\"color: #dc3545;\"></i> Disabled\n }\n </span>\n </div>\n </div>\n </div>\n }\n </div>\n\n <!-- Card Actions -->\n <div class=\"card-actions\">\n @if (UserCanReadAgents) {\n <button\n type=\"button\"\n class=\"action-btn\"\n (click)=\"showAgentDetails(agent, $event)\"\n title=\"View Details\">\n <i class=\"fa-solid fa-eye\"></i>\n Details\n </button>\n }\n\n @if (agent.Status === 'Active' && UserCanReadAgents) {\n <button\n type=\"button\"\n class=\"action-btn action-btn-primary\"\n (click)=\"runAgent(agent); $event.stopPropagation()\"\n title=\"Run Agent\">\n <i class=\"fa-solid fa-play\"></i>\n Run\n </button>\n }\n </div>\n </div>\n }\n </div>\n }\n \n <!-- Tree View (mj-tree component) -->\n @if (viewMode === 'tree') {\n <div class=\"agents-tree\">\n <mj-tree\n [BranchConfig]=\"CategoryBranchConfig\"\n [LeafConfig]=\"AgentLeafConfig\"\n [SelectionMode]=\"'single'\"\n [SelectableTypes]=\"'leaf'\"\n [ShowDescriptions]=\"true\"\n [ShowBadges]=\"true\"\n [ShowExpandCollapseAll]=\"true\"\n [EmptyMessage]=\"'No agents found'\"\n [EmptyIcon]=\"'fa-solid fa-robot'\"\n (AfterNodeClick)=\"onTreeNodeClick($event)\"\n (AfterNodeDoubleClick)=\"onTreeNodeDoubleClick($event)\">\n </mj-tree>\n </div>\n }\n\n <!-- List View -->\n @if (viewMode === 'list') {\n <div class=\"agents-list\">\n <table class=\"agents-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 Name\n <i class=\"fa-solid fa-chevron-up sort-icon\"></i>\n </span>\n </th>\n <th>Type</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>Actions</th>\n </tr>\n </thead>\n <tbody>\n @for (agent of filteredAgents; track agent.ID) {\n <tr>\n <td>\n <div class=\"agent-name-cell\">\n <div class=\"agent-icon-small\" [style.background-color]=\"getAgentIconColor(agent)\">\n @if (hasLogoURL(agent)) {\n <img [src]=\"agent.LogoURL\" [alt]=\"agent.Name + ' logo'\" class=\"agent-logo-small\">\n } @else {\n <i [class]=\"getAgentIcon(agent)\"></i>\n }\n </div>\n <div>\n <div class=\"agent-name\" [innerHTML]=\"agent.Name | highlightSearch:currentFilters.searchTerm\"></div>\n @if (agent.Description) {\n <div class=\"agent-description-small\" [innerHTML]=\"agent.Description | highlightSearch:currentFilters.searchTerm\"></div>\n }\n </div>\n </div>\n </td>\n <td>\n <span class=\"type-badge\">\n {{ getAgentTypeName(agent) }}\n </span>\n </td>\n <td>\n <span class=\"status-badge\" [class]=\"'status-' + (agent.Status || 'unknown').toLowerCase()\">\n {{ agent.Status || 'Unknown' }}\n </span>\n </td>\n <td>\n <div class=\"table-actions\">\n @if (UserCanReadAgents) {\n <button\n type=\"button\"\n class=\"action-btn-small\"\n (click)=\"showAgentDetails(agent)\"\n title=\"View Details\">\n <i class=\"fa-solid fa-eye\"></i>\n </button>\n }\n @if (agent.Status === 'Active' && UserCanReadAgents) {\n <button\n type=\"button\"\n class=\"action-btn-small primary\"\n (click)=\"runAgent(agent)\"\n title=\"Run Agent\">\n <i class=\"fa-solid fa-play\"></i>\n </button>\n }\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 (selectedAgent) {\n <!-- Panel Header -->\n <div class=\"detail-panel-header\">\n <div class=\"detail-panel-title\">\n <div class=\"detail-icon\" [style.background-color]=\"getAgentIconColor(selectedAgent)\">\n @if (hasLogoURL(selectedAgent)) {\n <img [src]=\"selectedAgent.LogoURL\" [alt]=\"selectedAgent.Name + ' logo'\" class=\"detail-logo\">\n } @else {\n <i [class]=\"getAgentIcon(selectedAgent)\"></i>\n }\n </div>\n <div class=\"detail-title-info\">\n <h3>{{ selectedAgent.Name }}</h3>\n <span class=\"detail-subtitle\">{{ getAgentTypeName(selectedAgent) }}</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 and Type Section -->\n <div class=\"detail-section\">\n <div class=\"detail-badges\">\n <span class=\"status-badge\" [class]=\"'status-' + (selectedAgent.Status || 'unknown').toLowerCase()\">\n <i class=\"fa-solid fa-circle\" style=\"font-size: 8px;\"></i>\n {{ selectedAgent.Status || 'Unknown' }}\n </span>\n @if (selectedAgent.ExposeAsAction) {\n <span class=\"feature-badge\">\n <i class=\"fa-solid fa-bolt\"></i>\n Exposed as Action\n </span>\n }\n </div>\n </div>\n\n <!-- Description -->\n @if (selectedAgent.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\">{{ selectedAgent.Description }}</p>\n </div>\n }\n\n <!-- Configuration Details -->\n <div class=\"detail-section\">\n <h4 class=\"detail-section-title\">\n <i class=\"fa-solid fa-cog\"></i>\n Configuration\n </h4>\n <div class=\"detail-grid\">\n <div class=\"detail-item\">\n <span class=\"detail-label\">Execution Mode</span>\n <span class=\"detail-value\">\n <i [class]=\"getExecutionModeIcon(selectedAgent.ExecutionMode)\"></i>\n {{ selectedAgent.ExecutionMode }}\n </span>\n </div>\n @if (getParentAgentName(selectedAgent)) {\n <div class=\"detail-item\">\n <span class=\"detail-label\">Parent Agent</span>\n <span class=\"detail-value\">{{ getParentAgentName(selectedAgent) }}</span>\n </div>\n }\n <div class=\"detail-item\">\n <span class=\"detail-label\">Context Compression</span>\n <span class=\"detail-value\">\n @if (selectedAgent.EnableContextCompression) {\n <i class=\"fa-solid fa-check\" style=\"color: #10b981;\"></i> Enabled\n } @else {\n <i class=\"fa-solid fa-times\" style=\"color: #ef4444;\"></i> Disabled\n }\n </span>\n </div>\n <div class=\"detail-item\">\n <span class=\"detail-label\">Exposed as Action</span>\n <span class=\"detail-value\">\n @if (selectedAgent.ExposeAsAction) {\n <i class=\"fa-solid fa-check\" style=\"color: #10b981;\"></i> Yes\n } @else {\n <i class=\"fa-solid fa-times\" style=\"color: #ef4444;\"></i> No\n }\n </span>\n </div>\n <div class=\"detail-item\">\n <span class=\"detail-label\">Model Selection</span>\n <span class=\"detail-value\">{{ selectedAgent.ModelSelectionMode }}</span>\n </div>\n </div>\n </div>\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\">{{ selectedAgent.__mj_CreatedAt | date:'medium' }}</span>\n </div>\n <div class=\"detail-item\">\n <span class=\"detail-label\">Updated</span>\n <span class=\"detail-value\">{{ selectedAgent.__mj_UpdatedAt | date:'medium' }}</span>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Panel Actions -->\n <div class=\"detail-panel-actions\">\n @if (selectedAgent.Status === 'Active') {\n <button\n type=\"button\"\n class=\"detail-action-btn secondary\"\n (click)=\"runAgent(selectedAgent)\">\n <i class=\"fa-solid fa-play\"></i>\n Run Agent\n </button>\n }\n <button\n type=\"button\"\n class=\"detail-action-btn primary\"\n (click)=\"openAgentFromPanel()\">\n <i class=\"fa-solid fa-external-link-alt\"></i>\n Open Full Record\n </button>\n </div>\n }\n </div>\n</mj-page-layout>\n\n<!-- AI Agent Test Harness - Now handled by service with minimize support -->", styles: ["/* ============================================\n AI Agents Dashboard - World-Class Design\n Clean white header with brand blue accents\n ============================================ */\n\n/* Container is now provided by <mj-page-layout> */\n\n/* Tinted card background on the body \u2014 matches the original .agents-content\n surface treatment so cards/lists sit on a lightly-tinted surface rather\n than the page background. */\n:host mj-page-body {\n background: var(--mj-bg-surface-card);\n}\n\n/* View toggle now provided by <mj-view-toggle>. */\n\n.control-btn {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n padding: 10px 18px;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.control-btn:hover {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-border-strong);\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n}\n\n.control-btn i {\n font-size: 14px;\n}\n\n.control-btn.primary {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary-hover);\n color: var(--mj-text-inverse);\n}\n\n.control-btn.primary:hover {\n background: var(--mj-brand-primary-hover);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 35%, transparent);\n}\n\n\n.main-splitter {\n flex: 1;\n min-height: 0;\n}\n\n/* Splitter Styling */\nas-split {\n background: transparent;\n}\n\n/* Filter Panel Styles - used by child component */\n\n/* Agents Content */\n\n/* Grid View */\n.agents-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(400px, 1fr));\n gap: 24px;\n}\n\n.agent-card {\n background: var(--mj-bg-surface);\n border-radius: 16px;\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -1px rgba(0, 0, 0, 0.03);\n border: 1px solid var(--mj-border-default);\n transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);\n overflow: hidden;\n position: relative;\n}\n\n.agent-card::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 4px;\n background: var(--mj-brand-primary);\n opacity: 0;\n transition: opacity 0.3s ease;\n}\n\n.agent-card:hover {\n box-shadow: 0 20px 40px -15px color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n transform: translateY(-4px);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-bg-surface));\n}\n\n.agent-card:hover::before {\n opacity: 1;\n}\n\n.agent-card.expanded {\n box-shadow: 0 25px 50px -12px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n border-color: var(--mj-brand-accent);\n}\n\n.agent-card.expanded::before {\n opacity: 1;\n}\n\n.card-header {\n padding: 24px;\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n cursor: pointer;\n user-select: none;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n transition: background-color 0.2s;\n}\n\n.card-header:hover {\n background-color: var(--mj-bg-surface-hover);\n}\n\n.agent-info {\n display: flex;\n gap: 18px;\n flex: 1;\n}\n\n.agent-icon {\n width: 56px;\n height: 56px;\n border-radius: 14px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n background: var(--mj-brand-primary);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.agent-icon i {\n color: var(--mj-text-inverse);\n font-size: 24px;\n}\n\n.agent-icon .agent-logo {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 14px;\n}\n\n.agent-details {\n flex: 1;\n min-width: 0;\n}\n\n.agent-name {\n margin: 0;\n font-size: 18px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin-bottom: 8px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.agent-meta {\n display: flex;\n gap: 14px;\n flex-wrap: wrap;\n}\n\n.meta-item {\n font-size: 13px;\n color: var(--mj-text-muted);\n display: flex;\n align-items: center;\n gap: 6px;\n background: var(--mj-bg-surface-sunken);\n padding: 4px 10px;\n border-radius: 6px;\n}\n\n.meta-item i {\n font-size: 11px;\n color: var(--mj-brand-primary);\n}\n\n.meta-item.status-active {\n color: var(--mj-color-success-700);\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n}\n\n.meta-item.status-active i {\n color: var(--mj-color-success-700);\n}\n\n.meta-item.status-pending {\n color: var(--mj-color-warning-700);\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n}\n\n.meta-item.status-pending i {\n color: var(--mj-color-warning-700);\n}\n\n.meta-item.status-disabled,\n.meta-item.status-inactive {\n color: var(--mj-text-muted);\n background: var(--mj-border-default);\n}\n\n.meta-item.status-disabled i,\n.meta-item.status-inactive i {\n color: var(--mj-text-muted);\n}\n\n/* Type Badge - for Agent Type display */\n.type-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n border-radius: 6px;\n font-size: 12px;\n font-weight: 600;\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n color: var(--mj-brand-primary-hover);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-bg-surface));\n}\n\n.type-badge i {\n font-size: 11px;\n color: var(--mj-brand-primary);\n}\n\n/* Type badge in meta context (grid view) */\n.meta-item.type-badge {\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n color: var(--mj-brand-primary-hover);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-bg-surface));\n}\n\n.meta-item.type-badge i {\n color: var(--mj-brand-primary);\n}\n\n.expand-icon {\n font-size: 16px;\n color: var(--mj-text-disabled);\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n padding: 8px;\n border-radius: 8px;\n}\n\n.expand-icon:hover {\n color: var(--mj-brand-primary);\n background: var(--mj-bg-surface-sunken);\n}\n\n.expand-icon.rotated {\n transform: rotate(180deg);\n color: var(--mj-brand-primary);\n}\n\n.card-body {\n padding: 0 24px 24px 24px;\n}\n\n.agent-description {\n margin: 18px 0 0 0;\n font-size: 14px;\n line-height: 1.7;\n color: var(--mj-text-muted);\n}\n\n.agent-description.text-muted {\n font-style: italic;\n color: var(--mj-text-disabled);\n}\n\n/* Expanded Content */\n.expanded-content {\n margin-top: 20px;\n padding-top: 20px;\n border-top: 1px solid var(--mj-border-default);\n animation: slideDown 0.35s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n@keyframes slideDown {\n from {\n opacity: 0;\n transform: translateY(-12px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n.agent-stats {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));\n gap: 18px;\n}\n\n.stat-item {\n display: flex;\n flex-direction: column;\n gap: 6px;\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n border: 1px solid var(--mj-border-default);\n}\n\n.stat-label {\n font-size: 11px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.stat-value {\n font-size: 15px;\n color: var(--mj-text-primary);\n font-weight: 600;\n}\n\n/* Card Actions */\n.card-actions {\n padding: 18px 24px;\n background: var(--mj-bg-surface-card);\n border-top: 1px solid var(--mj-border-default);\n display: flex;\n gap: 12px;\n justify-content: flex-end;\n}\n\n.action-btn {\n background: var(--mj-bg-surface);\n border: 2px solid var(--mj-border-default);\n padding: 10px 20px;\n border-radius: 10px;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.action-btn:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n transform: translateY(-1px);\n}\n\n.action-btn-primary {\n background: var(--mj-brand-primary);\n border-color: transparent;\n color: var(--mj-text-inverse);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.action-btn-primary:hover {\n background: var(--mj-brand-primary-hover);\n transform: translateY(-2px);\n box-shadow: 0 6px 16px color-mix(in srgb, var(--mj-brand-primary) 40%, transparent);\n}\n\n/* List View */\n.agents-list {\n background: var(--mj-bg-surface);\n border-radius: 16px;\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05);\n border: 1px solid var(--mj-border-default);\n overflow: hidden;\n}\n\n.agents-table {\n width: 100%;\n border-collapse: collapse;\n}\n\n.agents-table thead {\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n}\n\n.agents-table th {\n padding: 16px 20px;\n text-align: left;\n font-size: 12px;\n font-weight: 700;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n cursor: pointer;\n user-select: none;\n transition: all 0.2s ease;\n}\n\n.agents-table th:hover {\n background: var(--mj-border-default);\n color: var(--mj-brand-primary);\n}\n\n.agents-table th.sorted {\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n}\n\n.sort-header {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.sort-icon {\n font-size: 10px;\n color: var(--mj-text-disabled);\n transition: all 0.2s ease;\n}\n\n.agents-table th:hover .sort-icon {\n color: var(--mj-brand-primary);\n}\n\n.agents-table th.sorted .sort-icon {\n color: var(--mj-brand-primary);\n}\n\n.agents-table th.sorted.desc .sort-icon {\n transform: rotate(180deg);\n}\n\n.agents-table tbody tr {\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n transition: background-color 0.2s;\n}\n\n.agents-table tbody tr:last-child {\n border-bottom: none;\n}\n\n.agents-table tbody tr:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.agents-table td {\n padding: 18px 20px;\n font-size: 14px;\n color: var(--mj-text-secondary);\n}\n\n.agent-name-cell {\n display: flex;\n align-items: center;\n gap: 14px;\n}\n\n.agent-icon-small {\n width: 42px;\n height: 42px;\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n background: var(--mj-brand-primary);\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n}\n\n.agent-icon-small i {\n color: var(--mj-text-inverse);\n font-size: 18px;\n}\n\n.agent-icon-small .agent-logo-small {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 10px;\n}\n\n.agent-name-cell .agent-name {\n font-weight: 600;\n color: var(--mj-text-primary);\n margin-bottom: 0;\n white-space: normal;\n}\n\n.agent-description-small {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-top: 4px;\n line-height: 1.4;\n}\n\n.status-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border-radius: 20px;\n font-size: 12px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.status-badge i {\n font-size: 8px;\n}\n\n.status-badge.status-active {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-color-success-700);\n}\n\n.status-badge.status-pending {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-color-warning-700);\n}\n\n.status-badge.status-disabled,\n.status-badge.status-inactive {\n background: var(--mj-border-default);\n color: var(--mj-text-secondary);\n}\n\n.status-badge.status-unknown {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n}\n\n.execution-mode {\n display: flex;\n align-items: center;\n gap: 8px;\n color: var(--mj-text-secondary);\n}\n\n.execution-mode i {\n color: var(--mj-brand-primary);\n}\n\n.table-actions {\n display: flex;\n gap: 10px;\n}\n\n.action-btn-small {\n background: var(--mj-bg-surface);\n border: 2px solid var(--mj-border-default);\n padding: 8px 12px;\n border-radius: 8px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.action-btn-small:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n}\n\n.action-btn-small.primary {\n background: var(--mj-brand-primary);\n border-color: transparent;\n color: var(--mj-text-inverse);\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n}\n\n.action-btn-small.primary:hover {\n background: var(--mj-brand-primary-hover);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 35%, transparent);\n}\n\n/* Empty State */\n.empty-state {\n text-align: center;\n padding: 100px 32px;\n color: var(--mj-text-muted);\n}\n\n.empty-state i {\n font-size: 80px;\n background: color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-bg-surface));\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n background-clip: text;\n margin-bottom: 28px;\n display: block;\n}\n\n.empty-state h3 {\n color: var(--mj-text-primary);\n font-size: 24px;\n font-weight: 700;\n margin: 0 0 12px 0;\n}\n\n.empty-state p {\n font-size: 16px;\n line-height: 1.6;\n max-width: 420px;\n margin: 0 auto 32px;\n color: var(--mj-text-muted);\n}\n\n.empty-state-btn {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n padding: 14px 28px;\n border-radius: 12px;\n font-size: 15px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n display: inline-flex;\n align-items: center;\n gap: 10px;\n box-shadow: 0 4px 15px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.empty-state-btn:hover {\n transform: translateY(-2px);\n box-shadow: 0 8px 25px color-mix(in srgb, var(--mj-brand-primary) 40%, transparent);\n}\n\n/* Loading State */\n.loading-container {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 400px;\n}\n\n/* Responsive Design */\n@media (max-width: 768px) {\n /* Header chrome (incl. .action-btn-label collapse) is owned by the shared\n <mj-page-header> \u2014 page-header.scss. No per-component header rules here. */\n .agents-grid {\n grid-template-columns: 1fr;\n gap: 16px;\n }\n\n .agent-stats {\n grid-template-columns: 1fr;\n }\n\n .card-header {\n padding: 18px;\n }\n\n .card-body {\n padding: 0 18px 18px 18px;\n }\n\n .card-actions {\n padding: 14px 18px;\n flex-wrap: wrap;\n }\n}\n\n/* =============================================\n Detail Panel - Slide-in Overlay\n ============================================= */\n\n.detail-panel-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.4);\n backdrop-filter: blur(4px);\n z-index: 1000;\n animation: fadeIn 0.25s ease-out;\n}\n\n@keyframes fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n.detail-panel {\n position: fixed;\n top: 0;\n right: -480px;\n width: 480px;\n height: 100vh;\n background: var(--mj-bg-surface);\n box-shadow: -8px 0 32px rgba(0, 0, 0, 0.15);\n z-index: 1001;\n display: flex;\n flex-direction: column;\n transition: right 0.35s cubic-bezier(0.4, 0, 0.2, 1);\n overflow: hidden;\n}\n\n.detail-panel.visible {\n right: 0;\n}\n\n/* Detail Panel Header */\n.detail-panel-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 24px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.detail-panel-title {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.detail-icon {\n width: 56px;\n height: 56px;\n border-radius: 14px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n background: var(--mj-brand-primary);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.detail-icon i {\n color: var(--mj-text-inverse);\n font-size: 24px;\n}\n\n.detail-icon .detail-logo {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 14px;\n}\n\n.detail-title-info h3 {\n margin: 0 0 4px 0;\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-primary);\n}\n\n.detail-subtitle {\n font-size: 13px;\n color: var(--mj-text-muted);\n font-weight: 500;\n}\n\n.detail-panel-close {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n width: 40px;\n height: 40px;\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: var(--mj-text-muted);\n}\n\n.detail-panel-close:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-border-strong);\n color: var(--mj-text-primary);\n}\n\n/* Detail Panel Content */\n.detail-panel-content {\n flex: 1;\n overflow-y: auto;\n padding: 24px;\n}\n\n.detail-section {\n margin-bottom: 28px;\n}\n\n.detail-section:last-child {\n margin-bottom: 0;\n}\n\n.detail-badges {\n display: flex;\n gap: 10px;\n flex-wrap: wrap;\n}\n\n.feature-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border-radius: 20px;\n font-size: 12px;\n font-weight: 600;\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n color: var(--mj-brand-primary-hover);\n}\n\n.feature-badge i {\n font-size: 11px;\n}\n\n.detail-section-title {\n margin: 0 0 16px 0;\n font-size: 12px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.detail-section-title i {\n color: var(--mj-brand-primary);\n font-size: 14px;\n}\n\n.detail-description {\n margin: 0;\n font-size: 14px;\n line-height: 1.7;\n color: var(--mj-text-secondary);\n}\n\n.detail-grid {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 16px;\n}\n\n.detail-item {\n display: flex;\n flex-direction: column;\n gap: 6px;\n padding: 14px;\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n border: 1px solid var(--mj-border-default);\n}\n\n.detail-label {\n font-size: 11px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.detail-value {\n font-size: 14px;\n color: var(--mj-text-primary);\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.detail-value i {\n font-size: 13px;\n}\n\n.detail-code-block {\n background: var(--mj-text-primary);\n color: var(--mj-border-default);\n padding: 16px;\n border-radius: 10px;\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n font-size: 13px;\n line-height: 1.6;\n overflow-x: auto;\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n/* Detail Panel Actions */\n.detail-panel-actions {\n padding: 20px 24px;\n background: var(--mj-bg-surface-card);\n border-top: 1px solid var(--mj-border-default);\n display: flex;\n gap: 12px;\n flex-shrink: 0;\n}\n\n.detail-action-btn {\n flex: 1;\n padding: 14px 20px;\n border-radius: 12px;\n font-size: 14px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n}\n\n.detail-action-btn.secondary {\n background: var(--mj-bg-surface);\n border: 2px solid var(--mj-border-default);\n color: var(--mj-text-secondary);\n}\n\n.detail-action-btn.secondary:hover {\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n background: var(--mj-bg-surface-hover);\n}\n\n.detail-action-btn.primary {\n background: var(--mj-brand-primary);\n border: 2px solid transparent;\n color: var(--mj-text-inverse);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.detail-action-btn.primary:hover {\n background: var(--mj-brand-primary-hover);\n transform: translateY(-1px);\n box-shadow: 0 6px 16px color-mix(in srgb, var(--mj-brand-primary) 40%, transparent);\n}\n\n/* Detail Panel Responsive */\n@media (max-width: 520px) {\n .detail-panel {\n width: 100%;\n right: -100%;\n }\n\n .detail-grid {\n grid-template-columns: 1fr;\n }\n}\n\n/* Search Highlight */\n:host ::ng-deep .search-highlight,\n.search-highlight {\n background-color: color-mix(in srgb, var(--mj-status-warning) 40%, var(--mj-bg-surface));\n padding: 1px 2px;\n border-radius: 2px;\n font-weight: inherit;\n}\n\n/* ============================================\n Tree View - Mac Finder Style\n ============================================ */\n\n.agents-tree {\n padding: 8px 16px;\n height: 100%;\n overflow: auto;\n}\n"] }]
1349
1350
  }], () => [{ type: i1.AITestHarnessDialogService }, { type: i2.CreateAgentService }, { type: i0.ChangeDetectorRef }], null); })();
1350
1351
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AgentConfigurationComponent, { className: "AgentConfigurationComponent", filePath: "src/AI/components/agents/agent-configuration.component.ts", lineNumber: 48 }); })();
1351
1352
  //# sourceMappingURL=agent-configuration.component.js.map