@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":"video-studio-productions-resource.component.js","sourceRoot":"","sources":["../../../src/VideoStudio/resources/video-studio-productions-resource.component.ts","../../../src/VideoStudio/resources/video-studio-productions-resource.component.html"],"names":[],"mappings":"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","sourcesContent":["import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n OnDestroy,\n OnInit,\n ViewChild,\n inject,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { CompositeKey, LogError, RunView, UserInfo } from '@memberjunction/core';\nimport {\n BrandKitEngine,\n MJArtifactEntity,\n MJArtifactVersionEntity,\n MJBrandKitEntity,\n MJEnvironmentEntityExtended,\n ResourceData,\n} from '@memberjunction/core-entities';\nimport { EscapeSQLString, RegisterClass, UUIDsEqual } from '@memberjunction/global';\nimport {\n GraphQLDataProvider,\n GraphQLFileStorageClient,\n} from '@memberjunction/graphql-dataprovider';\nimport {\n FormatVideoTime,\n GetVideoStatusBadgeVariant,\n type VideoBadgeVariant,\n} from '@memberjunction/ng-artifacts';\nimport { ArtifactPermissionService } from '@memberjunction/ng-conversations';\nimport { BaseResourceComponent } from '@memberjunction/ng-shared';\nimport { FilterFieldConfig } from '@memberjunction/ng-ui-components';\nimport { VideoCaptionMode, VideoProductionStatus } from '@memberjunction/video-studio-core';\nimport { VSCopilotPanelComponent } from '../components/vs-copilot-panel.component';\nimport { VSProductionBriefStateSnapshot } from '../components/vs-production-brief.component';\nimport { VSStudioSlideInComponent } from '../components/vs-studio-slide-in.component';\nimport { VSStudioSlideInStateService } from '../services/vs-studio-slide-in-state.service';\nimport {\n ArchetypeCardSnapshot,\n BrandKitCardSnapshot,\n BuildProductionsAgentContext,\n CountActiveProductionPopoverFilters,\n FilterProductionCards,\n ParseArchetypeDefaultFormats,\n ProductionCardSnapshot,\n ProductionCardStatus,\n ProductionFilterState,\n ResolveVideoStudioItem,\n StudioBriefClientToolDefinition,\n} from '../video-studio-agent-context';\n\n/**\n * Primary key for the `MJ: Video Production` artifact type\n * (`metadata/artifact-types/.video-production-artifact-type.json`).\n */\nexport const VIDEO_PRODUCTION_ARTIFACT_TYPE_ID = '2E23F219-E790-4A77-9C86-CB19C711B71E';\n\nexport type VideoProductionCardItem = ProductionCardSnapshot;\n\ninterface SimpleArtifactVersionRow {\n ID: string;\n ArtifactID: string;\n VersionNumber: number;\n}\n\ninterface SimpleArtifactVersionAttributeRow {\n ArtifactVersionID: string;\n Name: string;\n Value: string | null;\n}\n\ninterface SimpleCompanyRow {\n ID: string;\n Name: string;\n}\n\nconst VALID_PRODUCTION_STATUSES: ReadonlySet<VideoProductionStatus> = new Set<VideoProductionStatus>([\n 'Briefing',\n 'Styled',\n 'Storyboarded',\n 'Approved',\n 'PreProduced',\n 'Composed',\n 'RoughCut',\n 'Reviewed',\n 'Delivered',\n 'Blocked',\n]);\n\n/**\n * Productions resource tab for the Video Studio application.\n *\n * Displays a responsive grid of `MJ: Video Production` artifacts readable by the\n * current user, enriched with extracted version attributes (`posterFileID`,\n * `status`, `archetype`, `brandKitID`, `companyID`, `durationSeconds`, `formats`, `name`) and\n * short-lived media access token poster URLs, alongside an artifact viewer detail\n * pane and URL query-param synchronization (`?production=<id>`).\n */\n@RegisterClass(BaseResourceComponent, 'VideoStudioProductionsResource')\n@Component({\n standalone: false,\n selector: 'mj-video-studio-productions-resource',\n templateUrl: './video-studio-productions-resource.component.html',\n styleUrls: ['./video-studio-productions-resource.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class VideoStudioProductionsResourceComponent\n extends BaseResourceComponent\n implements OnInit, OnDestroy\n{\n public IsLoading = false;\n public LoadError: string | null = null;\n\n public AllProductions: ProductionCardSnapshot[] = [];\n public FilteredProductions: ProductionCardSnapshot[] = [];\n public SelectedProduction: ProductionCardSnapshot | null = null;\n\n public SearchText = '';\n public ArchetypeFilter = '';\n public StatusFilter = '';\n public BrandKitFilter = '';\n public CompanyFilter = '';\n private _dateFrom = '';\n private _dateTo = '';\n public DateFromDate: Date | null = null;\n public DateToDate: Date | null = null;\n\n public get DateFrom(): string {\n return this._dateFrom;\n }\n public set DateFrom(value: string) {\n const formatted = this.formatDateFilterInput(value);\n this._dateFrom = formatted;\n this.DateFromDate = this.parseLocalDateFilter(formatted);\n }\n\n public get DateTo(): string {\n return this._dateTo;\n }\n public set DateTo(value: string) {\n const formatted = this.formatDateFilterInput(value);\n this._dateTo = formatted;\n this.DateToDate = this.parseLocalDateFilter(formatted);\n }\n\n public FilterFields: FilterFieldConfig[] = [];\n public FilterValues: Record<string, unknown> = {\n archetype: null,\n status: null,\n brandKitId: null,\n companyId: null,\n };\n\n public CanShareSelected = false;\n public CanEditSelected = false;\n public IsShareModalOpen = false;\n public ShareTargetArtifact: MJArtifactEntity | null = null;\n\n private artifactsById = new Map<string, MJArtifactEntity>();\n private brandKitsById = new Map<string, MJBrandKitEntity>();\n private companiesById = new Map<string, string>();\n\n public readonly SlideInState = inject(VSStudioSlideInStateService);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly artifactPermissionService = inject(ArtifactPermissionService);\n private slideInStateSub: Subscription | null = null;\n\n public PageContext: Record<string, unknown> = this.buildProductionsContext();\n public readonly PageTools: StudioBriefClientToolDefinition[] = this.buildProductionsClientTools();\n\n async ngOnInit(): Promise<void> {\n super.ngOnInit();\n this.slideInStateSub = this.SlideInState.State$.subscribe(() => {\n this.CopilotAppContext = this.buildCopilotAppContext();\n this.cdr.markForCheck();\n });\n await this.LoadProductions(false);\n this.NotifyLoadComplete();\n }\n\n override ngOnDestroy(): void {\n this.slideInStateSub?.unsubscribe();\n this.slideInStateSub = null;\n super.ngOnDestroy();\n }\n\n public async GetResourceDisplayName(_data: ResourceData): Promise<string> {\n return 'Productions';\n }\n\n public async GetResourceIconClass(_data: ResourceData): Promise<string> {\n return 'fa-solid fa-clapperboard';\n }\n\n public get TotalCount(): number {\n return this.AllProductions.length;\n }\n\n public get FilteredCount(): number {\n return this.FilteredProductions.length;\n }\n\n public get ActivePopoverFilterCount(): number {\n return CountActiveProductionPopoverFilters(this.currentFilterState());\n }\n\n public get SelectedArtifactEntity(): MJArtifactEntity | null {\n if (!this.SelectedProduction) {\n return null;\n }\n return this.artifactsById.get(this.SelectedProduction.ID) ?? null;\n }\n\n public async Refresh(): Promise<void> {\n await this.LoadProductions(true);\n }\n\n public async LoadProductions(forceRefresh = false): Promise<void> {\n this.IsLoading = true;\n this.LoadError = null;\n this.cdr.markForCheck();\n\n try {\n const currentUser = this.ProviderToUse?.CurrentUser;\n if (!currentUser?.ID) {\n this.LoadError = 'Unable to load video productions: no current user context.';\n this.AllProductions = [];\n this.FilteredProductions = [];\n return;\n }\n\n const brandKitEngine = BrandKitEngine.GetProviderInstance<BrandKitEngine>(\n this.ProviderToUse,\n BrandKitEngine,\n ) as BrandKitEngine;\n await brandKitEngine.Config(forceRefresh, undefined, this.ProviderToUse);\n this.brandKitsById.clear();\n this.companiesById.clear();\n for (const kit of brandKitEngine.BrandKits) {\n this.brandKitsById.set(kit.ID, kit);\n if (kit.CompanyID && kit.Company) {\n this.companiesById.set(kit.CompanyID, kit.Company);\n }\n }\n\n this.artifactPermissionService.Provider = this.ProviderToUse;\n const readableFilter = await this.artifactPermissionService.GetReadableArtifactsFilter(\n currentUser.ID,\n currentUser,\n );\n if (!readableFilter) {\n this.LoadError = 'Unable to load video productions: permission filter unavailable.';\n this.AllProductions = [];\n this.FilteredProductions = [];\n return;\n }\n\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const artifactsResult = await rv.RunView<MJArtifactEntity>({\n EntityName: 'MJ: Artifacts',\n ExtraFilter: `TypeID = '${VIDEO_PRODUCTION_ARTIFACT_TYPE_ID}' AND ${readableFilter}`,\n OrderBy: '__mj_UpdatedAt DESC',\n ResultType: 'entity_object',\n });\n\n if (!artifactsResult.Success) {\n this.LoadError = artifactsResult.ErrorMessage || 'Failed to load video productions.';\n this.AllProductions = [];\n this.FilteredProductions = [];\n return;\n }\n\n const artifacts = artifactsResult.Results ?? [];\n this.artifactsById.clear();\n for (const artifact of artifacts) {\n this.artifactsById.set(artifact.ID, artifact);\n }\n\n const versionByArtifactId = new Map<string, SimpleArtifactVersionRow>();\n const attrsByVersionId = new Map<string, Map<string, string>>();\n if (artifacts.length > 0) {\n const quotedIds = artifacts\n .map((a) => `'${EscapeSQLString(a.ID)}'`)\n .join(', ');\n const latestVersionsSubquery = `SELECT v.ID FROM [__mj].[vwArtifactVersions] v INNER JOIN (SELECT ArtifactID, MAX(VersionNumber) AS MaxVer FROM [__mj].[vwArtifactVersions] WHERE ArtifactID IN (${quotedIds}) GROUP BY ArtifactID) latest ON v.ArtifactID = latest.ArtifactID AND v.VersionNumber = latest.MaxVer`;\n const [versionsResult, attributesResult, companiesResult] = await rv.RunViews([\n {\n EntityName: 'MJ: Artifact Versions',\n ExtraFilter: `ID IN (${latestVersionsSubquery})`,\n Fields: ['ID', 'ArtifactID', 'VersionNumber'],\n ResultType: 'simple',\n },\n {\n EntityName: 'MJ: Artifact Version Attributes',\n ExtraFilter: `ArtifactVersionID IN (${latestVersionsSubquery})`,\n Fields: ['ArtifactVersionID', 'Name', 'Value'],\n ResultType: 'simple',\n },\n {\n EntityName: 'MJ: Companies',\n Fields: ['ID', 'Name'],\n ResultType: 'simple',\n },\n ]);\n\n if (\n !versionsResult?.Success ||\n !attributesResult?.Success ||\n (companiesResult && !companiesResult.Success)\n ) {\n const errMessage =\n (!versionsResult?.Success ? versionsResult?.ErrorMessage : undefined) ||\n (!attributesResult?.Success ? attributesResult?.ErrorMessage : undefined) ||\n (companiesResult && !companiesResult.Success ? companiesResult.ErrorMessage : undefined) ||\n 'Failed to load version or attribute details.';\n LogError(errMessage);\n this.LoadError = `Couldn't load production details: ${errMessage}`;\n this.AllProductions = [];\n this.FilteredProductions = [];\n return;\n }\n\n if (Array.isArray(versionsResult.Results)) {\n for (const row of versionsResult.Results as SimpleArtifactVersionRow[]) {\n if (row?.ID && row?.ArtifactID) {\n versionByArtifactId.set(row.ArtifactID.toLowerCase(), row);\n }\n }\n }\n\n if (Array.isArray(attributesResult.Results)) {\n for (const row of attributesResult.Results as SimpleArtifactVersionAttributeRow[]) {\n if (!row?.ArtifactVersionID || !row.Name || row.Value == null) {\n continue;\n }\n const vKey = row.ArtifactVersionID.toLowerCase();\n let attrMap = attrsByVersionId.get(vKey);\n if (!attrMap) {\n attrMap = new Map<string, string>();\n attrsByVersionId.set(vKey, attrMap);\n }\n attrMap.set(row.Name, String(row.Value));\n }\n }\n\n if (companiesResult && Array.isArray(companiesResult.Results)) {\n for (const row of companiesResult.Results as SimpleCompanyRow[]) {\n if (row?.ID && row?.Name) {\n this.companiesById.set(row.ID, row.Name);\n }\n }\n }\n }\n\n this.AllProductions = this.buildCardItems(\n artifacts,\n versionByArtifactId,\n attrsByVersionId,\n );\n this.rebuildFilterFieldOptions();\n this.applyFiltersAndSync();\n await this.restoreSelectionFromQueryParams();\n await this.mintPosterUrls(this.AllProductions);\n } catch (err: unknown) {\n const msg = err instanceof Error ? err.message : String(err);\n LogError(msg);\n this.LoadError = msg;\n } finally {\n this.IsLoading = false;\n this.syncAgentContext();\n this.cdr.markForCheck();\n }\n }\n\n public OnSearchChange(value: string): void {\n this.SearchText = value;\n this.applyFiltersAndSync();\n }\n\n public OnFilterValuesChange(values: Record<string, unknown>): void {\n this.FilterValues = { ...values };\n this.ArchetypeFilter = typeof values['archetype'] === 'string' ? values['archetype'] : '';\n this.StatusFilter = typeof values['status'] === 'string' ? values['status'] : '';\n this.BrandKitFilter = typeof values['brandKitId'] === 'string' ? values['brandKitId'] : '';\n this.CompanyFilter = typeof values['companyId'] === 'string' ? values['companyId'] : '';\n this.applyFiltersAndSync();\n }\n\n public OnDateFromChange(value: Date | string | null): void {\n this.DateFrom = this.formatDateFilterInput(value);\n this.applyFiltersAndSync();\n }\n\n public OnDateToChange(value: Date | string | null): void {\n this.DateTo = this.formatDateFilterInput(value);\n this.applyFiltersAndSync();\n }\n\n private formatDateFilterInput(value: Date | string | null | undefined): string {\n if (!value) {\n return '';\n }\n if (typeof value === 'string') {\n const parsed = this.parseLocalDateFilter(value.trim());\n if (parsed) {\n return this.formatDateFilterInput(parsed);\n }\n return value.trim();\n }\n if (value instanceof Date && !Number.isNaN(value.getTime())) {\n const year = value.getFullYear();\n const month = String(value.getMonth() + 1).padStart(2, '0');\n const day = String(value.getDate()).padStart(2, '0');\n return `${year}-${month}-${day}`;\n }\n return '';\n }\n\n private parseLocalDateFilter(value: string | null | undefined): Date | null {\n const trimmed = (value ?? '').trim();\n const match = /^(\\d{4})-(\\d{2})-(\\d{2})$/.exec(trimmed);\n if (!match) {\n return null;\n }\n const year = Number(match[1]);\n const month = Number(match[2]);\n const day = Number(match[3]);\n const date = new Date(year, month - 1, day);\n if (\n Number.isNaN(date.getTime()) ||\n date.getFullYear() !== year ||\n date.getMonth() !== month - 1 ||\n date.getDate() !== day\n ) {\n return null;\n }\n return date;\n }\n\n public ClearAllFilters(): void {\n this.ArchetypeFilter = '';\n this.StatusFilter = '';\n this.BrandKitFilter = '';\n this.CompanyFilter = '';\n this.DateFrom = '';\n this.DateTo = '';\n this.FilterValues = {\n archetype: null,\n status: null,\n brandKitId: null,\n companyId: null,\n };\n this.applyFiltersAndSync();\n }\n\n @ViewChild('studioSlideIn')\n public StudioSlideIn?: VSStudioSlideInComponent;\n\n public get CopilotPanel(): VSCopilotPanelComponent | undefined {\n return this.StudioSlideIn?.CopilotPanel;\n }\n\n public SelectedProductionConversationId: string | null = null;\n public SelectedVersionEntity: MJArtifactVersionEntity | null = null;\n public IsLoadingSelectedVersion = false;\n public VersionLoadError: string | null = null;\n public IsFullViewerMode = false;\n public ShowGridInFocusMode = false;\n\n public get IsProductionFocusMode(): boolean {\n return this.SelectedProduction !== null && !this.ShowGridInFocusMode;\n }\n\n public get IsIterateFocusMode(): boolean {\n return this.IsProductionFocusMode;\n }\n\n public ShowAllProductions(): void {\n this.CloseDetailPane();\n }\n\n public OpenFullViewer(): void {\n this.IsFullViewerMode = true;\n this.cdr.markForCheck();\n }\n\n public BackToOverview(): void {\n this.IsFullViewerMode = false;\n this.cdr.markForCheck();\n }\n\n public get IsCopilotSlideInOpen(): boolean {\n return this.SlideInState.IsOpen;\n }\n public set IsCopilotSlideInOpen(value: boolean) {\n if (value) {\n this.SlideInState.Reopen();\n } else {\n this.SlideInState.Close();\n }\n }\n\n public get SlideInConversationId(): string | null {\n return this.SlideInState.ConversationId;\n }\n public set SlideInConversationId(value: string | null) {\n this.SlideInState.SetConversationId(value);\n }\n\n public get SlideInPendingArtifactId(): string | null {\n return this.SlideInState.PendingArtifactId;\n }\n public set SlideInPendingArtifactId(value: string | null) {\n this.SlideInState.PendingArtifactId = value;\n }\n\n public get SlideInPendingArtifactVersionNumber(): number | null {\n return this.SlideInState.PendingArtifactVersionNumber;\n }\n public set SlideInPendingArtifactVersionNumber(value: number | null) {\n this.SlideInState.PendingArtifactVersionNumber = value;\n }\n\n public get BriefSelectedArchetype(): ArchetypeCardSnapshot | null {\n return this.SlideInState.BriefSelectedArchetype;\n }\n public set BriefSelectedArchetype(value: ArchetypeCardSnapshot | null) {\n this.SlideInState.BriefSelectedArchetype = value;\n }\n\n public get BriefSelectedBrandKit(): BrandKitCardSnapshot | null {\n return this.SlideInState.BriefSelectedBrandKit;\n }\n public set BriefSelectedBrandKit(value: BrandKitCardSnapshot | null) {\n this.SlideInState.BriefSelectedBrandKit = value;\n }\n\n public get BriefSelectedFormats(): string[] {\n return this.SlideInState.BriefSelectedFormats;\n }\n public set BriefSelectedFormats(value: string[]) {\n this.SlideInState.BriefSelectedFormats = value;\n }\n\n public get BriefDurationSeconds(): number {\n return this.SlideInState.BriefDurationSeconds;\n }\n public set BriefDurationSeconds(value: number) {\n this.SlideInState.BriefDurationSeconds = value;\n }\n\n public get BriefTopic(): string {\n return this.SlideInState.BriefTopic;\n }\n public set BriefTopic(value: string) {\n this.SlideInState.BriefTopic = value;\n }\n\n public get NarrationEnabled(): boolean {\n return this.SlideInState.NarrationEnabled;\n }\n public set NarrationEnabled(value: boolean) {\n this.SlideInState.SetNarrationEnabled(value);\n }\n\n public get CaptionsMode(): VideoCaptionMode {\n return this.SlideInState.CaptionsMode;\n }\n public set CaptionsMode(value: VideoCaptionMode) {\n this.SlideInState.SetCaptionsMode(value);\n }\n\n public CopilotAppContext: Record<string, unknown> = this.buildCopilotAppContext();\n\n public get CurrentUser(): UserInfo | null {\n return this.ProviderToUse?.CurrentUser ?? null;\n }\n\n public get EnvironmentId(): string {\n return (\n (this.Data?.Configuration?.['environmentId'] as string | undefined) ||\n MJEnvironmentEntityExtended.DefaultEnvironmentID\n );\n }\n\n public get ApplicationId(): string {\n return (this.Data?.Configuration?.['applicationId'] as string | undefined) ?? '';\n }\n\n /**\n * Opens the single right slide-in on a brand-new conversation (`SlideInConversationId = null`),\n * displaying `<vs-production-brief>` in the chat area's `emptyState` slot.\n */\n public OpenNewProductionCopilot(): void {\n this.ShowGridInFocusMode = false;\n this.SlideInState.OpenNewProduction();\n this.CopilotAppContext = this.buildCopilotAppContext();\n this.syncAgentContext();\n this.cdr.markForCheck();\n }\n\n /**\n * Reopens the right slide-in from the right-edge strip, preserving any active\n * conversation or showing the brief if none is active.\n */\n public ReopenCopilotSlideIn(): void {\n this.ShowGridInFocusMode = false;\n this.SlideInState.Reopen();\n this.CopilotAppContext = this.buildCopilotAppContext();\n this.syncAgentContext();\n this.cdr.markForCheck();\n }\n\n public ToggleCopilotSlideIn(): void {\n if (this.IsCopilotSlideInOpen) {\n this.CloseCopilotSlideIn();\n } else {\n this.OpenNewProductionCopilot();\n }\n }\n\n public CloseCopilotSlideIn(): void {\n this.ShowGridInFocusMode = false;\n this.SlideInState.Close();\n this.syncAgentContext();\n this.cdr.markForCheck();\n }\n\n public OnSlideInOpenChange(isOpen: boolean): void {\n if (!isOpen) {\n this.ShowGridInFocusMode = false;\n }\n this.CopilotAppContext = this.buildCopilotAppContext();\n this.syncAgentContext();\n this.cdr.markForCheck();\n }\n\n public ToggleNarrationEnabled(): void {\n this.SlideInState.SetNarrationEnabled(!this.SlideInState.NarrationEnabled);\n this.CopilotAppContext = this.buildCopilotAppContext();\n this.cdr.markForCheck();\n }\n\n public SetCaptionsMode(mode: VideoCaptionMode): void {\n this.SlideInState.SetCaptionsMode(mode);\n this.CopilotAppContext = this.buildCopilotAppContext();\n this.cdr.markForCheck();\n }\n\n public OnBriefStateChange(snapshot: VSProductionBriefStateSnapshot): void {\n this.SlideInState.ApplyBriefSnapshot(snapshot);\n this.CopilotAppContext = this.buildCopilotAppContext();\n this.syncAgentContext();\n this.cdr.markForCheck();\n }\n\n public OnSlideInConversationCreated(event: { conversation: { ID: string } }): void {\n this.SlideInState.SetConversationId(event.conversation.ID);\n this.syncAgentContext();\n this.cdr.markForCheck();\n }\n\n public OnSlideInPendingArtifactConsumed(): void {\n this.SlideInState.ClearPendingArtifact();\n this.suppressDuplicateSlideInArtifactPanel();\n this.cdr.markForCheck();\n }\n\n private suppressDuplicateSlideInArtifactPanel(): void {\n const apply = () => {\n const chatArea = (\n this.CopilotPanel as unknown as {\n chatArea?: Record<string, unknown> & { cdr?: { markForCheck: () => void } };\n }\n )?.chatArea;\n if (!chatArea) {\n return;\n }\n const host = this;\n Object.defineProperty(chatArea, 'ShowArtifactPanel', {\n get(this: Record<string, unknown>) {\n return host.SelectedProduction ? false : Boolean(this['_vsShowArtifactPanel']);\n },\n set(this: Record<string, unknown>, value: boolean) {\n this['_vsShowArtifactPanel'] = value;\n },\n configurable: true,\n });\n chatArea.cdr?.markForCheck();\n };\n apply();\n queueMicrotask(apply);\n setTimeout(apply, 0);\n }\n\n public get FallbackBrandKitId(): string | null {\n return this.BrandKitFilter || (this.SelectedProduction?.BrandKitID ?? null);\n }\n\n private buildCopilotAppContext(): Record<string, unknown> {\n return this.SlideInState.BuildCombinedAppContext(\n this.buildProductionsContext(),\n this.FallbackBrandKitId,\n );\n }\n\n public async SelectProduction(\n item: ProductionCardSnapshot | null,\n updateUrl = true,\n ): Promise<void> {\n this.ShowGridInFocusMode = false;\n this.SelectedProduction = item;\n this.IsFullViewerMode = false;\n this.SelectedVersionEntity = null;\n this.VersionLoadError = null;\n this.IsLoadingSelectedVersion = Boolean(item?.VersionID);\n this.CanShareSelected = false;\n this.CanEditSelected = false;\n this.SelectedProductionConversationId = null;\n\n if (updateUrl) {\n this.UpdateQueryParams({ production: item ? item.ID : null });\n }\n\n if (item && this.ProviderToUse?.CurrentUser) {\n try {\n this.artifactPermissionService.Provider = this.ProviderToUse;\n const perms = await this.artifactPermissionService.GetUserPermissions(\n item.ID,\n this.ProviderToUse.CurrentUser,\n );\n if (this.SelectedProduction !== item) {\n return;\n }\n this.CanShareSelected = perms.canShare;\n this.CanEditSelected = perms.canEdit;\n } catch (err: unknown) {\n LogError(err instanceof Error ? err.message : String(err));\n if (this.SelectedProduction !== item) {\n return;\n }\n this.CanShareSelected = false;\n this.CanEditSelected = false;\n }\n }\n\n if (item) {\n const [convId] = await Promise.all([\n this.resolveProductionConversationId(item.ID),\n this.loadSelectedProductionVersion(item),\n ]);\n if (this.SelectedProduction !== item) {\n return;\n }\n this.SelectedProductionConversationId = convId;\n }\n\n this.CopilotAppContext = this.buildCopilotAppContext();\n this.syncAgentContext();\n this.cdr.markForCheck();\n }\n\n public async RetryLoadSelectedProductionVersion(): Promise<void> {\n if (!this.SelectedProduction) {\n return;\n }\n await this.loadSelectedProductionVersion(this.SelectedProduction);\n }\n\n private async loadSelectedProductionVersion(\n item: ProductionCardSnapshot,\n ): Promise<void> {\n const versionId = (item.VersionID ?? '').trim();\n if (!versionId) {\n if (this.SelectedProduction === item) {\n this.IsLoadingSelectedVersion = false;\n this.SelectedVersionEntity = null;\n this.VersionLoadError = \"This production doesn't have a saved version yet.\";\n this.cdr.markForCheck();\n }\n return;\n }\n\n this.IsLoadingSelectedVersion = true;\n this.VersionLoadError = null;\n this.SelectedVersionEntity = null;\n this.cdr.markForCheck();\n\n try {\n const versionEntity =\n await this.ProviderToUse.GetEntityObject<MJArtifactVersionEntity>(\n 'MJ: Artifact Versions',\n this.ProviderToUse.CurrentUser,\n );\n const loaded = await versionEntity.Load(versionId);\n if (this.SelectedProduction !== item) {\n return;\n }\n if (!loaded) {\n const detail = versionEntity.LatestResult?.CompleteMessage?.trim();\n this.VersionLoadError = detail\n ? `Couldn't load production version: ${detail}`\n : \"Couldn't load this production version.\";\n this.SelectedVersionEntity = null;\n return;\n }\n this.SelectedVersionEntity = versionEntity;\n this.VersionLoadError = null;\n } catch (err: unknown) {\n const message = err instanceof Error ? err.message : String(err);\n LogError(message);\n if (this.SelectedProduction !== item) {\n return;\n }\n this.VersionLoadError = `Couldn't load production version: ${message}`;\n this.SelectedVersionEntity = null;\n } finally {\n if (this.SelectedProduction === item) {\n this.IsLoadingSelectedVersion = false;\n this.cdr.markForCheck();\n }\n }\n }\n\n /**\n * Opens the single right slide-in on the selected production's existing conversation\n * with the production artifact attached for iteration.\n */\n public StartIterate(): void {\n if (!this.SelectedProduction || !this.SelectedProductionConversationId) {\n return;\n }\n this.ShowGridInFocusMode = false;\n this.SlideInState.OpenIterate(\n this.SelectedProductionConversationId,\n this.SelectedProduction.ID,\n this.SelectedProduction.VersionNumber,\n );\n this.suppressDuplicateSlideInArtifactPanel();\n this.syncAgentContext();\n this.cdr.markForCheck();\n }\n\n private async resolveProductionConversationId(\n artifactId: string,\n ): Promise<string | null> {\n const trimmedId = (artifactId ?? '').trim();\n if (!trimmedId) {\n return null;\n }\n try {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const escapedId = EscapeSQLString(trimmedId);\n const detailArtifactResult = await rv.RunView<{\n ConversationDetailID?: string | null;\n }>({\n EntityName: 'MJ: Conversation Detail Artifacts',\n ExtraFilter: `ArtifactVersionID IN (SELECT ID FROM [__mj].[vwArtifactVersions] WHERE ArtifactID = '${escapedId}') AND Direction = 'Output'`,\n OrderBy: '__mj_CreatedAt DESC',\n Fields: ['ConversationDetailID'],\n MaxRows: 1,\n ResultType: 'simple',\n });\n\n const detailId =\n detailArtifactResult.Success &&\n Array.isArray(detailArtifactResult.Results) &&\n detailArtifactResult.Results.length > 0\n ? (detailArtifactResult.Results[0].ConversationDetailID ?? '').trim()\n : '';\n if (!detailId) {\n return null;\n }\n\n const escapedDetailId = EscapeSQLString(detailId);\n const detailResult = await rv.RunView<{ ConversationID?: string | null }>({\n EntityName: 'MJ: Conversation Details',\n ExtraFilter: `ID = '${escapedDetailId}'`,\n Fields: ['ConversationID'],\n MaxRows: 1,\n ResultType: 'simple',\n });\n\n const conversationId =\n detailResult.Success &&\n Array.isArray(detailResult.Results) &&\n detailResult.Results.length > 0\n ? (detailResult.Results[0].ConversationID ?? '').trim()\n : '';\n\n return conversationId.length > 0 ? conversationId : null;\n } catch (err: unknown) {\n LogError(err instanceof Error ? err.message : String(err));\n return null;\n }\n }\n\n public CloseDetailPane(): void {\n void this.SelectProduction(null, true);\n }\n\n public OpenShareModal(artifactIdOrEntity?: string | MJArtifactEntity): void {\n if (typeof artifactIdOrEntity === 'string') {\n this.ShareTargetArtifact =\n this.artifactsById.get(artifactIdOrEntity) ?? this.SelectedArtifactEntity;\n } else {\n this.ShareTargetArtifact = artifactIdOrEntity ?? this.SelectedArtifactEntity;\n }\n if (this.ShareTargetArtifact) {\n this.IsShareModalOpen = true;\n this.cdr.markForCheck();\n }\n }\n\n public CloseShareModal(): void {\n this.IsShareModalOpen = false;\n this.ShareTargetArtifact = null;\n this.cdr.markForCheck();\n }\n\n public async OnShareSaved(): Promise<void> {\n this.CloseShareModal();\n await this.Refresh();\n }\n\n public OnNavigateToArtifactLink(event: {\n type: 'conversation' | 'collection';\n id: string;\n }): void {\n const entityName =\n event.type === 'conversation' ? 'MJ: Conversations' : 'MJ: Collections';\n this.navigationService.OpenEntityRecord(\n entityName,\n CompositeKey.FromID(event.id),\n );\n }\n\n public OpenBrandKitRecord(brandKitId: string | null, event?: Event): void {\n event?.stopPropagation();\n if (!brandKitId) {\n return;\n }\n this.navigationService.OpenEntityRecord(\n 'MJ: Brand Kits',\n CompositeKey.FromID(brandKitId),\n );\n }\n\n public FormatDuration(seconds: number | null): string {\n if (seconds == null || !Number.isFinite(seconds) || seconds < 0) {\n return '—';\n }\n return FormatVideoTime(seconds);\n }\n\n public ParseFormats(aspectRatio: string): string[] {\n if (!aspectRatio || !aspectRatio.trim()) {\n return [];\n }\n return ParseArchetypeDefaultFormats(aspectRatio);\n }\n\n public ResetFiltersAndSearch(): void {\n this.ClearAllFilters();\n this.OnSearchChange('');\n }\n\n public StatusBadgeVariant(status: ProductionCardStatus | string): VideoBadgeVariant {\n return GetVideoStatusBadgeVariant(status);\n }\n\n protected override OnQueryParamsChanged(\n params: Record<string, string>,\n _source: 'popstate' | 'deeplink',\n ): void {\n const targetId = params['production'] ?? null;\n if (!targetId) {\n if (this.SelectedProduction) {\n void this.SelectProduction(null, false);\n }\n return;\n }\n\n const resolution = ResolveVideoStudioItem(targetId, this.AllProductions, 'production');\n if (\n resolution.Ok &&\n (!this.SelectedProduction || !UUIDsEqual(this.SelectedProduction.ID, resolution.Item.ID))\n ) {\n void this.SelectProduction(resolution.Item, false);\n }\n }\n\n // ============================================================================\n // AI Agent Client Tools\n //\n // SAFETY BOUNDARY: The Productions surface exposes ONLY read, search, filter,\n // select/open-for-viewing, refresh, and in-memory brief form-fill tools\n // (`SelectStudioArchetype`, `SelectStudioBrandKit`, `SetStudioFormats`,\n // `SetStudioTopic`) to the AI agent. No create, edit, clone, share, or delete\n // tools are exposed (`ArtifactShareModal` and `StartProduction` are strictly\n // user-confirm-only).\n // ============================================================================\n\n private buildProductionsClientTools(): StudioBriefClientToolDefinition[] {\n // SAFETY BOUNDARY: Read-only navigation/filter/select/refresh tools only; brief tools are registered by vs-studio-slide-in.\n return [\n {\n Name: 'SearchProductions',\n Description:\n 'Search video productions by title, description, archetype, brand kit, company, or status. Read-only filter operation.',\n ParameterSchema: {\n type: 'object',\n properties: { query: { type: 'string' } },\n required: ['query'],\n },\n Handler: async (params: Record<string, unknown>) => {\n // SAFETY BOUNDARY: Only updates local search filter state.\n const query = typeof params?.['query'] === 'string' ? params['query'] : '';\n this.OnSearchChange(query);\n return { Success: true };\n },\n },\n {\n Name: 'FilterProductions',\n Description:\n 'Filter video productions by archetype, brandKitId, companyId, status, fromDate (YYYY-MM-DD), or toDate (YYYY-MM-DD). Read-only filter operation.',\n ParameterSchema: {\n type: 'object',\n properties: {\n archetype: { type: 'string' },\n brandKitId: { type: 'string' },\n companyId: { type: 'string' },\n status: { type: 'string' },\n fromDate: { type: 'string' },\n toDate: { type: 'string' },\n },\n },\n Handler: async (params: Record<string, unknown>) => {\n // SAFETY BOUNDARY: Only updates local filter state; never mutates artifacts.\n if (typeof params?.['archetype'] === 'string') {\n this.ArchetypeFilter = params['archetype'] === 'all' ? '' : params['archetype'];\n this.FilterValues['archetype'] = this.ArchetypeFilter || null;\n }\n if (typeof params?.['brandKitId'] === 'string') {\n this.BrandKitFilter = params['brandKitId'] === 'all' ? '' : params['brandKitId'];\n this.FilterValues['brandKitId'] = this.BrandKitFilter || null;\n }\n if (typeof params?.['companyId'] === 'string') {\n this.CompanyFilter = params['companyId'] === 'all' ? '' : params['companyId'];\n this.FilterValues['companyId'] = this.CompanyFilter || null;\n }\n if (typeof params?.['status'] === 'string') {\n this.StatusFilter = params['status'] === 'all' ? '' : params['status'];\n this.FilterValues['status'] = this.StatusFilter || null;\n }\n if (typeof params?.['fromDate'] === 'string') {\n this.DateFrom = params['fromDate'];\n }\n if (typeof params?.['toDate'] === 'string') {\n this.DateTo = params['toDate'];\n }\n this.applyFiltersAndSync();\n return { Success: true };\n },\n },\n {\n Name: 'ClearProductionFilters',\n Description: 'Reset all search and popover filters on the Productions surface.',\n ParameterSchema: { type: 'object', properties: {} },\n Handler: async () => {\n // SAFETY BOUNDARY: Read-only filter reset.\n this.SearchText = '';\n this.ClearAllFilters();\n return { Success: true };\n },\n },\n {\n Name: 'SelectProduction',\n Description:\n 'Select and open a video production in the viewer panel by its ID or Name. Read-only viewing operation.',\n ParameterSchema: {\n type: 'object',\n properties: { production: { type: 'string' } },\n required: ['production'],\n },\n Handler: async (params: Record<string, unknown>) => {\n // SAFETY BOUNDARY: Opens the production in the read-only viewer panel only.\n const resolved = ResolveVideoStudioItem(\n params?.['production'],\n this.AllProductions,\n 'production',\n );\n if (!resolved.Ok) {\n return { Success: false, ErrorMessage: resolved.Error };\n }\n await this.SelectProduction(resolved.Item, true);\n return { Success: true };\n },\n },\n {\n Name: 'RefreshProductions',\n Description: 'Reload the Video Productions gallery from the server. Read-only operation.',\n ParameterSchema: { type: 'object', properties: {} },\n Handler: async () => {\n // SAFETY BOUNDARY: Read-only data reload.\n await this.Refresh();\n return { Success: true };\n },\n },\n ];\n }\n\n private async restoreSelectionFromQueryParams(): Promise<void> {\n const params = this.GetQueryParams();\n const targetId = params['production'];\n if (!targetId) {\n return;\n }\n const resolution = ResolveVideoStudioItem(targetId, this.AllProductions, 'production');\n if (resolution.Ok) {\n await this.SelectProduction(resolution.Item, false);\n }\n }\n\n private buildCardItems(\n artifacts: MJArtifactEntity[],\n versionByArtifactId: Map<string, SimpleArtifactVersionRow>,\n attrsByVersionId: Map<string, Map<string, string>>,\n ): ProductionCardSnapshot[] {\n return artifacts.map((artifact) => {\n const versionRow = versionByArtifactId.get(artifact.ID.toLowerCase()) ?? null;\n const attrMap =\n (versionRow ? attrsByVersionId.get(versionRow.ID.toLowerCase()) : undefined) ??\n new Map<string, string>();\n\n const statusAttr = this.cleanAttributeValue(attrMap.get('status'));\n const status: ProductionCardStatus =\n statusAttr && VALID_PRODUCTION_STATUSES.has(statusAttr as VideoProductionStatus)\n ? (statusAttr as VideoProductionStatus)\n : 'Unknown';\n const archetype = this.cleanAttributeValue(attrMap.get('archetype')) || '';\n const rawPosterFileId = this.cleanAttributeValue(attrMap.get('posterFileID'));\n const posterFileId =\n rawPosterFileId && !rawPosterFileId.startsWith('inline:') ? rawPosterFileId : null;\n const brandKitId = this.cleanAttributeValue(attrMap.get('brandKitID'));\n const companyId = this.cleanAttributeValue(attrMap.get('companyID'));\n const durationRaw = this.cleanAttributeValue(attrMap.get('durationSeconds'));\n const durationParsed = durationRaw ? Number(durationRaw) : NaN;\n const format =\n this.cleanAttributeValue(attrMap.get('format')) ??\n this.cleanAttributeValue(attrMap.get('formats'));\n const extractedTitle =\n this.cleanAttributeValue(attrMap.get('title')) ??\n this.cleanAttributeValue(attrMap.get('name'));\n\n const brandKit = this.findBrandKit(brandKitId);\n const resolvedCompanyId = companyId ?? brandKit?.CompanyID ?? null;\n const resolvedCompanyName = this.findCompanyName(resolvedCompanyId);\n const rawUpdated = artifact.__mj_UpdatedAt ?? artifact.__mj_CreatedAt;\n const updatedDate =\n rawUpdated instanceof Date && !Number.isNaN(rawUpdated.getTime())\n ? rawUpdated\n : typeof rawUpdated === 'string' && !Number.isNaN(Date.parse(rawUpdated))\n ? new Date(rawUpdated)\n : new Date(0);\n\n return {\n ID: artifact.ID,\n Name: extractedTitle || artifact.Name || 'Untitled Production',\n Description: artifact.Description ?? '',\n VersionID: versionRow?.ID ?? null,\n VersionNumber: typeof versionRow?.VersionNumber === 'number' ? versionRow.VersionNumber : 0,\n PosterFileID: posterFileId,\n PosterUrl: null,\n Status: status,\n Archetype: archetype,\n BrandKitID: brandKit?.ID ?? brandKitId,\n BrandKitName: brandKit?.Name ?? null,\n CompanyID: resolvedCompanyId,\n CompanyName: resolvedCompanyName,\n DurationSeconds: Number.isFinite(durationParsed) ? durationParsed : null,\n AspectRatio: format,\n SceneCount: null,\n UpdatedAt: updatedDate,\n };\n });\n }\n\n private cleanAttributeValue(raw: string | undefined): string | null {\n if (!raw) {\n return null;\n }\n const trimmed = raw.trim();\n if (!trimmed || trimmed === 'null' || trimmed === 'undefined') {\n return null;\n }\n if (\n (trimmed.startsWith('\"') && trimmed.endsWith('\"')) ||\n (trimmed.startsWith(\"'\") && trimmed.endsWith(\"'\"))\n ) {\n const unquoted = trimmed.slice(1, -1).trim();\n return unquoted.length > 0 ? unquoted : null;\n }\n return trimmed;\n }\n\n private findBrandKit(brandKitId: string | null): MJBrandKitEntity | null {\n if (!brandKitId) {\n return null;\n }\n const direct = this.brandKitsById.get(brandKitId);\n if (direct) {\n return direct;\n }\n for (const kit of this.brandKitsById.values()) {\n if (UUIDsEqual(kit.ID, brandKitId)) {\n return kit;\n }\n }\n return null;\n }\n\n private findCompanyName(companyId: string | null): string | null {\n if (!companyId) {\n return null;\n }\n const direct = this.companiesById.get(companyId);\n if (direct) {\n return direct;\n }\n for (const [id, name] of this.companiesById.entries()) {\n if (UUIDsEqual(id, companyId)) {\n return name;\n }\n }\n return null;\n }\n\n private async mintPosterUrls(items: ProductionCardSnapshot[]): Promise<void> {\n if (!(this.ProviderToUse instanceof GraphQLDataProvider)) {\n return;\n }\n\n const client = new GraphQLFileStorageClient(this.ProviderToUse);\n const itemsWithPosters = items.filter(\n (item) => Boolean(item.PosterFileID && !item.PosterFileID.startsWith('inline:')),\n );\n if (itemsWithPosters.length === 0) {\n return;\n }\n\n await Promise.all(\n itemsWithPosters.map(async (item) => {\n if (!item.PosterFileID || item.PosterFileID.startsWith('inline:')) {\n return;\n }\n try {\n const token = await client.CreateMediaAccessToken(item.PosterFileID);\n if (token.Success && token.Url) {\n item.PosterUrl = token.Url;\n }\n } catch (err: unknown) {\n LogError(err instanceof Error ? err.message : String(err));\n }\n }),\n );\n this.cdr.markForCheck();\n }\n\n private rebuildFilterFieldOptions(): void {\n const archetypes = new Set<string>();\n const statuses = new Set<string>();\n const brandKitOptions = new Map<string, string>();\n const companyOptions = new Map<string, string>();\n\n for (const kit of this.brandKitsById.values()) {\n brandKitOptions.set(kit.ID, kit.Name);\n if (kit.CompanyID) {\n companyOptions.set(\n kit.CompanyID,\n this.findCompanyName(kit.CompanyID) || kit.Company || kit.CompanyID,\n );\n }\n }\n\n for (const item of this.AllProductions) {\n if (item.Archetype) {\n archetypes.add(item.Archetype);\n }\n if (item.Status) {\n statuses.add(item.Status);\n }\n if (item.BrandKitID) {\n brandKitOptions.set(item.BrandKitID, item.BrandKitName || item.BrandKitID);\n }\n if (item.CompanyID) {\n companyOptions.set(\n item.CompanyID,\n this.findCompanyName(item.CompanyID) || item.CompanyName || item.CompanyID,\n );\n }\n }\n\n this.FilterFields = [\n {\n key: 'archetype',\n label: 'Archetype',\n type: 'dropdown',\n options: Array.from(archetypes)\n .sort((a, b) => a.localeCompare(b))\n .map((value) => ({ value, text: value })),\n },\n {\n key: 'status',\n label: 'Status',\n type: 'dropdown',\n options: Array.from(statuses)\n .sort((a, b) => a.localeCompare(b))\n .map((value) => ({ value, text: value })),\n },\n {\n key: 'brandKitId',\n label: 'Brand Kit',\n type: 'dropdown',\n options: Array.from(brandKitOptions.entries())\n .sort((a, b) => a[1].localeCompare(b[1]))\n .map(([value, text]) => ({ value, text })),\n },\n {\n key: 'companyId',\n label: 'Company',\n type: 'dropdown',\n options: Array.from(companyOptions.entries())\n .sort((a, b) => a[1].localeCompare(b[1]))\n .map(([value, text]) => ({ value, text })),\n },\n ];\n }\n\n private currentFilterState(): ProductionFilterState {\n return {\n SearchQuery: this.SearchText,\n Archetype: this.ArchetypeFilter,\n Status: this.StatusFilter,\n BrandKitID: this.BrandKitFilter,\n CompanyID: this.CompanyFilter,\n FromDate: this.DateFrom,\n ToDate: this.DateTo,\n };\n }\n\n private applyFiltersAndSync(): void {\n this.FilteredProductions = FilterProductionCards(\n this.AllProductions,\n this.currentFilterState(),\n );\n this.syncAgentContext();\n this.cdr.markForCheck();\n }\n\n private buildProductionsContext(): Record<string, unknown> {\n const availableArchetypes = Array.from(\n new Set(this.AllProductions.map((p) => p.Archetype).filter((a) => Boolean(a))),\n );\n const availableBrandKitNames = Array.from(\n new Set(\n Array.from(this.brandKitsById.values())\n .map((k) => k.Name)\n .filter((n) => Boolean(n)),\n ),\n );\n const availableCompanyNames = Array.from(\n new Set(\n this.AllProductions.map((p) => p.CompanyName ?? '').filter((c) => Boolean(c)),\n ),\n );\n\n const activeBrandKit = this.findBrandKit(this.BrandKitFilter || null);\n const activeCompanyName =\n this.findCompanyName(this.CompanyFilter || null) ??\n this.AllProductions.find(\n (p) => p.CompanyID && UUIDsEqual(p.CompanyID, this.CompanyFilter),\n )?.CompanyName ??\n null;\n\n return BuildProductionsAgentContext({\n TotalCount: this.AllProductions.length,\n FilteredCards: this.FilteredProductions,\n Filters: this.currentFilterState(),\n BrandKitFilterName: activeBrandKit?.Name ?? null,\n CompanyFilterName: activeCompanyName,\n SelectedProduction: this.SelectedProduction,\n AvailableArchetypes: availableArchetypes,\n AvailableBrandKitNames: availableBrandKitNames,\n AvailableCompanyNames: availableCompanyNames,\n IsLoading: this.IsLoading,\n });\n }\n\n private syncAgentContext(): void {\n this.PageContext = this.buildProductionsContext();\n this.CopilotAppContext = this.buildCopilotAppContext();\n this.navigationService.SetAgentContext(this, this.PageContext);\n }\n}\n\n","<div class=\"vs-resource-shell\" [class.vs-resource-shell--slidein-open]=\"IsCopilotSlideInOpen\">\n <mj-page-layout class=\"vs-resource-shell__page\">\n <mj-page-header\n Title=\"Productions\"\n Icon=\"fa-solid fa-clapperboard\"\n Subtitle=\"Browse, preview, and iterate on video productions\"\n >\n <div meta>\n <mj-stat-badge\n [Count]=\"FilteredCount\"\n [Total]=\"TotalCount\"\n Label=\"Productions\"\n />\n </div>\n\n <div actions>\n <mj-refresh-button\n [Loading]=\"IsLoading\"\n (Clicked)=\"Refresh()\"\n />\n <button\n type=\"button\"\n mjButton\n Variant=\"primary\"\n data-testid=\"productions-open-copilot-button\"\n [attr.aria-expanded]=\"IsCopilotSlideInOpen\"\n title=\"Start a new video production\"\n (click)=\"OpenNewProductionCopilot()\"\n >\n <i class=\"fa-solid fa-plus\" aria-hidden=\"true\"></i>\n <span>New production</span>\n </button>\n </div>\n\n @if (!IsIterateFocusMode) {\n <div toolbar>\n <mj-page-search\n Placeholder=\"Search productions by title, archetype, brand kit, or format...\"\n [Value]=\"SearchText\"\n (ValueChange)=\"OnSearchChange($event)\"\n />\n <mj-filter-popover\n Label=\"Filters\"\n Icon=\"fa-solid fa-filter\"\n [ActiveCount]=\"ActivePopoverFilterCount\"\n [ShowClearAll]=\"ActivePopoverFilterCount > 0\"\n (ClearAllRequested)=\"ClearAllFilters()\"\n >\n <mj-filter-panel\n [Fields]=\"FilterFields\"\n [Values]=\"FilterValues\"\n [ShowReset]=\"false\"\n (ValuesChange)=\"OnFilterValuesChange($event)\"\n />\n <div class=\"vs-date-filter-group\">\n <mj-filter-field Label=\"Updated from\">\n <mj-datepicker\n AriaLabel=\"Updated from\"\n data-testid=\"productions-date-from\"\n [ngModel]=\"DateFromDate\"\n (ngModelChange)=\"OnDateFromChange($event)\"\n />\n </mj-filter-field>\n <mj-filter-field Label=\"Updated to\">\n <mj-datepicker\n AriaLabel=\"Updated to\"\n data-testid=\"productions-date-to\"\n [ngModel]=\"DateToDate\"\n (ngModelChange)=\"OnDateToChange($event)\"\n />\n </mj-filter-field>\n </div>\n </mj-filter-popover>\n </div>\n }\n </mj-page-header>\n\n <mj-page-body>\n <div class=\"vs-productions-main\">\n @if (IsLoading && AllProductions.length === 0) {\n <div class=\"vs-loading-state\" data-testid=\"productions-loading\">\n <mj-loading Text=\"Loading video productions...\" Size=\"medium\" />\n </div>\n } @else if (LoadError) {\n <mj-empty-state\n data-testid=\"productions-error\"\n Role=\"alert\"\n Variant=\"error\"\n Icon=\"fa-solid fa-triangle-exclamation\"\n Title=\"Unable to load productions\"\n [Message]=\"LoadError\"\n ActionText=\"Try again\"\n ActionIcon=\"fa-solid fa-rotate\"\n ActionVariant=\"secondary\"\n (Action)=\"Refresh()\"\n ></mj-empty-state>\n } @else if (FilteredProductions.length === 0) {\n @if (AllProductions.length === 0) {\n <mj-empty-state\n data-testid=\"productions-empty\"\n Variant=\"empty\"\n Icon=\"fa-solid fa-clapperboard\"\n Title=\"No video productions yet\"\n Message=\"Open Video Studio to set a brief, storyboard beats, and render your first production.\"\n ActionText=\"New production\"\n ActionIcon=\"fa-solid fa-plus\"\n ActionVariant=\"primary\"\n (Action)=\"OpenNewProductionCopilot()\"\n ></mj-empty-state>\n } @else {\n <mj-empty-state\n data-testid=\"productions-empty\"\n Variant=\"no-results\"\n Icon=\"fa-solid fa-clapperboard\"\n Title=\"No productions match your filters\"\n Message=\"Try adjusting your search query or clearing active filter criteria.\"\n ActionText=\"Reset filters\"\n ActionIcon=\"fa-solid fa-filter-circle-xmark\"\n ActionVariant=\"secondary\"\n (Action)=\"ResetFiltersAndSearch()\"\n ></mj-empty-state>\n }\n } @else {\n <div\n class=\"vs-productions-workspace\"\n [class.vs-productions-workspace--split]=\"SelectedProduction !== null && !IsIterateFocusMode\"\n [class.vs-productions-workspace--focus]=\"IsIterateFocusMode\"\n >\n @if (!IsIterateFocusMode) {\n <div class=\"vs-productions-grid\" data-testid=\"productions-grid\">\n @for (item of FilteredProductions; track item.ID) {\n <article\n class=\"vs-production-card\"\n [class.vs-production-card--selected]=\"SelectedProduction?.ID === item.ID\"\n [attr.data-testid]=\"'production-card-' + item.ID\"\n tabindex=\"0\"\n role=\"button\"\n [attr.aria-pressed]=\"SelectedProduction?.ID === item.ID\"\n (click)=\"SelectProduction(item)\"\n (keydown.enter)=\"SelectProduction(item)\"\n (keydown.space)=\"$event.preventDefault(); SelectProduction(item)\"\n >\n <div class=\"vs-production-poster\">\n @if (item.PosterUrl) {\n <img\n class=\"vs-production-poster-img\"\n [src]=\"item.PosterUrl\"\n [alt]=\"item.Name + ' poster'\"\n loading=\"lazy\"\n />\n } @else {\n <div class=\"vs-production-poster-placeholder\">\n <i class=\"fa-solid fa-film\" aria-hidden=\"true\"></i>\n </div>\n }\n\n <mj-video-badge\n class=\"vs-production-poster__status\"\n [Variant]=\"StatusBadgeVariant(item.Status)\"\n data-testid=\"production-status-badge\"\n >\n {{ item.Status }}\n </mj-video-badge>\n\n @if (item.DurationSeconds !== null) {\n <span class=\"vs-production-duration\">\n {{ FormatDuration(item.DurationSeconds) }}\n </span>\n }\n </div>\n\n <div class=\"vs-production-card-body\">\n <h3 class=\"vs-production-title\" [title]=\"item.Name\">\n {{ item.Name }}\n </h3>\n\n <div class=\"vs-production-meta-line\">\n @if (item.Archetype) {\n <span class=\"vs-production-meta-item\" data-testid=\"production-archetype-chip\">\n {{ item.Archetype }}\n </span>\n }\n @if (item.BrandKitName || item.BrandKitID) {\n @if (item.Archetype) {\n <span class=\"vs-production-meta-sep\" aria-hidden=\"true\">·</span>\n }\n <button\n type=\"button\"\n class=\"vs-production-brand-link\"\n title=\"Open brand kit\"\n (click)=\"OpenBrandKitRecord(item.BrandKitID, $event)\"\n >\n {{ item.BrandKitName || 'Brand kit' }}\n </button>\n }\n @if (item.AspectRatio) {\n @if (item.Archetype || item.BrandKitName || item.BrandKitID) {\n <span class=\"vs-production-meta-sep\" aria-hidden=\"true\">·</span>\n }\n <span class=\"vs-production-formats\">\n @for (fmt of ParseFormats(item.AspectRatio); track fmt) {\n <mj-video-format-glyph [Format]=\"fmt\" Size=\"sm\"></mj-video-format-glyph>\n }\n </span>\n }\n </div>\n </div>\n </article>\n }\n </div>\n }\n\n @if (SelectedProduction !== null) {\n <aside class=\"vs-production-detail-pane\" data-testid=\"production-detail-pane\">\n <div class=\"vs-production-detail-toolbar\" data-testid=\"production-detail-toolbar\">\n <div class=\"vs-production-detail-toolbar__start\">\n <button\n mjButton\n Variant=\"flat\"\n Size=\"sm\"\n type=\"button\"\n data-testid=\"production-all-productions-button\"\n title=\"Show all productions\"\n (click)=\"ShowAllProductions()\"\n >\n <i class=\"fa-solid fa-arrow-left\" aria-hidden=\"true\"></i>\n <span>All productions</span>\n </button>\n <span class=\"vs-production-detail-toolbar__title\">{{ SelectedProduction.Name }}</span>\n </div>\n <div class=\"vs-production-detail-toolbar__actions\">\n @if (!IsFullViewerMode) {\n <button\n mjButton\n Variant=\"flat\"\n Size=\"sm\"\n type=\"button\"\n data-testid=\"production-open-full-viewer-button\"\n (click)=\"OpenFullViewer()\"\n >\n <i class=\"fa-solid fa-film\" aria-hidden=\"true\"></i>\n <span>Storyboard, review &amp; versions</span>\n </button>\n } @else {\n <button\n mjButton\n Variant=\"flat\"\n Size=\"sm\"\n type=\"button\"\n data-testid=\"production-back-to-overview-button\"\n (click)=\"BackToOverview()\"\n >\n <i class=\"fa-solid fa-arrow-left\" aria-hidden=\"true\"></i>\n <span>Back to overview</span>\n </button>\n }\n <button\n mjButton\n Variant=\"outline\"\n Size=\"sm\"\n type=\"button\"\n data-testid=\"production-share-button\"\n [disabled]=\"!CanShareSelected\"\n (click)=\"OpenShareModal(SelectedProduction.ID)\"\n >\n <i class=\"fa-solid fa-share-nodes\" aria-hidden=\"true\"></i>\n <span>Share</span>\n </button>\n <button\n mjButton\n Variant=\"primary\"\n Size=\"sm\"\n type=\"button\"\n data-testid=\"production-iterate-button\"\n [disabled]=\"!SelectedProductionConversationId\"\n [attr.title]=\"\n SelectedProductionConversationId\n ? 'Iterate on this production in its conversation'\n : 'Made outside a conversation. Start a new production in Video Studio.'\n \"\n (click)=\"StartIterate()\"\n >\n <i class=\"fa-solid fa-wand-magic-sparkles\" aria-hidden=\"true\"></i>\n <span>Iterate</span>\n </button>\n </div>\n </div>\n <div class=\"vs-production-detail-body\">\n <div class=\"vs-production-detail-viewer\" data-testid=\"production-detail-viewer\">\n @if (IsFullViewerMode) {\n <mj-artifact-viewer-panel\n data-testid=\"production-full-viewer\"\n [artifactId]=\"SelectedProduction.ID\"\n [Provider]=\"Provider\"\n [CurrentUser]=\"ProviderToUse.CurrentUser\"\n [canShare]=\"CanShareSelected\"\n [canEdit]=\"CanEditSelected\"\n [ShowSaveToCollection]=\"false\"\n [ShowMaximizeButton]=\"false\"\n (Closed)=\"BackToOverview()\"\n (ShareRequested)=\"OpenShareModal($event)\"\n (NavigateToLink)=\"OnNavigateToArtifactLink($event)\"\n />\n } @else if (IsLoadingSelectedVersion) {\n <div class=\"vs-production-detail-state\" data-testid=\"production-overview-loading\">\n <mj-loading Text=\"Loading production…\" Size=\"medium\"></mj-loading>\n </div>\n } @else if (VersionLoadError) {\n <div class=\"vs-production-detail-state\" data-testid=\"production-overview-error\">\n <mj-empty-state\n Variant=\"error\"\n Icon=\"fa-solid fa-triangle-exclamation\"\n Title=\"Couldn't load production\"\n [Message]=\"VersionLoadError\"\n ActionText=\"Try again\"\n ActionIcon=\"fa-solid fa-rotate\"\n (Action)=\"RetryLoadSelectedProductionVersion()\"\n ></mj-empty-state>\n </div>\n } @else if (SelectedVersionEntity) {\n <mj-video-production-viewer\n data-testid=\"production-overview-viewer\"\n [artifactVersion]=\"SelectedVersionEntity\"\n [Provider]=\"ProviderToUse\"\n [BrandKitName]=\"SelectedProduction.BrandKitName\"\n ></mj-video-production-viewer>\n }\n </div>\n </div>\n </aside>\n }\n </div>\n }\n </div>\n\n @if (IsShareModalOpen && ShareTargetArtifact) {\n <mj-artifact-share-modal\n [IsOpen]=\"IsShareModalOpen\"\n [Artifact]=\"ShareTargetArtifact\"\n [CurrentUser]=\"ProviderToUse.CurrentUser\"\n (Saved)=\"OnShareSaved()\"\n (cancelled)=\"CloseShareModal()\"\n />\n }\n </mj-page-body>\n </mj-page-layout>\n\n <vs-studio-slide-in\n #studioSlideIn\n [Provider]=\"ProviderToUse\"\n [CurrentUser]=\"CurrentUser\"\n [EnvironmentId]=\"EnvironmentId\"\n [ApplicationId]=\"ApplicationId\"\n [PageSource]=\"this\"\n [PageContext]=\"PageContext\"\n [PageTools]=\"PageTools\"\n [FallbackBrandKitId]=\"FallbackBrandKitId\"\n [HeaderTitle]=\"'Video Studio'\"\n (OpenChange)=\"OnSlideInOpenChange($event)\"\n (PendingArtifactConsumed)=\"OnSlideInPendingArtifactConsumed()\"\n ></vs-studio-slide-in>\n</div>\n"]}
@@ -0,0 +1,102 @@
1
+ import { IMetadataProvider } from '@memberjunction/core';
2
+ import { Observable } from 'rxjs';
3
+ import { VideoCaptionMode } from '@memberjunction/video-studio-core';
4
+ import { VSProductionBriefStateSnapshot } from '../components/vs-production-brief.component';
5
+ import { ArchetypeCardSnapshot, BrandKitCardSnapshot, StudioAppContextPayload, StudioBriefClientToolDefinition, StudioBriefComponentHandle, StudioSavedQueryItem } from '../video-studio-agent-context';
6
+ import * as i0 from "@angular/core";
7
+ export interface VSStudioSlideInStateSnapshot {
8
+ IsOpen: boolean;
9
+ ConversationId: string | null;
10
+ PendingArtifactId: string | null;
11
+ PendingArtifactVersionNumber: number | null;
12
+ BriefSelectedArchetype: ArchetypeCardSnapshot | null;
13
+ BriefSelectedBrandKit: BrandKitCardSnapshot | null;
14
+ BriefSelectedBrandKitExplicitNone: boolean;
15
+ BriefSelectedFormats: string[];
16
+ BriefDurationSeconds: number;
17
+ BriefTopic: string;
18
+ BriefSelectedQueries: StudioSavedQueryItem[];
19
+ NarrationEnabled: boolean;
20
+ CaptionsMode: VideoCaptionMode;
21
+ }
22
+ export interface VSStudioBriefToolsOptions {
23
+ Provider?: IMetadataProvider | null;
24
+ GetBriefComponent?: () => StudioBriefComponentHandle | null | undefined;
25
+ OnBriefMutated?: () => void;
26
+ }
27
+ /**
28
+ * Root-provided UI-state service for the shared Video Studio right slide-in.
29
+ *
30
+ * Holds open/closed state, the active conversation ID, pending iteration artifact
31
+ * metadata, and the in-memory production brief selections so the slide-in state
32
+ * and active conversation survive moving between Productions, Brand Kits, and
33
+ * Archetypes (UI state only: no data arrays, no data access, no `localStorage`).
34
+ */
35
+ export declare class VSStudioSlideInStateService {
36
+ IsOpen: boolean;
37
+ ConversationId: string | null;
38
+ PendingArtifactId: string | null;
39
+ PendingArtifactVersionNumber: number | null;
40
+ BriefSelectedArchetype: ArchetypeCardSnapshot | null;
41
+ BriefSelectedBrandKit: BrandKitCardSnapshot | null;
42
+ BriefSelectedBrandKitExplicitNone: boolean;
43
+ BriefSelectedFormats: string[];
44
+ BriefDurationSeconds: number;
45
+ BriefTopic: string;
46
+ BriefSelectedQueries: StudioSavedQueryItem[];
47
+ NarrationEnabled: boolean;
48
+ CaptionsMode: VideoCaptionMode;
49
+ private readonly stateSubject;
50
+ readonly State$: Observable<VSStudioSlideInStateSnapshot>;
51
+ get IsBriefShowing(): boolean;
52
+ /**
53
+ * Opens the slide-in on a brand-new conversation (`ConversationId = null`),
54
+ * displaying `<vs-production-brief>` in the chat area's `composerExtra` slot.
55
+ */
56
+ OpenNewProduction(): void;
57
+ /**
58
+ * Reopens the slide-in from the right-edge strip, preserving any active
59
+ * conversation or showing the brief when `ConversationId` is `null`.
60
+ */
61
+ Reopen(): void;
62
+ /**
63
+ * Closes the slide-in while preserving `ConversationId` so reopening from
64
+ * the edge strip on any Video Studio page restores the active conversation.
65
+ */
66
+ Close(): void;
67
+ Toggle(): void;
68
+ /**
69
+ * Opens the slide-in on an existing production's conversation with the
70
+ * artifact queued for iteration.
71
+ */
72
+ OpenIterate(conversationId: string, artifactId: string, versionNumber: number): void;
73
+ SetConversationId(conversationId: string | null): void;
74
+ ClearPendingArtifact(): void;
75
+ SetNarrationEnabled(enabled: boolean): void;
76
+ SetCaptionsMode(mode: VideoCaptionMode): void;
77
+ ApplyBriefSnapshot(snapshot: VSProductionBriefStateSnapshot): void;
78
+ BuildStudioAppContextPayload(fallbackBrandKitId?: string | null): {
79
+ VideoStudio: StudioAppContextPayload;
80
+ };
81
+ /**
82
+ * Combines the current page's agent context (`Surface`, counts, filters, selection)
83
+ * with the `VideoStudio` brief context payload so the slide-in agent knows both
84
+ * which page the user is viewing and the current brief selections.
85
+ */
86
+ BuildCombinedAppContext(pageContext: Record<string, unknown> | null | undefined, fallbackBrandKitId?: string | null): Record<string, unknown>;
87
+ /**
88
+ * Builds the four Studio brief client tools (`SelectStudioArchetype`,
89
+ * `SelectStudioBrandKit`, `SetStudioFormats`, `SetStudioTopic`) when the brief
90
+ * is showing (`ConversationId === null`), or returns `[]` when an active
91
+ * conversation is open in the slide-in.
92
+ */
93
+ BuildBriefClientTools(options?: VSStudioBriefToolsOptions): StudioBriefClientToolDefinition[];
94
+ Reset(): void;
95
+ private resolveEngineArchetypes;
96
+ private resolveEngineBrandKits;
97
+ private snapshot;
98
+ private emitState;
99
+ static ɵfac: i0.ɵɵFactoryDeclaration<VSStudioSlideInStateService, never>;
100
+ static ɵprov: i0.ɵɵInjectableDeclaration<VSStudioSlideInStateService>;
101
+ }
102
+ //# sourceMappingURL=vs-studio-slide-in-state.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vs-studio-slide-in-state.service.d.ts","sourceRoot":"","sources":["../../../src/VideoStudio/services/vs-studio-slide-in-state.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,240 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { Metadata } from '@memberjunction/core';
3
+ import { BrandKitEngine, VideoStudioEngine, } from '@memberjunction/core-entities';
4
+ import { BehaviorSubject } from 'rxjs';
5
+ import { BuildStudioAppContext, BuildStudioBriefClientTools, MapArchetypeToCard, MapBrandKitToCard, } from '../video-studio-agent-context';
6
+ import * as i0 from "@angular/core";
7
+ /**
8
+ * Root-provided UI-state service for the shared Video Studio right slide-in.
9
+ *
10
+ * Holds open/closed state, the active conversation ID, pending iteration artifact
11
+ * metadata, and the in-memory production brief selections so the slide-in state
12
+ * and active conversation survive moving between Productions, Brand Kits, and
13
+ * Archetypes (UI state only: no data arrays, no data access, no `localStorage`).
14
+ */
15
+ export class VSStudioSlideInStateService {
16
+ IsOpen = false;
17
+ ConversationId = null;
18
+ PendingArtifactId = null;
19
+ PendingArtifactVersionNumber = null;
20
+ BriefSelectedArchetype = null;
21
+ BriefSelectedBrandKit = null;
22
+ BriefSelectedBrandKitExplicitNone = false;
23
+ BriefSelectedFormats = ['16:9'];
24
+ BriefDurationSeconds = 30;
25
+ BriefTopic = '';
26
+ BriefSelectedQueries = [];
27
+ NarrationEnabled = true;
28
+ CaptionsMode = 'Burned';
29
+ stateSubject = new BehaviorSubject(this.snapshot());
30
+ State$ = this.stateSubject.asObservable();
31
+ get IsBriefShowing() {
32
+ return (this.ConversationId ?? '').trim().length === 0;
33
+ }
34
+ /**
35
+ * Opens the slide-in on a brand-new conversation (`ConversationId = null`),
36
+ * displaying `<vs-production-brief>` in the chat area's `composerExtra` slot.
37
+ */
38
+ OpenNewProduction() {
39
+ this.ConversationId = null;
40
+ this.PendingArtifactId = null;
41
+ this.PendingArtifactVersionNumber = null;
42
+ this.IsOpen = true;
43
+ this.emitState();
44
+ }
45
+ /**
46
+ * Reopens the slide-in from the right-edge strip, preserving any active
47
+ * conversation or showing the brief when `ConversationId` is `null`.
48
+ */
49
+ Reopen() {
50
+ this.IsOpen = true;
51
+ this.emitState();
52
+ }
53
+ /**
54
+ * Closes the slide-in while preserving `ConversationId` so reopening from
55
+ * the edge strip on any Video Studio page restores the active conversation.
56
+ */
57
+ Close() {
58
+ this.IsOpen = false;
59
+ this.PendingArtifactId = null;
60
+ this.PendingArtifactVersionNumber = null;
61
+ this.emitState();
62
+ }
63
+ Toggle() {
64
+ if (this.IsOpen) {
65
+ this.Close();
66
+ }
67
+ else {
68
+ this.Reopen();
69
+ }
70
+ }
71
+ /**
72
+ * Opens the slide-in on an existing production's conversation with the
73
+ * artifact queued for iteration.
74
+ */
75
+ OpenIterate(conversationId, artifactId, versionNumber) {
76
+ this.ConversationId = conversationId;
77
+ this.PendingArtifactId = artifactId;
78
+ this.PendingArtifactVersionNumber = versionNumber;
79
+ this.IsOpen = true;
80
+ this.emitState();
81
+ }
82
+ SetConversationId(conversationId) {
83
+ this.ConversationId = conversationId;
84
+ this.emitState();
85
+ }
86
+ ClearPendingArtifact() {
87
+ this.PendingArtifactId = null;
88
+ this.PendingArtifactVersionNumber = null;
89
+ this.emitState();
90
+ }
91
+ SetNarrationEnabled(enabled) {
92
+ this.NarrationEnabled = enabled;
93
+ this.emitState();
94
+ }
95
+ SetCaptionsMode(mode) {
96
+ this.CaptionsMode = mode;
97
+ this.emitState();
98
+ }
99
+ ApplyBriefSnapshot(snapshot) {
100
+ if (snapshot.SelectedArchetype !== null || !snapshot.IsLoading) {
101
+ this.BriefSelectedArchetype = snapshot.SelectedArchetype;
102
+ }
103
+ this.BriefSelectedBrandKit = snapshot.SelectedBrandKit;
104
+ this.BriefSelectedBrandKitExplicitNone = Boolean(snapshot.SelectedBrandKitExplicitNone);
105
+ this.BriefSelectedFormats = [...snapshot.SelectedFormats];
106
+ this.BriefDurationSeconds = snapshot.DurationSeconds;
107
+ this.BriefTopic = snapshot.Topic;
108
+ this.BriefSelectedQueries = [...snapshot.SelectedQueries];
109
+ this.NarrationEnabled = snapshot.NarrationEnabled;
110
+ this.CaptionsMode = snapshot.CaptionsMode;
111
+ this.emitState();
112
+ }
113
+ BuildStudioAppContextPayload(fallbackBrandKitId = null) {
114
+ const resolvedBrandKitId = this.BriefSelectedBrandKitExplicitNone
115
+ ? null
116
+ : (this.BriefSelectedBrandKit?.ID ?? fallbackBrandKitId);
117
+ return BuildStudioAppContext({
118
+ ArchetypeID: this.BriefSelectedArchetype?.ID ?? null,
119
+ BrandKitID: resolvedBrandKitId,
120
+ Formats: this.BriefSelectedFormats.length > 0 ? this.BriefSelectedFormats : ['16:9'],
121
+ DurationSeconds: this.BriefDurationSeconds,
122
+ QueryIDs: this.BriefSelectedQueries.map((q) => q.ID),
123
+ NarrationEnabled: this.NarrationEnabled ? undefined : false,
124
+ CaptionsMode: this.CaptionsMode === 'Burned' ? undefined : this.CaptionsMode,
125
+ });
126
+ }
127
+ /**
128
+ * Combines the current page's agent context (`Surface`, counts, filters, selection)
129
+ * with the `VideoStudio` brief context payload so the slide-in agent knows both
130
+ * which page the user is viewing and the current brief selections.
131
+ */
132
+ BuildCombinedAppContext(pageContext, fallbackBrandKitId = null) {
133
+ return {
134
+ ...(pageContext ?? {}),
135
+ ...this.BuildStudioAppContextPayload(fallbackBrandKitId),
136
+ };
137
+ }
138
+ /**
139
+ * Builds the four Studio brief client tools (`SelectStudioArchetype`,
140
+ * `SelectStudioBrandKit`, `SetStudioFormats`, `SetStudioTopic`) when the brief
141
+ * is showing (`ConversationId === null`), or returns `[]` when an active
142
+ * conversation is open in the slide-in.
143
+ */
144
+ BuildBriefClientTools(options = {}) {
145
+ if (!this.IsBriefShowing) {
146
+ return [];
147
+ }
148
+ return BuildStudioBriefClientTools({
149
+ GetBriefComponent: options.GetBriefComponent,
150
+ GetArchetypes: () => this.resolveEngineArchetypes(options.Provider),
151
+ GetBrandKits: () => this.resolveEngineBrandKits(options.Provider),
152
+ OnArchetypeSelected: (archetype, formats, durationSeconds) => {
153
+ this.BriefSelectedArchetype = archetype;
154
+ this.BriefSelectedFormats = [...formats];
155
+ this.BriefDurationSeconds = durationSeconds;
156
+ this.emitState();
157
+ options.OnBriefMutated?.();
158
+ },
159
+ OnBrandKitSelected: (brandKit) => {
160
+ this.BriefSelectedBrandKit = brandKit;
161
+ this.BriefSelectedBrandKitExplicitNone = brandKit === null;
162
+ this.emitState();
163
+ options.OnBriefMutated?.();
164
+ },
165
+ OnFormatsSelected: (formats) => {
166
+ this.BriefSelectedFormats = [...formats];
167
+ this.emitState();
168
+ options.OnBriefMutated?.();
169
+ },
170
+ OnTopicChanged: (topic) => {
171
+ this.BriefTopic = topic;
172
+ this.emitState();
173
+ options.OnBriefMutated?.();
174
+ },
175
+ });
176
+ }
177
+ Reset() {
178
+ this.IsOpen = false;
179
+ this.ConversationId = null;
180
+ this.PendingArtifactId = null;
181
+ this.PendingArtifactVersionNumber = null;
182
+ this.BriefSelectedArchetype = null;
183
+ this.BriefSelectedBrandKit = null;
184
+ this.BriefSelectedBrandKitExplicitNone = false;
185
+ this.BriefSelectedFormats = ['16:9'];
186
+ this.BriefDurationSeconds = 30;
187
+ this.BriefTopic = '';
188
+ this.BriefSelectedQueries = [];
189
+ this.NarrationEnabled = true;
190
+ this.CaptionsMode = 'Burned';
191
+ this.emitState();
192
+ }
193
+ resolveEngineArchetypes(provider) {
194
+ try {
195
+ const engine = VideoStudioEngine.GetProviderInstance(provider ?? Metadata.Provider, VideoStudioEngine);
196
+ const archetypes = (engine?.Archetypes ?? []).filter((a) => a.Status === 'Active' || !a.Status);
197
+ return archetypes.map((arch) => MapArchetypeToCard(arch));
198
+ }
199
+ catch {
200
+ return [];
201
+ }
202
+ }
203
+ resolveEngineBrandKits(provider) {
204
+ try {
205
+ const engine = BrandKitEngine.GetProviderInstance(provider ?? Metadata.Provider, BrandKitEngine);
206
+ const kits = (engine?.BrandKits ?? []).filter((k) => k.Status === 'Active' || !k.Status);
207
+ return kits.map((kit) => MapBrandKitToCard(kit, engine?.GetAssets?.(kit.ID)));
208
+ }
209
+ catch {
210
+ return [];
211
+ }
212
+ }
213
+ snapshot() {
214
+ return {
215
+ IsOpen: this.IsOpen,
216
+ ConversationId: this.ConversationId,
217
+ PendingArtifactId: this.PendingArtifactId,
218
+ PendingArtifactVersionNumber: this.PendingArtifactVersionNumber,
219
+ BriefSelectedArchetype: this.BriefSelectedArchetype,
220
+ BriefSelectedBrandKit: this.BriefSelectedBrandKit,
221
+ BriefSelectedBrandKitExplicitNone: this.BriefSelectedBrandKitExplicitNone,
222
+ BriefSelectedFormats: [...this.BriefSelectedFormats],
223
+ BriefDurationSeconds: this.BriefDurationSeconds,
224
+ BriefTopic: this.BriefTopic,
225
+ BriefSelectedQueries: [...this.BriefSelectedQueries],
226
+ NarrationEnabled: this.NarrationEnabled,
227
+ CaptionsMode: this.CaptionsMode,
228
+ };
229
+ }
230
+ emitState() {
231
+ this.stateSubject.next(this.snapshot());
232
+ }
233
+ static ɵfac = function VSStudioSlideInStateService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || VSStudioSlideInStateService)(); };
234
+ static ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: VSStudioSlideInStateService, factory: VSStudioSlideInStateService.ɵfac, providedIn: 'root' });
235
+ }
236
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(VSStudioSlideInStateService, [{
237
+ type: Injectable,
238
+ args: [{ providedIn: 'root' }]
239
+ }], null, null); })();
240
+ //# sourceMappingURL=vs-studio-slide-in-state.service.js.map