@memberjunction/ng-dashboards 6.2.0-edge.5 → 6.2.0-edge.7

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 (293) hide show
  1. package/README.md +35 -0
  2. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js +2 -2
  3. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js.map +1 -1
  4. package/dist/AI/components/analytics/realtime/realtime-management.component.d.ts.map +1 -1
  5. package/dist/AI/components/analytics/realtime/realtime-management.component.js +3 -1
  6. package/dist/AI/components/analytics/realtime/realtime-management.component.js.map +1 -1
  7. package/dist/AI/components/analytics/realtime/realtime-overview.component.d.ts +1 -1
  8. package/dist/AI/components/analytics/realtime/realtime-overview.component.js +3 -3
  9. package/dist/AI/components/analytics/realtime/realtime-overview.component.js.map +1 -1
  10. package/dist/AI/components/analytics/realtime/realtime-session-data.d.ts +6 -4
  11. package/dist/AI/components/analytics/realtime/realtime-session-data.d.ts.map +1 -1
  12. package/dist/AI/components/analytics/realtime/realtime-session-data.js +8 -2
  13. package/dist/AI/components/analytics/realtime/realtime-session-data.js.map +1 -1
  14. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts +1 -1
  15. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
  16. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +21 -13
  17. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
  18. package/dist/AI/components/autotagging/components/classify-item-grid.component.js +1 -1
  19. package/dist/AI/components/autotagging/components/classify-item-grid.component.js.map +1 -1
  20. package/dist/AI/components/autotagging/components/classify-org-context-editor.component.d.ts.map +1 -1
  21. package/dist/AI/components/autotagging/components/classify-org-context-editor.component.js +1 -0
  22. package/dist/AI/components/autotagging/components/classify-org-context-editor.component.js.map +1 -1
  23. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.d.ts.map +1 -1
  24. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.js +1 -0
  25. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.js.map +1 -1
  26. package/dist/AI/components/autotagging/tabs/sources-tab.component.d.ts.map +1 -1
  27. package/dist/AI/components/autotagging/tabs/sources-tab.component.js +1 -0
  28. package/dist/AI/components/autotagging/tabs/sources-tab.component.js.map +1 -1
  29. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts +7 -1
  30. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
  31. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +210 -57
  32. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
  33. package/dist/AI/components/duplicates/duplicate-detection-run-scope.d.ts +12 -11
  34. package/dist/AI/components/duplicates/duplicate-detection-run-scope.d.ts.map +1 -1
  35. package/dist/AI/components/duplicates/duplicate-detection-run-scope.js +15 -15
  36. package/dist/AI/components/duplicates/duplicate-detection-run-scope.js.map +1 -1
  37. package/dist/AI/components/execution-monitoring.component.d.ts.map +1 -1
  38. package/dist/AI/components/execution-monitoring.component.js +28 -16
  39. package/dist/AI/components/execution-monitoring.component.js.map +1 -1
  40. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.d.ts +1 -0
  41. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.d.ts.map +1 -1
  42. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js +32 -8
  43. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js.map +1 -1
  44. package/dist/AI/components/tags/tags-resource.component.d.ts +1 -1
  45. package/dist/AI/components/tags/tags-resource.component.d.ts.map +1 -1
  46. package/dist/AI/components/tags/tags-resource.component.js +18 -9
  47. package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
  48. package/dist/AI/components/vectors/sensitive-fields.d.ts +9 -4
  49. package/dist/AI/components/vectors/sensitive-fields.d.ts.map +1 -1
  50. package/dist/AI/components/vectors/sensitive-fields.js +39 -14
  51. package/dist/AI/components/vectors/sensitive-fields.js.map +1 -1
  52. package/dist/AI/components/vectors/vector-document-rules.d.ts +13 -0
  53. package/dist/AI/components/vectors/vector-document-rules.d.ts.map +1 -1
  54. package/dist/AI/components/vectors/vector-document-rules.js +14 -0
  55. package/dist/AI/components/vectors/vector-document-rules.js.map +1 -1
  56. package/dist/AI/components/vectors/vector-management-resource.component.d.ts +34 -14
  57. package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
  58. package/dist/AI/components/vectors/vector-management-resource.component.js +134 -51
  59. package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
  60. package/dist/AI/components/vectors/vector-store-selection.d.ts +32 -0
  61. package/dist/AI/components/vectors/vector-store-selection.d.ts.map +1 -0
  62. package/dist/AI/components/vectors/vector-store-selection.js +57 -0
  63. package/dist/AI/components/vectors/vector-store-selection.js.map +1 -0
  64. package/dist/AI/services/ai-instrumentation.service.d.ts.map +1 -1
  65. package/dist/AI/services/ai-instrumentation.service.js +4 -2
  66. package/dist/AI/services/ai-instrumentation.service.js.map +1 -1
  67. package/dist/Actions/action-result-code.d.ts +80 -0
  68. package/dist/Actions/action-result-code.d.ts.map +1 -0
  69. package/dist/Actions/action-result-code.js +163 -0
  70. package/dist/Actions/action-result-code.js.map +1 -0
  71. package/dist/Actions/components/actions-overview.component.d.ts +8 -0
  72. package/dist/Actions/components/actions-overview.component.d.ts.map +1 -1
  73. package/dist/Actions/components/actions-overview.component.js +12 -9
  74. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  75. package/dist/Actions/components/execution-monitoring.component.d.ts +29 -9
  76. package/dist/Actions/components/execution-monitoring.component.d.ts.map +1 -1
  77. package/dist/Actions/components/execution-monitoring.component.js +65 -42
  78. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  79. package/dist/Actions/components/explorer/action-card.component.d.ts.map +1 -1
  80. package/dist/Actions/components/explorer/action-card.component.js +5 -4
  81. package/dist/Actions/components/explorer/action-card.component.js.map +1 -1
  82. package/dist/ChiefOfStaff/chief-of-staff-agent-context.d.ts +198 -0
  83. package/dist/ChiefOfStaff/chief-of-staff-agent-context.d.ts.map +1 -0
  84. package/dist/ChiefOfStaff/chief-of-staff-agent-context.js +289 -0
  85. package/dist/ChiefOfStaff/chief-of-staff-agent-context.js.map +1 -0
  86. package/dist/ChiefOfStaff/chief-of-staff-approvals.component.d.ts +29 -0
  87. package/dist/ChiefOfStaff/chief-of-staff-approvals.component.d.ts.map +1 -0
  88. package/dist/ChiefOfStaff/chief-of-staff-approvals.component.js +666 -0
  89. package/dist/ChiefOfStaff/chief-of-staff-approvals.component.js.map +1 -0
  90. package/dist/ChiefOfStaff/chief-of-staff-governance.component.d.ts +56 -0
  91. package/dist/ChiefOfStaff/chief-of-staff-governance.component.d.ts.map +1 -0
  92. package/dist/ChiefOfStaff/chief-of-staff-governance.component.js +515 -0
  93. package/dist/ChiefOfStaff/chief-of-staff-governance.component.js.map +1 -0
  94. package/dist/ChiefOfStaff/chief-of-staff-live-refresh.d.ts +14 -0
  95. package/dist/ChiefOfStaff/chief-of-staff-live-refresh.d.ts.map +1 -0
  96. package/dist/ChiefOfStaff/chief-of-staff-live-refresh.js +39 -0
  97. package/dist/ChiefOfStaff/chief-of-staff-live-refresh.js.map +1 -0
  98. package/dist/ChiefOfStaff/chief-of-staff-overview.component.d.ts +17 -0
  99. package/dist/ChiefOfStaff/chief-of-staff-overview.component.d.ts.map +1 -0
  100. package/dist/ChiefOfStaff/chief-of-staff-overview.component.js +485 -0
  101. package/dist/ChiefOfStaff/chief-of-staff-overview.component.js.map +1 -0
  102. package/dist/ChiefOfStaff/chief-of-staff-page-base.d.ts +139 -0
  103. package/dist/ChiefOfStaff/chief-of-staff-page-base.d.ts.map +1 -0
  104. package/dist/ChiefOfStaff/chief-of-staff-page-base.js +602 -0
  105. package/dist/ChiefOfStaff/chief-of-staff-page-base.js.map +1 -0
  106. package/dist/ChiefOfStaff/index.d.ts +6 -0
  107. package/dist/ChiefOfStaff/index.d.ts.map +1 -0
  108. package/dist/ChiefOfStaff/index.js +6 -0
  109. package/dist/ChiefOfStaff/index.js.map +1 -0
  110. package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
  111. package/dist/Communication/communication-logs-resource.component.js +2 -1
  112. package/dist/Communication/communication-logs-resource.component.js.map +1 -1
  113. package/dist/Communication/communication-monitor-resource.component.d.ts.map +1 -1
  114. package/dist/Communication/communication-monitor-resource.component.js +26 -21
  115. package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
  116. package/dist/Communication/communication-runs-resource.component.d.ts.map +1 -1
  117. package/dist/Communication/communication-runs-resource.component.js +14 -13
  118. package/dist/Communication/communication-runs-resource.component.js.map +1 -1
  119. package/dist/ComponentStudio/component-studio-dashboard.component.d.ts.map +1 -1
  120. package/dist/ComponentStudio/component-studio-dashboard.component.js +1 -0
  121. package/dist/ComponentStudio/component-studio-dashboard.component.js.map +1 -1
  122. package/dist/ComponentStudio/components/artifact-selection-dialog.component.d.ts.map +1 -1
  123. package/dist/ComponentStudio/components/artifact-selection-dialog.component.js +2 -1
  124. package/dist/ComponentStudio/components/artifact-selection-dialog.component.js.map +1 -1
  125. package/dist/ComponentStudio/services/component-version.service.d.ts.map +1 -1
  126. package/dist/ComponentStudio/services/component-version.service.js +3 -0
  127. package/dist/ComponentStudio/services/component-version.service.js.map +1 -1
  128. package/dist/DashboardEditor/dashboard-editor.component.d.ts +17 -2
  129. package/dist/DashboardEditor/dashboard-editor.component.d.ts.map +1 -1
  130. package/dist/DashboardEditor/dashboard-editor.component.js +94 -43
  131. package/dist/DashboardEditor/dashboard-editor.component.js.map +1 -1
  132. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts +45 -2
  133. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
  134. package/dist/DataExplorer/data-explorer-dashboard.component.js +178 -55
  135. package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
  136. package/dist/DataExplorer/models/explorer-state.interface.d.ts +2 -0
  137. package/dist/DataExplorer/models/explorer-state.interface.d.ts.map +1 -1
  138. package/dist/DataExplorer/models/explorer-state.interface.js.map +1 -1
  139. package/dist/DevTools/graphql-console.component.js +2 -2
  140. package/dist/DevTools/lazy-module-status.component.js +2 -2
  141. package/dist/FormBuilder/form-builder-resource.component.d.ts.map +1 -1
  142. package/dist/FormBuilder/form-builder-resource.component.js +5 -0
  143. package/dist/FormBuilder/form-builder-resource.component.js.map +1 -1
  144. package/dist/Integration/components/connections/connections.component.js +2 -2
  145. package/dist/Integration/services/integration-data.service.d.ts +1 -1
  146. package/dist/Integration/services/integration-data.service.d.ts.map +1 -1
  147. package/dist/Integration/services/integration-data.service.js +4 -3
  148. package/dist/Integration/services/integration-data.service.js.map +1 -1
  149. package/dist/Lists/components/lists-browse-resource.component.js +1 -1
  150. package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
  151. package/dist/Lists/components/lists-my-lists-resource.component.js +1 -1
  152. package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
  153. package/dist/LoginStudio/login-studio-resource.component.d.ts +10 -2
  154. package/dist/LoginStudio/login-studio-resource.component.d.ts.map +1 -1
  155. package/dist/LoginStudio/login-studio-resource.component.js +111 -77
  156. package/dist/LoginStudio/login-studio-resource.component.js.map +1 -1
  157. package/dist/MCP/mcp-dashboard.component.d.ts +24 -4
  158. package/dist/MCP/mcp-dashboard.component.d.ts.map +1 -1
  159. package/dist/MCP/mcp-dashboard.component.js +118 -65
  160. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  161. package/dist/PredictiveStudio/business-predictions.view-models.d.ts +1 -1
  162. package/dist/PredictiveStudio/business-predictions.view-models.d.ts.map +1 -1
  163. package/dist/PredictiveStudio/business-predictions.view-models.js +3 -3
  164. package/dist/PredictiveStudio/business-predictions.view-models.js.map +1 -1
  165. package/dist/PredictiveStudio/components/ps-experiments.component.d.ts +6 -63
  166. package/dist/PredictiveStudio/components/ps-experiments.component.d.ts.map +1 -1
  167. package/dist/PredictiveStudio/components/ps-experiments.component.js +257 -521
  168. package/dist/PredictiveStudio/components/ps-experiments.component.js.map +1 -1
  169. package/dist/PredictiveStudio/components/ps-pipeline-wizard.component.d.ts +0 -18
  170. package/dist/PredictiveStudio/components/ps-pipeline-wizard.component.d.ts.map +1 -1
  171. package/dist/PredictiveStudio/components/ps-pipeline-wizard.component.js +124 -251
  172. package/dist/PredictiveStudio/components/ps-pipeline-wizard.component.js.map +1 -1
  173. package/dist/PredictiveStudio/components/ps-pipelines.component.d.ts +5 -9
  174. package/dist/PredictiveStudio/components/ps-pipelines.component.d.ts.map +1 -1
  175. package/dist/PredictiveStudio/components/ps-pipelines.component.js +98 -130
  176. package/dist/PredictiveStudio/components/ps-pipelines.component.js.map +1 -1
  177. package/dist/PredictiveStudio/components/ps-predictions-grid.component.d.ts +53 -4
  178. package/dist/PredictiveStudio/components/ps-predictions-grid.component.d.ts.map +1 -1
  179. package/dist/PredictiveStudio/components/ps-predictions-grid.component.js +338 -326
  180. package/dist/PredictiveStudio/components/ps-predictions-grid.component.js.map +1 -1
  181. package/dist/PredictiveStudio/components/ps-row-drivers.component.d.ts +19 -0
  182. package/dist/PredictiveStudio/components/ps-row-drivers.component.d.ts.map +1 -0
  183. package/dist/PredictiveStudio/components/ps-row-drivers.component.js +85 -0
  184. package/dist/PredictiveStudio/components/ps-row-drivers.component.js.map +1 -0
  185. package/dist/PredictiveStudio/engine/predictive-studio.engine.d.ts +19 -1
  186. package/dist/PredictiveStudio/engine/predictive-studio.engine.d.ts.map +1 -1
  187. package/dist/PredictiveStudio/engine/predictive-studio.engine.js +52 -2
  188. package/dist/PredictiveStudio/engine/predictive-studio.engine.js.map +1 -1
  189. package/dist/PredictiveStudio/predictive-studio-agent-context.d.ts +3 -1
  190. package/dist/PredictiveStudio/predictive-studio-agent-context.d.ts.map +1 -1
  191. package/dist/PredictiveStudio/predictive-studio-agent-context.js +3 -0
  192. package/dist/PredictiveStudio/predictive-studio-agent-context.js.map +1 -1
  193. package/dist/PredictiveStudio/predictive-studio-score-history.service.d.ts +27 -4
  194. package/dist/PredictiveStudio/predictive-studio-score-history.service.d.ts.map +1 -1
  195. package/dist/PredictiveStudio/predictive-studio-score-history.service.js +94 -61
  196. package/dist/PredictiveStudio/predictive-studio-score-history.service.js.map +1 -1
  197. package/dist/PredictiveStudio/resources/ps-predictions-resource.component.d.ts +29 -5
  198. package/dist/PredictiveStudio/resources/ps-predictions-resource.component.d.ts.map +1 -1
  199. package/dist/PredictiveStudio/resources/ps-predictions-resource.component.js +186 -103
  200. package/dist/PredictiveStudio/resources/ps-predictions-resource.component.js.map +1 -1
  201. package/dist/PredictiveStudio/resources/ps-studio-resource.component.js +1 -1
  202. package/dist/PredictiveStudio/resources/ps-studio-resource.component.js.map +1 -1
  203. package/dist/QueryBrowser/query-browser-resource.component.d.ts +26 -0
  204. package/dist/QueryBrowser/query-browser-resource.component.d.ts.map +1 -1
  205. package/dist/QueryBrowser/query-browser-resource.component.js +375 -252
  206. package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
  207. package/dist/UserRoutines/user-routines-resource.component.d.ts +8 -1
  208. package/dist/UserRoutines/user-routines-resource.component.d.ts.map +1 -1
  209. package/dist/UserRoutines/user-routines-resource.component.js +22 -4
  210. package/dist/UserRoutines/user-routines-resource.component.js.map +1 -1
  211. package/dist/VersionHistory/components/diff-resource.component.d.ts.map +1 -1
  212. package/dist/VersionHistory/components/diff-resource.component.js +1 -0
  213. package/dist/VersionHistory/components/diff-resource.component.js.map +1 -1
  214. package/dist/VideoStudio/components/vs-archetype-editor.component.d.ts +162 -0
  215. package/dist/VideoStudio/components/vs-archetype-editor.component.d.ts.map +1 -0
  216. package/dist/VideoStudio/components/vs-archetype-editor.component.js +1105 -0
  217. package/dist/VideoStudio/components/vs-archetype-editor.component.js.map +1 -0
  218. package/dist/VideoStudio/components/vs-audio-options.component.d.ts +27 -0
  219. package/dist/VideoStudio/components/vs-audio-options.component.d.ts.map +1 -0
  220. package/dist/VideoStudio/components/vs-audio-options.component.js +119 -0
  221. package/dist/VideoStudio/components/vs-audio-options.component.js.map +1 -0
  222. package/dist/VideoStudio/components/vs-copilot-panel.component.d.ts +105 -0
  223. package/dist/VideoStudio/components/vs-copilot-panel.component.d.ts.map +1 -0
  224. package/dist/VideoStudio/components/vs-copilot-panel.component.js +560 -0
  225. package/dist/VideoStudio/components/vs-copilot-panel.component.js.map +1 -0
  226. package/dist/VideoStudio/components/vs-production-brief.component.d.ts +163 -0
  227. package/dist/VideoStudio/components/vs-production-brief.component.d.ts.map +1 -0
  228. package/dist/VideoStudio/components/vs-production-brief.component.js +1054 -0
  229. package/dist/VideoStudio/components/vs-production-brief.component.js.map +1 -0
  230. package/dist/VideoStudio/components/vs-setup-health-card.component.d.ts +43 -0
  231. package/dist/VideoStudio/components/vs-setup-health-card.component.d.ts.map +1 -0
  232. package/dist/VideoStudio/components/vs-setup-health-card.component.js +412 -0
  233. package/dist/VideoStudio/components/vs-setup-health-card.component.js.map +1 -0
  234. package/dist/VideoStudio/components/vs-studio-slide-in.component.d.ts +73 -0
  235. package/dist/VideoStudio/components/vs-studio-slide-in.component.d.ts.map +1 -0
  236. package/dist/VideoStudio/components/vs-studio-slide-in.component.js +271 -0
  237. package/dist/VideoStudio/components/vs-studio-slide-in.component.js.map +1 -0
  238. package/dist/VideoStudio/index.d.ts +12 -0
  239. package/dist/VideoStudio/index.d.ts.map +1 -0
  240. package/dist/VideoStudio/index.js +12 -0
  241. package/dist/VideoStudio/index.js.map +1 -0
  242. package/dist/VideoStudio/resources/video-studio-archetypes-resource.component.d.ts +118 -0
  243. package/dist/VideoStudio/resources/video-studio-archetypes-resource.component.d.ts.map +1 -0
  244. package/dist/VideoStudio/resources/video-studio-archetypes-resource.component.js +964 -0
  245. package/dist/VideoStudio/resources/video-studio-archetypes-resource.component.js.map +1 -0
  246. package/dist/VideoStudio/resources/video-studio-brand-kits-resource.component.d.ts +70 -0
  247. package/dist/VideoStudio/resources/video-studio-brand-kits-resource.component.d.ts.map +1 -0
  248. package/dist/VideoStudio/resources/video-studio-brand-kits-resource.component.js +600 -0
  249. package/dist/VideoStudio/resources/video-studio-brand-kits-resource.component.js.map +1 -0
  250. package/dist/VideoStudio/resources/video-studio-productions-resource.component.d.ts +182 -0
  251. package/dist/VideoStudio/resources/video-studio-productions-resource.component.d.ts.map +1 -0
  252. package/dist/VideoStudio/resources/video-studio-productions-resource.component.js +1481 -0
  253. package/dist/VideoStudio/resources/video-studio-productions-resource.component.js.map +1 -0
  254. package/dist/VideoStudio/services/vs-studio-slide-in-state.service.d.ts +102 -0
  255. package/dist/VideoStudio/services/vs-studio-slide-in-state.service.d.ts.map +1 -0
  256. package/dist/VideoStudio/services/vs-studio-slide-in-state.service.js +240 -0
  257. package/dist/VideoStudio/services/vs-studio-slide-in-state.service.js.map +1 -0
  258. package/dist/VideoStudio/video-studio-agent-context.d.ts +495 -0
  259. package/dist/VideoStudio/video-studio-agent-context.d.ts.map +1 -0
  260. package/dist/VideoStudio/video-studio-agent-context.js +992 -0
  261. package/dist/VideoStudio/video-studio-agent-context.js.map +1 -0
  262. package/dist/ai-dashboards.module.d.ts +25 -21
  263. package/dist/ai-dashboards.module.d.ts.map +1 -1
  264. package/dist/ai-dashboards.module.js +25 -3
  265. package/dist/ai-dashboards.module.js.map +1 -1
  266. package/dist/module.d.ts +13 -12
  267. package/dist/module.d.ts.map +1 -1
  268. package/dist/module.js +7 -0
  269. package/dist/module.js.map +1 -1
  270. package/dist/public-api.d.ts +8 -0
  271. package/dist/public-api.d.ts.map +1 -1
  272. package/dist/public-api.js +10 -0
  273. package/dist/public-api.js.map +1 -1
  274. package/dist/shared/action-scheduled-job.d.ts.map +1 -1
  275. package/dist/shared/action-scheduled-job.js +2 -0
  276. package/dist/shared/action-scheduled-job.js.map +1 -1
  277. package/dist/video-studio-dashboards.module.d.ts +40 -0
  278. package/dist/video-studio-dashboards.module.d.ts.map +1 -0
  279. package/dist/video-studio-dashboards.module.js +159 -0
  280. package/dist/video-studio-dashboards.module.js.map +1 -0
  281. package/package.json +77 -71
  282. package/dist/PredictiveStudio/at-risk.view-models.d.ts +0 -120
  283. package/dist/PredictiveStudio/at-risk.view-models.d.ts.map +0 -1
  284. package/dist/PredictiveStudio/at-risk.view-models.js +0 -261
  285. package/dist/PredictiveStudio/at-risk.view-models.js.map +0 -1
  286. package/dist/PredictiveStudio/components/ps-confirm-modal.component.d.ts +0 -109
  287. package/dist/PredictiveStudio/components/ps-confirm-modal.component.d.ts.map +0 -1
  288. package/dist/PredictiveStudio/components/ps-confirm-modal.component.js +0 -323
  289. package/dist/PredictiveStudio/components/ps-confirm-modal.component.js.map +0 -1
  290. package/dist/PredictiveStudio/components/ps-run-experiment-modal.component.d.ts +0 -137
  291. package/dist/PredictiveStudio/components/ps-run-experiment-modal.component.d.ts.map +0 -1
  292. package/dist/PredictiveStudio/components/ps-run-experiment-modal.component.js +0 -826
  293. package/dist/PredictiveStudio/components/ps-run-experiment-modal.component.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chief-of-staff-page-base.js","sourceRoot":"","sources":["../../src/ChiefOfStaff/chief-of-staff-page-base.ts"],"names":[],"mappings":"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","sourcesContent":["import { ChangeDetectorRef, Directive, OnDestroy, OnInit, inject } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { debounceTime, filter, takeUntil } from 'rxjs/operators';\nimport { CompositeKey, LogError, RunView, RunViewParams } from '@memberjunction/core';\nimport {\n MJAIAgentRequestEntity,\n MJAIAgentUserPolicyEntity,\n MJConversationEntity,\n MJEnvironmentEntityExtended,\n MJUserRoutineEntity,\n ResourceData,\n} from '@memberjunction/core-entities';\nimport { UUIDMap, MJGlobal, EscapeSQLString } from '@memberjunction/global';\nimport { ActionParam } from '@memberjunction/actions-base';\nimport { GraphQLActionClient, GraphQLDataProvider } from '@memberjunction/graphql-dataprovider';\nimport { BaseResourceComponent } from '@memberjunction/ng-shared';\nimport { ApplicationManager } from '@memberjunction/ng-base-application';\nimport { MJNotificationService } from '@memberjunction/ng-notifications';\nimport { AgentRequestPanelResult } from '@memberjunction/ng-agent-requests';\nimport { AIEngineBase } from '@memberjunction/ai-engine-base';\nimport {\n BuildChiefOfStaffAgentContext,\n BuildChiefOfStaffScopeFilters,\n BuildGovernanceSummary,\n BuildPolicyDraftFromEntity,\n CalculateChiefOfStaffMetrics,\n CHIEF_OF_STAFF_AGENT_NAME,\n CHIEF_OF_STAFF_APP_NAME,\n CHIEF_OF_STAFF_PAGE_ICONS,\n CHIEF_OF_STAFF_PAGE_LABELS,\n CHIEF_OF_STAFF_PAGES,\n ChiefOfStaffDisplayName,\n ChiefOfStaffMetrics,\n ChiefOfStaffPage,\n FormatEmailDraftForClipboard,\n GovernancePolicyDraft,\n IsApprovalRequest,\n IsSpentOneShotRoutine,\n ParseEmailApprovalPayload,\n RequestSummaryItem,\n RoutineDisplayStatus,\n RoutineSummaryItem,\n SortRoutinesForDisplay,\n ValidateChiefOfStaffPageParam,\n type EmailApprovalDraft,\n type RoutineDisplayStatusValue,\n} from './chief-of-staff-agent-context';\nimport { IsChiefOfStaffEntityChange } from './chief-of-staff-live-refresh';\n\n/** A client tool a Chief of Staff page registers for the co-agent. */\nexport interface ChiefOfStaffClientTool {\n Name: string;\n Description: string;\n ParameterSchema: Record<string, unknown>;\n Handler: (params: Record<string, unknown>) => Promise<unknown>;\n}\n\n/**\n * Shared base of the Chief of Staff application's pages. Each page is its own nav item\n * (Overview, Approvals & Wakes, Governance) and its own resource component; this class holds\n * what they share: the user's policy, wake routines and approval requests, the request and\n * routine actions, the briefing reader, live reload and the agent context.\n *\n * Other apps add pages to the Chief of Staff application as nav items, through `NavItem.*`\n * application settings; they do not extend this class.\n */\n@Directive()\nexport abstract class BaseChiefOfStaffPage extends BaseResourceComponent implements OnInit, OnDestroy {\n protected cdr = inject(ChangeDetectorRef);\n protected appManager = inject(ApplicationManager);\n protected override destroy$ = new Subject<void>();\n\n /** Which page this component is. */\n protected abstract readonly Page: ChiefOfStaffPage;\n\n public IsLoading = true;\n public BusyRequestID: string | null = null;\n public BusyRoutineID: string | null = null;\n public FeedbackBanner: { Type: 'success' | 'error'; Message: string } | null = null;\n\n /** Filters requests and routines on pages that show a search box. */\n public SearchText = '';\n\n public PolicyEntity: MJAIAgentUserPolicyEntity | null = null;\n /** The policy as the pages show it; the Governance page edits it. */\n public DraftPolicy: GovernancePolicyDraft = BuildPolicyDraftFromEntity(null);\n\n public Routines: MJUserRoutineEntity[] = [];\n public Requests: MJAIAgentRequestEntity[] = [];\n public Metrics: ChiefOfStaffMetrics = CalculateChiefOfStaffMetrics([], []);\n\n public SelectedRequest: MJAIAgentRequestEntity | null = null;\n public ShowRequestDialog = false;\n\n // ── Briefing reader: a wake routine's conversation, read without leaving the page ────\n /** The routine whose briefings the reader shows; null while the reader is closed. */\n public BriefingRoutine: MJUserRoutineEntity | null = null;\n /** The routine's conversation ID, bound to the embedded chat area. */\n public BriefingConversationId: string | null = null;\n /** The conversation entity when it could be loaded (title, pinned agent); the chat area loads messages by ID either way. */\n public BriefingConversation: MJConversationEntity | null = null;\n\n /** Resolved once per load from the agent's metadata name; null until LoadChiefOfStaffData has run. */\n protected chiefOfStaffAgentId: string | null = null;\n\n public get ChiefOfStaffDisplayName(): string {\n return ChiefOfStaffDisplayName(this.DraftPolicy);\n }\n\n /** Approval requests awaiting a decision, filtered by the search text. */\n public get PendingRequests(): MJAIAgentRequestEntity[] {\n const search = this.SearchText.trim().toLowerCase();\n return this.Requests.filter((r) => {\n if (r.Status !== 'Requested' || !IsApprovalRequest(r)) {\n return false;\n }\n if (!search) {\n return true;\n }\n return (r.Request ?? '').toLowerCase().includes(search);\n });\n }\n\n /** Routines in display order: next wake first, unscheduled next, spent one-shots last. */\n public get SortedRoutines(): MJUserRoutineEntity[] {\n return SortRoutinesForDisplay(this.Routines);\n }\n\n /** Routines that still have something ahead of them: everything but spent one-shots. */\n public get UpcomingRoutines(): MJUserRoutineEntity[] {\n return this.SortedRoutines.filter((r) => !IsSpentOneShotRoutine(r));\n }\n\n /** 'Fired' for a spent one-shot, otherwise the routine's Status. */\n public RoutineStatusLabel(routine: MJUserRoutineEntity): RoutineDisplayStatusValue {\n return RoutineDisplayStatus(routine);\n }\n\n public IsSpentRoutine(routine: MJUserRoutineEntity): boolean {\n return IsSpentOneShotRoutine(routine);\n }\n\n async ngOnInit(): Promise<void> {\n super.ngOnInit();\n this.OnPageInit();\n\n await this.LoadChiefOfStaffData();\n this.navigationService.SetAgentClientTools(this, [...this.coreAgentTools(), ...this.PageAgentTools()]);\n\n this.navigationService.ResourceReattached$.pipe(\n filter((c) => c === this),\n takeUntil(this.destroy$),\n ).subscribe(() => this.publishAgentContext());\n this.subscribeToLiveEntityChanges();\n\n this.NotifyLoadComplete();\n }\n\n override ngOnDestroy(): void {\n super.ngOnDestroy();\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n async GetResourceDisplayName(_data: ResourceData): Promise<string> {\n return CHIEF_OF_STAFF_PAGE_LABELS[this.Page];\n }\n\n async GetResourceIconClass(_data: ResourceData): Promise<string> {\n return CHIEF_OF_STAFF_PAGE_ICONS[this.Page];\n }\n\n /** Runs before the first load; a page reads its query params here. */\n protected OnPageInit(): void {\n // default: nothing\n }\n\n /** Runs after every load, before the agent context is published. */\n protected OnDataLoaded(): void {\n // default: nothing\n }\n\n /** Client tools only this page offers, added to the shared ones. */\n protected PageAgentTools(): ChiefOfStaffClientTool[] {\n return [];\n }\n\n /** A change arrived while the tab was detached; reload once when it is shown again. */\n private liveReloadPending = false;\n\n /**\n * Reloads the page when an entity it shows changes anywhere. MJAPI broadcasts every save\n * and delete to browsers, including saves made by server-side code (a wake run creating an\n * approval request or a run row), and the client raises each as a `remote-invalidate`\n * BaseEntity event. A burst of events is one reload. A detached tab does not reload in the\n * background; it reloads once when it is shown again.\n */\n private subscribeToLiveEntityChanges(): void {\n MJGlobal.Instance.GetEventListener(false).pipe(\n filter((event) => IsChiefOfStaffEntityChange(event)),\n debounceTime(750),\n takeUntil(this.destroy$),\n ).subscribe(() => {\n if (this.navigationService.IsResourceDetached(this)) {\n this.liveReloadPending = true;\n return;\n }\n void this.LoadChiefOfStaffData();\n });\n\n this.navigationService.ResourceReattached$.pipe(\n filter((c) => c === this && this.liveReloadPending),\n takeUntil(this.destroy$),\n ).subscribe(() => {\n this.liveReloadPending = false;\n void this.LoadChiefOfStaffData();\n });\n }\n\n public async LoadChiefOfStaffData(): Promise<void> {\n this.IsLoading = true;\n this.cdr.markForCheck();\n\n try {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const currentUserId = this.ProviderToUse.CurrentUser?.ID;\n if (!currentUserId) {\n // Every query is user-scoped; without a user there is nothing safe to show.\n this.showBanner('error', 'No signed-in user is available; the Chief of Staff cannot load.');\n return;\n }\n\n const chiefOfStaffAgentId = await this.resolveChiefOfStaffAgentId();\n if (!chiefOfStaffAgentId) {\n this.showBanner('error', `The \"${CHIEF_OF_STAFF_AGENT_NAME}\" agent is not installed in this environment.`);\n return;\n }\n this.chiefOfStaffAgentId = chiefOfStaffAgentId;\n\n const scope = BuildChiefOfStaffScopeFilters(currentUserId, chiefOfStaffAgentId);\n\n const viewParams: RunViewParams[] = [\n {\n EntityName: 'MJ: AI Agent User Policies',\n ExtraFilter: scope.Policy,\n OrderBy: '__mj_UpdatedAt DESC',\n ResultType: 'entity_object',\n },\n {\n EntityName: 'MJ: User Routines',\n ExtraFilter: scope.Routines,\n OrderBy: 'NextRunAt ASC, Name ASC',\n ResultType: 'entity_object',\n },\n {\n EntityName: 'MJ: AI Agent Requests',\n ExtraFilter: scope.Requests,\n OrderBy: 'Priority DESC, RequestedAt DESC',\n MaxRows: 100,\n ResultType: 'entity_object',\n },\n ];\n\n const [policyRes, routineRes, requestRes] = await rv.RunViews(viewParams);\n\n const policies = policyRes?.Success\n ? (policyRes.Results as MJAIAgentUserPolicyEntity[])\n : [];\n this.PolicyEntity = policies.length > 0 ? policies[0] : null;\n this.DraftPolicy = BuildPolicyDraftFromEntity(this.PolicyEntity);\n\n this.Routines = routineRes?.Success\n ? (routineRes.Results as MJUserRoutineEntity[])\n : [];\n\n this.emailDraftsByRequest.Clear();\n this.Requests = requestRes?.Success\n ? (requestRes.Results as MJAIAgentRequestEntity[])\n : [];\n\n this.recalculateMetrics();\n this.OnDataLoaded();\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n this.showBanner('error', `Failed to load Chief of Staff data: ${msg}`);\n } finally {\n this.IsLoading = false;\n this.publishAgentContext();\n this.cdr.markForCheck();\n }\n }\n\n protected recalculateMetrics(): void {\n this.Metrics = CalculateChiefOfStaffMetrics(\n this.Routines.map((r) => this.toRoutineSummary(r)),\n this.Requests.map((r) => this.toRequestSummary(r)),\n );\n }\n\n private toRoutineSummary(r: MJUserRoutineEntity): RoutineSummaryItem {\n return {\n ID: r.ID,\n Name: r.Name,\n Status: r.Status,\n ScheduleMode: r.ScheduleMode,\n CronExpression: r.CronExpression,\n NextRunAt: r.NextRunAt,\n LastRunAt: r.LastRunAt,\n LastRunStatus: r.LastRunStatus,\n };\n }\n\n private toRequestSummary(req: MJAIAgentRequestEntity): RequestSummaryItem {\n return {\n ID: req.ID,\n Request: req.Request,\n Status: req.Status,\n Priority: req.Priority,\n RequestedAt: req.RequestedAt,\n ExpiresAt: req.ExpiresAt,\n RequestType: req.RequestType,\n RequestTypeID: req.RequestTypeID,\n };\n }\n\n /**\n * Looks the Chief of Staff agent up by name through the AI engine's cached agents, so the\n * pages carry no hardcoded agent id and follow whichever provider they are embedded under.\n */\n private async resolveChiefOfStaffAgentId(): Promise<string | null> {\n const engine = <AIEngineBase>AIEngineBase.GetProviderInstance(this.ProviderToUse, AIEngineBase);\n await engine.EnsureLoaded(this.ProviderToUse.CurrentUser, this.ProviderToUse);\n const agent = engine.GetAgentByName(CHIEF_OF_STAFF_AGENT_NAME);\n return agent?.ID ?? null;\n }\n\n private readonly actionIdsByName = new Map<string, string>();\n /** The ID of a core action, looked up by name once per page instance. */\n private async resolveActionIdByName(actionName: string): Promise<string | null> {\n const cached = this.actionIdsByName.get(actionName);\n if (cached) {\n return cached;\n }\n try {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const result = await rv.RunView<{ ID: string }>({\n EntityName: 'MJ: Actions',\n ExtraFilter: `Name = '${EscapeSQLString(actionName)}'`,\n Fields: ['ID'],\n MaxRows: 1,\n SkipTotalRowCount: true,\n ResultType: 'simple',\n });\n if (result.Success && result.Results && result.Results.length > 0) {\n this.actionIdsByName.set(actionName, result.Results[0].ID);\n return result.Results[0].ID;\n }\n return null;\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n LogError(`Chief of Staff: failed to resolve '${actionName}' action: ${msg}`);\n return null;\n }\n }\n\n // =========================================================================\n // Navigation between the Chief of Staff pages\n // =========================================================================\n\n /** Opens another Chief of Staff page through its nav item. */\n public OpenPage(page: ChiefOfStaffPage): void {\n const app = this.appManager.GetAppByName(CHIEF_OF_STAFF_APP_NAME);\n void this.navigationService.OpenNavItemByName(CHIEF_OF_STAFF_PAGE_LABELS[page], undefined, app?.ID);\n }\n\n // =========================================================================\n // Briefings: where a wake routine's replies live\n // =========================================================================\n //\n // A wake writes its reply into the routine's own conversation, which is application-scoped\n // and therefore never in the chat sidebar. The conversation is created on the routine's first\n // run, so a routine that has not run yet has nothing to open.\n\n /** True when the routine has run at least once and so has a conversation to read. */\n public CanOpenBriefing(routine: MJUserRoutineEntity): boolean {\n return !!routine.ConversationID;\n }\n\n /**\n * Opens the routine's conversation in the Chat app. The ID goes in the query params as well\n * as the nav item configuration: an already-open Chat tab is reused and reacts only to a\n * query-param change.\n */\n public OpenRoutineBriefing(routine: MJUserRoutineEntity, event?: Event): void {\n event?.stopPropagation();\n const conversationId = routine.ConversationID;\n if (!conversationId) {\n return;\n }\n const chatApp = this.appManager.GetAppByName('Chat');\n if (!chatApp) {\n MJNotificationService.Instance.CreateSimpleNotification('The Chat app is not installed, so this briefing cannot be opened there', 'error', 4000);\n return;\n }\n void this.navigationService.OpenNavItemByName(\n 'Conversations',\n { conversationId },\n chatApp.ID,\n { queryParams: { conversationId } },\n );\n }\n\n /** Opens the slide-in reader on the routine's conversation without leaving the page. */\n public async OpenBriefingReader(routine: MJUserRoutineEntity, event?: Event): Promise<void> {\n event?.stopPropagation();\n const conversationId = routine.ConversationID;\n if (!conversationId) {\n return;\n }\n this.BriefingRoutine = routine;\n this.BriefingConversationId = conversationId;\n this.BriefingConversation = await this.loadBriefingConversation(conversationId);\n this.cdr.markForCheck();\n }\n\n public CloseBriefingReader(): void {\n this.BriefingRoutine = null;\n this.BriefingConversationId = null;\n this.BriefingConversation = null;\n this.cdr.markForCheck();\n }\n\n public get IsBriefingReaderOpen(): boolean {\n return this.BriefingConversationId != null;\n }\n\n /** The environment the embedded chat area reads under. */\n public get BriefingEnvironmentId(): string {\n return this.BriefingConversation?.EnvironmentID ?? MJEnvironmentEntityExtended.DefaultEnvironmentID;\n }\n\n /** The application the routine conversation is filed under, so the chat area stays in that scope. */\n public get BriefingApplicationId(): string | null {\n return this.BriefingConversation?.ApplicationID ?? null;\n }\n\n /** The conversation entity, or null when it cannot be read; the reader still works by ID. */\n private async loadBriefingConversation(conversationId: string): Promise<MJConversationEntity | null> {\n const p = this.ProviderToUse;\n const conversation = await p.GetEntityObject<MJConversationEntity>('MJ: Conversations', p.CurrentUser);\n return await conversation.Load(conversationId) ? conversation : null;\n }\n\n public OpenRoutineEntityRecord(routineId: string, event?: Event): void {\n event?.stopPropagation();\n this.navigationService.OpenEntityRecord(\n 'MJ: User Routines',\n CompositeKey.FromID(routineId),\n );\n }\n\n // =========================================================================\n // Approvals & Requests Actions\n // =========================================================================\n\n public OpenRequestDetail(request: MJAIAgentRequestEntity): void {\n this.SelectedRequest = request;\n this.ShowRequestDialog = true;\n this.cdr.markForCheck();\n }\n\n private readonly emailDraftsByRequest = new UUIDMap<EmailApprovalDraft | null>();\n\n /** The outbound email an approval request carries, or null when the request is not an email. */\n public EmailDraftFor(request: MJAIAgentRequestEntity): EmailApprovalDraft | null {\n const cached = this.emailDraftsByRequest.Get(request.ID);\n if (cached !== undefined) {\n return cached;\n }\n const draft = ParseEmailApprovalPayload(request.Comments);\n this.emailDraftsByRequest.Set(request.ID, draft);\n return draft;\n }\n\n /** Copies the draft as plain text (headers, blank line, body) for pasting into a mail client. */\n public async CopyEmailDraft(request: MJAIAgentRequestEntity, event?: Event): Promise<void> {\n event?.stopPropagation();\n const draft = this.EmailDraftFor(request);\n if (!draft) {\n return;\n }\n const text = FormatEmailDraftForClipboard(draft);\n try {\n await navigator.clipboard.writeText(text);\n this.showBanner('success', `Copied the email to ${draft.To} to the clipboard.`);\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n this.showBanner('error', `Could not copy to the clipboard: ${msg}`);\n }\n }\n\n public OnRequestDialogClose(result: AgentRequestPanelResult): void {\n this.ShowRequestDialog = false;\n this.SelectedRequest = null;\n if (result.Success) {\n void this.LoadChiefOfStaffData();\n } else {\n this.cdr.markForCheck();\n }\n }\n\n public async QuickRespondToRequest(\n request: MJAIAgentRequestEntity,\n decision: 'Approved' | 'Rejected',\n event: Event,\n ): Promise<void> {\n event.stopPropagation();\n if (this.BusyRequestID) {\n return;\n }\n this.BusyRequestID = request.ID;\n this.cdr.markForCheck();\n\n try {\n const currentUserId = this.ProviderToUse.CurrentUser?.ID ?? null;\n request.Status = decision;\n request.RespondedAt = new Date();\n request.ResponseSource = 'Dashboard';\n if (currentUserId) {\n request.ResponseByUserID = currentUserId;\n }\n request.Response = `${decision} via the Chief of Staff app`;\n\n const saved = await request.Save();\n if (saved) {\n this.showBanner('success', `Request marked as ${decision}.`);\n this.recalculateMetrics();\n this.publishAgentContext();\n } else {\n const errText =\n request.LatestResult?.CompleteMessage ?? 'Failed to save request decision.';\n this.showBanner('error', errText);\n }\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n this.showBanner('error', `Failed to update request: ${msg}`);\n } finally {\n this.BusyRequestID = null;\n this.cdr.markForCheck();\n }\n }\n\n // =========================================================================\n // Wake Routines Actions\n // =========================================================================\n\n public async TriggerWakeNow(routine: MJUserRoutineEntity, event?: Event): Promise<void> {\n event?.stopPropagation();\n if (this.BusyRoutineID) {\n return;\n }\n this.BusyRoutineID = routine.ID;\n this.cdr.markForCheck();\n\n try {\n // Run the routine out of schedule. Setting NextRunAt to now would make the dispatcher\n // CLAIM it, and a claimed one-shot (a reminder) is spent: it fires now and never again.\n // The action runs it without touching the schedule; the run row and the routine's\n // conversation then update through the live refresh.\n const actionId = await this.resolveActionIdByName('Run User Routine Now');\n if (!actionId) {\n this.showBanner('error', \"The 'Run User Routine Now' action is not installed; push metadata/actions and restart MJAPI.\");\n return;\n }\n const actionClient = new GraphQLActionClient(this.ProviderToUse as GraphQLDataProvider);\n const result = await actionClient.RunAction(actionId, [\n { Name: 'RoutineID', Value: routine.ID, Type: 'Input' } as ActionParam,\n ]);\n if (result.Success) {\n const keeps = routine.NextRunAt ? ' Its scheduled wake is unchanged.' : '';\n this.showBanner('success', `Running \"${routine.Name}\" now. The result lands in its conversation and a notification.${keeps}`);\n } else {\n this.showBanner('error', result.Message || `Could not run \"${routine.Name}\".`);\n }\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n this.showBanner('error', `Failed to trigger wake: ${msg}`);\n } finally {\n this.BusyRoutineID = null;\n this.cdr.markForCheck();\n }\n }\n\n public async ToggleRoutineStatus(routine: MJUserRoutineEntity, event?: Event): Promise<void> {\n event?.stopPropagation();\n if (this.BusyRoutineID) {\n return;\n }\n this.BusyRoutineID = routine.ID;\n this.cdr.markForCheck();\n\n try {\n const nextStatus: MJUserRoutineEntity['Status'] =\n routine.Status === 'Active' ? 'Paused' : 'Active';\n routine.Status = nextStatus;\n const saved = await routine.Save();\n if (saved) {\n this.showBanner(\n 'success',\n `Routine \"${routine.Name}\" is now ${nextStatus}.`,\n );\n this.recalculateMetrics();\n this.publishAgentContext();\n } else {\n const errText =\n routine.LatestResult?.CompleteMessage ?? 'Failed to update routine status.';\n this.showBanner('error', errText);\n }\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n this.showBanner('error', `Failed to update routine: ${msg}`);\n } finally {\n this.BusyRoutineID = null;\n this.cdr.markForCheck();\n }\n }\n\n // =========================================================================\n // Banner\n // =========================================================================\n\n public DismissBanner(): void {\n this.FeedbackBanner = null;\n this.cdr.markForCheck();\n }\n\n protected showBanner(type: 'success' | 'error', message: string): void {\n this.FeedbackBanner = { Type: type, Message: message };\n this.cdr.markForCheck();\n }\n\n // =========================================================================\n // UI Formatting Helpers\n // =========================================================================\n\n public GetPriorityTierLabel(priority: number): string {\n if (priority >= 76) return 'Critical';\n if (priority >= 51) return 'High';\n if (priority >= 26) return 'Normal';\n return 'Low';\n }\n\n public GetPriorityTierClass(priority: number): string {\n if (priority >= 76) return 'priority-critical';\n if (priority >= 51) return 'priority-high';\n if (priority >= 26) return 'priority-normal';\n return 'priority-low';\n }\n\n public IsRequestExpired(request: MJAIAgentRequestEntity): boolean {\n if (!request.ExpiresAt) return false;\n const expires =\n request.ExpiresAt instanceof Date ? request.ExpiresAt : new Date(request.ExpiresAt);\n return expires.getTime() < Date.now();\n }\n\n // =========================================================================\n // Agent Context & Client Tools\n // =========================================================================\n\n protected publishAgentContext(): void {\n if (this.navigationService.IsResourceDetached(this)) {\n return;\n }\n const context = BuildChiefOfStaffAgentContext({\n Page: this.Page,\n SearchText: this.SearchText,\n Metrics: this.Metrics,\n Governance: BuildGovernanceSummary(this.DraftPolicy, this.PolicyEntity !== null),\n Routines: this.Routines.map((r) => this.toRoutineSummary(r)),\n PendingRequests: this.PendingRequests.map((r) => this.toRequestSummary(r)),\n });\n this.navigationService.SetAgentContext(this, context);\n }\n\n private coreAgentTools(): ChiefOfStaffClientTool[] {\n return [\n {\n Name: 'OpenChiefOfStaffPage',\n Description:\n \"Open one of the Chief of Staff app's pages: 'overview', 'approvals-wakes' or 'governance'.\",\n ParameterSchema: {\n type: 'object',\n properties: {\n page: {\n type: 'string',\n enum: [...CHIEF_OF_STAFF_PAGES],\n description: 'Target page',\n },\n },\n required: ['page'],\n },\n Handler: async (params) => {\n const check = ValidateChiefOfStaffPageParam(params['page'] as string | undefined);\n if (!check.ok) {\n return check.result;\n }\n this.OpenPage(check.value);\n return { Success: true, Data: { Page: check.value } };\n },\n },\n {\n Name: 'RefreshChiefOfStaff',\n Description:\n 'Reload pending approvals, wake routines and the governance policy from the server.',\n ParameterSchema: {\n type: 'object',\n properties: {},\n },\n Handler: async () => {\n await this.LoadChiefOfStaffData();\n return {\n Success: true,\n Data: {\n PendingApprovalCount: this.Metrics.PendingApprovalCount,\n ActiveWakeRoutineCount: this.Metrics.ActiveWakeRoutineCount,\n },\n };\n },\n },\n ];\n }\n}\n"]}
@@ -0,0 +1,6 @@
1
+ export * from './chief-of-staff-agent-context';
2
+ export * from './chief-of-staff-page-base';
3
+ export * from './chief-of-staff-overview.component';
4
+ export * from './chief-of-staff-approvals.component';
5
+ export * from './chief-of-staff-governance.component';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ChiefOfStaff/index.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC;AAC/C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qCAAqC,CAAC;AACpD,cAAc,sCAAsC,CAAC;AACrD,cAAc,uCAAuC,CAAC"}
@@ -0,0 +1,6 @@
1
+ export * from './chief-of-staff-agent-context';
2
+ export * from './chief-of-staff-page-base';
3
+ export * from './chief-of-staff-overview.component';
4
+ export * from './chief-of-staff-approvals.component';
5
+ export * from './chief-of-staff-governance.component';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ChiefOfStaff/index.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC;AAC/C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qCAAqC,CAAC;AACpD,cAAc,sCAAsC,CAAC;AACrD,cAAc,uCAAuC,CAAC","sourcesContent":["export * from './chief-of-staff-agent-context';\nexport * from './chief-of-staff-page-base';\nexport * from './chief-of-staff-overview.component';\nexport * from './chief-of-staff-approvals.component';\nexport * from './chief-of-staff-governance.component';\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"communication-logs-resource.component.d.ts","sourceRoot":"","sources":["../../src/Communication/communication-logs-resource.component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"communication-logs-resource.component.d.ts","sourceRoot":"","sources":["../../src/Communication/communication-logs-resource.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAEvF,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAElE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;;AACrE,qBA2La,kCAAmC,SAAQ,qBAAsB,YAAW,MAAM,EAAE,SAAS;IAuC1F,OAAO,CAAC,GAAG;IAtChB,IAAI,EAAE,wBAAwB,EAAE,CAAM;IAE7C,oCAAoC;IACpC,IAAW,IAAI,IAAI,wBAAwB,EAAE,CAE5C;IACD,oCAAoC;IACpC,IAAW,IAAI,CAAC,KAAK,EAAE,wBAAwB,EAAE,EAEhD;IACM,YAAY,EAAE,wBAAwB,EAAE,CAAM;IAErD,4CAA4C;IAC5C,IAAW,YAAY,IAAI,wBAAwB,EAAE,CAEpD;IACD,4CAA4C;IAC5C,IAAW,YAAY,CAAC,KAAK,EAAE,wBAAwB,EAAE,EAExD;IACM,SAAS,UAAS;IAClB,YAAY,SAAM;IAEzB,4CAA4C;IAC5C,IAAW,YAAY,WAEtB;IACD,4CAA4C;IAC5C,IAAW,YAAY,CAAC,KAAK,QAAA,EAE5B;IACD,OAAO,CAAC,UAAU,CAAM;IAExB,2FAA2F;IAC3F,IAAW,UAAU,IAAI,MAAM,CAE9B;gBAEmB,GAAG,EAAE,iBAAiB;IAIpC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAM/B,WAAW,IAAI,IAAI;IAIN,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IA0B/B,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKzC,6CAA6C;IACtC,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIlC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAK3C,8CAA8C;IACvC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAM3C,IAAW,YAAY,IAAI,iBAAiB,EAAE,CAY7C;IAED,4CAA4C;IAC5C,IAAW,YAAY,IAAI,iBAAiB,EAAE,CAE7C;IAED,IAAW,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEjD;IAED,4CAA4C;IAC5C,IAAW,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEjD;IAED,IAAW,iBAAiB,IAAI,MAAM,CAErC;IAEM,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAIlE,oDAAoD;IAC7C,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI3D,YAAY,IAAI,IAAI;IAI3B,4CAA4C;IACrC,YAAY,IAAI,IAAI;IAIpB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAS7C,8CAA8C;IACvC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAItC,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAS5C,6CAA6C;IACtC,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAIrC,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAU5C,+CAA+C;IACxC,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAIrC,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAU7C,gDAAgD;IACzC,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAI7C,OAAO,CAAC,WAAW;IAoBb,sBAAsB,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAI3D,oBAAoB,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;yCAzOtD,kCAAkC;2CAAlC,kCAAkC;CA4O9C"}
@@ -140,7 +140,8 @@ let CommunicationLogsResourceComponent = class CommunicationLogsResourceComponen
140
140
  EntityName: 'MJ: Communication Logs',
141
141
  OrderBy: 'MessageDate DESC',
142
142
  MaxRows: 200,
143
- ResultType: 'entity_object'
143
+ Fields: ['ID', 'Status', 'Direction', 'CommunicationProvider', 'CommunicationProviderMessageType', 'MessageDate', 'ErrorMessage'],
144
+ ResultType: 'simple'
144
145
  });
145
146
  if (result.Success) {
146
147
  this.Logs = result.Results;
@@ -1 +1 @@
1
- {"version":3,"file":"communication-logs-resource.component.js","sourceRoot":"","sources":["../../src/Communication/communication-logs-resource.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, OnInit, OnDestroy, ChangeDetectorRef } from '@angular/core';\nimport { ResourceData, MJCommunicationLogEntity } from '@memberjunction/core-entities';\nimport { RegisterClass } from '@memberjunction/global';\nimport { BaseResourceComponent } from '@memberjunction/ng-shared';\nimport { RunView } from '@memberjunction/core';\nimport { FilterFieldConfig } from '@memberjunction/ng-ui-components';\n@RegisterClass(BaseResourceComponent, 'CommunicationLogsResource')\n@Component({\n standalone: false,\n selector: 'mj-communication-logs-resource',\n template: `\n <mj-page-layout>\n <mj-page-header Title=\"Logs\" Icon=\"fa-solid fa-list-ul\">\n <div actions>\n <mj-refresh-button [Loading]=\"isLoading\" (Clicked)=\"loadData()\"></mj-refresh-button>\n </div>\n <div toolbar>\n <mj-page-search\n Placeholder=\"Search messages, providers, recipients...\"\n (ValueChange)=\"onSearchValue($event)\">\n </mj-page-search>\n <mj-filter-popover\n [ActiveCount]=\"ActiveFilterCount\"\n [ShowClearAll]=\"ActiveFilterCount > 0\"\n (ClearAllRequested)=\"resetFilters()\">\n <mj-filter-panel\n [Fields]=\"filterFields\"\n [Values]=\"filterValues\"\n (ValuesChange)=\"onFilterValuesChange($event)\"\n (Reset)=\"resetFilters()\">\n </mj-filter-panel>\n </mj-filter-popover>\n </div>\n </mj-page-header>\n <mj-page-body [Flex]=\"true\">\n <div class=\"logs-card\">\n <div class=\"table-wrapper\">\n <table class=\"log-table\">\n <thead>\n <tr>\n <th>Status</th>\n <th>Direction</th>\n <th>Provider</th>\n <th>Type</th>\n <th>Date</th>\n <th>Error</th>\n </tr>\n </thead>\n <tbody>\n @for (log of filteredLogs; track log) {\n <tr>\n <td>\n <span class=\"log-status-badge\" [ngClass]=\"getStatusClass(log.Status)\">\n <i [class]=\"getStatusIcon(log.Status)\"></i>\n {{log.Status}}\n </span>\n </td>\n <td>\n <span class=\"log-direction\" [ngClass]=\"log.Direction.toLowerCase()\">\n <i [class]=\"log.Direction === 'Sending' ? 'fa-solid fa-arrow-up-right' : 'fa-solid fa-arrow-down-left'\"></i>\n {{log.Direction}}\n </span>\n </td>\n <td>\n <span class=\"log-provider-badge\">\n <i [class]=\"getProviderIcon(log.CommunicationProvider)\" [style.color]=\"getProviderColor(log.CommunicationProvider)\"></i>\n {{log.CommunicationProvider}}\n </span>\n </td>\n <td>{{log.CommunicationProviderMessageType}}</td>\n <td>{{log.MessageDate | date:'medium'}}</td>\n <td>\n @if (log.ErrorMessage) {\n <span class=\"log-error-text\" [title]=\"log.ErrorMessage\">\n {{log.ErrorMessage}}\n </span>\n }\n @if (!log.ErrorMessage) {\n <span class=\"no-error\">&mdash;</span>\n }\n </td>\n </tr>\n }\n @if (filteredLogs.length === 0 && !isLoading) {\n <tr>\n <td colspan=\"6\" class=\"no-data\">\n <mj-empty-state Variant=\"no-results\" Icon=\"fa-solid fa-inbox\"\n Title=\"No logs found matching your criteria\" />\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n </div>\n </mj-page-body>\n </mj-page-layout>\n `,\n styles: [`\n /* Card wrapper inside <mj-page-body>: the table sits in a tinted card. */\n .logs-card {\n flex: 1;\n min-height: 0;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n }\n\n /* TABLE */\n .table-wrapper { flex: 1; overflow-y: auto; }\n\n .log-table {\n width: 100%;\n border-collapse: collapse;\n font-size: 12px;\n }\n .log-table thead {\n background: var(--mj-bg-surface-sunken);\n position: sticky; top: 0; z-index: 1;\n }\n .log-table th {\n padding: 10px 16px;\n text-align: left;\n font-weight: 700; font-size: 10px;\n text-transform: uppercase; letter-spacing: 0.5px;\n color: var(--mj-text-muted);\n border-bottom: 1px solid var(--mj-border-default);\n white-space: nowrap;\n }\n .log-table td {\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n color: var(--mj-text-primary);\n vertical-align: middle;\n }\n .log-table tbody tr { transition: background 0.15s; }\n .log-table tbody tr:hover { background: var(--mj-bg-surface-sunken); }\n\n .log-status-badge {\n display: inline-flex; align-items: center;\n gap: 4px; font-size: 11px; font-weight: 600;\n padding: 3px 10px;\n border-radius: 4px;\n }\n .log-status-badge.complete {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n }\n .log-status-badge.failed {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n }\n .log-status-badge.pending {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n }\n .log-status-badge.in-progress {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n }\n\n .log-direction {\n display: flex; align-items: center;\n gap: 4px; font-size: 11px;\n color: var(--mj-text-muted);\n }\n .log-direction i { font-size: 10px; }\n .log-direction.sending i { color: var(--mj-brand-primary); }\n .log-direction.receiving i { color: var(--mj-status-success); }\n\n .log-provider-badge {\n display: inline-flex; align-items: center;\n gap: 6px; padding: 3px 10px;\n border-radius: 4px;\n background: var(--mj-bg-surface-sunken);\n font-weight: 500;\n }\n\n .log-error-text {\n color: var(--mj-status-error);\n max-width: 200px;\n overflow: hidden; text-overflow: ellipsis;\n white-space: nowrap; font-size: 11px;\n display: block;\n }\n .no-error { color: var(--mj-text-muted); }\n\n .no-data { padding: 0 !important; }\n `]\n})\nexport class CommunicationLogsResourceComponent extends BaseResourceComponent implements OnInit, OnDestroy {\n public Logs: MJCommunicationLogEntity[] = [];\n\n /** @deprecated Use {@link Logs}. */\n public get logs(): MJCommunicationLogEntity[] {\n return this.Logs;\n }\n /** @deprecated Use {@link Logs}. */\n public set logs(value: MJCommunicationLogEntity[]) {\n this.Logs = value;\n }\n public FilteredLogs: MJCommunicationLogEntity[] = [];\n\n /** @deprecated Use {@link FilteredLogs}. */\n public get filteredLogs(): MJCommunicationLogEntity[] {\n return this.FilteredLogs;\n }\n /** @deprecated Use {@link FilteredLogs}. */\n public set filteredLogs(value: MJCommunicationLogEntity[]) {\n this.FilteredLogs = value;\n }\n public isLoading = false;\n public StatusFilter = '';\n\n /** @deprecated Use {@link StatusFilter}. */\n public get statusFilter() {\n return this.StatusFilter;\n }\n /** @deprecated Use {@link StatusFilter}. */\n public set statusFilter(value) {\n this.StatusFilter = value;\n }\n private searchTerm = '';\n\n /** The current free-text search applied to the log list (read-only, for agent context). */\n public get SearchText(): string {\n return this.searchTerm;\n }\n\n constructor(private cdr: ChangeDetectorRef) {\n super();\n }\n\n async ngOnInit(): Promise<void> {\n super.ngOnInit();\n await this.loadData();\n this.NotifyLoadComplete();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n\n public async loadData(): Promise<void> {\n try {\n this.isLoading = true;\n this.cdr.detectChanges();\n\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const result = await rv.RunView<MJCommunicationLogEntity>({\n EntityName: 'MJ: Communication Logs',\n OrderBy: 'MessageDate DESC',\n MaxRows: 200,\n ResultType: 'entity_object'\n });\n\n if (result.Success) {\n this.Logs = result.Results;\n this.applyFilter();\n }\n } catch (error) {\n console.error('Error loading logs:', error);\n } finally {\n this.isLoading = false;\n this.cdr.detectChanges();\n }\n }\n\n public OnSearchValue(value: string): void {\n this.searchTerm = (value ?? '').toLowerCase();\n this.applyFilter();\n }\n\n /** @deprecated Use {@link OnSearchValue}. */\n public onSearchValue(value: string): void {\n return this.OnSearchValue(value);\n }\n\n public OnStatusFilter(status: string): void {\n this.StatusFilter = status;\n this.applyFilter();\n }\n\n /** @deprecated Use {@link OnStatusFilter}. */\n public onStatusFilter(status: string): void {\n return this.OnStatusFilter(status);\n }\n\n // -- Concise chrome: Status lives behind the one Filter popover -----------\n\n public get FilterFields(): FilterFieldConfig[] {\n return [{\n key: 'status',\n type: 'chips',\n label: 'Status',\n chipOptions: [\n { text: 'All', value: '' },\n { text: 'Sent', value: 'Complete', icon: 'fa-solid fa-check-circle' },\n { text: 'Failed', value: 'Failed', icon: 'fa-solid fa-times-circle' },\n { text: 'Pending', value: 'Pending', icon: 'fa-solid fa-clock' },\n ],\n }];\n }\n\n /** @deprecated Use {@link FilterFields}. */\n public get filterFields(): FilterFieldConfig[] {\n return this.FilterFields;\n }\n\n public get FilterValues(): Record<string, unknown> {\n return { status: this.StatusFilter };\n }\n\n /** @deprecated Use {@link FilterValues}. */\n public get filterValues(): Record<string, unknown> {\n return this.FilterValues;\n }\n\n public get ActiveFilterCount(): number {\n return this.StatusFilter ? 1 : 0;\n }\n\n public OnFilterValuesChange(values: Record<string, unknown>): void {\n this.OnStatusFilter((values['status'] as string) ?? '');\n }\n\n /** @deprecated Use {@link OnFilterValuesChange}. */\n public onFilterValuesChange(values: Record<string, unknown>): void {\n return this.OnFilterValuesChange(values);\n }\n\n public ResetFilters(): void {\n this.OnStatusFilter('');\n }\n\n /** @deprecated Use {@link ResetFilters}. */\n public resetFilters(): void {\n return this.ResetFilters();\n }\n\n public GetStatusClass(status: string): string {\n const s = (status || '').toLowerCase();\n if (s === 'complete') return 'complete';\n if (s === 'failed') return 'failed';\n if (s === 'pending') return 'pending';\n if (s === 'in-progress') return 'in-progress';\n return '';\n }\n\n /** @deprecated Use {@link GetStatusClass}. */\n public getStatusClass(status: string): string {\n return this.GetStatusClass(status);\n }\n\n public GetStatusIcon(status: string): string {\n const s = (status || '').toLowerCase();\n if (s === 'complete') return 'fa-solid fa-check';\n if (s === 'failed') return 'fa-solid fa-xmark';\n if (s === 'pending') return 'fa-solid fa-clock';\n if (s === 'in-progress') return 'fa-solid fa-spinner';\n return 'fa-solid fa-circle';\n }\n\n /** @deprecated Use {@link GetStatusIcon}. */\n public getStatusIcon(status: string): string {\n return this.GetStatusIcon(status);\n }\n\n public GetProviderIcon(name: string): string {\n if (!name) return 'fa-solid fa-server';\n const n = name.toLowerCase();\n if (n.includes('sendgrid')) return 'fa-solid fa-envelope';\n if (n.includes('twilio')) return 'fa-solid fa-comment-sms';\n if (n.includes('gmail') || n.includes('google')) return 'fa-brands fa-google';\n if (n.includes('microsoft') || n.includes('graph')) return 'fa-brands fa-microsoft';\n return 'fa-solid fa-server';\n }\n\n /** @deprecated Use {@link GetProviderIcon}. */\n public getProviderIcon(name: string): string {\n return this.GetProviderIcon(name);\n }\n\n public GetProviderColor(name: string): string {\n if (!name) return 'inherit';\n const n = name.toLowerCase();\n if (n.includes('sendgrid')) return '#1A82E2';\n if (n.includes('twilio')) return '#F22F46';\n if (n.includes('gmail') || n.includes('google')) return '#EA4335';\n if (n.includes('microsoft') || n.includes('graph')) return '#0078D4';\n return 'inherit';\n }\n\n /** @deprecated Use {@link GetProviderColor}. */\n public getProviderColor(name: string): string {\n return this.GetProviderColor(name);\n }\n\n private applyFilter(): void {\n let filtered = this.Logs;\n\n if (this.StatusFilter) {\n filtered = filtered.filter(l => l.Status === this.StatusFilter);\n }\n\n if (this.searchTerm) {\n filtered = filtered.filter(l =>\n l.CommunicationProvider?.toLowerCase().includes(this.searchTerm) ||\n l.CommunicationProviderMessageType?.toLowerCase().includes(this.searchTerm) ||\n l.Status?.toLowerCase().includes(this.searchTerm) ||\n l.ErrorMessage?.toLowerCase().includes(this.searchTerm)\n );\n }\n\n this.FilteredLogs = filtered;\n this.cdr.detectChanges();\n }\n\n async GetResourceDisplayName(data: ResourceData): Promise<string> {\n return 'Message Logs';\n }\n\n async GetResourceIconClass(data: ResourceData): Promise<string> {\n return 'fa-solid fa-list-ul';\n }\n}\n"]}
1
+ {"version":3,"file":"communication-logs-resource.component.js","sourceRoot":"","sources":["../../src/Communication/communication-logs-resource.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, OnInit, OnDestroy, ChangeDetectorRef } from '@angular/core';\nimport { ResourceData, MJCommunicationLogEntity } from '@memberjunction/core-entities';\nimport { RegisterClass } from '@memberjunction/global';\nimport { BaseResourceComponent } from '@memberjunction/ng-shared';\nimport { RunView } from '@memberjunction/core';\nimport { FilterFieldConfig } from '@memberjunction/ng-ui-components';\n@RegisterClass(BaseResourceComponent, 'CommunicationLogsResource')\n@Component({\n standalone: false,\n selector: 'mj-communication-logs-resource',\n template: `\n <mj-page-layout>\n <mj-page-header Title=\"Logs\" Icon=\"fa-solid fa-list-ul\">\n <div actions>\n <mj-refresh-button [Loading]=\"isLoading\" (Clicked)=\"loadData()\"></mj-refresh-button>\n </div>\n <div toolbar>\n <mj-page-search\n Placeholder=\"Search messages, providers, recipients...\"\n (ValueChange)=\"onSearchValue($event)\">\n </mj-page-search>\n <mj-filter-popover\n [ActiveCount]=\"ActiveFilterCount\"\n [ShowClearAll]=\"ActiveFilterCount > 0\"\n (ClearAllRequested)=\"resetFilters()\">\n <mj-filter-panel\n [Fields]=\"filterFields\"\n [Values]=\"filterValues\"\n (ValuesChange)=\"onFilterValuesChange($event)\"\n (Reset)=\"resetFilters()\">\n </mj-filter-panel>\n </mj-filter-popover>\n </div>\n </mj-page-header>\n <mj-page-body [Flex]=\"true\">\n <div class=\"logs-card\">\n <div class=\"table-wrapper\">\n <table class=\"log-table\">\n <thead>\n <tr>\n <th>Status</th>\n <th>Direction</th>\n <th>Provider</th>\n <th>Type</th>\n <th>Date</th>\n <th>Error</th>\n </tr>\n </thead>\n <tbody>\n @for (log of filteredLogs; track log) {\n <tr>\n <td>\n <span class=\"log-status-badge\" [ngClass]=\"getStatusClass(log.Status)\">\n <i [class]=\"getStatusIcon(log.Status)\"></i>\n {{log.Status}}\n </span>\n </td>\n <td>\n <span class=\"log-direction\" [ngClass]=\"log.Direction.toLowerCase()\">\n <i [class]=\"log.Direction === 'Sending' ? 'fa-solid fa-arrow-up-right' : 'fa-solid fa-arrow-down-left'\"></i>\n {{log.Direction}}\n </span>\n </td>\n <td>\n <span class=\"log-provider-badge\">\n <i [class]=\"getProviderIcon(log.CommunicationProvider)\" [style.color]=\"getProviderColor(log.CommunicationProvider)\"></i>\n {{log.CommunicationProvider}}\n </span>\n </td>\n <td>{{log.CommunicationProviderMessageType}}</td>\n <td>{{log.MessageDate | date:'medium'}}</td>\n <td>\n @if (log.ErrorMessage) {\n <span class=\"log-error-text\" [title]=\"log.ErrorMessage\">\n {{log.ErrorMessage}}\n </span>\n }\n @if (!log.ErrorMessage) {\n <span class=\"no-error\">&mdash;</span>\n }\n </td>\n </tr>\n }\n @if (filteredLogs.length === 0 && !isLoading) {\n <tr>\n <td colspan=\"6\" class=\"no-data\">\n <mj-empty-state Variant=\"no-results\" Icon=\"fa-solid fa-inbox\"\n Title=\"No logs found matching your criteria\" />\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n </div>\n </mj-page-body>\n </mj-page-layout>\n `,\n styles: [`\n /* Card wrapper inside <mj-page-body>: the table sits in a tinted card. */\n .logs-card {\n flex: 1;\n min-height: 0;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n }\n\n /* TABLE */\n .table-wrapper { flex: 1; overflow-y: auto; }\n\n .log-table {\n width: 100%;\n border-collapse: collapse;\n font-size: 12px;\n }\n .log-table thead {\n background: var(--mj-bg-surface-sunken);\n position: sticky; top: 0; z-index: 1;\n }\n .log-table th {\n padding: 10px 16px;\n text-align: left;\n font-weight: 700; font-size: 10px;\n text-transform: uppercase; letter-spacing: 0.5px;\n color: var(--mj-text-muted);\n border-bottom: 1px solid var(--mj-border-default);\n white-space: nowrap;\n }\n .log-table td {\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n color: var(--mj-text-primary);\n vertical-align: middle;\n }\n .log-table tbody tr { transition: background 0.15s; }\n .log-table tbody tr:hover { background: var(--mj-bg-surface-sunken); }\n\n .log-status-badge {\n display: inline-flex; align-items: center;\n gap: 4px; font-size: 11px; font-weight: 600;\n padding: 3px 10px;\n border-radius: 4px;\n }\n .log-status-badge.complete {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n }\n .log-status-badge.failed {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n }\n .log-status-badge.pending {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n }\n .log-status-badge.in-progress {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n }\n\n .log-direction {\n display: flex; align-items: center;\n gap: 4px; font-size: 11px;\n color: var(--mj-text-muted);\n }\n .log-direction i { font-size: 10px; }\n .log-direction.sending i { color: var(--mj-brand-primary); }\n .log-direction.receiving i { color: var(--mj-status-success); }\n\n .log-provider-badge {\n display: inline-flex; align-items: center;\n gap: 6px; padding: 3px 10px;\n border-radius: 4px;\n background: var(--mj-bg-surface-sunken);\n font-weight: 500;\n }\n\n .log-error-text {\n color: var(--mj-status-error);\n max-width: 200px;\n overflow: hidden; text-overflow: ellipsis;\n white-space: nowrap; font-size: 11px;\n display: block;\n }\n .no-error { color: var(--mj-text-muted); }\n\n .no-data { padding: 0 !important; }\n `]\n})\nexport class CommunicationLogsResourceComponent extends BaseResourceComponent implements OnInit, OnDestroy {\n public Logs: MJCommunicationLogEntity[] = [];\n\n /** @deprecated Use {@link Logs}. */\n public get logs(): MJCommunicationLogEntity[] {\n return this.Logs;\n }\n /** @deprecated Use {@link Logs}. */\n public set logs(value: MJCommunicationLogEntity[]) {\n this.Logs = value;\n }\n public FilteredLogs: MJCommunicationLogEntity[] = [];\n\n /** @deprecated Use {@link FilteredLogs}. */\n public get filteredLogs(): MJCommunicationLogEntity[] {\n return this.FilteredLogs;\n }\n /** @deprecated Use {@link FilteredLogs}. */\n public set filteredLogs(value: MJCommunicationLogEntity[]) {\n this.FilteredLogs = value;\n }\n public isLoading = false;\n public StatusFilter = '';\n\n /** @deprecated Use {@link StatusFilter}. */\n public get statusFilter() {\n return this.StatusFilter;\n }\n /** @deprecated Use {@link StatusFilter}. */\n public set statusFilter(value) {\n this.StatusFilter = value;\n }\n private searchTerm = '';\n\n /** The current free-text search applied to the log list (read-only, for agent context). */\n public get SearchText(): string {\n return this.searchTerm;\n }\n\n constructor(private cdr: ChangeDetectorRef) {\n super();\n }\n\n async ngOnInit(): Promise<void> {\n super.ngOnInit();\n await this.loadData();\n this.NotifyLoadComplete();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n\n public async loadData(): Promise<void> {\n try {\n this.isLoading = true;\n this.cdr.detectChanges();\n\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const result = await rv.RunView<MJCommunicationLogEntity>({\n EntityName: 'MJ: Communication Logs',\n OrderBy: 'MessageDate DESC',\n MaxRows: 200,\n Fields: ['ID', 'Status', 'Direction', 'CommunicationProvider', 'CommunicationProviderMessageType', 'MessageDate', 'ErrorMessage'],\n ResultType: 'simple'\n });\n\n if (result.Success) {\n this.Logs = result.Results;\n this.applyFilter();\n }\n } catch (error) {\n console.error('Error loading logs:', error);\n } finally {\n this.isLoading = false;\n this.cdr.detectChanges();\n }\n }\n\n public OnSearchValue(value: string): void {\n this.searchTerm = (value ?? '').toLowerCase();\n this.applyFilter();\n }\n\n /** @deprecated Use {@link OnSearchValue}. */\n public onSearchValue(value: string): void {\n return this.OnSearchValue(value);\n }\n\n public OnStatusFilter(status: string): void {\n this.StatusFilter = status;\n this.applyFilter();\n }\n\n /** @deprecated Use {@link OnStatusFilter}. */\n public onStatusFilter(status: string): void {\n return this.OnStatusFilter(status);\n }\n\n // -- Concise chrome: Status lives behind the one Filter popover -----------\n\n public get FilterFields(): FilterFieldConfig[] {\n return [{\n key: 'status',\n type: 'chips',\n label: 'Status',\n chipOptions: [\n { text: 'All', value: '' },\n { text: 'Sent', value: 'Complete', icon: 'fa-solid fa-check-circle' },\n { text: 'Failed', value: 'Failed', icon: 'fa-solid fa-times-circle' },\n { text: 'Pending', value: 'Pending', icon: 'fa-solid fa-clock' },\n ],\n }];\n }\n\n /** @deprecated Use {@link FilterFields}. */\n public get filterFields(): FilterFieldConfig[] {\n return this.FilterFields;\n }\n\n public get FilterValues(): Record<string, unknown> {\n return { status: this.StatusFilter };\n }\n\n /** @deprecated Use {@link FilterValues}. */\n public get filterValues(): Record<string, unknown> {\n return this.FilterValues;\n }\n\n public get ActiveFilterCount(): number {\n return this.StatusFilter ? 1 : 0;\n }\n\n public OnFilterValuesChange(values: Record<string, unknown>): void {\n this.OnStatusFilter((values['status'] as string) ?? '');\n }\n\n /** @deprecated Use {@link OnFilterValuesChange}. */\n public onFilterValuesChange(values: Record<string, unknown>): void {\n return this.OnFilterValuesChange(values);\n }\n\n public ResetFilters(): void {\n this.OnStatusFilter('');\n }\n\n /** @deprecated Use {@link ResetFilters}. */\n public resetFilters(): void {\n return this.ResetFilters();\n }\n\n public GetStatusClass(status: string): string {\n const s = (status || '').toLowerCase();\n if (s === 'complete') return 'complete';\n if (s === 'failed') return 'failed';\n if (s === 'pending') return 'pending';\n if (s === 'in-progress') return 'in-progress';\n return '';\n }\n\n /** @deprecated Use {@link GetStatusClass}. */\n public getStatusClass(status: string): string {\n return this.GetStatusClass(status);\n }\n\n public GetStatusIcon(status: string): string {\n const s = (status || '').toLowerCase();\n if (s === 'complete') return 'fa-solid fa-check';\n if (s === 'failed') return 'fa-solid fa-xmark';\n if (s === 'pending') return 'fa-solid fa-clock';\n if (s === 'in-progress') return 'fa-solid fa-spinner';\n return 'fa-solid fa-circle';\n }\n\n /** @deprecated Use {@link GetStatusIcon}. */\n public getStatusIcon(status: string): string {\n return this.GetStatusIcon(status);\n }\n\n public GetProviderIcon(name: string): string {\n if (!name) return 'fa-solid fa-server';\n const n = name.toLowerCase();\n if (n.includes('sendgrid')) return 'fa-solid fa-envelope';\n if (n.includes('twilio')) return 'fa-solid fa-comment-sms';\n if (n.includes('gmail') || n.includes('google')) return 'fa-brands fa-google';\n if (n.includes('microsoft') || n.includes('graph')) return 'fa-brands fa-microsoft';\n return 'fa-solid fa-server';\n }\n\n /** @deprecated Use {@link GetProviderIcon}. */\n public getProviderIcon(name: string): string {\n return this.GetProviderIcon(name);\n }\n\n public GetProviderColor(name: string): string {\n if (!name) return 'inherit';\n const n = name.toLowerCase();\n if (n.includes('sendgrid')) return '#1A82E2';\n if (n.includes('twilio')) return '#F22F46';\n if (n.includes('gmail') || n.includes('google')) return '#EA4335';\n if (n.includes('microsoft') || n.includes('graph')) return '#0078D4';\n return 'inherit';\n }\n\n /** @deprecated Use {@link GetProviderColor}. */\n public getProviderColor(name: string): string {\n return this.GetProviderColor(name);\n }\n\n private applyFilter(): void {\n let filtered = this.Logs;\n\n if (this.StatusFilter) {\n filtered = filtered.filter(l => l.Status === this.StatusFilter);\n }\n\n if (this.searchTerm) {\n filtered = filtered.filter(l =>\n l.CommunicationProvider?.toLowerCase().includes(this.searchTerm) ||\n l.CommunicationProviderMessageType?.toLowerCase().includes(this.searchTerm) ||\n l.Status?.toLowerCase().includes(this.searchTerm) ||\n l.ErrorMessage?.toLowerCase().includes(this.searchTerm)\n );\n }\n\n this.FilteredLogs = filtered;\n this.cdr.detectChanges();\n }\n\n async GetResourceDisplayName(data: ResourceData): Promise<string> {\n return 'Message Logs';\n }\n\n async GetResourceIconClass(data: ResourceData): Promise<string> {\n return 'fa-solid fa-list-ul';\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"communication-monitor-resource.component.d.ts","sourceRoot":"","sources":["../../src/Communication/communication-monitor-resource.component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"communication-monitor-resource.component.d.ts","sourceRoot":"","sources":["../../src/Communication/communication-monitor-resource.component.ts"],"names":[],"mappings":"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"}
@@ -209,46 +209,50 @@ let CommunicationMonitorResourceComponent = class CommunicationMonitorResourceCo
209
209
  const yesterday = new Date();
210
210
  yesterday.setDate(yesterday.getDate() - 1);
211
211
  const yesterdayIso = yesterday.toISOString();
212
- const [totalResult, failedResult, pendingResult, recentResult, allLogsResult, providersResult] = await Promise.all([
213
- rv.RunView({
212
+ const logFields = ['ID', 'MessageDate', 'Status', 'Direction', 'CommunicationProvider', 'CommunicationProviderMessageType'];
213
+ const [totalResult, failedResult, pendingResult, recentResult, allLogsResult, providersResult] = await rv.RunViews([
214
+ {
214
215
  EntityName: 'MJ: Communication Logs',
215
216
  ExtraFilter: `MessageDate >= '${yesterdayIso}'`,
216
217
  ResultType: 'count_only'
217
- }),
218
- rv.RunView({
218
+ },
219
+ {
219
220
  EntityName: 'MJ: Communication Logs',
220
221
  ExtraFilter: `MessageDate >= '${yesterdayIso}' AND Status = 'Failed'`,
221
222
  ResultType: 'count_only'
222
- }),
223
- rv.RunView({
223
+ },
224
+ {
224
225
  EntityName: 'MJ: Communication Logs',
225
226
  ExtraFilter: `Status = 'Pending'`,
226
227
  ResultType: 'count_only'
227
- }),
228
- rv.RunView({
228
+ },
229
+ {
229
230
  EntityName: 'MJ: Communication Logs',
230
231
  OrderBy: 'MessageDate DESC',
231
232
  MaxRows: 8,
232
- ResultType: 'entity_object'
233
- }),
234
- rv.RunView({
233
+ Fields: logFields,
234
+ ResultType: 'simple'
235
+ },
236
+ {
235
237
  EntityName: 'MJ: Communication Logs',
236
238
  ExtraFilter: `MessageDate >= '${yesterdayIso}'`,
237
239
  OrderBy: 'MessageDate ASC',
238
- ResultType: 'entity_object'
239
- }),
240
- rv.RunView({
240
+ Fields: logFields,
241
+ ResultType: 'simple'
242
+ },
243
+ {
241
244
  EntityName: 'MJ: Communication Providers',
242
245
  OrderBy: 'Name ASC',
243
- ResultType: 'entity_object'
244
- })
246
+ Fields: ['ID', 'Name', 'Status'],
247
+ ResultType: 'simple'
248
+ }
245
249
  ]);
246
250
  if (totalResult.Success)
247
- this.Stats.totalSent = totalResult.TotalRowCount;
251
+ this.Stats.totalSent = totalResult.TotalRowCount ?? 0;
248
252
  if (failedResult.Success)
249
- this.Stats.failed = failedResult.TotalRowCount;
253
+ this.Stats.failed = failedResult.TotalRowCount ?? 0;
250
254
  if (pendingResult.Success)
251
- this.Stats.pending = pendingResult.TotalRowCount;
255
+ this.Stats.pending = pendingResult.TotalRowCount ?? 0;
252
256
  this.Stats.deliveryRate = this.Stats.totalSent > 0
253
257
  ? parseFloat(((this.Stats.totalSent - this.Stats.failed) / this.Stats.totalSent * 100).toFixed(1))
254
258
  : 100;
@@ -256,8 +260,9 @@ let CommunicationMonitorResourceComponent = class CommunicationMonitorResourceCo
256
260
  this.RecentLogs = recentResult.Results;
257
261
  }
258
262
  if (allLogsResult.Success) {
259
- this.ChartData = this.processTrendData(allLogsResult.Results, yesterday);
260
- this.ChannelBreakdown = this.buildChannelBreakdown(allLogsResult.Results);
263
+ const allLogs = allLogsResult.Results;
264
+ this.ChartData = this.processTrendData(allLogs, yesterday);
265
+ this.ChannelBreakdown = this.buildChannelBreakdown(allLogs);
261
266
  }
262
267
  if (providersResult.Success && allLogsResult.Success) {
263
268
  this.ProviderHealth = this.buildProviderHealth(providersResult.Results, allLogsResult.Results);