@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
@@ -1 +1 @@
1
- {"version":3,"file":"realtime-session-data.d.ts","sourceRoot":"","sources":["../../../../../src/AI/components/analytics/realtime/realtime-session-data.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"realtime-session-data.d.ts","sourceRoot":"","sources":["../../../../../src/AI/components/analytics/realtime/realtime-session-data.ts"],"names":[],"mappings":"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"}
@@ -137,7 +137,7 @@ function buildRollup(session, channelMap, runMap, agentNameMap) {
137
137
  DurationMs: durationMs,
138
138
  IsResumed: session.LastSessionID != null,
139
139
  CloseReason: closeReason,
140
- IsJanitorClosed: closeReason === 'Janitor'
140
+ IsJanitorClosed: closeReason === 'Janitor' || closeReason === 'Idle' || closeReason === 'TimeLimit'
141
141
  };
142
142
  }
143
143
  function parseSessionConfig(raw) {
@@ -167,7 +167,13 @@ export function BuildSessionStatusDisplay(status, closeReason) {
167
167
  case 'Explicit':
168
168
  return { Label: 'Closed', Title: 'Closed explicitly (user hang-up / close mutation)', Icon: 'fa-solid fa-circle-stop' };
169
169
  case 'Janitor':
170
- return { Label: 'Closed · janitor', Title: 'Force-closed by the lifecycle janitor (staleness sweep / orphan reconciliation)', Icon: 'fa-solid fa-broom' };
170
+ // Rows closed before TimeLimit and Idle existed keep 'Janitor' for every expiry close, so the title names both meanings.
171
+ return { Label: 'Closed · janitor', Title: 'Closed by the lifecycle janitor: an orphan from an earlier boot, or (for sessions closed before the idle and time-limit reasons existed) an idle or time limit close', Icon: 'fa-solid fa-broom' };
172
+ case 'TimeLimit':
173
+ // The janitor's deadline sweep or the browser's own deadline alarm (a claim the server verified): not always the janitor.
174
+ return { Label: 'Closed · time limit', Title: 'Closed because the session reached its time limit', Icon: 'fa-solid fa-hourglass-end' };
175
+ case 'Idle':
176
+ return { Label: 'Closed · idle — no activity', Title: 'Closed by the janitor staleness sweep after no activity', Icon: 'fa-solid fa-moon' };
171
177
  case 'Shutdown':
172
178
  return { Label: 'Closed · shutdown', Title: 'Closed by the host’s graceful shutdown drain', Icon: 'fa-solid fa-power-off' };
173
179
  case 'Error':
@@ -1 +1 @@
1
- {"version":3,"file":"realtime-session-data.js","sourceRoot":"","sources":["../../../../../src/AI/components/analytics/realtime/realtime-session-data.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @fileoverview Shared data layer for the Realtime Voice analytics sections.\n *\n * Loads `MJ: AI Agent Sessions`, their `MJ: AI Agent Session Channels` rows,\n * and the delegated `MJ: AI Agent Runs` (linked via `AgentSessionID`) in a\n * single batched `RunViews` call, then aggregates everything client-side into\n * per-session rollups (target agent, channel set, delegated-run count, token /\n * cost totals, duration, close cause from the persisted `CloseReason` column).\n *\n * Used by both `AnalyticsRealtimeOverviewComponent` (KPIs + charts) and\n * `AnalyticsRealtimeSessionsComponent` (management grid) so the two sections\n * share one query shape and one aggregation pass.\n */\n\nimport { IMetadataProvider, RunView } from '@memberjunction/core';\nimport { NormalizeUUID } from '@memberjunction/global';\nimport { AIEngineBase } from '@memberjunction/ai-engine-base';\n\n// ── Raw row shapes (ResultType: 'simple', narrowed Fields) ──\n\n/**\n * Why a session was closed, as stamped server-side by `SessionManager.CloseSession`\n * (mirrors `AIAgentSessionEntity.CloseReason`). `null` means a legacy row closed\n * before the column existed — rendered as \"unknown\".\n */\nexport type RealtimeSessionCloseReason = 'Error' | 'Explicit' | 'Janitor' | 'Shutdown';\n\nexport interface RealtimeSessionRecord {\n ID: string;\n AgentID: string;\n Agent: string | null;\n UserID: string;\n User: string;\n Status: 'Active' | 'Idle' | 'Closed';\n ConversationID: string | null;\n LastSessionID: string | null;\n HostInstanceID: string | null;\n Config: string | null;\n LastActiveAt: string;\n ClosedAt: string | null;\n CloseReason: RealtimeSessionCloseReason | null;\n __mj_CreatedAt: string;\n}\n\nexport interface RealtimeSessionChannelRecord {\n ID: string;\n AgentSessionID: string;\n Channel: string;\n Status: string;\n __mj_CreatedAt: string;\n}\n\nexport interface RealtimeSessionRunRecord {\n ID: string;\n AgentSessionID: string | null;\n AgentID: string;\n Agent: string | null;\n TotalCost: number | null;\n TotalTokensUsed: number | null;\n StartedAt: string;\n}\n\n/** Shape of the run ids the realtime voice stack persists in `AIAgentSession.Config`. */\ninterface RealtimeSessionConfigJson {\n targetAgentID?: string;\n coAgentRunID?: string;\n promptRunID?: string;\n pendingFeedbackRunID?: string;\n}\n\n// ── Aggregated shapes ──\n\n/** One session with everything the admin pages render, pre-aggregated. */\nexport interface RealtimeSessionRollup {\n Record: RealtimeSessionRecord;\n /** Parsed from Config JSON; null when the session carries no target. */\n TargetAgentID: string | null;\n /** Resolved client-side against AIEngineBase's cached agents. */\n TargetAgentName: string | null;\n /** Distinct channel names attached to the session. */\n ChannelNames: string[];\n /** Delegated AIAgentRuns (linked runs excluding the co-agent observability run). */\n DelegatedRunCount: number;\n /** Token total across all linked agent runs (co-agent + delegated). */\n TotalTokens: number;\n /** Cost total across all linked agent runs (co-agent + delegated). */\n TotalCost: number;\n StartedAt: Date;\n /** __mj_CreatedAt → (ClosedAt ?? LastActiveAt). 0 when not derivable. */\n DurationMs: number;\n /** Session resumed from a prior one (LastSessionID set). */\n IsResumed: boolean;\n /**\n * Close cause persisted by the server (`AIAgentSession.CloseReason`).\n * `null` either means the session is still open, or it's a legacy row\n * closed before the column existed (\"unknown\" in the UI).\n */\n CloseReason: RealtimeSessionCloseReason | null;\n /**\n * `CloseReason === 'Janitor'` — the session was force-closed by the\n * lifecycle janitor (startup orphan recovery or staleness sweep) rather\n * than ended explicitly. Derived from the real column; the old\n * ClosedAt−LastActiveAt timing heuristic has been retired, so legacy\n * NULL-reason rows report `false` here and \"unknown\" in the UI.\n */\n IsJanitorClosed: boolean;\n}\n\n/** Result of one load pass — current-window rollups plus trend context. */\nexport interface RealtimeSessionsDataset {\n /** Sessions started in the current window (or still open), newest first. */\n Sessions: RealtimeSessionRollup[];\n /** Every loaded session rollup (covers 2× the window, for trend math). */\n AllSessions: RealtimeSessionRollup[];\n /** Count of sessions started in the prior (equal-length) window. */\n PriorWindowSessionCount: number;\n WindowStart: Date;\n WindowMs: number;\n}\n\n// ── Constants ──\n\nconst SESSION_FIELDS = [\n 'ID', 'AgentID', 'Agent', 'UserID', 'User', 'Status', 'ConversationID',\n 'LastSessionID', 'HostInstanceID', 'Config', 'LastActiveAt', 'ClosedAt', 'CloseReason', '__mj_CreatedAt'\n];\n\nconst SESSION_CHANNEL_FIELDS = ['ID', 'AgentSessionID', 'Channel', 'Status', '__mj_CreatedAt'];\n\nconst SESSION_RUN_FIELDS = ['ID', 'AgentSessionID', 'AgentID', 'Agent', 'TotalCost', 'TotalTokensUsed', 'StartedAt'];\n\n/** Supported time-range keys → milliseconds. */\nconst TIME_RANGE_MS: Record<string, number> = {\n '24h': 86_400_000,\n '7d': 604_800_000,\n '30d': 2_592_000_000\n};\n\nexport function TimeRangeToMs(range: string): number {\n return TIME_RANGE_MS[range] ?? TIME_RANGE_MS['7d'];\n}\n\n// ── Loading + aggregation ──\n\n/**\n * Loads sessions (2× window for trend), their channels, and linked agent runs\n * via one batched RunViews call, then folds them into per-session rollups.\n */\nexport async function LoadRealtimeSessionsDataset(\n provider: IMetadataProvider,\n timeRange: string\n): Promise<RealtimeSessionsDataset> {\n const windowMs = TimeRangeToMs(timeRange);\n const now = Date.now();\n const windowStart = new Date(now - windowMs);\n const doubleWindowStart = new Date(now - windowMs * 2);\n\n const rv = RunView.FromMetadataProvider(provider);\n const [sessionResult, channelResult, runResult] = await rv.RunViews([\n {\n EntityName: 'MJ: AI Agent Sessions',\n ExtraFilter: `__mj_CreatedAt >= '${doubleWindowStart.toISOString()}' OR Status IN ('Active','Idle')`,\n Fields: SESSION_FIELDS,\n OrderBy: '__mj_CreatedAt DESC',\n ResultType: 'simple'\n },\n {\n EntityName: 'MJ: AI Agent Session Channels',\n ExtraFilter: `__mj_CreatedAt >= '${doubleWindowStart.toISOString()}' OR Status = 'Connected'`,\n Fields: SESSION_CHANNEL_FIELDS,\n ResultType: 'simple'\n },\n {\n EntityName: 'MJ: AI Agent Runs',\n ExtraFilter: `AgentSessionID IS NOT NULL AND StartedAt >= '${doubleWindowStart.toISOString()}'`,\n Fields: SESSION_RUN_FIELDS,\n OrderBy: 'StartedAt DESC',\n ResultType: 'simple'\n }\n ]);\n\n const sessions = (sessionResult?.Success ? sessionResult.Results : []) as RealtimeSessionRecord[];\n const channels = (channelResult?.Success ? channelResult.Results : []) as RealtimeSessionChannelRecord[];\n const runs = (runResult?.Success ? runResult.Results : []) as RealtimeSessionRunRecord[];\n\n const agentNameMap = await buildAgentNameMap();\n const channelMap = groupBySessionId(channels, c => c.AgentSessionID);\n const runMap = groupBySessionId(runs, r => r.AgentSessionID);\n\n const allRollups = sessions.map(s => buildRollup(s, channelMap, runMap, agentNameMap));\n\n const currentWindow = allRollups.filter(\n r => r.StartedAt >= windowStart || r.Record.Status !== 'Closed'\n );\n const priorCount = allRollups.filter(\n r => r.StartedAt >= doubleWindowStart && r.StartedAt < windowStart\n ).length;\n\n return {\n Sessions: currentWindow,\n AllSessions: allRollups,\n PriorWindowSessionCount: priorCount,\n WindowStart: windowStart,\n WindowMs: windowMs\n };\n}\n\n/** Loads AIEngineBase (no-op when cached) and maps normalized agent ID → name. */\nasync function buildAgentNameMap(): Promise<Map<string, string>> {\n const map = new Map<string, string>();\n try {\n await AIEngineBase.Instance.Config(false);\n for (const agent of AIEngineBase.Instance.Agents ?? []) {\n map.set(NormalizeUUID(agent.ID), agent.Name ?? '');\n }\n } catch {\n // Tolerate engine load failures — target names degrade to null.\n }\n return map;\n}\n\nfunction groupBySessionId<T>(rows: T[], keyOf: (row: T) => string | null): Map<string, T[]> {\n const map = new Map<string, T[]>();\n for (const row of rows) {\n const raw = keyOf(row);\n if (!raw) continue;\n const key = NormalizeUUID(raw);\n const list = map.get(key);\n if (list) {\n list.push(row);\n } else {\n map.set(key, [row]);\n }\n }\n return map;\n}\n\nfunction buildRollup(\n session: RealtimeSessionRecord,\n channelMap: Map<string, RealtimeSessionChannelRecord[]>,\n runMap: Map<string, RealtimeSessionRunRecord[]>,\n agentNameMap: Map<string, string>\n): RealtimeSessionRollup {\n const key = NormalizeUUID(session.ID);\n const config = parseSessionConfig(session.Config);\n const sessionRuns = runMap.get(key) ?? [];\n const coAgentRunKey = config.coAgentRunID ? NormalizeUUID(config.coAgentRunID) : null;\n\n const delegatedRuns = sessionRuns.filter(r => !coAgentRunKey || NormalizeUUID(r.ID) !== coAgentRunKey);\n const totalTokens = sessionRuns.reduce((s, r) => s + (r.TotalTokensUsed ?? 0), 0);\n const totalCost = sessionRuns.reduce((s, r) => s + (r.TotalCost ?? 0), 0);\n\n const channelNames = Array.from(\n new Set((channelMap.get(key) ?? []).map(c => c.Channel).filter(Boolean))\n );\n\n const startedAt = new Date(session.__mj_CreatedAt);\n const endAt = session.ClosedAt ? new Date(session.ClosedAt) : new Date(session.LastActiveAt);\n const durationMs = Math.max(0, endAt.getTime() - startedAt.getTime());\n\n const closeReason = session.Status === 'Closed' ? session.CloseReason ?? null : null;\n\n const targetAgentID = config.targetAgentID ?? null;\n return {\n Record: session,\n TargetAgentID: targetAgentID,\n TargetAgentName: targetAgentID ? agentNameMap.get(NormalizeUUID(targetAgentID)) ?? null : null,\n ChannelNames: channelNames,\n DelegatedRunCount: delegatedRuns.length,\n TotalTokens: totalTokens,\n TotalCost: totalCost,\n StartedAt: startedAt,\n DurationMs: durationMs,\n IsResumed: session.LastSessionID != null,\n CloseReason: closeReason,\n IsJanitorClosed: closeReason === 'Janitor'\n };\n}\n\nfunction parseSessionConfig(raw: string | null): RealtimeSessionConfigJson {\n if (!raw) return {};\n try {\n const parsed = JSON.parse(raw) as RealtimeSessionConfigJson;\n return parsed && typeof parsed === 'object' ? parsed : {};\n } catch {\n return {};\n }\n}\n\n// ── Formatting helpers (shared by both sections) ──\n\n/** How a session's status pill should render — label, hover title, and Font Awesome icon. */\nexport interface SessionStatusDisplay {\n Label: string;\n Title: string;\n /** Icon class for the pill; empty for `Active` (the template renders the pulsing live dot instead). */\n Icon: string;\n}\n\n/**\n * Builds the status-pill presentation for a session from its `Status` and persisted\n * `CloseReason`. `Closed` sessions surface the real close cause; a `null` reason\n * (legacy rows written before the column existed) renders as \"unknown\".\n */\nexport function BuildSessionStatusDisplay(\n status: RealtimeSessionRecord['Status'],\n closeReason: RealtimeSessionCloseReason | null\n): SessionStatusDisplay {\n if (status === 'Active') {\n return { Label: 'Active', Title: 'Live duplex session', Icon: '' };\n }\n if (status === 'Idle') {\n return { Label: 'Idle', Title: 'Holding — past the idle threshold', Icon: 'fa-solid fa-pause' };\n }\n switch (closeReason) {\n case 'Explicit':\n return { Label: 'Closed', Title: 'Closed explicitly (user hang-up / close mutation)', Icon: 'fa-solid fa-circle-stop' };\n case 'Janitor':\n return { Label: 'Closed · janitor', Title: 'Force-closed by the lifecycle janitor (staleness sweep / orphan reconciliation)', Icon: 'fa-solid fa-broom' };\n case 'Shutdown':\n return { Label: 'Closed · shutdown', Title: 'Closed by the host’s graceful shutdown drain', Icon: 'fa-solid fa-power-off' };\n case 'Error':\n return { Label: 'Closed · error', Title: 'Closed by a failure-path teardown', Icon: 'fa-solid fa-triangle-exclamation' };\n default:\n return { Label: 'Closed · unknown', Title: 'Closed before close-cause tracking existed (legacy row)', Icon: 'fa-solid fa-circle-question' };\n }\n}\n\n/** Formats a duration as m:ss (or h:mm:ss past the hour) like the mockups' 4:51 / 11:18. */\nexport function FormatSessionDuration(ms: number): string {\n if (ms <= 0) return '0:00';\n const totalSeconds = Math.floor(ms / 1000);\n const seconds = totalSeconds % 60;\n const minutes = Math.floor(totalSeconds / 60) % 60;\n const hours = Math.floor(totalSeconds / 3600);\n const pad = (n: number) => n.toString().padStart(2, '0');\n return hours > 0 ? `${hours}:${pad(minutes)}:${pad(seconds)}` : `${minutes}:${pad(seconds)}`;\n}\n\n/** 4200 → \"4.2K\", 1_250_000 → \"1.3M\". */\nexport function FormatTokenCount(value: number): string {\n if (value >= 1_000_000) return (value / 1_000_000).toFixed(1) + 'M';\n if (value >= 1_000) return (value / 1_000).toFixed(1) + 'K';\n return value.toString();\n}\n\nexport function FormatSessionCost(value: number, decimals = 2): string {\n if (value === 0) return '$0.00';\n if (value < 0.01 && decimals < 4) decimals = 4;\n return '$' + value.toFixed(decimals);\n}\n\n/** Today → \"3:40 pm\", yesterday → \"Yesterday\", else \"M/d\". */\nexport function FormatSessionStart(date: Date): string {\n const now = new Date();\n const startOfToday = new Date(now.getFullYear(), now.getMonth(), now.getDate());\n const startOfYesterday = new Date(startOfToday.getTime() - 86_400_000);\n if (date >= startOfToday) {\n return date.toLocaleTimeString([], { hour: 'numeric', minute: '2-digit' }).toLowerCase();\n }\n if (date >= startOfYesterday) {\n return 'Yesterday';\n }\n return date.toLocaleDateString([], { month: 'numeric', day: 'numeric' });\n}\n\n/** Font Awesome icon for a channel name (keyword-mapped, with a generic fallback). */\nexport function ChannelIconClass(channelName: string): string {\n const name = channelName.toLowerCase();\n if (name.includes('voice') || name.includes('audio')) return 'fa-solid fa-microphone-lines';\n if (name.includes('whiteboard') || name.includes('board')) return 'fa-solid fa-chalkboard';\n if (name.includes('text') || name.includes('chat')) return 'fa-solid fa-comment';\n if (name.includes('control')) return 'fa-solid fa-sliders';\n if (name.includes('video')) return 'fa-solid fa-video';\n return 'fa-solid fa-plug';\n}\n"]}
1
+ {"version":3,"file":"realtime-session-data.js","sourceRoot":"","sources":["../../../../../src/AI/components/analytics/realtime/realtime-session-data.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @fileoverview Shared data layer for the Realtime Voice analytics sections.\n *\n * Loads `MJ: AI Agent Sessions`, their `MJ: AI Agent Session Channels` rows,\n * and the delegated `MJ: AI Agent Runs` (linked via `AgentSessionID`) in a\n * single batched `RunViews` call, then aggregates everything client-side into\n * per-session rollups (target agent, channel set, delegated-run count, token /\n * cost totals, duration, close cause from the persisted `CloseReason` column).\n *\n * Used by both `AnalyticsRealtimeOverviewComponent` (KPIs + charts) and\n * `AnalyticsRealtimeSessionsComponent` (management grid) so the two sections\n * share one query shape and one aggregation pass.\n */\n\nimport { IMetadataProvider, RunView } from '@memberjunction/core';\nimport type { MJAIAgentSessionEntity } from '@memberjunction/core-entities';\nimport { NormalizeUUID } from '@memberjunction/global';\nimport { AIEngineBase } from '@memberjunction/ai-engine-base';\n\n// ── Raw row shapes (ResultType: 'simple', narrowed Fields) ──\n\n/**\n * Why a session was closed, as stamped server-side by `SessionManager.CloseSession`\n * (mirrors `AIAgentSessionEntity.CloseReason`). `null` means a legacy row closed\n * before the column existed — rendered as \"unknown\".\n */\nexport type RealtimeSessionCloseReason = NonNullable<MJAIAgentSessionEntity['CloseReason']>;\n\nexport interface RealtimeSessionRecord {\n ID: string;\n AgentID: string;\n Agent: string | null;\n UserID: string;\n User: string;\n Status: 'Active' | 'Idle' | 'Closed';\n ConversationID: string | null;\n LastSessionID: string | null;\n HostInstanceID: string | null;\n Config: string | null;\n LastActiveAt: string;\n ClosedAt: string | null;\n CloseReason: RealtimeSessionCloseReason | null;\n __mj_CreatedAt: string;\n}\n\nexport interface RealtimeSessionChannelRecord {\n ID: string;\n AgentSessionID: string;\n Channel: string;\n Status: string;\n __mj_CreatedAt: string;\n}\n\nexport interface RealtimeSessionRunRecord {\n ID: string;\n AgentSessionID: string | null;\n AgentID: string;\n Agent: string | null;\n TotalCost: number | null;\n TotalTokensUsed: number | null;\n StartedAt: string;\n}\n\n/** Shape of the run ids the realtime voice stack persists in `AIAgentSession.Config`. */\ninterface RealtimeSessionConfigJson {\n targetAgentID?: string;\n coAgentRunID?: string;\n promptRunID?: string;\n pendingFeedbackRunID?: string;\n}\n\n// ── Aggregated shapes ──\n\n/** One session with everything the admin pages render, pre-aggregated. */\nexport interface RealtimeSessionRollup {\n Record: RealtimeSessionRecord;\n /** Parsed from Config JSON; null when the session carries no target. */\n TargetAgentID: string | null;\n /** Resolved client-side against AIEngineBase's cached agents. */\n TargetAgentName: string | null;\n /** Distinct channel names attached to the session. */\n ChannelNames: string[];\n /** Delegated AIAgentRuns (linked runs excluding the co-agent observability run). */\n DelegatedRunCount: number;\n /** Token total across all linked agent runs (co-agent + delegated). */\n TotalTokens: number;\n /** Cost total across all linked agent runs (co-agent + delegated). */\n TotalCost: number;\n StartedAt: Date;\n /** __mj_CreatedAt → (ClosedAt ?? LastActiveAt). 0 when not derivable. */\n DurationMs: number;\n /** Session resumed from a prior one (LastSessionID set). */\n IsResumed: boolean;\n /**\n * Close cause persisted by the server (`AIAgentSession.CloseReason`).\n * `null` either means the session is still open, or it's a legacy row\n * closed before the column existed (\"unknown\" in the UI).\n */\n CloseReason: RealtimeSessionCloseReason | null;\n /**\n * The session was closed by the system rather than ended by a person: `Idle` (the janitor's staleness sweep),\n * `TimeLimit` (the janitor's deadline sweep, or the browser's deadline alarm once the server verified the claim) or\n * `Janitor` (crash orphan reconciled at startup, and every expiry close recorded before `Idle` and `TimeLimit`\n * existed). All three count toward the \"System closes\" KPI. Derived from the real column; the old\n * ClosedAt−LastActiveAt timing heuristic has been retired, so legacy\n * NULL-reason rows report `false` here and \"unknown\" in the UI.\n */\n IsJanitorClosed: boolean;\n}\n\n/** Result of one load pass — current-window rollups plus trend context. */\nexport interface RealtimeSessionsDataset {\n /** Sessions started in the current window (or still open), newest first. */\n Sessions: RealtimeSessionRollup[];\n /** Every loaded session rollup (covers 2× the window, for trend math). */\n AllSessions: RealtimeSessionRollup[];\n /** Count of sessions started in the prior (equal-length) window. */\n PriorWindowSessionCount: number;\n WindowStart: Date;\n WindowMs: number;\n}\n\n// ── Constants ──\n\nconst SESSION_FIELDS = [\n 'ID', 'AgentID', 'Agent', 'UserID', 'User', 'Status', 'ConversationID',\n 'LastSessionID', 'HostInstanceID', 'Config', 'LastActiveAt', 'ClosedAt', 'CloseReason', '__mj_CreatedAt'\n];\n\nconst SESSION_CHANNEL_FIELDS = ['ID', 'AgentSessionID', 'Channel', 'Status', '__mj_CreatedAt'];\n\nconst SESSION_RUN_FIELDS = ['ID', 'AgentSessionID', 'AgentID', 'Agent', 'TotalCost', 'TotalTokensUsed', 'StartedAt'];\n\n/** Supported time-range keys → milliseconds. */\nconst TIME_RANGE_MS: Record<string, number> = {\n '24h': 86_400_000,\n '7d': 604_800_000,\n '30d': 2_592_000_000\n};\n\nexport function TimeRangeToMs(range: string): number {\n return TIME_RANGE_MS[range] ?? TIME_RANGE_MS['7d'];\n}\n\n// ── Loading + aggregation ──\n\n/**\n * Loads sessions (2× window for trend), their channels, and linked agent runs\n * via one batched RunViews call, then folds them into per-session rollups.\n */\nexport async function LoadRealtimeSessionsDataset(\n provider: IMetadataProvider,\n timeRange: string\n): Promise<RealtimeSessionsDataset> {\n const windowMs = TimeRangeToMs(timeRange);\n const now = Date.now();\n const windowStart = new Date(now - windowMs);\n const doubleWindowStart = new Date(now - windowMs * 2);\n\n const rv = RunView.FromMetadataProvider(provider);\n const [sessionResult, channelResult, runResult] = await rv.RunViews([\n {\n EntityName: 'MJ: AI Agent Sessions',\n ExtraFilter: `__mj_CreatedAt >= '${doubleWindowStart.toISOString()}' OR Status IN ('Active','Idle')`,\n Fields: SESSION_FIELDS,\n OrderBy: '__mj_CreatedAt DESC',\n ResultType: 'simple'\n },\n {\n EntityName: 'MJ: AI Agent Session Channels',\n ExtraFilter: `__mj_CreatedAt >= '${doubleWindowStart.toISOString()}' OR Status = 'Connected'`,\n Fields: SESSION_CHANNEL_FIELDS,\n ResultType: 'simple'\n },\n {\n EntityName: 'MJ: AI Agent Runs',\n ExtraFilter: `AgentSessionID IS NOT NULL AND StartedAt >= '${doubleWindowStart.toISOString()}'`,\n Fields: SESSION_RUN_FIELDS,\n OrderBy: 'StartedAt DESC',\n ResultType: 'simple'\n }\n ]);\n\n const sessions = (sessionResult?.Success ? sessionResult.Results : []) as RealtimeSessionRecord[];\n const channels = (channelResult?.Success ? channelResult.Results : []) as RealtimeSessionChannelRecord[];\n const runs = (runResult?.Success ? runResult.Results : []) as RealtimeSessionRunRecord[];\n\n const agentNameMap = await buildAgentNameMap();\n const channelMap = groupBySessionId(channels, c => c.AgentSessionID);\n const runMap = groupBySessionId(runs, r => r.AgentSessionID);\n\n const allRollups = sessions.map(s => buildRollup(s, channelMap, runMap, agentNameMap));\n\n const currentWindow = allRollups.filter(\n r => r.StartedAt >= windowStart || r.Record.Status !== 'Closed'\n );\n const priorCount = allRollups.filter(\n r => r.StartedAt >= doubleWindowStart && r.StartedAt < windowStart\n ).length;\n\n return {\n Sessions: currentWindow,\n AllSessions: allRollups,\n PriorWindowSessionCount: priorCount,\n WindowStart: windowStart,\n WindowMs: windowMs\n };\n}\n\n/** Loads AIEngineBase (no-op when cached) and maps normalized agent ID → name. */\nasync function buildAgentNameMap(): Promise<Map<string, string>> {\n const map = new Map<string, string>();\n try {\n await AIEngineBase.Instance.Config(false);\n for (const agent of AIEngineBase.Instance.Agents ?? []) {\n map.set(NormalizeUUID(agent.ID), agent.Name ?? '');\n }\n } catch {\n // Tolerate engine load failures — target names degrade to null.\n }\n return map;\n}\n\nfunction groupBySessionId<T>(rows: T[], keyOf: (row: T) => string | null): Map<string, T[]> {\n const map = new Map<string, T[]>();\n for (const row of rows) {\n const raw = keyOf(row);\n if (!raw) continue;\n const key = NormalizeUUID(raw);\n const list = map.get(key);\n if (list) {\n list.push(row);\n } else {\n map.set(key, [row]);\n }\n }\n return map;\n}\n\nfunction buildRollup(\n session: RealtimeSessionRecord,\n channelMap: Map<string, RealtimeSessionChannelRecord[]>,\n runMap: Map<string, RealtimeSessionRunRecord[]>,\n agentNameMap: Map<string, string>\n): RealtimeSessionRollup {\n const key = NormalizeUUID(session.ID);\n const config = parseSessionConfig(session.Config);\n const sessionRuns = runMap.get(key) ?? [];\n const coAgentRunKey = config.coAgentRunID ? NormalizeUUID(config.coAgentRunID) : null;\n\n const delegatedRuns = sessionRuns.filter(r => !coAgentRunKey || NormalizeUUID(r.ID) !== coAgentRunKey);\n const totalTokens = sessionRuns.reduce((s, r) => s + (r.TotalTokensUsed ?? 0), 0);\n const totalCost = sessionRuns.reduce((s, r) => s + (r.TotalCost ?? 0), 0);\n\n const channelNames = Array.from(\n new Set((channelMap.get(key) ?? []).map(c => c.Channel).filter(Boolean))\n );\n\n const startedAt = new Date(session.__mj_CreatedAt);\n const endAt = session.ClosedAt ? new Date(session.ClosedAt) : new Date(session.LastActiveAt);\n const durationMs = Math.max(0, endAt.getTime() - startedAt.getTime());\n\n const closeReason = session.Status === 'Closed' ? session.CloseReason ?? null : null;\n\n const targetAgentID = config.targetAgentID ?? null;\n return {\n Record: session,\n TargetAgentID: targetAgentID,\n TargetAgentName: targetAgentID ? agentNameMap.get(NormalizeUUID(targetAgentID)) ?? null : null,\n ChannelNames: channelNames,\n DelegatedRunCount: delegatedRuns.length,\n TotalTokens: totalTokens,\n TotalCost: totalCost,\n StartedAt: startedAt,\n DurationMs: durationMs,\n IsResumed: session.LastSessionID != null,\n CloseReason: closeReason,\n IsJanitorClosed: closeReason === 'Janitor' || closeReason === 'Idle' || closeReason === 'TimeLimit'\n };\n}\n\nfunction parseSessionConfig(raw: string | null): RealtimeSessionConfigJson {\n if (!raw) return {};\n try {\n const parsed = JSON.parse(raw) as RealtimeSessionConfigJson;\n return parsed && typeof parsed === 'object' ? parsed : {};\n } catch {\n return {};\n }\n}\n\n// ── Formatting helpers (shared by both sections) ──\n\n/** How a session's status pill should render — label, hover title, and Font Awesome icon. */\nexport interface SessionStatusDisplay {\n Label: string;\n Title: string;\n /** Icon class for the pill; empty for `Active` (the template renders the pulsing live dot instead). */\n Icon: string;\n}\n\n/**\n * Builds the status-pill presentation for a session from its `Status` and persisted\n * `CloseReason`. `Closed` sessions surface the real close cause; a `null` reason\n * (legacy rows written before the column existed) renders as \"unknown\".\n */\nexport function BuildSessionStatusDisplay(\n status: RealtimeSessionRecord['Status'],\n closeReason: RealtimeSessionCloseReason | null\n): SessionStatusDisplay {\n if (status === 'Active') {\n return { Label: 'Active', Title: 'Live duplex session', Icon: '' };\n }\n if (status === 'Idle') {\n return { Label: 'Idle', Title: 'Holding — past the idle threshold', Icon: 'fa-solid fa-pause' };\n }\n switch (closeReason) {\n case 'Explicit':\n return { Label: 'Closed', Title: 'Closed explicitly (user hang-up / close mutation)', Icon: 'fa-solid fa-circle-stop' };\n case 'Janitor':\n // Rows closed before TimeLimit and Idle existed keep 'Janitor' for every expiry close, so the title names both meanings.\n return { Label: 'Closed · janitor', Title: 'Closed by the lifecycle janitor: an orphan from an earlier boot, or (for sessions closed before the idle and time-limit reasons existed) an idle or time limit close', Icon: 'fa-solid fa-broom' };\n case 'TimeLimit':\n // The janitor's deadline sweep or the browser's own deadline alarm (a claim the server verified): not always the janitor.\n return { Label: 'Closed · time limit', Title: 'Closed because the session reached its time limit', Icon: 'fa-solid fa-hourglass-end' };\n case 'Idle':\n return { Label: 'Closed · idle — no activity', Title: 'Closed by the janitor staleness sweep after no activity', Icon: 'fa-solid fa-moon' };\n case 'Shutdown':\n return { Label: 'Closed · shutdown', Title: 'Closed by the host’s graceful shutdown drain', Icon: 'fa-solid fa-power-off' };\n case 'Error':\n return { Label: 'Closed · error', Title: 'Closed by a failure-path teardown', Icon: 'fa-solid fa-triangle-exclamation' };\n default:\n return { Label: 'Closed · unknown', Title: 'Closed before close-cause tracking existed (legacy row)', Icon: 'fa-solid fa-circle-question' };\n }\n}\n\n/** Formats a duration as m:ss (or h:mm:ss past the hour) like the mockups' 4:51 / 11:18. */\nexport function FormatSessionDuration(ms: number): string {\n if (ms <= 0) return '0:00';\n const totalSeconds = Math.floor(ms / 1000);\n const seconds = totalSeconds % 60;\n const minutes = Math.floor(totalSeconds / 60) % 60;\n const hours = Math.floor(totalSeconds / 3600);\n const pad = (n: number) => n.toString().padStart(2, '0');\n return hours > 0 ? `${hours}:${pad(minutes)}:${pad(seconds)}` : `${minutes}:${pad(seconds)}`;\n}\n\n/** 4200 → \"4.2K\", 1_250_000 → \"1.3M\". */\nexport function FormatTokenCount(value: number): string {\n if (value >= 1_000_000) return (value / 1_000_000).toFixed(1) + 'M';\n if (value >= 1_000) return (value / 1_000).toFixed(1) + 'K';\n return value.toString();\n}\n\nexport function FormatSessionCost(value: number, decimals = 2): string {\n if (value === 0) return '$0.00';\n if (value < 0.01 && decimals < 4) decimals = 4;\n return '$' + value.toFixed(decimals);\n}\n\n/** Today → \"3:40 pm\", yesterday → \"Yesterday\", else \"M/d\". */\nexport function FormatSessionStart(date: Date): string {\n const now = new Date();\n const startOfToday = new Date(now.getFullYear(), now.getMonth(), now.getDate());\n const startOfYesterday = new Date(startOfToday.getTime() - 86_400_000);\n if (date >= startOfToday) {\n return date.toLocaleTimeString([], { hour: 'numeric', minute: '2-digit' }).toLowerCase();\n }\n if (date >= startOfYesterday) {\n return 'Yesterday';\n }\n return date.toLocaleDateString([], { month: 'numeric', day: 'numeric' });\n}\n\n/** Font Awesome icon for a channel name (keyword-mapped, with a generic fallback). */\nexport function ChannelIconClass(channelName: string): string {\n const name = channelName.toLowerCase();\n if (name.includes('voice') || name.includes('audio')) return 'fa-solid fa-microphone-lines';\n if (name.includes('whiteboard') || name.includes('board')) return 'fa-solid fa-chalkboard';\n if (name.includes('text') || name.includes('chat')) return 'fa-solid fa-comment';\n if (name.includes('control')) return 'fa-solid fa-sliders';\n if (name.includes('video')) return 'fa-solid fa-video';\n return 'fa-solid fa-plug';\n}\n"]}
@@ -440,7 +440,7 @@ export declare class AutotaggingPipelineResourceComponent extends BaseResourceCo
440
440
  OpenRecordFromItem(item: ContentItemDetail): void;
441
441
  /** Cache: EntityRecordDocument ID → RecordID */
442
442
  private entityRecordDocCache;
443
- /** Load ERD RecordIDs for entity-sourced content items */
443
+ /** Load ERD RecordIDs for entity-sourced content items referenced by loaded items */
444
444
  private loadEntityRecordDocCache;
445
445
  private getAllWeightedTagsForItem;
446
446
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"autotagging-pipeline-resource.component.d.ts","sourceRoot":"","sources":["../../../../src/AI/components/autotagging/autotagging-pipeline-resource.component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"autotagging-pipeline-resource.component.d.ts","sourceRoot":"","sources":["../../../../src/AI/components/autotagging/autotagging-pipeline-resource.component.ts"],"names":[],"mappings":"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"}
@@ -580,7 +580,8 @@ let AutotaggingPipelineResourceComponent = class AutotaggingPipelineResourceComp
580
580
  ]);
581
581
  this.loadClassifyPreferences();
582
582
  this.applyIncomingConfiguration();
583
- await Promise.all([this.LoadPipelineData(), this.loadEntityRecordDocCache(), this.loadInboxPendingCount(), this.loadHealthPendingCount()]);
583
+ await Promise.all([this.LoadPipelineData(), this.loadInboxPendingCount(), this.loadHealthPendingCount()]);
584
+ await this.loadEntityRecordDocCache();
584
585
  this.tabDataLoaded.add('pipeline');
585
586
  this.buildNavItems();
586
587
  // If user preferences or incoming config set a non-pipeline initial tab,
@@ -887,9 +888,9 @@ let AutotaggingPipelineResourceComponent = class AutotaggingPipelineResourceComp
887
888
  EntityName: 'MJ: Tag Suggestions',
888
889
  ExtraFilter: `Status='Pending' AND Reason NOT IN ('MergeCandidate','LowUsage','WideNode')`,
889
890
  Fields: ['ID'],
890
- ResultType: 'simple',
891
+ ResultType: 'count_only',
891
892
  });
892
- this.InboxPendingCount = result.Success ? result.TotalRowCount : 0;
893
+ this.InboxPendingCount = result.Success ? result.TotalRowCount ?? 0 : 0;
893
894
  }
894
895
  /**
895
896
  * Fired by the Inbox tab after a suggestion is approved/merged/rejected.
@@ -915,9 +916,9 @@ let AutotaggingPipelineResourceComponent = class AutotaggingPipelineResourceComp
915
916
  EntityName: 'MJ: Tag Suggestions',
916
917
  ExtraFilter: `Status='Pending' AND Reason IN ('MergeCandidate','LowUsage','WideNode')`,
917
918
  Fields: ['ID'],
918
- ResultType: 'simple',
919
+ ResultType: 'count_only',
919
920
  });
920
- this.HealthPendingCount = result.Success ? result.TotalRowCount : 0;
921
+ this.HealthPendingCount = result.Success ? result.TotalRowCount ?? 0 : 0;
921
922
  }
922
923
  /**
923
924
  * Fired by the Health tab after a merge/deprecate/dismiss. Refreshes the
@@ -1009,8 +1010,8 @@ let AutotaggingPipelineResourceComponent = class AutotaggingPipelineResourceComp
1009
1010
  const [sourcesResult, itemsResult, runsResult, tagsResult, sourceTypesResult, contentTypesResult] = await rv.RunViews([
1010
1011
  { EntityName: 'MJ: Content Sources', OrderBy: 'Name', ResultType: 'simple' },
1011
1012
  { EntityName: 'MJ: Content Items', OrderBy: '__mj_UpdatedAt DESC', MaxRows: this.contentItemsPageSize, StartRow: 0, ResultType: 'simple', Fields: ['ID', 'Name', 'Description', 'ContentSourceID', 'ContentSourceTypeID', 'ContentSource', 'ContentSourceType', 'ContentType', 'ContentFileType', 'URL', 'Text', 'Checksum', 'EntityRecordDocumentID', '__mj_CreatedAt', '__mj_UpdatedAt'] },
1012
- { EntityName: 'MJ: Content Process Runs', OrderBy: 'StartTime DESC', MaxRows: 100, ResultType: 'simple' },
1013
- { EntityName: 'MJ: Content Item Tags', ResultType: 'simple', Fields: ['ID', 'ItemID', 'Item', 'Tag', 'TagID', 'Weight', '__mj_CreatedAt'] },
1013
+ { EntityName: 'MJ: Content Process Runs', OrderBy: 'StartTime DESC', MaxRows: 100, ResultType: 'simple', Fields: ['ID', 'SourceID', 'Source', 'Status', 'StartTime', 'EndTime', 'ProcessedItems', 'ErrorCount'] },
1014
+ { EntityName: 'MJ: Content Item Tags', MaxRows: 2000, ResultType: 'simple', Fields: ['ID', 'ItemID', 'Item', 'Tag', 'TagID', 'Weight', '__mj_CreatedAt'] },
1014
1015
  { EntityName: 'MJ: Content Source Types', ResultType: 'simple' },
1015
1016
  { EntityName: 'MJ: Content Types', ResultType: 'simple' }
1016
1017
  ]);
@@ -1022,9 +1023,9 @@ let AutotaggingPipelineResourceComponent = class AutotaggingPipelineResourceComp
1022
1023
  this.contentTypesRaw = contentTypesResult.Success ? contentTypesResult.Results : [];
1023
1024
  // Use TotalRowCount for accurate KPI/badge counts (the Results arrays are
1024
1025
  // capped by MaxRows for feed display, but TotalRowCount reflects the full DB count)
1025
- this.totalContentItemCount = itemsResult.Success ? itemsResult.TotalRowCount : 0;
1026
- this.totalContentTagCount = tagsResult.Success ? tagsResult.TotalRowCount : 0;
1027
- this.totalRunHistoryCount = runsResult.Success ? runsResult.TotalRowCount : 0;
1026
+ this.totalContentItemCount = itemsResult.Success ? itemsResult.TotalRowCount ?? 0 : 0;
1027
+ this.totalContentTagCount = tagsResult.Success ? tagsResult.TotalRowCount ?? 0 : 0;
1028
+ this.totalRunHistoryCount = runsResult.Success ? runsResult.TotalRowCount ?? 0 : 0;
1028
1029
  // Load Scheduled Job entities referenced by sources so cron descriptions are available
1029
1030
  await this.loadScheduledJobsForSources();
1030
1031
  this.buildNavItems();
@@ -1230,7 +1231,7 @@ let AutotaggingPipelineResourceComponent = class AutotaggingPipelineResourceComp
1230
1231
  });
1231
1232
  if (result.Success) {
1232
1233
  this.contentRunsRaw = result.Results;
1233
- this.totalRunHistoryCount = result.TotalRowCount;
1234
+ this.totalRunHistoryCount = result.TotalRowCount ?? 0;
1234
1235
  }
1235
1236
  }
1236
1237
  }
@@ -1973,13 +1974,20 @@ let AutotaggingPipelineResourceComponent = class AutotaggingPipelineResourceComp
1973
1974
  }
1974
1975
  /** Cache: EntityRecordDocument ID → RecordID */
1975
1976
  entityRecordDocCache = new Map();
1976
- /** Load ERD RecordIDs for entity-sourced content items */
1977
+ /** Load ERD RecordIDs for entity-sourced content items referenced by loaded items */
1977
1978
  async loadEntityRecordDocCache() {
1978
- if (this.entityRecordDocCache.size > 0)
1979
+ const erdIds = Array.from(new Set(this.contentItemsRaw
1980
+ .map(item => item['EntityRecordDocumentID'])
1981
+ .filter((id) => !!id)
1982
+ .map(id => NormalizeUUID(id))
1983
+ .filter(id => !this.entityRecordDocCache.has(id))));
1984
+ if (erdIds.length === 0)
1979
1985
  return;
1980
1986
  const rv = RunView.FromMetadataProvider(this.ProviderToUse);
1987
+ const filter = erdIds.map(id => `'${id.replace(/'/g, "''")}'`).join(',');
1981
1988
  const result = await rv.RunView({
1982
1989
  EntityName: 'MJ: Entity Record Documents',
1990
+ ExtraFilter: `ID IN (${filter})`,
1983
1991
  ResultType: 'simple',
1984
1992
  Fields: ['ID', 'RecordID'],
1985
1993
  });