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