@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
@@ -31,47 +31,47 @@ function AgentRequestsResourceComponent_Conditional_2_Template(rf, ctx) { if (rf
31
31
  const ctx_r0 = i0.ɵɵnextContext();
32
32
  i0.ɵɵproperty("Count", ctx_r0.PendingCount);
33
33
  } }
34
- function AgentRequestsResourceComponent_Conditional_9_Template(rf, ctx) { if (rf & 1) {
35
- i0.ɵɵelementStart(0, "div", 7);
36
- i0.ɵɵelement(1, "mj-loading", 11);
34
+ function AgentRequestsResourceComponent_Conditional_8_Template(rf, ctx) { if (rf & 1) {
35
+ i0.ɵɵelementStart(0, "div", 6);
36
+ i0.ɵɵelement(1, "mj-loading", 10);
37
37
  i0.ɵɵelementEnd();
38
38
  } }
39
- function AgentRequestsResourceComponent_Conditional_10_Conditional_2_Template(rf, ctx) { if (rf & 1) {
40
- i0.ɵɵelementStart(0, "p", 13);
39
+ function AgentRequestsResourceComponent_Conditional_9_Conditional_2_Template(rf, ctx) { if (rf & 1) {
40
+ i0.ɵɵelementStart(0, "p", 12);
41
41
  i0.ɵɵtext(1, "No agent requests yet");
42
42
  i0.ɵɵelementEnd();
43
- i0.ɵɵelementStart(2, "p", 14);
43
+ i0.ɵɵelementStart(2, "p", 13);
44
44
  i0.ɵɵtext(3, "When agents need human input, their requests will appear here.");
45
45
  i0.ɵɵelementEnd();
46
46
  } }
47
- function AgentRequestsResourceComponent_Conditional_10_Conditional_3_Template(rf, ctx) { if (rf & 1) {
47
+ function AgentRequestsResourceComponent_Conditional_9_Conditional_3_Template(rf, ctx) { if (rf & 1) {
48
48
  const _r2 = i0.ɵɵgetCurrentView();
49
- i0.ɵɵelementStart(0, "p", 13);
49
+ i0.ɵɵelementStart(0, "p", 12);
50
50
  i0.ɵɵtext(1, "No requests match your filters");
51
51
  i0.ɵɵelementEnd();
52
- i0.ɵɵelementStart(2, "button", 15);
53
- i0.ɵɵlistener("click", function AgentRequestsResourceComponent_Conditional_10_Conditional_3_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.ClearFilters()); });
52
+ i0.ɵɵelementStart(2, "button", 14);
53
+ i0.ɵɵlistener("click", function AgentRequestsResourceComponent_Conditional_9_Conditional_3_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.ClearFilters()); });
54
54
  i0.ɵɵtext(3, "Clear Filters");
55
55
  i0.ɵɵelementEnd();
56
56
  } }
57
- function AgentRequestsResourceComponent_Conditional_10_Template(rf, ctx) { if (rf & 1) {
58
- i0.ɵɵelementStart(0, "div", 8);
59
- i0.ɵɵelement(1, "i", 12);
60
- i0.ɵɵconditionalCreate(2, AgentRequestsResourceComponent_Conditional_10_Conditional_2_Template, 4, 0)(3, AgentRequestsResourceComponent_Conditional_10_Conditional_3_Template, 4, 0);
57
+ function AgentRequestsResourceComponent_Conditional_9_Template(rf, ctx) { if (rf & 1) {
58
+ i0.ɵɵelementStart(0, "div", 7);
59
+ i0.ɵɵelement(1, "i", 11);
60
+ i0.ɵɵconditionalCreate(2, AgentRequestsResourceComponent_Conditional_9_Conditional_2_Template, 4, 0)(3, AgentRequestsResourceComponent_Conditional_9_Conditional_3_Template, 4, 0);
61
61
  i0.ɵɵelementEnd();
62
62
  } if (rf & 2) {
63
63
  const ctx_r0 = i0.ɵɵnextContext();
64
64
  i0.ɵɵadvance(2);
65
65
  i0.ɵɵconditional(ctx_r0.Requests.length === 0 ? 2 : 3);
66
66
  } }
67
- function AgentRequestsResourceComponent_Conditional_11_For_2_Conditional_11_Template(rf, ctx) { if (rf & 1) {
68
- i0.ɵɵelementStart(0, "span", 22);
67
+ function AgentRequestsResourceComponent_Conditional_10_For_2_Conditional_11_Template(rf, ctx) { if (rf & 1) {
68
+ i0.ɵɵelementStart(0, "span", 21);
69
69
  i0.ɵɵtext(1, "Expired");
70
70
  i0.ɵɵelementEnd();
71
71
  } }
72
- function AgentRequestsResourceComponent_Conditional_11_For_2_Conditional_15_Template(rf, ctx) { if (rf & 1) {
73
- i0.ɵɵelementStart(0, "span", 25);
74
- i0.ɵɵelement(1, "i", 29);
72
+ function AgentRequestsResourceComponent_Conditional_10_For_2_Conditional_15_Template(rf, ctx) { if (rf & 1) {
73
+ i0.ɵɵelementStart(0, "span", 24);
74
+ i0.ɵɵelement(1, "i", 28);
75
75
  i0.ɵɵtext(2);
76
76
  i0.ɵɵelementEnd();
77
77
  } if (rf & 2) {
@@ -79,9 +79,9 @@ function AgentRequestsResourceComponent_Conditional_11_For_2_Conditional_15_Temp
79
79
  i0.ɵɵadvance(2);
80
80
  i0.ɵɵtextInterpolate1(" ", request_r4.Agent, " ");
81
81
  } }
82
- function AgentRequestsResourceComponent_Conditional_11_For_2_Conditional_16_Template(rf, ctx) { if (rf & 1) {
83
- i0.ɵɵelementStart(0, "span", 25);
84
- i0.ɵɵelement(1, "i", 30);
82
+ function AgentRequestsResourceComponent_Conditional_10_For_2_Conditional_16_Template(rf, ctx) { if (rf & 1) {
83
+ i0.ɵɵelementStart(0, "span", 24);
84
+ i0.ɵɵelement(1, "i", 29);
85
85
  i0.ɵɵtext(2);
86
86
  i0.ɵɵpipe(3, "date");
87
87
  i0.ɵɵelementEnd();
@@ -90,9 +90,9 @@ function AgentRequestsResourceComponent_Conditional_11_For_2_Conditional_16_Temp
90
90
  i0.ɵɵadvance(2);
91
91
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(3, 1, request_r4.__mj_CreatedAt, "short"), " ");
92
92
  } }
93
- function AgentRequestsResourceComponent_Conditional_11_For_2_Conditional_17_Template(rf, ctx) { if (rf & 1) {
94
- i0.ɵɵelementStart(0, "span", 25);
95
- i0.ɵɵelement(1, "i", 31);
93
+ function AgentRequestsResourceComponent_Conditional_10_For_2_Conditional_17_Template(rf, ctx) { if (rf & 1) {
94
+ i0.ɵɵelementStart(0, "span", 24);
95
+ i0.ɵɵelement(1, "i", 30);
96
96
  i0.ɵɵtext(2);
97
97
  i0.ɵɵpipe(3, "date");
98
98
  i0.ɵɵelementEnd();
@@ -103,14 +103,14 @@ function AgentRequestsResourceComponent_Conditional_11_For_2_Conditional_17_Temp
103
103
  i0.ɵɵadvance(2);
104
104
  i0.ɵɵtextInterpolate1(" Expires ", i0.ɵɵpipeBind2(3, 3, request_r4.ExpiresAt, "short"), " ");
105
105
  } }
106
- function AgentRequestsResourceComponent_Conditional_11_For_2_Template(rf, ctx) { if (rf & 1) {
106
+ function AgentRequestsResourceComponent_Conditional_10_For_2_Template(rf, ctx) { if (rf & 1) {
107
107
  const _r3 = i0.ɵɵgetCurrentView();
108
- i0.ɵɵelementStart(0, "div", 17);
109
- i0.ɵɵlistener("click", function AgentRequestsResourceComponent_Conditional_11_For_2_Template_div_click_0_listener() { const request_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.OnRequestClick(request_r4)); });
110
- i0.ɵɵelementStart(1, "div", 18);
108
+ i0.ɵɵelementStart(0, "div", 16);
109
+ i0.ɵɵlistener("click", function AgentRequestsResourceComponent_Conditional_10_For_2_Template_div_click_0_listener() { const request_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.OnRequestClick(request_r4)); });
110
+ i0.ɵɵelementStart(1, "div", 17);
111
111
  i0.ɵɵelement(2, "i");
112
112
  i0.ɵɵelementEnd();
113
- i0.ɵɵelementStart(3, "div", 19)(4, "div", 20)(5, "span", 21);
113
+ i0.ɵɵelementStart(3, "div", 18)(4, "div", 19)(5, "span", 20);
114
114
  i0.ɵɵtext(6);
115
115
  i0.ɵɵelementEnd();
116
116
  i0.ɵɵelementStart(7, "span");
@@ -119,18 +119,18 @@ function AgentRequestsResourceComponent_Conditional_11_For_2_Template(rf, ctx) {
119
119
  i0.ɵɵelementStart(9, "span");
120
120
  i0.ɵɵtext(10);
121
121
  i0.ɵɵelementEnd();
122
- i0.ɵɵconditionalCreate(11, AgentRequestsResourceComponent_Conditional_11_For_2_Conditional_11_Template, 2, 0, "span", 22);
122
+ i0.ɵɵconditionalCreate(11, AgentRequestsResourceComponent_Conditional_10_For_2_Conditional_11_Template, 2, 0, "span", 21);
123
123
  i0.ɵɵelementEnd();
124
- i0.ɵɵelementStart(12, "p", 23);
124
+ i0.ɵɵelementStart(12, "p", 22);
125
125
  i0.ɵɵtext(13);
126
126
  i0.ɵɵelementEnd();
127
- i0.ɵɵelementStart(14, "div", 24);
128
- i0.ɵɵconditionalCreate(15, AgentRequestsResourceComponent_Conditional_11_For_2_Conditional_15_Template, 3, 1, "span", 25);
129
- i0.ɵɵconditionalCreate(16, AgentRequestsResourceComponent_Conditional_11_For_2_Conditional_16_Template, 4, 4, "span", 25);
130
- i0.ɵɵconditionalCreate(17, AgentRequestsResourceComponent_Conditional_11_For_2_Conditional_17_Template, 4, 6, "span", 26);
127
+ i0.ɵɵelementStart(14, "div", 23);
128
+ i0.ɵɵconditionalCreate(15, AgentRequestsResourceComponent_Conditional_10_For_2_Conditional_15_Template, 3, 1, "span", 24);
129
+ i0.ɵɵconditionalCreate(16, AgentRequestsResourceComponent_Conditional_10_For_2_Conditional_16_Template, 4, 4, "span", 24);
130
+ i0.ɵɵconditionalCreate(17, AgentRequestsResourceComponent_Conditional_10_For_2_Conditional_17_Template, 4, 6, "span", 25);
131
131
  i0.ɵɵelementEnd()();
132
- i0.ɵɵelementStart(18, "div", 27);
133
- i0.ɵɵelement(19, "i", 28);
132
+ i0.ɵɵelementStart(18, "div", 26);
133
+ i0.ɵɵelement(19, "i", 27);
134
134
  i0.ɵɵelementEnd()();
135
135
  } if (rf & 2) {
136
136
  const request_r4 = ctx.$implicit;
@@ -159,19 +159,19 @@ function AgentRequestsResourceComponent_Conditional_11_For_2_Template(rf, ctx) {
159
159
  i0.ɵɵadvance();
160
160
  i0.ɵɵconditional(request_r4.ExpiresAt ? 17 : -1);
161
161
  } }
162
- function AgentRequestsResourceComponent_Conditional_11_Template(rf, ctx) { if (rf & 1) {
163
- i0.ɵɵelementStart(0, "div", 9);
164
- i0.ɵɵrepeaterCreate(1, AgentRequestsResourceComponent_Conditional_11_For_2_Template, 20, 21, "div", 16, _forTrack0);
162
+ function AgentRequestsResourceComponent_Conditional_10_Template(rf, ctx) { if (rf & 1) {
163
+ i0.ɵɵelementStart(0, "div", 8);
164
+ i0.ɵɵrepeaterCreate(1, AgentRequestsResourceComponent_Conditional_10_For_2_Template, 20, 21, "div", 15, _forTrack0);
165
165
  i0.ɵɵelementEnd();
166
166
  } if (rf & 2) {
167
167
  const ctx_r0 = i0.ɵɵnextContext();
168
168
  i0.ɵɵadvance();
169
169
  i0.ɵɵrepeater(ctx_r0.FilteredRequests);
170
170
  } }
171
- function AgentRequestsResourceComponent_Conditional_12_Template(rf, ctx) { if (rf & 1) {
171
+ function AgentRequestsResourceComponent_Conditional_11_Template(rf, ctx) { if (rf & 1) {
172
172
  const _r5 = i0.ɵɵgetCurrentView();
173
- i0.ɵɵelementStart(0, "mj-agent-request-dialog", 32);
174
- i0.ɵɵlistener("Close", function AgentRequestsResourceComponent_Conditional_12_Template_mj_agent_request_dialog_Close_0_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.OnPanelClose($event)); });
173
+ i0.ɵɵelementStart(0, "mj-agent-request-dialog", 31);
174
+ i0.ɵɵlistener("Close", function AgentRequestsResourceComponent_Conditional_11_Template_mj_agent_request_dialog_Close_0_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.OnPanelClose($event)); });
175
175
  i0.ɵɵelementEnd();
176
176
  } if (rf & 2) {
177
177
  const ctx_r0 = i0.ɵɵnextContext();
@@ -498,34 +498,34 @@ let AgentRequestsResourceComponent = class AgentRequestsResourceComponent extend
498
498
  }
499
499
  }
500
500
  static ɵfac = function AgentRequestsResourceComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || AgentRequestsResourceComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
501
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AgentRequestsResourceComponent, selectors: [["app-agent-requests-resource"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 13, vars: 8, consts: [["Title", "Agent Requests", "Icon", "fa-solid fa-inbox"], ["meta", "", "Icon", "fa-solid fa-hourglass-half", "Label", "pending", "Variant", "warning", 3, "Count"], ["actions", ""], [3, "ClearAllRequested", "ActiveCount", "ShowClearAll"], [3, "ValuesChange", "Reset", "Fields", "Values"], ["toolbar", ""], ["Placeholder", "Search requests...", 3, "ValueChange", "Value"], [1, "loading-container"], [1, "empty-state"], [1, "requests-list"], [3, "Visible", "Request"], ["text", "Loading agent requests..."], [1, "fa-solid", "fa-inbox", "empty-icon"], [1, "empty-text"], [1, "empty-subtext"], [1, "clear-filters-btn", 3, "click"], [1, "request-card", 3, "actionable", "expired"], [1, "request-card", 3, "click"], [1, "card-left"], [1, "card-content"], [1, "card-top-row"], [1, "request-type-name"], [1, "expired-tag"], [1, "request-text"], [1, "card-meta"], [1, "meta-item"], [1, "meta-item", 3, "expired"], [1, "card-right"], [1, "fa-solid", "fa-chevron-right"], [1, "fa-solid", "fa-robot"], [1, "fa-regular", "fa-clock"], [1, "fa-solid", "fa-hourglass-end"], [3, "Close", "Visible", "Request"]], template: function AgentRequestsResourceComponent_Template(rf, ctx) { if (rf & 1) {
501
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AgentRequestsResourceComponent, selectors: [["app-agent-requests-resource"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 12, vars: 8, consts: [["Title", "Agent Requests", "Icon", "fa-solid fa-inbox"], ["meta", "", "Icon", "fa-solid fa-hourglass-half", "Label", "pending", "Variant", "warning", 3, "Count"], ["toolbar", ""], ["Placeholder", "Search requests...", 3, "ValueChange", "Value"], [3, "ClearAllRequested", "ActiveCount", "ShowClearAll"], [3, "ValuesChange", "Reset", "Fields", "Values"], [1, "loading-container"], [1, "empty-state"], [1, "requests-list"], [3, "Visible", "Request"], ["text", "Loading agent requests..."], [1, "fa-solid", "fa-inbox", "empty-icon"], [1, "empty-text"], [1, "empty-subtext"], [1, "clear-filters-btn", 3, "click"], [1, "request-card", 3, "actionable", "expired"], [1, "request-card", 3, "click"], [1, "card-left"], [1, "card-content"], [1, "card-top-row"], [1, "request-type-name"], [1, "expired-tag"], [1, "request-text"], [1, "card-meta"], [1, "meta-item"], [1, "meta-item", 3, "expired"], [1, "card-right"], [1, "fa-solid", "fa-chevron-right"], [1, "fa-solid", "fa-robot"], [1, "fa-regular", "fa-clock"], [1, "fa-solid", "fa-hourglass-end"], [3, "Close", "Visible", "Request"]], template: function AgentRequestsResourceComponent_Template(rf, ctx) { if (rf & 1) {
502
502
  i0.ɵɵelementStart(0, "mj-page-layout")(1, "mj-page-header", 0);
503
503
  i0.ɵɵconditionalCreate(2, AgentRequestsResourceComponent_Conditional_2_Template, 1, 1, "mj-stat-badge", 1);
504
- i0.ɵɵelementStart(3, "div", 2)(4, "mj-filter-popover", 3);
505
- i0.ɵɵlistener("ClearAllRequested", function AgentRequestsResourceComponent_Template_mj_filter_popover_ClearAllRequested_4_listener() { return ctx.resetPopoverFilters(); });
506
- i0.ɵɵelementStart(5, "mj-filter-panel", 4);
507
- i0.ɵɵlistener("ValuesChange", function AgentRequestsResourceComponent_Template_mj_filter_panel_ValuesChange_5_listener($event) { return ctx.onFilterValuesChange($event); })("Reset", function AgentRequestsResourceComponent_Template_mj_filter_panel_Reset_5_listener() { return ctx.resetPopoverFilters(); });
508
- i0.ɵɵelementEnd()()();
509
- i0.ɵɵelementStart(6, "div", 5)(7, "mj-page-search", 6);
510
- i0.ɵɵlistener("ValueChange", function AgentRequestsResourceComponent_Template_mj_page_search_ValueChange_7_listener($event) { return ctx.OnSearchChange($event); });
511
- i0.ɵɵelementEnd()()();
512
- i0.ɵɵelementStart(8, "mj-page-body");
513
- i0.ɵɵconditionalCreate(9, AgentRequestsResourceComponent_Conditional_9_Template, 2, 0, "div", 7)(10, AgentRequestsResourceComponent_Conditional_10_Template, 4, 1, "div", 8)(11, AgentRequestsResourceComponent_Conditional_11_Template, 3, 0, "div", 9);
504
+ i0.ɵɵelementStart(3, "div", 2)(4, "mj-page-search", 3);
505
+ i0.ɵɵlistener("ValueChange", function AgentRequestsResourceComponent_Template_mj_page_search_ValueChange_4_listener($event) { return ctx.OnSearchChange($event); });
506
+ i0.ɵɵelementEnd();
507
+ i0.ɵɵelementStart(5, "mj-filter-popover", 4);
508
+ i0.ɵɵlistener("ClearAllRequested", function AgentRequestsResourceComponent_Template_mj_filter_popover_ClearAllRequested_5_listener() { return ctx.resetPopoverFilters(); });
509
+ i0.ɵɵelementStart(6, "mj-filter-panel", 5);
510
+ i0.ɵɵlistener("ValuesChange", function AgentRequestsResourceComponent_Template_mj_filter_panel_ValuesChange_6_listener($event) { return ctx.onFilterValuesChange($event); })("Reset", function AgentRequestsResourceComponent_Template_mj_filter_panel_Reset_6_listener() { return ctx.resetPopoverFilters(); });
511
+ i0.ɵɵelementEnd()()()();
512
+ i0.ɵɵelementStart(7, "mj-page-body");
513
+ i0.ɵɵconditionalCreate(8, AgentRequestsResourceComponent_Conditional_8_Template, 2, 0, "div", 6)(9, AgentRequestsResourceComponent_Conditional_9_Template, 4, 1, "div", 7)(10, AgentRequestsResourceComponent_Conditional_10_Template, 3, 0, "div", 8);
514
514
  i0.ɵɵelementEnd()();
515
- i0.ɵɵconditionalCreate(12, AgentRequestsResourceComponent_Conditional_12_Template, 1, 2, "mj-agent-request-dialog", 10);
515
+ i0.ɵɵconditionalCreate(11, AgentRequestsResourceComponent_Conditional_11_Template, 1, 2, "mj-agent-request-dialog", 9);
516
516
  } if (rf & 2) {
517
517
  i0.ɵɵadvance(2);
518
518
  i0.ɵɵconditional(ctx.PendingCount > 0 ? 2 : -1);
519
519
  i0.ɵɵadvance(2);
520
+ i0.ɵɵproperty("Value", ctx.Filters.SearchTerm);
521
+ i0.ɵɵadvance();
520
522
  i0.ɵɵproperty("ActiveCount", ctx.ActiveFilterCount)("ShowClearAll", ctx.ActiveFilterCount > 0);
521
523
  i0.ɵɵadvance();
522
524
  i0.ɵɵproperty("Fields", ctx.requestFilterFields)("Values", ctx.requestFilterValues);
523
525
  i0.ɵɵadvance(2);
524
- i0.ɵɵproperty("Value", ctx.Filters.SearchTerm);
525
- i0.ɵɵadvance(2);
526
- i0.ɵɵconditional(ctx.IsLoading ? 9 : ctx.FilteredRequests.length === 0 ? 10 : 11);
526
+ i0.ɵɵconditional(ctx.IsLoading ? 8 : ctx.FilteredRequests.length === 0 ? 9 : 10);
527
527
  i0.ɵɵadvance(3);
528
- i0.ɵɵconditional(ctx.ShowRequestPanel && ctx.SelectedRequest ? 12 : -1);
528
+ i0.ɵɵconditional(ctx.ShowRequestPanel && ctx.SelectedRequest ? 11 : -1);
529
529
  } }, dependencies: [i1.LoadingComponent, i2.AgentRequestDialogComponent, i3.MJPageHeaderComponent, i3.MJPageLayoutComponent, i3.MJPageBodyComponent, i3.MJFilterPopoverComponent, i3.MJPageSearchComponent, i3.MJFilterPanelComponent, i3.MJStatBadgeComponent, i4.DatePipe], styles: ["\n\n\n\n\n\n.clear-filters-btn[_ngcontent-%COMP%] {\n padding: 6px 12px;\n border: none;\n border-radius: 6px;\n font-size: 12px;\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-secondary);\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.clear-filters-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-active);\n color: var(--mj-text-primary);\n}\n\n\n\n.loading-container[_ngcontent-%COMP%] {\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 60px 20px;\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 80px 20px;\n text-align: center;\n}\n\n.empty-icon[_ngcontent-%COMP%] {\n font-size: 48px;\n color: var(--mj-text-disabled);\n margin-bottom: 16px;\n}\n\n.empty-text[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n font-size: 16px;\n color: var(--mj-text-secondary);\n}\n\n.empty-subtext[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n\n\n.requests-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n flex: 1;\n padding: 0 20px 20px;\n overflow-y: auto;\n}\n\n.request-card[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 14px;\n padding: 14px 16px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n cursor: pointer;\n transition: border-color 0.15s, box-shadow 0.15s;\n}\n\n.request-card[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.request-card.actionable[_ngcontent-%COMP%] {\n border-left: 3px solid var(--mj-status-warning);\n}\n\n.request-card.expired[_ngcontent-%COMP%] {\n opacity: 0.7;\n}\n\n.card-left[_ngcontent-%COMP%] {\n flex-shrink: 0;\n padding-top: 2px;\n}\n\n.type-icon[_ngcontent-%COMP%] {\n font-size: 18px;\n color: var(--mj-brand-primary);\n}\n\n.card-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.card-top-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-wrap: wrap;\n margin-bottom: 6px;\n}\n\n.request-type-name[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.request-text[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n font-size: 13px;\n color: var(--mj-text-secondary);\n line-height: 1.5;\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n}\n\n.card-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 14px;\n flex-wrap: wrap;\n}\n\n.meta-item[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.meta-item.expired[_ngcontent-%COMP%] {\n color: var(--mj-status-error-text);\n}\n\n.card-right[_ngcontent-%COMP%] {\n flex-shrink: 0;\n color: var(--mj-text-disabled);\n font-size: 12px;\n padding-top: 4px;\n}\n\n\n\n.status-badge[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 10px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.status-requested[_ngcontent-%COMP%] {\n background: var(--mj-status-info-bg);\n color: var(--mj-status-info-text);\n border: 1px solid var(--mj-status-info-border);\n}\n\n.status-approved[_ngcontent-%COMP%], \n.status-responded[_ngcontent-%COMP%] {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success-text);\n border: 1px solid var(--mj-status-success-border);\n}\n\n.status-rejected[_ngcontent-%COMP%], \n.status-canceled[_ngcontent-%COMP%] {\n background: var(--mj-status-error-bg);\n color: var(--mj-status-error-text);\n border: 1px solid var(--mj-status-error-border);\n}\n\n.status-expired[_ngcontent-%COMP%] {\n background: var(--mj-status-warning-bg);\n color: var(--mj-status-warning-text);\n border: 1px solid var(--mj-status-warning-border);\n}\n\n.priority-badge[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 10px;\n font-weight: 600;\n}\n\n.priority-low[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n}\n\n.priority-normal[_ngcontent-%COMP%] {\n background: var(--mj-status-info-bg);\n color: var(--mj-status-info-text);\n}\n\n.priority-high[_ngcontent-%COMP%] {\n background: var(--mj-status-warning-bg);\n color: var(--mj-status-warning-text);\n}\n\n.priority-critical[_ngcontent-%COMP%] {\n background: var(--mj-status-error-bg);\n color: var(--mj-status-error-text);\n}\n\n.expired-tag[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 2px 6px;\n border-radius: 8px;\n font-size: 10px;\n font-weight: 600;\n background: var(--mj-status-warning-bg);\n color: var(--mj-status-warning-text);\n}"] });
530
530
  };
531
531
  AgentRequestsResourceComponent = __decorate([
@@ -534,7 +534,7 @@ AgentRequestsResourceComponent = __decorate([
534
534
  export { AgentRequestsResourceComponent };
535
535
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AgentRequestsResourceComponent, [{
536
536
  type: Component,
537
- args: [{ standalone: false, selector: 'app-agent-requests-resource', template: "<mj-page-layout>\n <!-- Header -->\n <mj-page-header\n Title=\"Agent Requests\"\n Icon=\"fa-solid fa-inbox\">\n @if (PendingCount > 0) {\n <mj-stat-badge meta\n Icon=\"fa-solid fa-hourglass-half\"\n [Count]=\"PendingCount\"\n Label=\"pending\"\n Variant=\"warning\">\n </mj-stat-badge>\n }\n <div actions>\n <mj-filter-popover\n [ActiveCount]=\"ActiveFilterCount\"\n [ShowClearAll]=\"ActiveFilterCount > 0\"\n (ClearAllRequested)=\"resetPopoverFilters()\">\n <mj-filter-panel\n [Fields]=\"requestFilterFields\"\n [Values]=\"requestFilterValues\"\n (ValuesChange)=\"onFilterValuesChange($event)\"\n (Reset)=\"resetPopoverFilters()\">\n </mj-filter-panel>\n </mj-filter-popover>\n </div>\n <div toolbar>\n <mj-page-search\n Placeholder=\"Search requests...\"\n [Value]=\"Filters.SearchTerm\"\n (ValueChange)=\"OnSearchChange($event)\">\n </mj-page-search>\n </div>\n </mj-page-header>\n\n <mj-page-body>\n <!-- Content -->\n @if (IsLoading) {\n <div class=\"loading-container\">\n <mj-loading text=\"Loading agent requests...\"></mj-loading>\n </div>\n } @else if (FilteredRequests.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-inbox empty-icon\"></i>\n @if (Requests.length === 0) {\n <p class=\"empty-text\">No agent requests yet</p>\n <p class=\"empty-subtext\">When agents need human input, their requests will appear here.</p>\n } @else {\n <p class=\"empty-text\">No requests match your filters</p>\n <button class=\"clear-filters-btn\" (click)=\"ClearFilters()\">Clear Filters</button>\n }\n </div>\n } @else {\n <div class=\"requests-list\">\n @for (request of FilteredRequests; track request.ID) {\n <div\n class=\"request-card\"\n [class.actionable]=\"request.Status === 'Requested'\"\n [class.expired]=\"IsExpired(request)\"\n (click)=\"OnRequestClick(request)\">\n <div class=\"card-left\">\n <i class=\"{{ GetRequestTypeIcon(request.RequestTypeID) }} type-icon\"></i>\n </div>\n <div class=\"card-content\">\n <div class=\"card-top-row\">\n <span class=\"request-type-name\">{{ GetRequestTypeName(request.RequestTypeID) }}</span>\n <span class=\"priority-badge {{ GetPriorityClass(request.Priority) }}\">\n {{ GetPriorityLabel(request.Priority) }}\n </span>\n <span class=\"status-badge status-{{ request.Status.toLowerCase() }}\">\n {{ request.Status }}\n </span>\n @if (IsExpired(request) && request.Status === 'Requested') {\n <span class=\"expired-tag\">Expired</span>\n }\n </div>\n <p class=\"request-text\">{{ request.Request }}</p>\n <div class=\"card-meta\">\n @if (request.Agent) {\n <span class=\"meta-item\">\n <i class=\"fa-solid fa-robot\"></i> {{ request.Agent }}\n </span>\n }\n @if (request.__mj_CreatedAt) {\n <span class=\"meta-item\">\n <i class=\"fa-regular fa-clock\"></i> {{ request.__mj_CreatedAt | date:'short' }}\n </span>\n }\n @if (request.ExpiresAt) {\n <span class=\"meta-item\" [class.expired]=\"IsExpired(request)\">\n <i class=\"fa-solid fa-hourglass-end\"></i> Expires {{ request.ExpiresAt | date:'short' }}\n </span>\n }\n </div>\n </div>\n <div class=\"card-right\">\n <i class=\"fa-solid fa-chevron-right\"></i>\n </div>\n </div>\n }\n </div>\n }\n </mj-page-body>\n</mj-page-layout>\n\n<!-- Agent Request Detail Panel -->\n@if (ShowRequestPanel && SelectedRequest) {\n <mj-agent-request-dialog\n [Visible]=\"ShowRequestPanel\"\n [Request]=\"SelectedRequest\"\n (Close)=\"OnPanelClose($event)\">\n </mj-agent-request-dialog>\n}\n", styles: ["/* Container is now provided by <mj-page-layout>; body padding moved to .filter-bar / list sections below */\n\n/* Search & filters now live in <mj-page-header>'s toolbar/actions via shared components. */\n\n.clear-filters-btn {\n padding: 6px 12px;\n border: none;\n border-radius: 6px;\n font-size: 12px;\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-secondary);\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.clear-filters-btn:hover {\n background: var(--mj-bg-surface-active);\n color: var(--mj-text-primary);\n}\n\n/* Loading */\n.loading-container {\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 60px 20px;\n}\n\n/* Empty State */\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 80px 20px;\n text-align: center;\n}\n\n.empty-icon {\n font-size: 48px;\n color: var(--mj-text-disabled);\n margin-bottom: 16px;\n}\n\n.empty-text {\n margin: 0 0 8px 0;\n font-size: 16px;\n color: var(--mj-text-secondary);\n}\n\n.empty-subtext {\n margin: 0;\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n/* Request Cards */\n.requests-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n flex: 1;\n padding: 0 20px 20px;\n overflow-y: auto;\n}\n\n.request-card {\n display: flex;\n align-items: flex-start;\n gap: 14px;\n padding: 14px 16px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n cursor: pointer;\n transition: border-color 0.15s, box-shadow 0.15s;\n}\n\n.request-card:hover {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.request-card.actionable {\n border-left: 3px solid var(--mj-status-warning);\n}\n\n.request-card.expired {\n opacity: 0.7;\n}\n\n.card-left {\n flex-shrink: 0;\n padding-top: 2px;\n}\n\n.type-icon {\n font-size: 18px;\n color: var(--mj-brand-primary);\n}\n\n.card-content {\n flex: 1;\n min-width: 0;\n}\n\n.card-top-row {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-wrap: wrap;\n margin-bottom: 6px;\n}\n\n.request-type-name {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.request-text {\n margin: 0 0 8px 0;\n font-size: 13px;\n color: var(--mj-text-secondary);\n line-height: 1.5;\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n}\n\n.card-meta {\n display: flex;\n gap: 14px;\n flex-wrap: wrap;\n}\n\n.meta-item {\n font-size: 11px;\n color: var(--mj-text-muted);\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.meta-item.expired {\n color: var(--mj-status-error-text);\n}\n\n.card-right {\n flex-shrink: 0;\n color: var(--mj-text-disabled);\n font-size: 12px;\n padding-top: 4px;\n}\n\n/* Badges */\n.status-badge {\n display: inline-block;\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 10px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.status-requested {\n background: var(--mj-status-info-bg);\n color: var(--mj-status-info-text);\n border: 1px solid var(--mj-status-info-border);\n}\n\n.status-approved,\n.status-responded {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success-text);\n border: 1px solid var(--mj-status-success-border);\n}\n\n.status-rejected,\n.status-canceled {\n background: var(--mj-status-error-bg);\n color: var(--mj-status-error-text);\n border: 1px solid var(--mj-status-error-border);\n}\n\n.status-expired {\n background: var(--mj-status-warning-bg);\n color: var(--mj-status-warning-text);\n border: 1px solid var(--mj-status-warning-border);\n}\n\n.priority-badge {\n display: inline-block;\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 10px;\n font-weight: 600;\n}\n\n.priority-low {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n}\n\n.priority-normal {\n background: var(--mj-status-info-bg);\n color: var(--mj-status-info-text);\n}\n\n.priority-high {\n background: var(--mj-status-warning-bg);\n color: var(--mj-status-warning-text);\n}\n\n.priority-critical {\n background: var(--mj-status-error-bg);\n color: var(--mj-status-error-text);\n}\n\n.expired-tag {\n display: inline-block;\n padding: 2px 6px;\n border-radius: 8px;\n font-size: 10px;\n font-weight: 600;\n background: var(--mj-status-warning-bg);\n color: var(--mj-status-warning-text);\n}\n"] }]
537
+ args: [{ standalone: false, selector: 'app-agent-requests-resource', template: "<mj-page-layout>\n <!-- Header -->\n <mj-page-header\n Title=\"Agent Requests\"\n Icon=\"fa-solid fa-inbox\">\n @if (PendingCount > 0) {\n <mj-stat-badge meta\n Icon=\"fa-solid fa-hourglass-half\"\n [Count]=\"PendingCount\"\n Label=\"pending\"\n Variant=\"warning\">\n </mj-stat-badge>\n }\n <div toolbar>\n <mj-page-search\n Placeholder=\"Search requests...\"\n [Value]=\"Filters.SearchTerm\"\n (ValueChange)=\"OnSearchChange($event)\">\n </mj-page-search>\n <mj-filter-popover\n [ActiveCount]=\"ActiveFilterCount\"\n [ShowClearAll]=\"ActiveFilterCount > 0\"\n (ClearAllRequested)=\"resetPopoverFilters()\">\n <mj-filter-panel\n [Fields]=\"requestFilterFields\"\n [Values]=\"requestFilterValues\"\n (ValuesChange)=\"onFilterValuesChange($event)\"\n (Reset)=\"resetPopoverFilters()\">\n </mj-filter-panel>\n </mj-filter-popover>\n </div>\n </mj-page-header>\n\n <mj-page-body>\n <!-- Content -->\n @if (IsLoading) {\n <div class=\"loading-container\">\n <mj-loading text=\"Loading agent requests...\"></mj-loading>\n </div>\n } @else if (FilteredRequests.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-inbox empty-icon\"></i>\n @if (Requests.length === 0) {\n <p class=\"empty-text\">No agent requests yet</p>\n <p class=\"empty-subtext\">When agents need human input, their requests will appear here.</p>\n } @else {\n <p class=\"empty-text\">No requests match your filters</p>\n <button class=\"clear-filters-btn\" (click)=\"ClearFilters()\">Clear Filters</button>\n }\n </div>\n } @else {\n <div class=\"requests-list\">\n @for (request of FilteredRequests; track request.ID) {\n <div\n class=\"request-card\"\n [class.actionable]=\"request.Status === 'Requested'\"\n [class.expired]=\"IsExpired(request)\"\n (click)=\"OnRequestClick(request)\">\n <div class=\"card-left\">\n <i class=\"{{ GetRequestTypeIcon(request.RequestTypeID) }} type-icon\"></i>\n </div>\n <div class=\"card-content\">\n <div class=\"card-top-row\">\n <span class=\"request-type-name\">{{ GetRequestTypeName(request.RequestTypeID) }}</span>\n <span class=\"priority-badge {{ GetPriorityClass(request.Priority) }}\">\n {{ GetPriorityLabel(request.Priority) }}\n </span>\n <span class=\"status-badge status-{{ request.Status.toLowerCase() }}\">\n {{ request.Status }}\n </span>\n @if (IsExpired(request) && request.Status === 'Requested') {\n <span class=\"expired-tag\">Expired</span>\n }\n </div>\n <p class=\"request-text\">{{ request.Request }}</p>\n <div class=\"card-meta\">\n @if (request.Agent) {\n <span class=\"meta-item\">\n <i class=\"fa-solid fa-robot\"></i> {{ request.Agent }}\n </span>\n }\n @if (request.__mj_CreatedAt) {\n <span class=\"meta-item\">\n <i class=\"fa-regular fa-clock\"></i> {{ request.__mj_CreatedAt | date:'short' }}\n </span>\n }\n @if (request.ExpiresAt) {\n <span class=\"meta-item\" [class.expired]=\"IsExpired(request)\">\n <i class=\"fa-solid fa-hourglass-end\"></i> Expires {{ request.ExpiresAt | date:'short' }}\n </span>\n }\n </div>\n </div>\n <div class=\"card-right\">\n <i class=\"fa-solid fa-chevron-right\"></i>\n </div>\n </div>\n }\n </div>\n }\n </mj-page-body>\n</mj-page-layout>\n\n<!-- Agent Request Detail Panel -->\n@if (ShowRequestPanel && SelectedRequest) {\n <mj-agent-request-dialog\n [Visible]=\"ShowRequestPanel\"\n [Request]=\"SelectedRequest\"\n (Close)=\"OnPanelClose($event)\">\n </mj-agent-request-dialog>\n}\n", styles: ["/* Container is now provided by <mj-page-layout>; body padding moved to .filter-bar / list sections below */\n\n/* Search & filters now live in <mj-page-header>'s toolbar/actions via shared components. */\n\n.clear-filters-btn {\n padding: 6px 12px;\n border: none;\n border-radius: 6px;\n font-size: 12px;\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-secondary);\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.clear-filters-btn:hover {\n background: var(--mj-bg-surface-active);\n color: var(--mj-text-primary);\n}\n\n/* Loading */\n.loading-container {\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 60px 20px;\n}\n\n/* Empty State */\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 80px 20px;\n text-align: center;\n}\n\n.empty-icon {\n font-size: 48px;\n color: var(--mj-text-disabled);\n margin-bottom: 16px;\n}\n\n.empty-text {\n margin: 0 0 8px 0;\n font-size: 16px;\n color: var(--mj-text-secondary);\n}\n\n.empty-subtext {\n margin: 0;\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n/* Request Cards */\n.requests-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n flex: 1;\n padding: 0 20px 20px;\n overflow-y: auto;\n}\n\n.request-card {\n display: flex;\n align-items: flex-start;\n gap: 14px;\n padding: 14px 16px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n cursor: pointer;\n transition: border-color 0.15s, box-shadow 0.15s;\n}\n\n.request-card:hover {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.request-card.actionable {\n border-left: 3px solid var(--mj-status-warning);\n}\n\n.request-card.expired {\n opacity: 0.7;\n}\n\n.card-left {\n flex-shrink: 0;\n padding-top: 2px;\n}\n\n.type-icon {\n font-size: 18px;\n color: var(--mj-brand-primary);\n}\n\n.card-content {\n flex: 1;\n min-width: 0;\n}\n\n.card-top-row {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-wrap: wrap;\n margin-bottom: 6px;\n}\n\n.request-type-name {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.request-text {\n margin: 0 0 8px 0;\n font-size: 13px;\n color: var(--mj-text-secondary);\n line-height: 1.5;\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n}\n\n.card-meta {\n display: flex;\n gap: 14px;\n flex-wrap: wrap;\n}\n\n.meta-item {\n font-size: 11px;\n color: var(--mj-text-muted);\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.meta-item.expired {\n color: var(--mj-status-error-text);\n}\n\n.card-right {\n flex-shrink: 0;\n color: var(--mj-text-disabled);\n font-size: 12px;\n padding-top: 4px;\n}\n\n/* Badges */\n.status-badge {\n display: inline-block;\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 10px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.status-requested {\n background: var(--mj-status-info-bg);\n color: var(--mj-status-info-text);\n border: 1px solid var(--mj-status-info-border);\n}\n\n.status-approved,\n.status-responded {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success-text);\n border: 1px solid var(--mj-status-success-border);\n}\n\n.status-rejected,\n.status-canceled {\n background: var(--mj-status-error-bg);\n color: var(--mj-status-error-text);\n border: 1px solid var(--mj-status-error-border);\n}\n\n.status-expired {\n background: var(--mj-status-warning-bg);\n color: var(--mj-status-warning-text);\n border: 1px solid var(--mj-status-warning-border);\n}\n\n.priority-badge {\n display: inline-block;\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 10px;\n font-weight: 600;\n}\n\n.priority-low {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n}\n\n.priority-normal {\n background: var(--mj-status-info-bg);\n color: var(--mj-status-info-text);\n}\n\n.priority-high {\n background: var(--mj-status-warning-bg);\n color: var(--mj-status-warning-text);\n}\n\n.priority-critical {\n background: var(--mj-status-error-bg);\n color: var(--mj-status-error-text);\n}\n\n.expired-tag {\n display: inline-block;\n padding: 2px 6px;\n border-radius: 8px;\n font-size: 10px;\n font-weight: 600;\n background: var(--mj-status-warning-bg);\n color: var(--mj-status-warning-text);\n}\n"] }]
538
538
  }], () => [{ type: i0.ChangeDetectorRef }], null); })();
539
539
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AgentRequestsResourceComponent, { className: "AgentRequestsResourceComponent", filePath: "src/AI/components/requests/agent-requests-resource.component.ts", lineNumber: 44 }); })();
540
540
  export function LoadAgentRequestsResource() {
@@ -1 +1 @@
1
- {"version":3,"file":"agent-requests-resource.component.js","sourceRoot":"","sources":["../../../../src/AI/components/requests/agent-requests-resource.component.ts","../../../../src/AI/components/requests/agent-requests-resource.component.html"],"names":[],"mappings":"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","sourcesContent":["/**\n * @fileoverview Agent Requests Resource Component\n *\n * Dashboard resource for the AI application's \"Requests\" tab.\n * Displays all agent feedback requests with filtering by status, priority,\n * request type, and agent. Opens the generic agent-request-panel for\n * viewing details and responding.\n */\n\nimport { Component, ChangeDetectorRef, OnDestroy, AfterViewInit } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\nimport { RunView } from '@memberjunction/core';\nimport { ResourceData, UserInfoEngine } from '@memberjunction/core-entities';\nimport { MJAIAgentRequestEntity, MJAIAgentRequestTypeEntity } from '@memberjunction/core-entities';\nimport { RegisterClass, UUIDsEqual } from '@memberjunction/global';\nimport { BaseResourceComponent } from '@memberjunction/ng-shared';\nimport { AgentRequestPanelResult } from '@memberjunction/ng-agent-requests';\nimport { FilterFieldConfig } from '@memberjunction/ng-ui-components';\n\ninterface RequestFilter {\n SearchTerm: string;\n Status: string;\n RequestType: string;\n Priority: string;\n}\n\n/**\n * User preferences for the Agent Requests dashboard\n */\ninterface AgentRequestsUserPreferences {\n Filters: RequestFilter;\n SortColumn: string;\n SortDirection: 'asc' | 'desc';\n}\n\n@RegisterClass(BaseResourceComponent, 'AIAgentRequestsResource')\n@Component({\n standalone: false,\n selector: 'app-agent-requests-resource',\n templateUrl: './agent-requests-resource.component.html',\n styleUrls: ['./agent-requests-resource.component.css']\n})\nexport class AgentRequestsResourceComponent extends BaseResourceComponent implements AfterViewInit, OnDestroy {\n private readonly USER_SETTINGS_KEY = 'AI.AgentRequests.UserPreferences';\n private settingsPersistSubject = new Subject<void>();\n protected override destroy$ = new Subject<void>();\n private settingsLoaded = false;\n\n public IsLoading = false;\n public Requests: MJAIAgentRequestEntity[] = [];\n public FilteredRequests: MJAIAgentRequestEntity[] = [];\n public RequestTypes: MJAIAgentRequestTypeEntity[] = [];\n\n // Panel state\n public SelectedRequest: MJAIAgentRequestEntity | null = null;\n public ShowRequestPanel = false;\n\n // Filter state\n public Filters: RequestFilter = {\n SearchTerm: '',\n Status: '',\n RequestType: '',\n Priority: ''\n };\n\n // Available filter options\n public StatusOptions = ['Requested', 'Approved', 'Rejected', 'Responded', 'Canceled', 'Expired'];\n public PriorityOptions = [\n { Label: 'Critical (76-100)', Value: 'critical' },\n { Label: 'High (51-75)', Value: 'high' },\n { Label: 'Normal (26-50)', Value: 'normal' },\n { Label: 'Low (1-25)', Value: 'low' }\n ];\n\n private searchSubject = new Subject<string>();\n\n constructor(private cdr: ChangeDetectorRef) {\n super();\n }\n\n async ngAfterViewInit(): Promise<void> {\n this.setupSearchDebounce();\n await this.loadUserSettings();\n await this.loadData();\n this.autoOpenRequestFromQueryParams();\n this.NotifyLoadComplete();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n async GetResourceDisplayName(data: ResourceData): Promise<string> {\n return 'Agent Requests';\n }\n\n async GetResourceIconClass(data: ResourceData): Promise<string> {\n return 'fa-solid fa-inbox';\n }\n\n /** Count of pending (Requested) items */\n public get PendingCount(): number {\n return this.Requests.filter(r => r.Status === 'Requested').length;\n }\n\n /** Open the detail panel for a request */\n public OnRequestClick(request: MJAIAgentRequestEntity): void {\n this.SelectedRequest = request;\n this.ShowRequestPanel = true;\n this.cdr.detectChanges();\n }\n\n /** Handle panel close */\n public OnPanelClose(result: AgentRequestPanelResult): void {\n this.ShowRequestPanel = false;\n this.SelectedRequest = null;\n\n if (result.Success) {\n // Refresh the list to reflect the status change\n this.loadData();\n }\n this.cdr.detectChanges();\n }\n\n /** Handle search input */\n public OnSearchChange(term: string): void {\n this.searchSubject.next(term);\n }\n\n /** Handle filter changes */\n public OnFilterChange(): void {\n this.applyFilters();\n this.saveUserSettings();\n }\n\n /** Clear all filters */\n public ClearFilters(): void {\n this.Filters = { SearchTerm: '', Status: '', RequestType: '', Priority: '' };\n this.applyFilters();\n this.saveUserSettings();\n }\n\n /** Reset only the popover filters (Status/Type/Priority) — leave SearchTerm alone. */\n public resetPopoverFilters(): void {\n this.Filters = { ...this.Filters, Status: '', RequestType: '', Priority: '' };\n this.applyFilters();\n this.saveUserSettings();\n }\n\n /** Number of currently-applied filter criteria inside the popover (excludes SearchTerm — surfaced separately). */\n public get ActiveFilterCount(): number {\n let n = 0;\n if (this.Filters.Status) n++;\n if (this.Filters.RequestType) n++;\n if (this.Filters.Priority) n++;\n return n;\n }\n\n /** Values record consumed by the centralized <mj-filter-panel>. */\n public get requestFilterValues(): Record<string, unknown> {\n return {\n Status: this.Filters.Status,\n RequestType: this.Filters.RequestType,\n Priority: this.Filters.Priority,\n };\n }\n\n /** Field config consumed by the centralized <mj-filter-panel>. */\n public get requestFilterFields(): FilterFieldConfig[] {\n return [\n {\n key: 'Status',\n type: 'dropdown',\n label: 'Status',\n icon: 'fa-solid fa-toggle-on',\n options: [\n { text: 'All Statuses', value: '' },\n ...this.StatusOptions.map(s => ({ text: s, value: s })),\n ],\n },\n {\n key: 'RequestType',\n type: 'dropdown',\n label: 'Type',\n icon: 'fa-solid fa-tag',\n filterable: this.RequestTypes.length > 10,\n options: [\n { text: 'All Types', value: '' },\n ...this.RequestTypes.map(t => ({ text: t.Name, value: t.ID })),\n ],\n },\n {\n key: 'Priority',\n type: 'dropdown',\n label: 'Priority',\n icon: 'fa-solid fa-flag',\n options: [\n { text: 'All Priorities', value: '' },\n ...this.PriorityOptions.map(p => ({ text: p.Label, value: p.Value })),\n ],\n },\n ];\n }\n\n /** Receive the updated values record from <mj-filter-panel> and apply it. */\n public onFilterValuesChange(values: Record<string, unknown>): void {\n this.Filters = {\n ...this.Filters,\n Status: (values['Status'] as string) ?? '',\n RequestType: (values['RequestType'] as string) ?? '',\n Priority: (values['Priority'] as string) ?? '',\n };\n this.applyFilters();\n this.saveUserSettings();\n }\n\n /** Get the request type name by ID */\n public GetRequestTypeName(typeId: string | null): string {\n if (!typeId) return '';\n const type = this.RequestTypes.find(t => UUIDsEqual(t.ID, typeId));\n return type?.Name ?? '';\n }\n\n /** Get the request type icon by ID */\n public GetRequestTypeIcon(typeId: string | null): string {\n if (!typeId) return 'fa-solid fa-question-circle';\n const type = this.RequestTypes.find(t => UUIDsEqual(t.ID, typeId));\n return type?.Icon ?? 'fa-solid fa-question-circle';\n }\n\n /** Get priority label from numeric value */\n public GetPriorityLabel(priority: number): string {\n if (priority <= 25) return 'Low';\n if (priority <= 50) return 'Normal';\n if (priority <= 75) return 'High';\n return 'Critical';\n }\n\n /** Get priority CSS class from numeric value */\n public GetPriorityClass(priority: number): string {\n if (priority <= 25) return 'priority-low';\n if (priority <= 50) return 'priority-normal';\n if (priority <= 75) return 'priority-high';\n return 'priority-critical';\n }\n\n /** Whether a request is expired */\n public IsExpired(request: MJAIAgentRequestEntity): boolean {\n if (!request.ExpiresAt) return false;\n return new Date(request.ExpiresAt) < new Date();\n }\n\n // ---- Private Methods ----\n\n /**\n * If a requestId was passed via configuration (e.g. from a notification click),\n * auto-open that request in the detail panel.\n */\n private autoOpenRequestFromQueryParams(): void {\n const requestId = this.Data?.Configuration?.requestId\n || this.Data?.Configuration?.queryParams?.requestId;\n if (!requestId) return;\n\n const match = this.Requests.find(r => UUIDsEqual(r.ID, requestId));\n if (match) {\n this.OnRequestClick(match);\n }\n }\n\n private async loadData(): Promise<void> {\n this.IsLoading = true;\n this.cdr.detectChanges();\n\n try {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const [requestsResult, typesResult] = await rv.RunViews([\n {\n EntityName: 'MJ: AI Agent Requests',\n OrderBy: 'Priority DESC, __mj_CreatedAt DESC',\n ResultType: 'entity_object'\n },\n {\n EntityName: 'MJ: AI Agent Request Types',\n OrderBy: 'Name',\n ResultType: 'entity_object'\n }\n ]);\n\n if (requestsResult.Success) {\n this.Requests = requestsResult.Results as MJAIAgentRequestEntity[];\n }\n if (typesResult.Success) {\n this.RequestTypes = typesResult.Results as MJAIAgentRequestTypeEntity[];\n }\n\n this.applyFilters();\n } catch (error) {\n console.error('Error loading agent requests:', error);\n } finally {\n this.IsLoading = false;\n this.cdr.detectChanges();\n }\n }\n\n private applyFilters(): void {\n let filtered = [...this.Requests];\n\n // Status filter\n if (this.Filters.Status) {\n filtered = filtered.filter(r => r.Status === this.Filters.Status);\n }\n\n // Request type filter\n if (this.Filters.RequestType) {\n filtered = filtered.filter(r =>\n r.RequestTypeID && UUIDsEqual(r.RequestTypeID, this.Filters.RequestType)\n );\n }\n\n // Priority filter\n if (this.Filters.Priority) {\n filtered = filtered.filter(r => {\n const p = r.Priority;\n switch (this.Filters.Priority) {\n case 'low': return p <= 25;\n case 'normal': return p > 25 && p <= 50;\n case 'high': return p > 50 && p <= 75;\n case 'critical': return p > 75;\n default: return true;\n }\n });\n }\n\n // Search term filter\n if (this.Filters.SearchTerm) {\n const term = this.Filters.SearchTerm.toLowerCase();\n filtered = filtered.filter(r =>\n (r.Request && r.Request.toLowerCase().includes(term)) ||\n (r.Agent && r.Agent.toLowerCase().includes(term)) ||\n (r.Response && r.Response.toLowerCase().includes(term))\n );\n }\n\n this.FilteredRequests = filtered;\n this.cdr.detectChanges();\n }\n\n private setupSearchDebounce(): void {\n this.searchSubject.pipe(\n debounceTime(300),\n takeUntil(this.destroy$)\n ).subscribe(term => {\n this.Filters.SearchTerm = term;\n this.applyFilters();\n this.saveUserSettings();\n });\n\n this.settingsPersistSubject.pipe(\n debounceTime(500),\n takeUntil(this.destroy$)\n ).subscribe(() => this.persistUserSettings());\n }\n\n private async loadUserSettings(): Promise<void> {\n try {\n const prefs = UserInfoEngine.Instance.GetSetting(this.USER_SETTINGS_KEY);\n if (prefs) {\n const parsed: AgentRequestsUserPreferences = JSON.parse(prefs);\n if (parsed.Filters) {\n this.Filters = { ...this.Filters, ...parsed.Filters };\n }\n }\n } catch {\n // Use defaults\n }\n this.settingsLoaded = true;\n }\n\n private saveUserSettings(): void {\n if (this.settingsLoaded) {\n this.settingsPersistSubject.next();\n }\n }\n\n private async persistUserSettings(): Promise<void> {\n try {\n const prefs: AgentRequestsUserPreferences = {\n Filters: this.Filters,\n SortColumn: 'Priority',\n SortDirection: 'desc'\n };\n await UserInfoEngine.Instance.SetSetting(\n this.USER_SETTINGS_KEY,\n JSON.stringify(prefs)\n );\n } catch {\n // Silent failure for settings persistence\n }\n }\n}\n\nexport function LoadAgentRequestsResource(): void {\n // Prevents tree-shaking\n}\n","<mj-page-layout>\n <!-- Header -->\n <mj-page-header\n Title=\"Agent Requests\"\n Icon=\"fa-solid fa-inbox\">\n @if (PendingCount > 0) {\n <mj-stat-badge meta\n Icon=\"fa-solid fa-hourglass-half\"\n [Count]=\"PendingCount\"\n Label=\"pending\"\n Variant=\"warning\">\n </mj-stat-badge>\n }\n <div actions>\n <mj-filter-popover\n [ActiveCount]=\"ActiveFilterCount\"\n [ShowClearAll]=\"ActiveFilterCount > 0\"\n (ClearAllRequested)=\"resetPopoverFilters()\">\n <mj-filter-panel\n [Fields]=\"requestFilterFields\"\n [Values]=\"requestFilterValues\"\n (ValuesChange)=\"onFilterValuesChange($event)\"\n (Reset)=\"resetPopoverFilters()\">\n </mj-filter-panel>\n </mj-filter-popover>\n </div>\n <div toolbar>\n <mj-page-search\n Placeholder=\"Search requests...\"\n [Value]=\"Filters.SearchTerm\"\n (ValueChange)=\"OnSearchChange($event)\">\n </mj-page-search>\n </div>\n </mj-page-header>\n\n <mj-page-body>\n <!-- Content -->\n @if (IsLoading) {\n <div class=\"loading-container\">\n <mj-loading text=\"Loading agent requests...\"></mj-loading>\n </div>\n } @else if (FilteredRequests.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-inbox empty-icon\"></i>\n @if (Requests.length === 0) {\n <p class=\"empty-text\">No agent requests yet</p>\n <p class=\"empty-subtext\">When agents need human input, their requests will appear here.</p>\n } @else {\n <p class=\"empty-text\">No requests match your filters</p>\n <button class=\"clear-filters-btn\" (click)=\"ClearFilters()\">Clear Filters</button>\n }\n </div>\n } @else {\n <div class=\"requests-list\">\n @for (request of FilteredRequests; track request.ID) {\n <div\n class=\"request-card\"\n [class.actionable]=\"request.Status === 'Requested'\"\n [class.expired]=\"IsExpired(request)\"\n (click)=\"OnRequestClick(request)\">\n <div class=\"card-left\">\n <i class=\"{{ GetRequestTypeIcon(request.RequestTypeID) }} type-icon\"></i>\n </div>\n <div class=\"card-content\">\n <div class=\"card-top-row\">\n <span class=\"request-type-name\">{{ GetRequestTypeName(request.RequestTypeID) }}</span>\n <span class=\"priority-badge {{ GetPriorityClass(request.Priority) }}\">\n {{ GetPriorityLabel(request.Priority) }}\n </span>\n <span class=\"status-badge status-{{ request.Status.toLowerCase() }}\">\n {{ request.Status }}\n </span>\n @if (IsExpired(request) && request.Status === 'Requested') {\n <span class=\"expired-tag\">Expired</span>\n }\n </div>\n <p class=\"request-text\">{{ request.Request }}</p>\n <div class=\"card-meta\">\n @if (request.Agent) {\n <span class=\"meta-item\">\n <i class=\"fa-solid fa-robot\"></i> {{ request.Agent }}\n </span>\n }\n @if (request.__mj_CreatedAt) {\n <span class=\"meta-item\">\n <i class=\"fa-regular fa-clock\"></i> {{ request.__mj_CreatedAt | date:'short' }}\n </span>\n }\n @if (request.ExpiresAt) {\n <span class=\"meta-item\" [class.expired]=\"IsExpired(request)\">\n <i class=\"fa-solid fa-hourglass-end\"></i> Expires {{ request.ExpiresAt | date:'short' }}\n </span>\n }\n </div>\n </div>\n <div class=\"card-right\">\n <i class=\"fa-solid fa-chevron-right\"></i>\n </div>\n </div>\n }\n </div>\n }\n </mj-page-body>\n</mj-page-layout>\n\n<!-- Agent Request Detail Panel -->\n@if (ShowRequestPanel && SelectedRequest) {\n <mj-agent-request-dialog\n [Visible]=\"ShowRequestPanel\"\n [Request]=\"SelectedRequest\"\n (Close)=\"OnPanelClose($event)\">\n </mj-agent-request-dialog>\n}\n"]}
1
+ {"version":3,"file":"agent-requests-resource.component.js","sourceRoot":"","sources":["../../../../src/AI/components/requests/agent-requests-resource.component.ts","../../../../src/AI/components/requests/agent-requests-resource.component.html"],"names":[],"mappings":"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","sourcesContent":["/**\n * @fileoverview Agent Requests Resource Component\n *\n * Dashboard resource for the AI application's \"Requests\" tab.\n * Displays all agent feedback requests with filtering by status, priority,\n * request type, and agent. Opens the generic agent-request-panel for\n * viewing details and responding.\n */\n\nimport { Component, ChangeDetectorRef, OnDestroy, AfterViewInit } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\nimport { RunView } from '@memberjunction/core';\nimport { ResourceData, UserInfoEngine } from '@memberjunction/core-entities';\nimport { MJAIAgentRequestEntity, MJAIAgentRequestTypeEntity } from '@memberjunction/core-entities';\nimport { RegisterClass, UUIDsEqual } from '@memberjunction/global';\nimport { BaseResourceComponent } from '@memberjunction/ng-shared';\nimport { AgentRequestPanelResult } from '@memberjunction/ng-agent-requests';\nimport { FilterFieldConfig } from '@memberjunction/ng-ui-components';\n\ninterface RequestFilter {\n SearchTerm: string;\n Status: string;\n RequestType: string;\n Priority: string;\n}\n\n/**\n * User preferences for the Agent Requests dashboard\n */\ninterface AgentRequestsUserPreferences {\n Filters: RequestFilter;\n SortColumn: string;\n SortDirection: 'asc' | 'desc';\n}\n\n@RegisterClass(BaseResourceComponent, 'AIAgentRequestsResource')\n@Component({\n standalone: false,\n selector: 'app-agent-requests-resource',\n templateUrl: './agent-requests-resource.component.html',\n styleUrls: ['./agent-requests-resource.component.css']\n})\nexport class AgentRequestsResourceComponent extends BaseResourceComponent implements AfterViewInit, OnDestroy {\n private readonly USER_SETTINGS_KEY = 'AI.AgentRequests.UserPreferences';\n private settingsPersistSubject = new Subject<void>();\n protected override destroy$ = new Subject<void>();\n private settingsLoaded = false;\n\n public IsLoading = false;\n public Requests: MJAIAgentRequestEntity[] = [];\n public FilteredRequests: MJAIAgentRequestEntity[] = [];\n public RequestTypes: MJAIAgentRequestTypeEntity[] = [];\n\n // Panel state\n public SelectedRequest: MJAIAgentRequestEntity | null = null;\n public ShowRequestPanel = false;\n\n // Filter state\n public Filters: RequestFilter = {\n SearchTerm: '',\n Status: '',\n RequestType: '',\n Priority: ''\n };\n\n // Available filter options\n public StatusOptions = ['Requested', 'Approved', 'Rejected', 'Responded', 'Canceled', 'Expired'];\n public PriorityOptions = [\n { Label: 'Critical (76-100)', Value: 'critical' },\n { Label: 'High (51-75)', Value: 'high' },\n { Label: 'Normal (26-50)', Value: 'normal' },\n { Label: 'Low (1-25)', Value: 'low' }\n ];\n\n private searchSubject = new Subject<string>();\n\n constructor(private cdr: ChangeDetectorRef) {\n super();\n }\n\n async ngAfterViewInit(): Promise<void> {\n this.setupSearchDebounce();\n await this.loadUserSettings();\n await this.loadData();\n this.autoOpenRequestFromQueryParams();\n this.NotifyLoadComplete();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n async GetResourceDisplayName(data: ResourceData): Promise<string> {\n return 'Agent Requests';\n }\n\n async GetResourceIconClass(data: ResourceData): Promise<string> {\n return 'fa-solid fa-inbox';\n }\n\n /** Count of pending (Requested) items */\n public get PendingCount(): number {\n return this.Requests.filter(r => r.Status === 'Requested').length;\n }\n\n /** Open the detail panel for a request */\n public OnRequestClick(request: MJAIAgentRequestEntity): void {\n this.SelectedRequest = request;\n this.ShowRequestPanel = true;\n this.cdr.detectChanges();\n }\n\n /** Handle panel close */\n public OnPanelClose(result: AgentRequestPanelResult): void {\n this.ShowRequestPanel = false;\n this.SelectedRequest = null;\n\n if (result.Success) {\n // Refresh the list to reflect the status change\n this.loadData();\n }\n this.cdr.detectChanges();\n }\n\n /** Handle search input */\n public OnSearchChange(term: string): void {\n this.searchSubject.next(term);\n }\n\n /** Handle filter changes */\n public OnFilterChange(): void {\n this.applyFilters();\n this.saveUserSettings();\n }\n\n /** Clear all filters */\n public ClearFilters(): void {\n this.Filters = { SearchTerm: '', Status: '', RequestType: '', Priority: '' };\n this.applyFilters();\n this.saveUserSettings();\n }\n\n /** Reset only the popover filters (Status/Type/Priority) — leave SearchTerm alone. */\n public resetPopoverFilters(): void {\n this.Filters = { ...this.Filters, Status: '', RequestType: '', Priority: '' };\n this.applyFilters();\n this.saveUserSettings();\n }\n\n /** Number of currently-applied filter criteria inside the popover (excludes SearchTerm — surfaced separately). */\n public get ActiveFilterCount(): number {\n let n = 0;\n if (this.Filters.Status) n++;\n if (this.Filters.RequestType) n++;\n if (this.Filters.Priority) n++;\n return n;\n }\n\n /** Values record consumed by the centralized <mj-filter-panel>. */\n public get requestFilterValues(): Record<string, unknown> {\n return {\n Status: this.Filters.Status,\n RequestType: this.Filters.RequestType,\n Priority: this.Filters.Priority,\n };\n }\n\n /** Field config consumed by the centralized <mj-filter-panel>. */\n public get requestFilterFields(): FilterFieldConfig[] {\n return [\n {\n key: 'Status',\n type: 'dropdown',\n label: 'Status',\n icon: 'fa-solid fa-toggle-on',\n options: [\n { text: 'All Statuses', value: '' },\n ...this.StatusOptions.map(s => ({ text: s, value: s })),\n ],\n },\n {\n key: 'RequestType',\n type: 'dropdown',\n label: 'Type',\n icon: 'fa-solid fa-tag',\n filterable: this.RequestTypes.length > 10,\n options: [\n { text: 'All Types', value: '' },\n ...this.RequestTypes.map(t => ({ text: t.Name, value: t.ID })),\n ],\n },\n {\n key: 'Priority',\n type: 'dropdown',\n label: 'Priority',\n icon: 'fa-solid fa-flag',\n options: [\n { text: 'All Priorities', value: '' },\n ...this.PriorityOptions.map(p => ({ text: p.Label, value: p.Value })),\n ],\n },\n ];\n }\n\n /** Receive the updated values record from <mj-filter-panel> and apply it. */\n public onFilterValuesChange(values: Record<string, unknown>): void {\n this.Filters = {\n ...this.Filters,\n Status: (values['Status'] as string) ?? '',\n RequestType: (values['RequestType'] as string) ?? '',\n Priority: (values['Priority'] as string) ?? '',\n };\n this.applyFilters();\n this.saveUserSettings();\n }\n\n /** Get the request type name by ID */\n public GetRequestTypeName(typeId: string | null): string {\n if (!typeId) return '';\n const type = this.RequestTypes.find(t => UUIDsEqual(t.ID, typeId));\n return type?.Name ?? '';\n }\n\n /** Get the request type icon by ID */\n public GetRequestTypeIcon(typeId: string | null): string {\n if (!typeId) return 'fa-solid fa-question-circle';\n const type = this.RequestTypes.find(t => UUIDsEqual(t.ID, typeId));\n return type?.Icon ?? 'fa-solid fa-question-circle';\n }\n\n /** Get priority label from numeric value */\n public GetPriorityLabel(priority: number): string {\n if (priority <= 25) return 'Low';\n if (priority <= 50) return 'Normal';\n if (priority <= 75) return 'High';\n return 'Critical';\n }\n\n /** Get priority CSS class from numeric value */\n public GetPriorityClass(priority: number): string {\n if (priority <= 25) return 'priority-low';\n if (priority <= 50) return 'priority-normal';\n if (priority <= 75) return 'priority-high';\n return 'priority-critical';\n }\n\n /** Whether a request is expired */\n public IsExpired(request: MJAIAgentRequestEntity): boolean {\n if (!request.ExpiresAt) return false;\n return new Date(request.ExpiresAt) < new Date();\n }\n\n // ---- Private Methods ----\n\n /**\n * If a requestId was passed via configuration (e.g. from a notification click),\n * auto-open that request in the detail panel.\n */\n private autoOpenRequestFromQueryParams(): void {\n const requestId = this.Data?.Configuration?.requestId\n || this.Data?.Configuration?.queryParams?.requestId;\n if (!requestId) return;\n\n const match = this.Requests.find(r => UUIDsEqual(r.ID, requestId));\n if (match) {\n this.OnRequestClick(match);\n }\n }\n\n private async loadData(): Promise<void> {\n this.IsLoading = true;\n this.cdr.detectChanges();\n\n try {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const [requestsResult, typesResult] = await rv.RunViews([\n {\n EntityName: 'MJ: AI Agent Requests',\n OrderBy: 'Priority DESC, __mj_CreatedAt DESC',\n ResultType: 'entity_object'\n },\n {\n EntityName: 'MJ: AI Agent Request Types',\n OrderBy: 'Name',\n ResultType: 'entity_object'\n }\n ]);\n\n if (requestsResult.Success) {\n this.Requests = requestsResult.Results as MJAIAgentRequestEntity[];\n }\n if (typesResult.Success) {\n this.RequestTypes = typesResult.Results as MJAIAgentRequestTypeEntity[];\n }\n\n this.applyFilters();\n } catch (error) {\n console.error('Error loading agent requests:', error);\n } finally {\n this.IsLoading = false;\n this.cdr.detectChanges();\n }\n }\n\n private applyFilters(): void {\n let filtered = [...this.Requests];\n\n // Status filter\n if (this.Filters.Status) {\n filtered = filtered.filter(r => r.Status === this.Filters.Status);\n }\n\n // Request type filter\n if (this.Filters.RequestType) {\n filtered = filtered.filter(r =>\n r.RequestTypeID && UUIDsEqual(r.RequestTypeID, this.Filters.RequestType)\n );\n }\n\n // Priority filter\n if (this.Filters.Priority) {\n filtered = filtered.filter(r => {\n const p = r.Priority;\n switch (this.Filters.Priority) {\n case 'low': return p <= 25;\n case 'normal': return p > 25 && p <= 50;\n case 'high': return p > 50 && p <= 75;\n case 'critical': return p > 75;\n default: return true;\n }\n });\n }\n\n // Search term filter\n if (this.Filters.SearchTerm) {\n const term = this.Filters.SearchTerm.toLowerCase();\n filtered = filtered.filter(r =>\n (r.Request && r.Request.toLowerCase().includes(term)) ||\n (r.Agent && r.Agent.toLowerCase().includes(term)) ||\n (r.Response && r.Response.toLowerCase().includes(term))\n );\n }\n\n this.FilteredRequests = filtered;\n this.cdr.detectChanges();\n }\n\n private setupSearchDebounce(): void {\n this.searchSubject.pipe(\n debounceTime(300),\n takeUntil(this.destroy$)\n ).subscribe(term => {\n this.Filters.SearchTerm = term;\n this.applyFilters();\n this.saveUserSettings();\n });\n\n this.settingsPersistSubject.pipe(\n debounceTime(500),\n takeUntil(this.destroy$)\n ).subscribe(() => this.persistUserSettings());\n }\n\n private async loadUserSettings(): Promise<void> {\n try {\n const prefs = UserInfoEngine.Instance.GetSetting(this.USER_SETTINGS_KEY);\n if (prefs) {\n const parsed: AgentRequestsUserPreferences = JSON.parse(prefs);\n if (parsed.Filters) {\n this.Filters = { ...this.Filters, ...parsed.Filters };\n }\n }\n } catch {\n // Use defaults\n }\n this.settingsLoaded = true;\n }\n\n private saveUserSettings(): void {\n if (this.settingsLoaded) {\n this.settingsPersistSubject.next();\n }\n }\n\n private async persistUserSettings(): Promise<void> {\n try {\n const prefs: AgentRequestsUserPreferences = {\n Filters: this.Filters,\n SortColumn: 'Priority',\n SortDirection: 'desc'\n };\n await UserInfoEngine.Instance.SetSetting(\n this.USER_SETTINGS_KEY,\n JSON.stringify(prefs)\n );\n } catch {\n // Silent failure for settings persistence\n }\n }\n}\n\nexport function LoadAgentRequestsResource(): void {\n // Prevents tree-shaking\n}\n","<mj-page-layout>\n <!-- Header -->\n <mj-page-header\n Title=\"Agent Requests\"\n Icon=\"fa-solid fa-inbox\">\n @if (PendingCount > 0) {\n <mj-stat-badge meta\n Icon=\"fa-solid fa-hourglass-half\"\n [Count]=\"PendingCount\"\n Label=\"pending\"\n Variant=\"warning\">\n </mj-stat-badge>\n }\n <div toolbar>\n <mj-page-search\n Placeholder=\"Search requests...\"\n [Value]=\"Filters.SearchTerm\"\n (ValueChange)=\"OnSearchChange($event)\">\n </mj-page-search>\n <mj-filter-popover\n [ActiveCount]=\"ActiveFilterCount\"\n [ShowClearAll]=\"ActiveFilterCount > 0\"\n (ClearAllRequested)=\"resetPopoverFilters()\">\n <mj-filter-panel\n [Fields]=\"requestFilterFields\"\n [Values]=\"requestFilterValues\"\n (ValuesChange)=\"onFilterValuesChange($event)\"\n (Reset)=\"resetPopoverFilters()\">\n </mj-filter-panel>\n </mj-filter-popover>\n </div>\n </mj-page-header>\n\n <mj-page-body>\n <!-- Content -->\n @if (IsLoading) {\n <div class=\"loading-container\">\n <mj-loading text=\"Loading agent requests...\"></mj-loading>\n </div>\n } @else if (FilteredRequests.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-inbox empty-icon\"></i>\n @if (Requests.length === 0) {\n <p class=\"empty-text\">No agent requests yet</p>\n <p class=\"empty-subtext\">When agents need human input, their requests will appear here.</p>\n } @else {\n <p class=\"empty-text\">No requests match your filters</p>\n <button class=\"clear-filters-btn\" (click)=\"ClearFilters()\">Clear Filters</button>\n }\n </div>\n } @else {\n <div class=\"requests-list\">\n @for (request of FilteredRequests; track request.ID) {\n <div\n class=\"request-card\"\n [class.actionable]=\"request.Status === 'Requested'\"\n [class.expired]=\"IsExpired(request)\"\n (click)=\"OnRequestClick(request)\">\n <div class=\"card-left\">\n <i class=\"{{ GetRequestTypeIcon(request.RequestTypeID) }} type-icon\"></i>\n </div>\n <div class=\"card-content\">\n <div class=\"card-top-row\">\n <span class=\"request-type-name\">{{ GetRequestTypeName(request.RequestTypeID) }}</span>\n <span class=\"priority-badge {{ GetPriorityClass(request.Priority) }}\">\n {{ GetPriorityLabel(request.Priority) }}\n </span>\n <span class=\"status-badge status-{{ request.Status.toLowerCase() }}\">\n {{ request.Status }}\n </span>\n @if (IsExpired(request) && request.Status === 'Requested') {\n <span class=\"expired-tag\">Expired</span>\n }\n </div>\n <p class=\"request-text\">{{ request.Request }}</p>\n <div class=\"card-meta\">\n @if (request.Agent) {\n <span class=\"meta-item\">\n <i class=\"fa-solid fa-robot\"></i> {{ request.Agent }}\n </span>\n }\n @if (request.__mj_CreatedAt) {\n <span class=\"meta-item\">\n <i class=\"fa-regular fa-clock\"></i> {{ request.__mj_CreatedAt | date:'short' }}\n </span>\n }\n @if (request.ExpiresAt) {\n <span class=\"meta-item\" [class.expired]=\"IsExpired(request)\">\n <i class=\"fa-solid fa-hourglass-end\"></i> Expires {{ request.ExpiresAt | date:'short' }}\n </span>\n }\n </div>\n </div>\n <div class=\"card-right\">\n <i class=\"fa-solid fa-chevron-right\"></i>\n </div>\n </div>\n }\n </div>\n }\n </mj-page-body>\n</mj-page-layout>\n\n<!-- Agent Request Detail Panel -->\n@if (ShowRequestPanel && SelectedRequest) {\n <mj-agent-request-dialog\n [Visible]=\"ShowRequestPanel\"\n [Request]=\"SelectedRequest\"\n (Close)=\"OnPanelClose($event)\">\n </mj-agent-request-dialog>\n}\n"]}