@memberjunction/ng-dashboards 5.34.1 → 5.36.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 (407) hide show
  1. package/dist/AI/components/agents/agent-configuration.component.d.ts +51 -0
  2. package/dist/AI/components/agents/agent-configuration.component.d.ts.map +1 -1
  3. package/dist/AI/components/agents/agent-configuration.component.js +399 -292
  4. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
  5. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts +8 -2
  6. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts.map +1 -1
  7. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js +87 -85
  8. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js.map +1 -1
  9. package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts +96 -0
  10. package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts.map +1 -1
  11. package/dist/AI/components/analytics/ai-analytics-resource.component.js +453 -122
  12. package/dist/AI/components/analytics/ai-analytics-resource.component.js.map +1 -1
  13. package/dist/AI/components/analytics/analytics-filter-bar.component.d.ts +5 -0
  14. package/dist/AI/components/analytics/analytics-filter-bar.component.d.ts.map +1 -1
  15. package/dist/AI/components/analytics/analytics-filter-bar.component.js +184 -135
  16. package/dist/AI/components/analytics/analytics-filter-bar.component.js.map +1 -1
  17. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts +8 -2
  18. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts.map +1 -1
  19. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js +104 -103
  20. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js.map +1 -1
  21. package/dist/AI/components/analytics/error-analysis/error-analysis.component.d.ts +8 -2
  22. package/dist/AI/components/analytics/error-analysis/error-analysis.component.d.ts.map +1 -1
  23. package/dist/AI/components/analytics/error-analysis/error-analysis.component.js +76 -74
  24. package/dist/AI/components/analytics/error-analysis/error-analysis.component.js.map +1 -1
  25. package/dist/AI/components/analytics/executive-summary/executive-summary.component.d.ts.map +1 -1
  26. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js +67 -87
  27. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js.map +1 -1
  28. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts +12 -19
  29. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts.map +1 -1
  30. package/dist/AI/components/analytics/model-performance/model-performance.component.js +96 -203
  31. package/dist/AI/components/analytics/model-performance/model-performance.component.js.map +1 -1
  32. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts.map +1 -1
  33. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js +110 -126
  34. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js.map +1 -1
  35. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts.map +1 -1
  36. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js +61 -77
  37. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js.map +1 -1
  38. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts +28 -0
  39. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
  40. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +2084 -2079
  41. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
  42. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts +6 -3
  43. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
  44. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +493 -490
  45. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
  46. package/dist/AI/components/models/model-management.component.d.ts +17 -0
  47. package/dist/AI/components/models/model-management.component.d.ts.map +1 -1
  48. package/dist/AI/components/models/model-management.component.js +370 -425
  49. package/dist/AI/components/models/model-management.component.js.map +1 -1
  50. package/dist/AI/components/prompts/prompt-management.component.d.ts +17 -0
  51. package/dist/AI/components/prompts/prompt-management.component.d.ts.map +1 -1
  52. package/dist/AI/components/prompts/prompt-management.component.js +317 -357
  53. package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
  54. package/dist/AI/components/requests/agent-requests-resource.component.d.ts +11 -0
  55. package/dist/AI/components/requests/agent-requests-resource.component.d.ts.map +1 -1
  56. package/dist/AI/components/requests/agent-requests-resource.component.js +170 -175
  57. package/dist/AI/components/requests/agent-requests-resource.component.js.map +1 -1
  58. package/dist/AI/components/system/system-configuration.component.d.ts +19 -0
  59. package/dist/AI/components/system/system-configuration.component.d.ts.map +1 -1
  60. package/dist/AI/components/system/system-configuration.component.js +403 -362
  61. package/dist/AI/components/system/system-configuration.component.js.map +1 -1
  62. package/dist/AI/components/tags/tags-resource.component.d.ts +15 -0
  63. package/dist/AI/components/tags/tags-resource.component.d.ts.map +1 -1
  64. package/dist/AI/components/tags/tags-resource.component.js +1423 -1438
  65. package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
  66. package/dist/AI/components/vectors/vector-management-resource.component.d.ts +8 -3
  67. package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
  68. package/dist/AI/components/vectors/vector-management-resource.component.js +547 -521
  69. package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
  70. package/dist/APIKeys/api-keys-resource.component.d.ts +12 -8
  71. package/dist/APIKeys/api-keys-resource.component.d.ts.map +1 -1
  72. package/dist/APIKeys/api-keys-resource.component.js +329 -371
  73. package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
  74. package/dist/Actions/components/actions-overview.component.d.ts +6 -0
  75. package/dist/Actions/components/actions-overview.component.d.ts.map +1 -1
  76. package/dist/Actions/components/actions-overview.component.js +202 -158
  77. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  78. package/dist/Actions/components/execution-monitoring.component.d.ts +9 -3
  79. package/dist/Actions/components/execution-monitoring.component.d.ts.map +1 -1
  80. package/dist/Actions/components/execution-monitoring.component.js +191 -142
  81. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  82. package/dist/Actions/components/explorer/action-explorer.component.d.ts +41 -1
  83. package/dist/Actions/components/explorer/action-explorer.component.d.ts.map +1 -1
  84. package/dist/Actions/components/explorer/action-explorer.component.js +388 -94
  85. package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
  86. package/dist/Actions/components/explorer/index.d.ts +0 -1
  87. package/dist/Actions/components/explorer/index.d.ts.map +1 -1
  88. package/dist/Actions/components/explorer/index.js +0 -1
  89. package/dist/Actions/components/explorer/index.js.map +1 -1
  90. package/dist/Admin/admin-data-schema.component.js +19 -79
  91. package/dist/Admin/admin-data-schema.component.js.map +1 -1
  92. package/dist/Admin/admin-dev-tools-resource.component.js +19 -79
  93. package/dist/Admin/admin-dev-tools-resource.component.js.map +1 -1
  94. package/dist/Admin/admin-identity-access.component.js +19 -79
  95. package/dist/Admin/admin-identity-access.component.js.map +1 -1
  96. package/dist/Admin/admin-monitoring.component.js +19 -79
  97. package/dist/Admin/admin-monitoring.component.js.map +1 -1
  98. package/dist/Admin/base-admin-container.component.d.ts +9 -7
  99. package/dist/Admin/base-admin-container.component.d.ts.map +1 -1
  100. package/dist/Admin/base-admin-container.component.js +26 -17
  101. package/dist/Admin/base-admin-container.component.js.map +1 -1
  102. package/dist/ApplicationRoles/application-roles-resource.component.js +92 -91
  103. package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -1
  104. package/dist/Archiving/components/archive-config-resource.component.d.ts.map +1 -1
  105. package/dist/Archiving/components/archive-config-resource.component.js +24 -5
  106. package/dist/Archiving/components/archive-config-resource.component.js.map +1 -1
  107. package/dist/Archiving/components/archive-runs-resource.component.d.ts.map +1 -1
  108. package/dist/Archiving/components/archive-runs-resource.component.js +24 -5
  109. package/dist/Archiving/components/archive-runs-resource.component.js.map +1 -1
  110. package/dist/Communication/communication-logs-resource.component.d.ts +1 -1
  111. package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
  112. package/dist/Communication/communication-logs-resource.component.js +80 -99
  113. package/dist/Communication/communication-logs-resource.component.js.map +1 -1
  114. package/dist/Communication/communication-monitor-resource.component.d.ts.map +1 -1
  115. package/dist/Communication/communication-monitor-resource.component.js +127 -106
  116. package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
  117. package/dist/Communication/communication-new-message-resource.component.d.ts +93 -0
  118. package/dist/Communication/communication-new-message-resource.component.d.ts.map +1 -0
  119. package/dist/Communication/communication-new-message-resource.component.js +661 -0
  120. package/dist/Communication/communication-new-message-resource.component.js.map +1 -0
  121. package/dist/Communication/communication-providers-resource.component.d.ts.map +1 -1
  122. package/dist/Communication/communication-providers-resource.component.js +44 -45
  123. package/dist/Communication/communication-providers-resource.component.js.map +1 -1
  124. package/dist/Communication/communication-runs-resource.component.d.ts.map +1 -1
  125. package/dist/Communication/communication-runs-resource.component.js +60 -58
  126. package/dist/Communication/communication-runs-resource.component.js.map +1 -1
  127. package/dist/Communication/communication-templates-resource.component.d.ts +1 -1
  128. package/dist/Communication/communication-templates-resource.component.d.ts.map +1 -1
  129. package/dist/Communication/communication-templates-resource.component.js +139 -162
  130. package/dist/Communication/communication-templates-resource.component.js.map +1 -1
  131. package/dist/Credentials/components/credentials-audit-resource.component.d.ts +7 -0
  132. package/dist/Credentials/components/credentials-audit-resource.component.d.ts.map +1 -1
  133. package/dist/Credentials/components/credentials-audit-resource.component.js +310 -297
  134. package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
  135. package/dist/Credentials/components/credentials-categories-resource.component.js +238 -266
  136. package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
  137. package/dist/Credentials/components/credentials-list-resource.component.d.ts +7 -0
  138. package/dist/Credentials/components/credentials-list-resource.component.d.ts.map +1 -1
  139. package/dist/Credentials/components/credentials-list-resource.component.js +381 -399
  140. package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
  141. package/dist/Credentials/components/credentials-overview-resource.component.js +222 -228
  142. package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
  143. package/dist/Credentials/components/credentials-types-resource.component.d.ts +6 -0
  144. package/dist/Credentials/components/credentials-types-resource.component.d.ts.map +1 -1
  145. package/dist/Credentials/components/credentials-types-resource.component.js +290 -305
  146. package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
  147. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts +8 -0
  148. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts.map +1 -1
  149. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js +41 -21
  150. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js.map +1 -1
  151. package/dist/DatabaseDesigner/components/entity-list.component.d.ts +2 -0
  152. package/dist/DatabaseDesigner/components/entity-list.component.d.ts.map +1 -1
  153. package/dist/DatabaseDesigner/components/entity-list.component.js +148 -155
  154. package/dist/DatabaseDesigner/components/entity-list.component.js.map +1 -1
  155. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts +1 -1
  156. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts.map +1 -1
  157. package/dist/DatabaseDesigner/database-designer-dashboards.module.js +25 -1
  158. package/dist/DatabaseDesigner/database-designer-dashboards.module.js.map +1 -1
  159. package/dist/DevTools/app-state-inspector.component.d.ts +5 -0
  160. package/dist/DevTools/app-state-inspector.component.d.ts.map +1 -1
  161. package/dist/DevTools/app-state-inspector.component.js +46 -72
  162. package/dist/DevTools/app-state-inspector.component.js.map +1 -1
  163. package/dist/DevTools/class-registry.component.js +88 -100
  164. package/dist/DevTools/class-registry.component.js.map +1 -1
  165. package/dist/DevTools/event-monitor.component.js +158 -168
  166. package/dist/DevTools/event-monitor.component.js.map +1 -1
  167. package/dist/DevTools/graphql-console.component.js +257 -264
  168. package/dist/DevTools/graphql-console.component.js.map +1 -1
  169. package/dist/DevTools/layout-inspector.component.d.ts +5 -0
  170. package/dist/DevTools/layout-inspector.component.d.ts.map +1 -1
  171. package/dist/DevTools/layout-inspector.component.js +46 -64
  172. package/dist/DevTools/layout-inspector.component.js.map +1 -1
  173. package/dist/DevTools/lazy-module-status.component.js +75 -84
  174. package/dist/DevTools/lazy-module-status.component.js.map +1 -1
  175. package/dist/DevTools/settings-explorer.component.js +76 -85
  176. package/dist/DevTools/settings-explorer.component.js.map +1 -1
  177. package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts +2 -0
  178. package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts.map +1 -1
  179. package/dist/EntityAdmin/entity-admin-dashboard.component.js +24 -16
  180. package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
  181. package/dist/Home/home-dashboard.component.d.ts +6 -0
  182. package/dist/Home/home-dashboard.component.d.ts.map +1 -1
  183. package/dist/Home/home-dashboard.component.js +521 -485
  184. package/dist/Home/home-dashboard.component.js.map +1 -1
  185. package/dist/Integration/components/activity/activity.component.d.ts +8 -0
  186. package/dist/Integration/components/activity/activity.component.d.ts.map +1 -1
  187. package/dist/Integration/components/activity/activity.component.js +307 -318
  188. package/dist/Integration/components/activity/activity.component.js.map +1 -1
  189. package/dist/Integration/components/connections/connections.component.js +654 -648
  190. package/dist/Integration/components/connections/connections.component.js.map +1 -1
  191. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js +234 -233
  192. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js.map +1 -1
  193. package/dist/Integration/components/overview/overview.component.js +182 -163
  194. package/dist/Integration/components/overview/overview.component.js.map +1 -1
  195. package/dist/Integration/components/pipelines/pipelines.component.d.ts +2 -0
  196. package/dist/Integration/components/pipelines/pipelines.component.d.ts.map +1 -1
  197. package/dist/Integration/components/pipelines/pipelines.component.js +595 -606
  198. package/dist/Integration/components/pipelines/pipelines.component.js.map +1 -1
  199. package/dist/Integration/components/schedules/schedules.component.js +230 -241
  200. package/dist/Integration/components/schedules/schedules.component.js.map +1 -1
  201. package/dist/Integration/integration.module.d.ts +1 -1
  202. package/dist/Integration/integration.module.d.ts.map +1 -1
  203. package/dist/Integration/integration.module.js +28 -1
  204. package/dist/Integration/integration.module.js.map +1 -1
  205. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts +5 -0
  206. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts.map +1 -1
  207. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +1138 -1147
  208. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
  209. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +54 -51
  210. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -1
  211. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts +11 -0
  212. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts.map +1 -1
  213. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +684 -697
  214. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
  215. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts +12 -1
  216. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts.map +1 -1
  217. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js +191 -120
  218. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js.map +1 -1
  219. package/dist/Lists/components/lists-browse-resource.component.d.ts +120 -1
  220. package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
  221. package/dist/Lists/components/lists-browse-resource.component.js +1239 -610
  222. package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
  223. package/dist/Lists/components/lists-categories-resource.component.d.ts.map +1 -1
  224. package/dist/Lists/components/lists-categories-resource.component.js +152 -160
  225. package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
  226. package/dist/Lists/components/lists-my-lists-resource.component.d.ts.map +1 -1
  227. package/dist/Lists/components/lists-my-lists-resource.component.js +302 -319
  228. package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
  229. package/dist/Lists/components/lists-operations-resource.component.d.ts +133 -3
  230. package/dist/Lists/components/lists-operations-resource.component.d.ts.map +1 -1
  231. package/dist/Lists/components/lists-operations-resource.component.js +1460 -272
  232. package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
  233. package/dist/Lists/components/lists-shared-with-me-resource.component.d.ts +29 -0
  234. package/dist/Lists/components/lists-shared-with-me-resource.component.d.ts.map +1 -0
  235. package/dist/Lists/components/lists-shared-with-me-resource.component.js +77 -0
  236. package/dist/Lists/components/lists-shared-with-me-resource.component.js.map +1 -0
  237. package/dist/Lists/components/venn-diagram/venn-diagram.component.d.ts +6 -0
  238. package/dist/Lists/components/venn-diagram/venn-diagram.component.d.ts.map +1 -1
  239. package/dist/Lists/components/venn-diagram/venn-diagram.component.js +35 -7
  240. package/dist/Lists/components/venn-diagram/venn-diagram.component.js.map +1 -1
  241. package/dist/Lists/index.d.ts +1 -0
  242. package/dist/Lists/index.d.ts.map +1 -1
  243. package/dist/Lists/index.js +1 -0
  244. package/dist/Lists/index.js.map +1 -1
  245. package/dist/Lists/services/list-set-operations.service.d.ts +93 -2
  246. package/dist/Lists/services/list-set-operations.service.d.ts.map +1 -1
  247. package/dist/Lists/services/list-set-operations.service.js +236 -10
  248. package/dist/Lists/services/list-set-operations.service.js.map +1 -1
  249. package/dist/MCP/mcp-dashboard.component.d.ts +20 -0
  250. package/dist/MCP/mcp-dashboard.component.d.ts.map +1 -1
  251. package/dist/MCP/mcp-dashboard.component.js +1248 -1338
  252. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  253. package/dist/MCP/mcp.module.d.ts +1 -1
  254. package/dist/MCP/mcp.module.d.ts.map +1 -1
  255. package/dist/MCP/mcp.module.js +34 -1
  256. package/dist/MCP/mcp.module.js.map +1 -1
  257. package/dist/Permissions/audit-log-resource.component.js +76 -85
  258. package/dist/Permissions/audit-log-resource.component.js.map +1 -1
  259. package/dist/Permissions/resource-access-resource.component.js +64 -69
  260. package/dist/Permissions/resource-access-resource.component.js.map +1 -1
  261. package/dist/Permissions/user-access-resource.component.js +63 -74
  262. package/dist/Permissions/user-access-resource.component.js.map +1 -1
  263. package/dist/QueryBrowser/query-browser-resource.component.js +2 -2
  264. package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
  265. package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts +2 -1
  266. package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts.map +1 -1
  267. package/dist/Scheduling/components/scheduling-activity-resource.component.js +11 -12
  268. package/dist/Scheduling/components/scheduling-activity-resource.component.js.map +1 -1
  269. package/dist/Scheduling/components/scheduling-activity.component.d.ts +9 -1
  270. package/dist/Scheduling/components/scheduling-activity.component.d.ts.map +1 -1
  271. package/dist/Scheduling/components/scheduling-activity.component.js +250 -197
  272. package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -1
  273. package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts +2 -1
  274. package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts.map +1 -1
  275. package/dist/Scheduling/components/scheduling-jobs-resource.component.js +11 -12
  276. package/dist/Scheduling/components/scheduling-jobs-resource.component.js.map +1 -1
  277. package/dist/Scheduling/components/scheduling-jobs.component.d.ts +9 -1
  278. package/dist/Scheduling/components/scheduling-jobs.component.d.ts.map +1 -1
  279. package/dist/Scheduling/components/scheduling-jobs.component.js +203 -147
  280. package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
  281. package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts +2 -1
  282. package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts.map +1 -1
  283. package/dist/Scheduling/components/scheduling-overview-resource.component.js +11 -12
  284. package/dist/Scheduling/components/scheduling-overview-resource.component.js.map +1 -1
  285. package/dist/Scheduling/components/scheduling-overview.component.d.ts +3 -1
  286. package/dist/Scheduling/components/scheduling-overview.component.d.ts.map +1 -1
  287. package/dist/Scheduling/components/scheduling-overview.component.js +224 -190
  288. package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
  289. package/dist/Scheduling/scheduling-dashboard.component.d.ts +19 -6
  290. package/dist/Scheduling/scheduling-dashboard.component.d.ts.map +1 -1
  291. package/dist/Scheduling/scheduling-dashboard.component.js +259 -103
  292. package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
  293. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts +13 -3
  294. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts.map +1 -1
  295. package/dist/SystemDiagnostics/system-diagnostics.component.js +1009 -1264
  296. package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
  297. package/dist/Testing/components/testing-analytics-resource.component.d.ts +2 -1
  298. package/dist/Testing/components/testing-analytics-resource.component.d.ts.map +1 -1
  299. package/dist/Testing/components/testing-analytics-resource.component.js +7 -14
  300. package/dist/Testing/components/testing-analytics-resource.component.js.map +1 -1
  301. package/dist/Testing/components/testing-analytics.component.d.ts +3 -1
  302. package/dist/Testing/components/testing-analytics.component.d.ts.map +1 -1
  303. package/dist/Testing/components/testing-analytics.component.js +420 -393
  304. package/dist/Testing/components/testing-analytics.component.js.map +1 -1
  305. package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts +2 -1
  306. package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts.map +1 -1
  307. package/dist/Testing/components/testing-dashboard-tab-resource.component.js +16 -19
  308. package/dist/Testing/components/testing-dashboard-tab-resource.component.js.map +1 -1
  309. package/dist/Testing/components/testing-dashboard-tab.component.d.ts +3 -1
  310. package/dist/Testing/components/testing-dashboard-tab.component.d.ts.map +1 -1
  311. package/dist/Testing/components/testing-dashboard-tab.component.js +157 -122
  312. package/dist/Testing/components/testing-dashboard-tab.component.js.map +1 -1
  313. package/dist/Testing/components/testing-explorer-resource.component.d.ts +2 -1
  314. package/dist/Testing/components/testing-explorer-resource.component.d.ts.map +1 -1
  315. package/dist/Testing/components/testing-explorer-resource.component.js +7 -12
  316. package/dist/Testing/components/testing-explorer-resource.component.js.map +1 -1
  317. package/dist/Testing/components/testing-explorer.component.d.ts +38 -6
  318. package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
  319. package/dist/Testing/components/testing-explorer.component.js +679 -786
  320. package/dist/Testing/components/testing-explorer.component.js.map +1 -1
  321. package/dist/Testing/components/testing-review-resource.component.d.ts +4 -1
  322. package/dist/Testing/components/testing-review-resource.component.d.ts.map +1 -1
  323. package/dist/Testing/components/testing-review-resource.component.js +9 -12
  324. package/dist/Testing/components/testing-review-resource.component.js.map +1 -1
  325. package/dist/Testing/components/testing-review.component.d.ts +3 -1
  326. package/dist/Testing/components/testing-review.component.d.ts.map +1 -1
  327. package/dist/Testing/components/testing-review.component.js +310 -274
  328. package/dist/Testing/components/testing-review.component.js.map +1 -1
  329. package/dist/Testing/components/testing-runs-resource.component.d.ts +2 -1
  330. package/dist/Testing/components/testing-runs-resource.component.d.ts.map +1 -1
  331. package/dist/Testing/components/testing-runs-resource.component.js +16 -19
  332. package/dist/Testing/components/testing-runs-resource.component.js.map +1 -1
  333. package/dist/Testing/components/testing-runs.component.d.ts +3 -1
  334. package/dist/Testing/components/testing-runs.component.d.ts.map +1 -1
  335. package/dist/Testing/components/testing-runs.component.js +307 -273
  336. package/dist/Testing/components/testing-runs.component.js.map +1 -1
  337. package/dist/Testing/testing-dashboard.component.d.ts +2 -0
  338. package/dist/Testing/testing-dashboard.component.d.ts.map +1 -1
  339. package/dist/Testing/testing-dashboard.component.js +114 -99
  340. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  341. package/dist/VersionHistory/components/diff-resource.component.js +185 -188
  342. package/dist/VersionHistory/components/diff-resource.component.js.map +1 -1
  343. package/dist/VersionHistory/components/graph-resource.component.js +154 -184
  344. package/dist/VersionHistory/components/graph-resource.component.js.map +1 -1
  345. package/dist/VersionHistory/components/labels-resource.component.d.ts +7 -0
  346. package/dist/VersionHistory/components/labels-resource.component.d.ts.map +1 -1
  347. package/dist/VersionHistory/components/labels-resource.component.js +350 -354
  348. package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
  349. package/dist/VersionHistory/components/restore-resource.component.js +163 -169
  350. package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
  351. package/dist/actions-dashboards.module.d.ts +15 -16
  352. package/dist/actions-dashboards.module.d.ts.map +1 -1
  353. package/dist/actions-dashboards.module.js +34 -11
  354. package/dist/actions-dashboards.module.js.map +1 -1
  355. package/dist/ai-dashboards.module.d.ts +45 -48
  356. package/dist/ai-dashboards.module.d.ts.map +1 -1
  357. package/dist/ai-dashboards.module.js +51 -10
  358. package/dist/ai-dashboards.module.js.map +1 -1
  359. package/dist/archiving-dashboards.module.d.ts +2 -1
  360. package/dist/archiving-dashboards.module.d.ts.map +1 -1
  361. package/dist/archiving-dashboards.module.js +12 -2
  362. package/dist/archiving-dashboards.module.js.map +1 -1
  363. package/dist/communication-dashboards.module.d.ts +9 -6
  364. package/dist/communication-dashboards.module.d.ts.map +1 -1
  365. package/dist/communication-dashboards.module.js +37 -7
  366. package/dist/communication-dashboards.module.js.map +1 -1
  367. package/dist/core-dashboards.module.d.ts +1 -1
  368. package/dist/core-dashboards.module.d.ts.map +1 -1
  369. package/dist/core-dashboards.module.js +46 -1
  370. package/dist/core-dashboards.module.js.map +1 -1
  371. package/dist/credentials-dashboards.module.d.ts +1 -1
  372. package/dist/credentials-dashboards.module.d.ts.map +1 -1
  373. package/dist/credentials-dashboards.module.js +28 -1
  374. package/dist/credentials-dashboards.module.js.map +1 -1
  375. package/dist/lists-dashboards.module.d.ts +10 -9
  376. package/dist/lists-dashboards.module.d.ts.map +1 -1
  377. package/dist/lists-dashboards.module.js +40 -2
  378. package/dist/lists-dashboards.module.js.map +1 -1
  379. package/dist/public-api.d.ts +3 -2
  380. package/dist/public-api.d.ts.map +1 -1
  381. package/dist/public-api.js +4 -3
  382. package/dist/public-api.js.map +1 -1
  383. package/dist/scheduling-dashboards.module.d.ts +1 -1
  384. package/dist/scheduling-dashboards.module.d.ts.map +1 -1
  385. package/dist/scheduling-dashboards.module.js +31 -1
  386. package/dist/scheduling-dashboards.module.js.map +1 -1
  387. package/dist/testing-dashboards.module.d.ts +8 -7
  388. package/dist/testing-dashboards.module.d.ts.map +1 -1
  389. package/dist/testing-dashboards.module.js +42 -0
  390. package/dist/testing-dashboards.module.js.map +1 -1
  391. package/package.json +53 -52
  392. package/dist/AI/components/agents/agent-filter-panel.component.d.ts +0 -56
  393. package/dist/AI/components/agents/agent-filter-panel.component.d.ts.map +0 -1
  394. package/dist/AI/components/agents/agent-filter-panel.component.js +0 -285
  395. package/dist/AI/components/agents/agent-filter-panel.component.js.map +0 -1
  396. package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts +0 -49
  397. package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts.map +0 -1
  398. package/dist/AI/components/prompts/prompt-filter-panel.component.js +0 -184
  399. package/dist/AI/components/prompts/prompt-filter-panel.component.js.map +0 -1
  400. package/dist/AI/components/system/system-config-filter-panel.component.d.ts +0 -33
  401. package/dist/AI/components/system/system-config-filter-panel.component.d.ts.map +0 -1
  402. package/dist/AI/components/system/system-config-filter-panel.component.js +0 -144
  403. package/dist/AI/components/system/system-config-filter-panel.component.js.map +0 -1
  404. package/dist/Actions/components/explorer/action-toolbar.component.d.ts +0 -63
  405. package/dist/Actions/components/explorer/action-toolbar.component.d.ts.map +0 -1
  406. package/dist/Actions/components/explorer/action-toolbar.component.js +0 -463
  407. package/dist/Actions/components/explorer/action-toolbar.component.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"event-monitor.component.js","sourceRoot":"","sources":["../../src/DevTools/event-monitor.component.ts","../../src/DevTools/event-monitor.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, OnInit, OnDestroy, ChangeDetectorRef } from '@angular/core';\nimport { BaseResourceComponent } from '@memberjunction/ng-shared';\nimport { RegisterClass, MJGlobal, MJEvent } from '@memberjunction/global';\nimport { Subscription } from 'rxjs';\nimport { DevToolsPrefs } from './dev-tools-prefs';\n\ninterface EventMonitorPrefs {\n filter?: string;\n typeFilter?: string;\n componentFilter?: string;\n codeFilter?: string;\n sortField?: SortField;\n sortDir?: SortDir;\n}\n\ninterface EventRow {\n seq: number;\n timestamp: Date;\n type: string;\n eventCode?: string;\n componentName: string;\n summary: string;\n args: unknown;\n expanded: boolean;\n /** True when args is null/undefined/empty — used to render a clean empty-state on expand. */\n hasPayload: boolean;\n}\n\ntype SortField = 'time' | 'type' | 'eventCode' | 'component';\ntype SortDir = 'asc' | 'desc';\n\n/**\n * Event Monitor — live tail of `MJGlobal.Instance.GetEventListener()`.\n * Captures events into a ring buffer (configurable cap) with filtering,\n * pause/resume, click-to-expand-payload, copy.\n */\n@RegisterClass(BaseResourceComponent, 'EventMonitorInspector')\n@Component({\n standalone: false,\n selector: 'mj-event-monitor',\n templateUrl: './event-monitor.component.html',\n styleUrls: ['./inspector-shared.css', './event-monitor.component.css']\n})\nexport class EventMonitorComponent extends BaseResourceComponent implements OnInit, OnDestroy {\n\n public readonly MaxEvents = 500;\n public Events: EventRow[] = [];\n public Paused = false;\n public AutoScroll = true;\n public Filter = '';\n public TypeFilter = ''; // '' = all\n public ComponentFilter = ''; // '' = all\n public CodeFilter = ''; // '' = all\n public KnownTypes: string[] = [];\n public KnownComponents: string[] = [];\n public KnownCodes: string[] = [];\n public Stats = { captured: 0, perSecond: 0, kept: 0 };\n public StartedAt = new Date();\n public SortField: SortField = 'time';\n public SortDir: SortDir = 'desc';\n\n private sub?: Subscription;\n private seq = 0;\n private rateBucket: number[] = []; // event timestamps within last 1s\n private rateTimer?: ReturnType<typeof setInterval>;\n\n constructor(private cdr: ChangeDetectorRef) {\n super();\n }\n\n public ngOnInit(): void {\n this.loadPrefs();\n this.subscribe();\n this.rateTimer = setInterval(() => this.tickRate(), 500);\n this.NotifyLoadComplete();\n }\n\n public ngOnDestroy(): void {\n this.savePrefs();\n this.sub?.unsubscribe();\n if (this.rateTimer) clearInterval(this.rateTimer);\n }\n\n private loadPrefs(): void {\n const p = DevToolsPrefs.Get<EventMonitorPrefs>('eventMonitor');\n if (!p) return;\n this.Filter = p.filter ?? '';\n this.TypeFilter = p.typeFilter ?? '';\n this.ComponentFilter = p.componentFilter ?? '';\n this.CodeFilter = p.codeFilter ?? '';\n this.SortField = p.sortField ?? 'time';\n this.SortDir = p.sortDir ?? 'desc';\n }\n\n private savePrefs(): void {\n DevToolsPrefs.Save<EventMonitorPrefs>('eventMonitor', {\n filter: this.Filter,\n typeFilter: this.TypeFilter,\n componentFilter: this.ComponentFilter,\n codeFilter: this.CodeFilter,\n sortField: this.SortField,\n sortDir: this.SortDir\n });\n }\n\n public override async GetResourceDisplayName(): Promise<string> { return 'Event Monitor'; }\n public override async GetResourceIconClass(): Promise<string> { return 'fa-solid fa-bolt'; }\n\n public TogglePause(): void {\n this.Paused = !this.Paused;\n this.cdr.markForCheck();\n }\n\n public ToggleAutoScroll(): void {\n this.AutoScroll = !this.AutoScroll;\n }\n\n public Clear(): void {\n this.Events = [];\n this.seq = 0;\n this.Stats.kept = 0;\n this.cdr.markForCheck();\n }\n\n public ToggleRow(row: EventRow): void {\n row.expanded = !row.expanded;\n }\n\n public OnTypeFilterClick(type: string): void {\n this.TypeFilter = this.TypeFilter === type ? '' : type;\n }\n\n public OnSortClick(field: SortField): void {\n if (this.SortField === field) {\n this.SortDir = this.SortDir === 'asc' ? 'desc' : 'asc';\n } else {\n this.SortField = field;\n this.SortDir = field === 'time' ? 'desc' : 'asc';\n }\n this.savePrefs();\n }\n\n /** Public so the template can call on every ngModelChange (filters, selects). */\n public PersistPrefs(): void {\n this.savePrefs();\n }\n\n public async OnCopyRow(row: EventRow): Promise<void> {\n const payload = {\n timestamp: row.timestamp.toISOString(),\n type: row.type,\n eventCode: row.eventCode,\n component: row.componentName,\n args: row.args\n };\n try {\n await navigator.clipboard.writeText(JSON.stringify(payload, null, 2));\n } catch { /* clipboard unavailable */ }\n }\n\n public get FilteredEvents(): EventRow[] {\n let list = this.Events;\n if (this.TypeFilter) list = list.filter(e => e.type === this.TypeFilter);\n if (this.ComponentFilter) list = list.filter(e => e.componentName === this.ComponentFilter);\n if (this.CodeFilter) list = list.filter(e => (e.eventCode ?? '') === this.CodeFilter);\n\n const q = this.Filter.trim().toLowerCase();\n if (q) {\n list = list.filter(e =>\n e.type.toLowerCase().includes(q) ||\n e.componentName.toLowerCase().includes(q) ||\n e.summary.toLowerCase().includes(q) ||\n (e.eventCode && e.eventCode.toLowerCase().includes(q))\n );\n }\n\n // Sort (always returns a new array — preserves the natural seq order otherwise)\n const dir = this.SortDir === 'asc' ? 1 : -1;\n const sorted = [...list].sort((a, b) => {\n switch (this.SortField) {\n case 'time': return (a.seq - b.seq) * dir;\n case 'type': return a.type.localeCompare(b.type) * dir;\n case 'eventCode': return (a.eventCode ?? '').localeCompare(b.eventCode ?? '') * dir;\n case 'component': return a.componentName.localeCompare(b.componentName) * dir;\n default: return 0;\n }\n });\n return sorted;\n }\n\n public ClearFilters(): void {\n this.Filter = '';\n this.TypeFilter = '';\n this.ComponentFilter = '';\n this.CodeFilter = '';\n this.savePrefs();\n }\n\n public get HasActiveFilters(): boolean {\n return !!(this.Filter || this.TypeFilter || this.ComponentFilter || this.CodeFilter);\n }\n\n public get UptimeLabel(): string {\n const ms = Date.now() - this.StartedAt.getTime();\n const s = Math.floor(ms / 1000);\n const m = Math.floor(s / 60);\n const remainder = s % 60;\n return m > 0 ? `${m}m ${remainder}s` : `${s}s`;\n }\n\n public TrackBySeq = (_i: number, e: EventRow) => e.seq;\n\n // ---------- private ----------\n\n private subscribe(): void {\n try {\n // withReplay = true so we get historical events that were emitted\n // before this component mounted (within MJGlobal's replay buffer).\n this.sub = MJGlobal.Instance.GetEventListener(true).subscribe((evt: MJEvent) => {\n this.handleEvent(evt);\n });\n } catch {\n // Listener unavailable; silent (rare)\n }\n }\n\n private handleEvent(evt: MJEvent): void {\n this.Stats.captured++;\n this.rateBucket.push(Date.now());\n\n if (this.Paused) return;\n\n const type = String(evt.event ?? 'Unknown');\n if (!this.KnownTypes.includes(type)) {\n this.KnownTypes = [...this.KnownTypes, type].sort();\n }\n\n const componentName = (evt.component as { constructor?: { name?: string } } | null | undefined)?.constructor?.name ?? '(no component)';\n if (!this.KnownComponents.includes(componentName)) {\n this.KnownComponents = [...this.KnownComponents, componentName].sort();\n }\n const code = evt.eventCode;\n if (code && !this.KnownCodes.includes(code)) {\n this.KnownCodes = [...this.KnownCodes, code].sort();\n }\n\n const hasPayload = this.computeHasPayload(evt.args);\n\n const row: EventRow = {\n seq: ++this.seq,\n timestamp: new Date(),\n type,\n eventCode: code,\n componentName,\n summary: hasPayload ? this.summarizeArgs(evt.args) : '—',\n args: evt.args,\n expanded: false,\n hasPayload\n };\n\n this.Events = [row, ...this.Events];\n if (this.Events.length > this.MaxEvents) {\n this.Events = this.Events.slice(0, this.MaxEvents);\n }\n this.Stats.kept = this.Events.length;\n this.cdr.markForCheck();\n }\n\n private computeHasPayload(args: unknown): boolean {\n if (args === null || args === undefined) return false;\n if (typeof args === 'string') return args.length > 0;\n if (Array.isArray(args)) return args.length > 0;\n if (typeof args === 'object') return Object.keys(args as Record<string, unknown>).length > 0;\n return true; // numbers, booleans count as payload\n }\n\n private tickRate(): void {\n const cutoff = Date.now() - 1000;\n this.rateBucket = this.rateBucket.filter(t => t >= cutoff);\n this.Stats.perSecond = this.rateBucket.length;\n this.cdr.markForCheck();\n }\n\n private summarizeArgs(args: unknown): string {\n if (args === null || args === undefined) return '—';\n if (typeof args === 'string') return args.length > 80 ? args.slice(0, 77) + '…' : args;\n if (typeof args === 'number' || typeof args === 'boolean') return String(args);\n if (Array.isArray(args)) return `[ ${args.length} item${args.length === 1 ? '' : 's'} ]`;\n if (typeof args === 'object') {\n const keys = Object.keys(args as Record<string, unknown>);\n if (keys.length === 0) return '{ }';\n return `{ ${keys.slice(0, 3).join(', ')}${keys.length > 3 ? ', …' : ''} }`;\n }\n return String(args);\n }\n}\n","<div class=\"mj-inspector mj-inspector--solo\">\n <div class=\"mj-inspector__header\">\n <div class=\"mj-inspector__header-icon\"><i class=\"fa-solid fa-bolt\"></i></div>\n <div>\n <h3 class=\"mj-inspector__header-title\">Event Monitor</h3>\n <div class=\"mj-inspector__header-sub\">Live tail of MJGlobal events with filter and pause</div>\n </div>\n <span class=\"mj-inspector__header-spacer\"></span>\n <div class=\"mj-inspector__header-actions\">\n <button class=\"mj-inspector__btn\"\n [class.mj-inspector__btn--success]=\"!Paused\"\n [class.em-paused]=\"Paused\"\n type=\"button\" (click)=\"TogglePause()\"\n [title]=\"Paused ? 'Resume capture' : 'Pause capture'\">\n @if (Paused) {\n <i class=\"fa-solid fa-play\"></i> Resume\n } @else {\n <i class=\"fa-solid fa-pause\"></i> Pause\n }\n </button>\n <button class=\"mj-inspector__btn\" type=\"button\" (click)=\"Clear()\" title=\"Clear all captured events\">\n <i class=\"fa-solid fa-broom\"></i> Clear\n </button>\n </div>\n </div>\n\n <div class=\"em-stats\">\n <div class=\"em-stat\">\n <i class=\"em-pulse\" [class.em-pulse--paused]=\"Paused\"></i>\n <div>\n <div class=\"em-stat-value\">{{ Paused ? 'PAUSED' : 'LIVE' }}</div>\n <div class=\"em-stat-label\">{{ Paused ? 'Capture suspended' : 'Capturing events' }}</div>\n </div>\n </div>\n <div class=\"em-stat\">\n <div>\n <div class=\"em-stat-value\">{{ Stats.captured }}</div>\n <div class=\"em-stat-label\">Total captured</div>\n </div>\n </div>\n <div class=\"em-stat\">\n <div>\n <div class=\"em-stat-value\">{{ Stats.kept }} / {{ MaxEvents }}</div>\n <div class=\"em-stat-label\">In buffer</div>\n </div>\n </div>\n <div class=\"em-stat\">\n <div>\n <div class=\"em-stat-value\">{{ Stats.perSecond }}/s</div>\n <div class=\"em-stat-label\">Last second</div>\n </div>\n </div>\n <div class=\"em-stat em-stat--right\">\n <div>\n <div class=\"em-stat-value em-stat-value--small\">{{ UptimeLabel }}</div>\n <div class=\"em-stat-label\">Watching for</div>\n </div>\n </div>\n </div>\n\n <div class=\"em-toolbar\">\n <div class=\"em-search-wrap\">\n <i class=\"fa-solid fa-search em-search-icon\"></i>\n <input type=\"search\"\n class=\"em-search\"\n placeholder=\"Filter by type, component, payload…\"\n [(ngModel)]=\"Filter\"\n (ngModelChange)=\"PersistPrefs()\" />\n @if (Filter) {\n <button class=\"em-search-clear\" (click)=\"Filter = ''\" title=\"Clear\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n }\n </div>\n\n <div class=\"em-select-wrap\">\n <label class=\"em-select-label\">Type</label>\n <select class=\"em-select\" [(ngModel)]=\"TypeFilter\" (ngModelChange)=\"PersistPrefs()\">\n <option value=\"\">All types ({{ KnownTypes.length }})</option>\n @for (t of KnownTypes; track t) {\n <option [value]=\"t\">{{ t }}</option>\n }\n </select>\n </div>\n\n <div class=\"em-select-wrap\">\n <label class=\"em-select-label\">Component</label>\n <select class=\"em-select\" [(ngModel)]=\"ComponentFilter\" (ngModelChange)=\"PersistPrefs()\">\n <option value=\"\">All components ({{ KnownComponents.length }})</option>\n @for (c of KnownComponents; track c) {\n <option [value]=\"c\">{{ c }}</option>\n }\n </select>\n </div>\n\n @if (KnownCodes.length > 0) {\n <div class=\"em-select-wrap\">\n <label class=\"em-select-label\">Code</label>\n <select class=\"em-select\" [(ngModel)]=\"CodeFilter\" (ngModelChange)=\"PersistPrefs()\">\n <option value=\"\">All codes ({{ KnownCodes.length }})</option>\n @for (c of KnownCodes; track c) {\n <option [value]=\"c\">{{ c }}</option>\n }\n </select>\n </div>\n }\n\n @if (HasActiveFilters) {\n <button class=\"em-clear-filters\" type=\"button\" (click)=\"ClearFilters()\" title=\"Clear all filters\">\n <i class=\"fa-solid fa-xmark\"></i> Clear filters\n </button>\n }\n </div>\n\n <div class=\"em-list\">\n <div class=\"em-table-head\">\n <button type=\"button\"\n class=\"em-th em-th--time\"\n [class.em-th--sorted]=\"SortField === 'time'\"\n (click)=\"OnSortClick('time')\">\n Time\n @if (SortField === 'time') {\n <i class=\"fa-solid\" [class.fa-arrow-down]=\"SortDir === 'desc'\" [class.fa-arrow-up]=\"SortDir === 'asc'\"></i>\n }\n </button>\n <button type=\"button\"\n class=\"em-th em-th--type\"\n [class.em-th--sorted]=\"SortField === 'type'\"\n (click)=\"OnSortClick('type')\">\n Type\n @if (SortField === 'type') {\n <i class=\"fa-solid\" [class.fa-arrow-down]=\"SortDir === 'desc'\" [class.fa-arrow-up]=\"SortDir === 'asc'\"></i>\n }\n </button>\n <button type=\"button\"\n class=\"em-th em-th--code\"\n [class.em-th--sorted]=\"SortField === 'eventCode'\"\n (click)=\"OnSortClick('eventCode')\">\n Code\n @if (SortField === 'eventCode') {\n <i class=\"fa-solid\" [class.fa-arrow-down]=\"SortDir === 'desc'\" [class.fa-arrow-up]=\"SortDir === 'asc'\"></i>\n }\n </button>\n <button type=\"button\"\n class=\"em-th em-th--component\"\n [class.em-th--sorted]=\"SortField === 'component'\"\n (click)=\"OnSortClick('component')\">\n Component\n @if (SortField === 'component') {\n <i class=\"fa-solid\" [class.fa-arrow-down]=\"SortDir === 'desc'\" [class.fa-arrow-up]=\"SortDir === 'asc'\"></i>\n }\n </button>\n <span class=\"em-th em-th--summary\">Summary</span>\n <span class=\"em-th em-th--actions\"></span>\n </div>\n\n @if (FilteredEvents.length === 0) {\n <div class=\"em-empty\">\n @if (Stats.captured === 0) {\n <i class=\"fa-solid fa-radio em-empty-icon\"></i>\n <div class=\"em-empty-title\">Listening for events…</div>\n <div class=\"em-empty-sub\">Trigger an action — saves, navigation, AI events all show up here.</div>\n } @else if (Paused) {\n <i class=\"fa-solid fa-pause em-empty-icon\"></i>\n <div class=\"em-empty-title\">Capture is paused</div>\n <div class=\"em-empty-sub\">{{ Stats.captured }} events fired since you paused. Click Resume to start collecting again.</div>\n } @else {\n <i class=\"fa-solid fa-filter em-empty-icon\"></i>\n <div class=\"em-empty-title\">No events match your filter</div>\n <div class=\"em-empty-sub\">{{ Stats.kept }} events in buffer · clear filters to see them.</div>\n }\n </div>\n } @else {\n @for (evt of FilteredEvents; track TrackBySeq($index, evt)) {\n <div class=\"em-row\" [class.em-row--expanded]=\"evt.expanded\">\n <div class=\"em-row-head\" (click)=\"ToggleRow(evt)\">\n <i class=\"em-row-chev fa-solid fa-chevron-right\"\n [class.em-row-chev--down]=\"evt.expanded\"></i>\n <span class=\"em-row-time\">{{ evt.timestamp | date:'HH:mm:ss.SSS' }}</span>\n <span class=\"em-row-type\" [attr.data-type]=\"evt.type\">{{ evt.type }}</span>\n <span class=\"em-row-code\">{{ evt.eventCode || '—' }}</span>\n <span class=\"em-row-component\" [title]=\"evt.componentName\">{{ evt.componentName }}</span>\n <span class=\"em-row-summary\" [class.em-row-summary--empty]=\"!evt.hasPayload\">{{ evt.summary }}</span>\n <button class=\"em-row-copy\"\n type=\"button\"\n (click)=\"$event.stopPropagation(); OnCopyRow(evt)\"\n title=\"Copy as JSON\">\n <i class=\"fa-solid fa-clipboard\"></i>\n </button>\n </div>\n @if (evt.expanded) {\n @if (evt.hasPayload) {\n <pre class=\"em-row-payload\"><code>{{ evt.args | json }}</code></pre>\n } @else {\n <div class=\"em-row-no-payload\">\n <i class=\"fa-regular fa-circle\"></i>\n <span>This event has no payload.</span>\n </div>\n }\n }\n </div>\n }\n }\n </div>\n</div>\n"]}
1
+ {"version":3,"file":"event-monitor.component.js","sourceRoot":"","sources":["../../src/DevTools/event-monitor.component.ts","../../src/DevTools/event-monitor.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, OnInit, OnDestroy, ChangeDetectorRef } from '@angular/core';\nimport { BaseResourceComponent } from '@memberjunction/ng-shared';\nimport { RegisterClass, MJGlobal, MJEvent } from '@memberjunction/global';\nimport { Subscription } from 'rxjs';\nimport { DevToolsPrefs } from './dev-tools-prefs';\n\ninterface EventMonitorPrefs {\n filter?: string;\n typeFilter?: string;\n componentFilter?: string;\n codeFilter?: string;\n sortField?: SortField;\n sortDir?: SortDir;\n}\n\ninterface EventRow {\n seq: number;\n timestamp: Date;\n type: string;\n eventCode?: string;\n componentName: string;\n summary: string;\n args: unknown;\n expanded: boolean;\n /** True when args is null/undefined/empty — used to render a clean empty-state on expand. */\n hasPayload: boolean;\n}\n\ntype SortField = 'time' | 'type' | 'eventCode' | 'component';\ntype SortDir = 'asc' | 'desc';\n\n/**\n * Event Monitor — live tail of `MJGlobal.Instance.GetEventListener()`.\n * Captures events into a ring buffer (configurable cap) with filtering,\n * pause/resume, click-to-expand-payload, copy.\n */\n@RegisterClass(BaseResourceComponent, 'EventMonitorInspector')\n@Component({\n standalone: false,\n selector: 'mj-event-monitor',\n templateUrl: './event-monitor.component.html',\n styleUrls: ['./inspector-shared.css', './event-monitor.component.css']\n})\nexport class EventMonitorComponent extends BaseResourceComponent implements OnInit, OnDestroy {\n\n public readonly MaxEvents = 500;\n public Events: EventRow[] = [];\n public Paused = false;\n public AutoScroll = true;\n public Filter = '';\n public TypeFilter = ''; // '' = all\n public ComponentFilter = ''; // '' = all\n public CodeFilter = ''; // '' = all\n public KnownTypes: string[] = [];\n public KnownComponents: string[] = [];\n public KnownCodes: string[] = [];\n public Stats = { captured: 0, perSecond: 0, kept: 0 };\n public StartedAt = new Date();\n public SortField: SortField = 'time';\n public SortDir: SortDir = 'desc';\n\n private sub?: Subscription;\n private seq = 0;\n private rateBucket: number[] = []; // event timestamps within last 1s\n private rateTimer?: ReturnType<typeof setInterval>;\n\n constructor(private cdr: ChangeDetectorRef) {\n super();\n }\n\n public ngOnInit(): void {\n this.loadPrefs();\n this.subscribe();\n this.rateTimer = setInterval(() => this.tickRate(), 500);\n this.NotifyLoadComplete();\n }\n\n public ngOnDestroy(): void {\n this.savePrefs();\n this.sub?.unsubscribe();\n if (this.rateTimer) clearInterval(this.rateTimer);\n }\n\n private loadPrefs(): void {\n const p = DevToolsPrefs.Get<EventMonitorPrefs>('eventMonitor');\n if (!p) return;\n this.Filter = p.filter ?? '';\n this.TypeFilter = p.typeFilter ?? '';\n this.ComponentFilter = p.componentFilter ?? '';\n this.CodeFilter = p.codeFilter ?? '';\n this.SortField = p.sortField ?? 'time';\n this.SortDir = p.sortDir ?? 'desc';\n }\n\n private savePrefs(): void {\n DevToolsPrefs.Save<EventMonitorPrefs>('eventMonitor', {\n filter: this.Filter,\n typeFilter: this.TypeFilter,\n componentFilter: this.ComponentFilter,\n codeFilter: this.CodeFilter,\n sortField: this.SortField,\n sortDir: this.SortDir\n });\n }\n\n public override async GetResourceDisplayName(): Promise<string> { return 'Event Monitor'; }\n public override async GetResourceIconClass(): Promise<string> { return 'fa-solid fa-bolt'; }\n\n public TogglePause(): void {\n this.Paused = !this.Paused;\n this.cdr.markForCheck();\n }\n\n public ToggleAutoScroll(): void {\n this.AutoScroll = !this.AutoScroll;\n }\n\n public Clear(): void {\n this.Events = [];\n this.seq = 0;\n this.Stats.kept = 0;\n this.cdr.markForCheck();\n }\n\n public ToggleRow(row: EventRow): void {\n row.expanded = !row.expanded;\n }\n\n public OnTypeFilterClick(type: string): void {\n this.TypeFilter = this.TypeFilter === type ? '' : type;\n }\n\n public OnSortClick(field: SortField): void {\n if (this.SortField === field) {\n this.SortDir = this.SortDir === 'asc' ? 'desc' : 'asc';\n } else {\n this.SortField = field;\n this.SortDir = field === 'time' ? 'desc' : 'asc';\n }\n this.savePrefs();\n }\n\n /** Public so the template can call on every ngModelChange (filters, selects). */\n public PersistPrefs(): void {\n this.savePrefs();\n }\n\n public async OnCopyRow(row: EventRow): Promise<void> {\n const payload = {\n timestamp: row.timestamp.toISOString(),\n type: row.type,\n eventCode: row.eventCode,\n component: row.componentName,\n args: row.args\n };\n try {\n await navigator.clipboard.writeText(JSON.stringify(payload, null, 2));\n } catch { /* clipboard unavailable */ }\n }\n\n public get FilteredEvents(): EventRow[] {\n let list = this.Events;\n if (this.TypeFilter) list = list.filter(e => e.type === this.TypeFilter);\n if (this.ComponentFilter) list = list.filter(e => e.componentName === this.ComponentFilter);\n if (this.CodeFilter) list = list.filter(e => (e.eventCode ?? '') === this.CodeFilter);\n\n const q = this.Filter.trim().toLowerCase();\n if (q) {\n list = list.filter(e =>\n e.type.toLowerCase().includes(q) ||\n e.componentName.toLowerCase().includes(q) ||\n e.summary.toLowerCase().includes(q) ||\n (e.eventCode && e.eventCode.toLowerCase().includes(q))\n );\n }\n\n // Sort (always returns a new array — preserves the natural seq order otherwise)\n const dir = this.SortDir === 'asc' ? 1 : -1;\n const sorted = [...list].sort((a, b) => {\n switch (this.SortField) {\n case 'time': return (a.seq - b.seq) * dir;\n case 'type': return a.type.localeCompare(b.type) * dir;\n case 'eventCode': return (a.eventCode ?? '').localeCompare(b.eventCode ?? '') * dir;\n case 'component': return a.componentName.localeCompare(b.componentName) * dir;\n default: return 0;\n }\n });\n return sorted;\n }\n\n public ClearFilters(): void {\n this.Filter = '';\n this.TypeFilter = '';\n this.ComponentFilter = '';\n this.CodeFilter = '';\n this.savePrefs();\n }\n\n public get HasActiveFilters(): boolean {\n return !!(this.Filter || this.TypeFilter || this.ComponentFilter || this.CodeFilter);\n }\n\n public get UptimeLabel(): string {\n const ms = Date.now() - this.StartedAt.getTime();\n const s = Math.floor(ms / 1000);\n const m = Math.floor(s / 60);\n const remainder = s % 60;\n return m > 0 ? `${m}m ${remainder}s` : `${s}s`;\n }\n\n public TrackBySeq = (_i: number, e: EventRow) => e.seq;\n\n // ---------- private ----------\n\n private subscribe(): void {\n try {\n // withReplay = true so we get historical events that were emitted\n // before this component mounted (within MJGlobal's replay buffer).\n this.sub = MJGlobal.Instance.GetEventListener(true).subscribe((evt: MJEvent) => {\n this.handleEvent(evt);\n });\n } catch {\n // Listener unavailable; silent (rare)\n }\n }\n\n private handleEvent(evt: MJEvent): void {\n this.Stats.captured++;\n this.rateBucket.push(Date.now());\n\n if (this.Paused) return;\n\n const type = String(evt.event ?? 'Unknown');\n if (!this.KnownTypes.includes(type)) {\n this.KnownTypes = [...this.KnownTypes, type].sort();\n }\n\n const componentName = (evt.component as { constructor?: { name?: string } } | null | undefined)?.constructor?.name ?? '(no component)';\n if (!this.KnownComponents.includes(componentName)) {\n this.KnownComponents = [...this.KnownComponents, componentName].sort();\n }\n const code = evt.eventCode;\n if (code && !this.KnownCodes.includes(code)) {\n this.KnownCodes = [...this.KnownCodes, code].sort();\n }\n\n const hasPayload = this.computeHasPayload(evt.args);\n\n const row: EventRow = {\n seq: ++this.seq,\n timestamp: new Date(),\n type,\n eventCode: code,\n componentName,\n summary: hasPayload ? this.summarizeArgs(evt.args) : '—',\n args: evt.args,\n expanded: false,\n hasPayload\n };\n\n this.Events = [row, ...this.Events];\n if (this.Events.length > this.MaxEvents) {\n this.Events = this.Events.slice(0, this.MaxEvents);\n }\n this.Stats.kept = this.Events.length;\n this.cdr.markForCheck();\n }\n\n private computeHasPayload(args: unknown): boolean {\n if (args === null || args === undefined) return false;\n if (typeof args === 'string') return args.length > 0;\n if (Array.isArray(args)) return args.length > 0;\n if (typeof args === 'object') return Object.keys(args as Record<string, unknown>).length > 0;\n return true; // numbers, booleans count as payload\n }\n\n private tickRate(): void {\n const cutoff = Date.now() - 1000;\n this.rateBucket = this.rateBucket.filter(t => t >= cutoff);\n this.Stats.perSecond = this.rateBucket.length;\n this.cdr.markForCheck();\n }\n\n private summarizeArgs(args: unknown): string {\n if (args === null || args === undefined) return '—';\n if (typeof args === 'string') return args.length > 80 ? args.slice(0, 77) + '…' : args;\n if (typeof args === 'number' || typeof args === 'boolean') return String(args);\n if (Array.isArray(args)) return `[ ${args.length} item${args.length === 1 ? '' : 's'} ]`;\n if (typeof args === 'object') {\n const keys = Object.keys(args as Record<string, unknown>);\n if (keys.length === 0) return '{ }';\n return `{ ${keys.slice(0, 3).join(', ')}${keys.length > 3 ? ', …' : ''} }`;\n }\n return String(args);\n }\n}\n","<div class=\"mj-inspector mj-inspector--solo\">\n <mj-page-header-interior\n Role=\"region\"\n AriaLabel=\"Event monitor\"\n Title=\"Event Monitor\"\n Subtitle=\"Live tail of MJGlobal events with filter and pause\">\n <div actions>\n <button mjButton\n variant=\"secondary\"\n size=\"sm\"\n (click)=\"TogglePause()\"\n [title]=\"Paused ? 'Resume capture' : 'Pause capture'\">\n @if (Paused) {\n <i class=\"fa-solid fa-play\" aria-hidden=\"true\"></i> Resume\n } @else {\n <i class=\"fa-solid fa-pause\" aria-hidden=\"true\"></i> Pause\n }\n </button>\n <button mjButton variant=\"secondary\" size=\"sm\" (click)=\"Clear()\" title=\"Clear all captured events\">\n <i class=\"fa-solid fa-broom\" aria-hidden=\"true\"></i> Clear\n </button>\n </div>\n </mj-page-header-interior>\n\n <div class=\"em-stats\">\n <div class=\"em-stat\">\n <i class=\"em-pulse\" [class.em-pulse--paused]=\"Paused\"></i>\n <div>\n <div class=\"em-stat-value\">{{ Paused ? 'PAUSED' : 'LIVE' }}</div>\n <div class=\"em-stat-label\">{{ Paused ? 'Capture suspended' : 'Capturing events' }}</div>\n </div>\n </div>\n <div class=\"em-stat\">\n <div>\n <div class=\"em-stat-value\">{{ Stats.captured }}</div>\n <div class=\"em-stat-label\">Total captured</div>\n </div>\n </div>\n <div class=\"em-stat\">\n <div>\n <div class=\"em-stat-value\">{{ Stats.kept }} / {{ MaxEvents }}</div>\n <div class=\"em-stat-label\">In buffer</div>\n </div>\n </div>\n <div class=\"em-stat\">\n <div>\n <div class=\"em-stat-value\">{{ Stats.perSecond }}/s</div>\n <div class=\"em-stat-label\">Last second</div>\n </div>\n </div>\n <div class=\"em-stat em-stat--right\">\n <div>\n <div class=\"em-stat-value em-stat-value--small\">{{ UptimeLabel }}</div>\n <div class=\"em-stat-label\">Watching for</div>\n </div>\n </div>\n </div>\n\n <div class=\"em-toolbar\">\n <div class=\"em-search-wrap\">\n <i class=\"fa-solid fa-search em-search-icon\"></i>\n <input type=\"search\"\n class=\"em-search\"\n placeholder=\"Filter by type, component, payload…\"\n [(ngModel)]=\"Filter\"\n (ngModelChange)=\"PersistPrefs()\" />\n @if (Filter) {\n <button class=\"em-search-clear\" (click)=\"Filter = ''\" title=\"Clear\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n }\n </div>\n\n <div class=\"em-select-wrap\">\n <label class=\"em-select-label\">Type</label>\n <select class=\"em-select\" [(ngModel)]=\"TypeFilter\" (ngModelChange)=\"PersistPrefs()\">\n <option value=\"\">All types ({{ KnownTypes.length }})</option>\n @for (t of KnownTypes; track t) {\n <option [value]=\"t\">{{ t }}</option>\n }\n </select>\n </div>\n\n <div class=\"em-select-wrap\">\n <label class=\"em-select-label\">Component</label>\n <select class=\"em-select\" [(ngModel)]=\"ComponentFilter\" (ngModelChange)=\"PersistPrefs()\">\n <option value=\"\">All components ({{ KnownComponents.length }})</option>\n @for (c of KnownComponents; track c) {\n <option [value]=\"c\">{{ c }}</option>\n }\n </select>\n </div>\n\n @if (KnownCodes.length > 0) {\n <div class=\"em-select-wrap\">\n <label class=\"em-select-label\">Code</label>\n <select class=\"em-select\" [(ngModel)]=\"CodeFilter\" (ngModelChange)=\"PersistPrefs()\">\n <option value=\"\">All codes ({{ KnownCodes.length }})</option>\n @for (c of KnownCodes; track c) {\n <option [value]=\"c\">{{ c }}</option>\n }\n </select>\n </div>\n }\n\n @if (HasActiveFilters) {\n <button class=\"em-clear-filters\" type=\"button\" (click)=\"ClearFilters()\" title=\"Clear all filters\">\n <i class=\"fa-solid fa-xmark\"></i> Clear filters\n </button>\n }\n </div>\n\n <div class=\"em-list\">\n <div class=\"em-table-head\">\n <button type=\"button\"\n class=\"em-th em-th--time\"\n [class.em-th--sorted]=\"SortField === 'time'\"\n (click)=\"OnSortClick('time')\">\n Time\n @if (SortField === 'time') {\n <i class=\"fa-solid\" [class.fa-arrow-down]=\"SortDir === 'desc'\" [class.fa-arrow-up]=\"SortDir === 'asc'\"></i>\n }\n </button>\n <button type=\"button\"\n class=\"em-th em-th--type\"\n [class.em-th--sorted]=\"SortField === 'type'\"\n (click)=\"OnSortClick('type')\">\n Type\n @if (SortField === 'type') {\n <i class=\"fa-solid\" [class.fa-arrow-down]=\"SortDir === 'desc'\" [class.fa-arrow-up]=\"SortDir === 'asc'\"></i>\n }\n </button>\n <button type=\"button\"\n class=\"em-th em-th--code\"\n [class.em-th--sorted]=\"SortField === 'eventCode'\"\n (click)=\"OnSortClick('eventCode')\">\n Code\n @if (SortField === 'eventCode') {\n <i class=\"fa-solid\" [class.fa-arrow-down]=\"SortDir === 'desc'\" [class.fa-arrow-up]=\"SortDir === 'asc'\"></i>\n }\n </button>\n <button type=\"button\"\n class=\"em-th em-th--component\"\n [class.em-th--sorted]=\"SortField === 'component'\"\n (click)=\"OnSortClick('component')\">\n Component\n @if (SortField === 'component') {\n <i class=\"fa-solid\" [class.fa-arrow-down]=\"SortDir === 'desc'\" [class.fa-arrow-up]=\"SortDir === 'asc'\"></i>\n }\n </button>\n <span class=\"em-th em-th--summary\">Summary</span>\n <span class=\"em-th em-th--actions\"></span>\n </div>\n\n @if (FilteredEvents.length === 0) {\n <div class=\"em-empty\">\n @if (Stats.captured === 0) {\n <i class=\"fa-solid fa-radio em-empty-icon\"></i>\n <div class=\"em-empty-title\">Listening for events…</div>\n <div class=\"em-empty-sub\">Trigger an action — saves, navigation, AI events all show up here.</div>\n } @else if (Paused) {\n <i class=\"fa-solid fa-pause em-empty-icon\"></i>\n <div class=\"em-empty-title\">Capture is paused</div>\n <div class=\"em-empty-sub\">{{ Stats.captured }} events fired since you paused. Click Resume to start collecting again.</div>\n } @else {\n <i class=\"fa-solid fa-filter em-empty-icon\"></i>\n <div class=\"em-empty-title\">No events match your filter</div>\n <div class=\"em-empty-sub\">{{ Stats.kept }} events in buffer · clear filters to see them.</div>\n }\n </div>\n } @else {\n @for (evt of FilteredEvents; track TrackBySeq($index, evt)) {\n <div class=\"em-row\" [class.em-row--expanded]=\"evt.expanded\">\n <div class=\"em-row-head\" (click)=\"ToggleRow(evt)\">\n <i class=\"em-row-chev fa-solid fa-chevron-right\"\n [class.em-row-chev--down]=\"evt.expanded\"></i>\n <span class=\"em-row-time\">{{ evt.timestamp | date:'HH:mm:ss.SSS' }}</span>\n <span class=\"em-row-type\" [attr.data-type]=\"evt.type\">{{ evt.type }}</span>\n <span class=\"em-row-code\">{{ evt.eventCode || '—' }}</span>\n <span class=\"em-row-component\" [title]=\"evt.componentName\">{{ evt.componentName }}</span>\n <span class=\"em-row-summary\" [class.em-row-summary--empty]=\"!evt.hasPayload\">{{ evt.summary }}</span>\n <button class=\"em-row-copy\"\n type=\"button\"\n (click)=\"$event.stopPropagation(); OnCopyRow(evt)\"\n title=\"Copy as JSON\">\n <i class=\"fa-solid fa-clipboard\"></i>\n </button>\n </div>\n @if (evt.expanded) {\n @if (evt.hasPayload) {\n <pre class=\"em-row-payload\"><code>{{ evt.args | json }}</code></pre>\n } @else {\n <div class=\"em-row-no-payload\">\n <i class=\"fa-regular fa-circle\"></i>\n <span>This event has no payload.</span>\n </div>\n }\n }\n </div>\n }\n }\n </div>\n</div>\n"]}