@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ps-studio-resource.component.js","sourceRoot":"","sources":["../../../src/PredictiveStudio/resources/ps-studio-resource.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ViewChild, inject } from '@angular/core';\nimport { RegisterClass } from '@memberjunction/global';\nimport { LogError, UserInfo } from '@memberjunction/core';\nimport { MJConversationEntity, MJEnvironmentEntityExtended, MJMLAlgorithmEntity, UserInfoEngine } from '@memberjunction/core-entities';\nimport { AIEngineBase } from '@memberjunction/ai-engine-base';\nimport { BaseResourceComponent } from '@memberjunction/ng-shared';\nimport { PSResourceBase } from './ps-resource-base';\nimport { PSPanelKey } from '../predictive-studio.types';\nimport { PSPipelinesComponent } from '../components/ps-pipelines.component';\nimport {\n STUDIO_SECTIONS,\n PSSection,\n sectionGroups,\n sectionsInGroup,\n sectionLabel,\n hasSection,\n routeHomeNavigate,\n} from '../predictive-studio.nav';\nimport {\n buildStudioAgentContext,\n resolvePSRecord,\n buildPSNotFoundError,\n} from '../predictive-studio-agent-context';\nimport { validateStringParam } from '../../shared/agent-tool-validation';\nimport type { NavigationRequest } from '@memberjunction/ng-artifacts';\n\n/** Predictive Studio application ID (from `metadata/applications/.predictive-studio-application.json`). */\nconst PREDICTIVE_STUDIO_APP_ID = '299C9272-8D38-40CA-85D4-0980F2C9FAD1';\nconst MODEL_DEV_AGENT_NAME = 'Model Development Agent';\n\n/**\n * **Studio** — the analyst workbench door (one of Predictive Studio's three consolidated nav items,\n * alongside `Predictions` and `Models`). Hosts the build/run section panels (`ps-home`, `ps-pipelines`,\n * `ps-catalog`, `ps-experiments`, `ps-compare`) behind an internal left-nav grouped by lifecycle\n * (Overview · Build · Run), so the outer app nav stays quiet while analysts get all the depth one click\n * in. The active section round-trips through the `section` query param (deep links + back/forward). A\n * single docked **Model Development Agent** copilot is shared by every section's \"Ask the agent\" CTA —\n * wired with the full conversation lifecycle (`isNewConversation` → `conversationCreated`) so the first\n * message actually creates + sends. Cross-door navigation (to a Models section) routes via the nav\n * service; see {@link routeHomeNavigate}.\n */\n@RegisterClass(BaseResourceComponent, 'PredictiveStudioStudioResource')\n@Component({\n standalone: false,\n selector: 'mj-ps-studio-resource',\n template: `\n <mj-page-header-interior [Title]=\"activeLabel\" [Subtitle]=\"activeSubtitle\">\n </mj-page-header-interior>\n <mj-page-body-interior [Flex]=\"true\" [Padding]=\"false\">\n @if (isLoading) {\n <mj-loading text=\"Loading Studio…\" size=\"medium\"></mj-loading>\n } @else if (loadError) {\n <div class=\"ps-load-error\" data-testid=\"ps-load-error\" role=\"alert\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i>\n <div class=\"ps-load-error-text\">\n <strong>Couldn't load {{ sectionTitle }}</strong>\n <span class=\"ps-load-error-detail\">{{ loadError }}</span>\n </div>\n <button mjButton variant=\"secondary\" size=\"sm\" (click)=\"retryLoad()\"><i class=\"fa-solid fa-rotate-right\"></i> Try again</button>\n </div>\n } @else {\n <div class=\"ps-studio-host\" [class.nav-collapsed]=\"isNavCollapsed\" [class.chat-open]=\"chatOpen\" data-testid=\"ps-studio-shell\">\n @if (isNavCollapsed) {\n <div class=\"ps-nav-collapsed-strip\" role=\"region\" aria-label=\"Studio navigation (collapsed)\">\n <button class=\"ps-nav-rail-collapse\" type=\"button\" (click)=\"toggleNav()\" aria-label=\"Expand studio navigation\" title=\"Expand navigation\">\n <i class=\"fa-solid fa-chevron-right\"></i>\n </button>\n <div class=\"ps-nav-collapsed-strip-label\"><i class=\"fa-solid fa-flask-vial\"></i> Studio</div>\n </div>\n }\n\n <as-split direction=\"horizontal\" class=\"studio-outer-splitter\" unit=\"percent\" [gutterSize]=\"isNavCollapsed ? 0 : 6\" (dragEnd)=\"onNavSplitDragEnd($event.sizes)\">\n @if (!isNavCollapsed) {\n <as-split-area [size]=\"navSizePct\" [minSize]=\"10\" [maxSize]=\"30\">\n <aside class=\"ps-leftnav\">\n <div class=\"ps-leftnav-header\">\n <span class=\"ps-leftnav-title\">Studio</span>\n <button class=\"ps-leftnav-collapse-btn\" type=\"button\" (click)=\"toggleNav()\" title=\"Collapse navigation\" aria-label=\"Collapse navigation\">\n <i class=\"fa-solid fa-chevron-left\"></i>\n </button>\n </div>\n @for (group of groups; track group) {\n @if (group) { <div class=\"ps-nav-group\">{{ group }}</div> }\n @for (item of itemsForGroup(group); track item.key) {\n <button class=\"ps-nav-item\" [class.active]=\"activeSection === item.key\"\n [attr.data-testid]=\"'ps-nav-' + item.key\" (click)=\"selectSection(item.key)\">\n <i [class]=\"item.icon\"></i> <span>{{ item.label }}</span>\n </button>\n }\n }\n </aside>\n </as-split-area>\n }\n\n <as-split-area [size]=\"isNavCollapsed ? 100 : (100 - navSizePct)\" [minSize]=\"60\">\n <div class=\"ps-studio-workspace\">\n <as-split direction=\"horizontal\" class=\"studio-copilot-splitter\" unit=\"percent\" [gutterSize]=\"chatOpen ? 6 : 0\" (dragEnd)=\"onCopilotSplitDragEnd($event.sizes)\">\n <as-split-area [size]=\"chatOpen ? (copilotExpanded ? 40 : mainSizePct) : 100\" [minSize]=\"30\">\n <section class=\"ps-content\" [class.fill]=\"activeSection === 'pipelines'\" [attr.data-testid]=\"'ps-panel-' + activeSection\">\n @switch (activeSection) {\n @case ('home') { <ps-home [engine]=\"engine\" [provider]=\"ProviderToUse\" [currentUser]=\"ProviderToUse.CurrentUser\" (navigate)=\"mapNavigate($event)\" (askAgent)=\"onAskAgent($event)\"></ps-home> }\n @case ('pipelines') { <ps-pipelines #pipelinesComp [engine]=\"engine\" [provider]=\"ProviderToUse\" [currentUser]=\"ProviderToUse.CurrentUser\" (askAgent)=\"onAskAgent($event)\" (navigate)=\"mapNavigate($event)\"></ps-pipelines> }\n @case ('catalog') { <ps-catalog [engine]=\"engine\" (askAgent)=\"onAskAgent($event)\" (createPipeline)=\"onCreatePipelineFromCatalog($event)\"></ps-catalog> }\n @case ('experiments') { <ps-experiments [engine]=\"engine\" [provider]=\"ProviderToUse\" [currentUser]=\"ProviderToUse.CurrentUser\"></ps-experiments> }\n @case ('compare') { <ps-compare [engine]=\"engine\"></ps-compare> }\n }\n </section>\n </as-split-area>\n\n @if (chatOpen) {\n <as-split-area [size]=\"copilotExpanded ? 60 : copilotSizePct\" [minSize]=\"20\" [maxSize]=\"70\">\n <aside class=\"ps-copilot\" [class.expanded]=\"copilotExpanded\" data-testid=\"ps-studio-copilot\">\n <div class=\"ps-copilot-head\">\n <div class=\"ps-copilot-title\"><i class=\"fa-solid fa-robot\"></i> Model Dev Agent</div>\n <div class=\"ps-copilot-actions\">\n <button class=\"ps-copilot-btn\" (click)=\"toggleCopilotExpanded()\" [title]=\"copilotExpanded ? 'Collapse panel' : 'Expand panel'\"><i class=\"fa-solid\" [class.fa-up-right-and-down-left-from-center]=\"!copilotExpanded\" [class.fa-down-left-and-up-right-to-center]=\"copilotExpanded\"></i></button>\n <button class=\"ps-copilot-close\" (click)=\"closeChat()\" aria-label=\"Close agent chat\"><i class=\"fa-solid fa-xmark\"></i></button>\n </div>\n </div>\n <div class=\"ps-copilot-body\">\n @if (currentUser) {\n <mj-conversation-chat-area\n [Provider]=\"Provider\" [environmentId]=\"chatEnvironmentId\" [currentUser]=\"currentUser\"\n [conversation]=\"chatConversation\" [conversationId]=\"chatConversationId\" [isNewConversation]=\"chatIsNewConversation\"\n [suppressNewConversationEmptyState]=\"true\" [allowMentions]=\"false\" [overlayMode]=\"false\"\n [showExportButton]=\"false\" [showShareButton]=\"false\" [showArtifactIndicator]=\"true\"\n [showAgentPicker]=\"false\" [showAgentModePicker]=\"false\"\n [defaultAgentId]=\"modelDevAgentId\" [pendingMessage]=\"pendingPrompt\"\n [applicationScope]=\"'Application'\" [applicationId]=\"applicationId\" [appContext]=\"chatAppContext\"\n (conversationCreated)=\"onChatConversationCreated($event)\"\n (pendingMessageConsumed)=\"onChatPendingMessageConsumed()\"\n (navigationRequest)=\"onNavigationRequest($event)\">\n </mj-conversation-chat-area>\n } @else { <div class=\"ps-copilot-empty\"><mj-loading text=\"Connecting…\" size=\"small\"></mj-loading></div> }\n </div>\n </aside>\n </as-split-area>\n }\n </as-split>\n </div>\n </as-split-area>\n </as-split>\n </div>\n }\n </mj-page-body-interior>\n `,\n styles: [\n `\n :host { display: flex; flex-direction: column; width: 100%; height: 100%; min-height: 0; }\n .ps-studio-host { display: flex; flex: 1; min-height: 0; overflow: hidden; width: 100%; height: 100%; }\n .studio-outer-splitter { flex: 1; width: 100%; height: 100%; min-height: 0; min-width: 0; background: transparent; }\n .studio-outer-splitter .as-split-gutter { background: transparent; transition: background-color 0.15s ease; position: relative; }\n .studio-outer-splitter .as-split-gutter:hover { background-color: var(--mj-brand-primary, #6366f1); }\n .studio-outer-splitter .as-split-gutter::after { content: ''; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 2px; height: 24px; border-radius: 1px; background: var(--mj-border-strong, #cbd5e1); }\n .studio-outer-splitter .as-split-gutter:hover::after { background: #ffffff; }\n\n .ps-nav-collapsed-strip { width: 44px; min-width: 44px; max-width: 44px; flex: none; background: var(--mj-bg-surface); border-right: 1px solid var(--mj-border-default); display: flex; flex-direction: column; align-items: center; padding: 10px 0; gap: 14px; z-index: 2; }\n .ps-nav-rail-collapse { background: var(--mj-bg-surface-subtle); border: 1px solid var(--mj-border-default); border-radius: 6px; color: var(--mj-text-secondary); cursor: pointer; display: grid; place-items: center; width: 28px; height: 28px; padding: 0; font-size: 11px; transition: background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease; }\n .ps-nav-rail-collapse:hover { background: var(--mj-bg-surface-hover); color: var(--mj-text-primary); border-color: var(--mj-border-strong); }\n .ps-nav-collapsed-strip-label { writing-mode: vertical-rl; transform: rotate(180deg); font-size: 11px; font-weight: 600; letter-spacing: 0.04em; color: var(--mj-text-muted); display: flex; align-items: center; gap: 8px; text-transform: uppercase; }\n\n .ps-leftnav { width: 100%; height: 100%; border-right: 1px solid var(--mj-border-default); background: var(--mj-bg-surface-card); overflow-y: auto; padding: 8px; display: flex; flex-direction: column; gap: 2px; box-sizing: border-box; }\n .ps-leftnav-header { display: flex; align-items: center; justify-content: space-between; padding: 4px 6px 8px; border-bottom: 1px solid var(--mj-border-subtle); margin-bottom: 4px; }\n .ps-leftnav-title { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; color: var(--mj-text-muted); }\n .ps-leftnav-collapse-btn { display: inline-flex; align-items: center; justify-content: center; width: 24px; height: 24px; border-radius: 6px; border: 1px solid var(--mj-border-default); background: var(--mj-bg-surface); color: var(--mj-text-muted); cursor: pointer; transition: all 0.15s ease; padding: 0; }\n .ps-leftnav-collapse-btn:hover { background: var(--mj-bg-surface-hover); color: var(--mj-text-primary); border-color: var(--mj-border-strong); }\n\n .ps-nav-group { font-size: var(--mj-text-xs); font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--mj-text-muted); padding: 10px 8px 4px; }\n .ps-nav-item { display: flex; align-items: center; gap: 10px; width: 100%; text-align: left; padding: 8px 10px; border: none; background: transparent; border-radius: var(--mj-radius-md); cursor: pointer; color: var(--mj-text-secondary); font-size: var(--mj-text-sm); font-weight: 500; transition: background .12s, color .12s; }\n .ps-nav-item i { width: 18px; text-align: center; color: var(--mj-text-muted); }\n .ps-nav-item:hover { background: var(--mj-bg-surface-hover); color: var(--mj-text-primary); }\n .ps-nav-item.active { background: color-mix(in srgb, var(--mj-brand-primary) 12%, transparent); color: var(--mj-brand-primary); font-weight: 600; }\n .ps-nav-item.active i { color: var(--mj-brand-primary); }\n\n .ps-studio-workspace { display: flex; flex: 1; width: 100%; height: 100%; min-height: 0; min-width: 0; overflow: hidden; }\n .studio-copilot-splitter { flex: 1; width: 100%; height: 100%; min-height: 0; min-width: 0; }\n .studio-copilot-splitter .as-split-gutter { background: transparent; transition: background-color 0.15s ease; position: relative; }\n .studio-copilot-splitter .as-split-gutter:hover { background-color: var(--mj-brand-primary, #6366f1); }\n .studio-copilot-splitter .as-split-gutter::after { content: ''; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 2px; height: 24px; border-radius: 1px; background: var(--mj-border-strong, #cbd5e1); }\n .ps-content { width: 100%; height: 100%; flex: 1; min-width: 0; overflow-y: auto; padding: 8px 14px 24px; }\n /* Fill mode (pipelines): the section stops page-scrolling so the panel's inner\n columns (canvas / inspector) can each own their scrollbar. */\n .ps-content.fill { overflow: hidden; display: flex; flex-direction: column; padding-bottom: 14px; }\n .ps-content.fill > * { flex: 1; min-height: 0; display: flex; flex-direction: column; }\n .ps-copilot { width: 100%; height: 100%; max-width: none; flex: 1; border-left: 1px solid var(--mj-border-default); background: var(--mj-bg-surface); display: flex; flex-direction: column; min-height: 0; }\n .ps-copilot-head { display: flex; align-items: center; justify-content: space-between; padding: 10px 14px; border-bottom: 1px solid var(--mj-border-default); }\n .ps-copilot-title { display: flex; align-items: center; gap: 8px; font-weight: 600; color: var(--mj-text-primary); }\n .ps-copilot-title i { color: var(--mj-brand-primary); }\n .ps-copilot-actions { display: flex; align-items: center; gap: 4px; }\n .ps-copilot-btn { background: transparent; border: none; cursor: pointer; padding: 6px 8px; border-radius: 6px; color: var(--mj-text-muted); }\n .ps-copilot-btn:hover { background: var(--mj-bg-surface-hover); color: var(--mj-text-secondary); }\n .ps-copilot-close { background: transparent; border: none; cursor: pointer; padding: 6px 8px; border-radius: 6px; color: var(--mj-text-muted); }\n .ps-copilot-close:hover { background: var(--mj-bg-surface-hover); color: var(--mj-text-secondary); }\n .ps-copilot-body { flex: 1; min-height: 0; overflow: hidden; display: flex; flex-direction: column; }\n .ps-copilot-body mj-conversation-chat-area { flex: 1; min-height: 0; display: block; }\n .ps-copilot-empty { display: flex; align-items: center; justify-content: center; flex: 1; }\n .ps-load-error { display: flex; align-items: center; gap: 14px; max-width: 620px; margin: 32px auto; padding: 18px 20px; border: 1px solid var(--mj-status-error-border); background: var(--mj-status-error-bg); border-radius: var(--mj-radius-lg); }\n .ps-load-error > i { font-size: 24px; color: var(--mj-status-error); }\n .ps-load-error-text { display: flex; flex-direction: column; gap: 2px; flex: 1; min-width: 0; }\n .ps-load-error-text strong { color: var(--mj-text-primary); }\n .ps-load-error-detail { color: var(--mj-text-secondary); font-size: var(--mj-text-sm); word-break: break-word; }\n @media (max-width: 1100px) { .ps-studio-host.chat-open .ps-content, .ps-studio-host.chat-open .ps-leftnav { display: none; } .ps-copilot { width: 100%; max-width: none; border-left: none; } }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PSStudioResourceComponent extends PSResourceBase {\n protected readonly SectionKey = 'studio';\n protected readonly SectionLabel = 'Studio';\n protected readonly SectionIcon = 'fa-solid fa-flask-vial';\n\n private readonly cdrLocal = inject(ChangeDetectorRef);\n\n /** The active workbench section (which panel renders). Round-trips through the `section` query param. */\n public ActiveSection: PSPanelKey = 'home';\n\n /** @deprecated Use {@link ActiveSection}. */\n public get activeSection(): PSPanelKey {\n return this.ActiveSection;\n }\n /** @deprecated Use {@link ActiveSection}. */\n public set activeSection(value: PSPanelKey) {\n this.ActiveSection = value;\n }\n public readonly sections: readonly PSSection[] = STUDIO_SECTIONS;\n\n @ViewChild('pipelinesComp') PipelinesComponent?: PSPipelinesComponent;\n\n /** @deprecated Use {@link PipelinesComponent}. */\n get pipelinesComponent(): PSPipelinesComponent | undefined {\n return this.PipelinesComponent;\n }\n /** @deprecated Use {@link PipelinesComponent}. */\n set pipelinesComponent(value: PSPipelinesComponent | undefined) {\n this.PipelinesComponent = value;\n }\n\n public OnCreatePipelineFromCatalog(algo: MJMLAlgorithmEntity): void {\n this.selectSection('pipelines');\n setTimeout(() => {\n this.PipelinesComponent?.openWizard(algo.ID);\n }, 50);\n }\n\n /** @deprecated Use {@link OnCreatePipelineFromCatalog}. */\n public onCreatePipelineFromCatalog(algo: MJMLAlgorithmEntity): void {\n return this.OnCreatePipelineFromCatalog(algo);\n }\n\n // ── docked Model Dev Agent copilot ───────────────────────────────\n public ChatOpen = false;\n\n /** @deprecated Use {@link ChatOpen}. */\n public get chatOpen() {\n return this.ChatOpen;\n }\n /** @deprecated Use {@link ChatOpen}. */\n public set chatOpen(value) {\n this.ChatOpen = value;\n }\n public PendingPrompt: string | null = null;\n\n /** @deprecated Use {@link PendingPrompt}. */\n public get pendingPrompt(): string | null {\n return this.PendingPrompt;\n }\n /** @deprecated Use {@link PendingPrompt}. */\n public set pendingPrompt(value: string | null) {\n this.PendingPrompt = value;\n }\n private _modelDevAgentId: string | null = null;\n /** Conversation lifecycle (see {@link onChatConversationCreated}) — without it the first send no-ops. */\n public ChatConversation: MJConversationEntity | null = null;\n\n /** @deprecated Use {@link ChatConversation}. */\n public get chatConversation(): MJConversationEntity | null {\n return this.ChatConversation;\n }\n /** @deprecated Use {@link ChatConversation}. */\n public set chatConversation(value: MJConversationEntity | null) {\n this.ChatConversation = value;\n }\n public ChatConversationId: string | null = null;\n\n /** @deprecated Use {@link ChatConversationId}. */\n public get chatConversationId(): string | null {\n return this.ChatConversationId;\n }\n /** @deprecated Use {@link ChatConversationId}. */\n public set chatConversationId(value: string | null) {\n this.ChatConversationId = value;\n }\n public ChatIsNewConversation = true;\n\n /** @deprecated Use {@link ChatIsNewConversation}. */\n public get chatIsNewConversation() {\n return this.ChatIsNewConversation;\n }\n /** @deprecated Use {@link ChatIsNewConversation}. */\n public set chatIsNewConversation(value) {\n this.ChatIsNewConversation = value;\n }\n public IsNavCollapsed = false;\n\n /** @deprecated Use {@link IsNavCollapsed}. */\n public get isNavCollapsed() {\n return this.IsNavCollapsed;\n }\n /** @deprecated Use {@link IsNavCollapsed}. */\n public set isNavCollapsed(value) {\n this.IsNavCollapsed = value;\n }\n public NavSizePct = 14;\n\n /** @deprecated Use {@link NavSizePct}. */\n public get navSizePct() {\n return this.NavSizePct;\n }\n /** @deprecated Use {@link NavSizePct}. */\n public set navSizePct(value) {\n this.NavSizePct = value;\n }\n public MainSizePct = 68;\n\n /** @deprecated Use {@link MainSizePct}. */\n public get mainSizePct() {\n return this.MainSizePct;\n }\n /** @deprecated Use {@link MainSizePct}. */\n public set mainSizePct(value) {\n this.MainSizePct = value;\n }\n public CopilotSizePct = 32;\n\n /** @deprecated Use {@link CopilotSizePct}. */\n public get copilotSizePct() {\n return this.CopilotSizePct;\n }\n /** @deprecated Use {@link CopilotSizePct}. */\n public set copilotSizePct(value) {\n this.CopilotSizePct = value;\n }\n\n override ngOnInit(): void {\n super.ngOnInit();\n const initial = this.GetQueryParams()['section'] as PSPanelKey | undefined;\n if (initial && hasSection(this.sections, initial)) this.ActiveSection = initial;\n this.loadLayoutPrefs();\n }\n\n public ToggleNav(): void {\n this.IsNavCollapsed = !this.IsNavCollapsed;\n this.saveLayoutPrefs();\n this.cdrLocal.detectChanges();\n }\n\n /** @deprecated Use {@link ToggleNav}. */\n public toggleNav(): void {\n return this.ToggleNav();\n }\n\n public OnNavSplitDragEnd(sizes: readonly (number | '*')[]): void {\n if (Array.isArray(sizes) && sizes.length === 2 && typeof sizes[0] === 'number') {\n this.NavSizePct = Math.round(sizes[0]);\n this.saveLayoutPrefs();\n }\n }\n\n /** @deprecated Use {@link OnNavSplitDragEnd}. */\n public onNavSplitDragEnd(sizes: readonly (number | '*')[]): void {\n return this.OnNavSplitDragEnd(sizes);\n }\n\n public OnCopilotSplitDragEnd(sizes: readonly (number | '*')[]): void {\n if (Array.isArray(sizes) && sizes.length === 2 && typeof sizes[0] === 'number' && typeof sizes[1] === 'number') {\n this.MainSizePct = Math.round(sizes[0]);\n this.CopilotSizePct = Math.round(sizes[1]);\n this.saveLayoutPrefs();\n }\n }\n\n /** @deprecated Use {@link OnCopilotSplitDragEnd}. */\n public onCopilotSplitDragEnd(sizes: readonly (number | '*')[]): void {\n return this.OnCopilotSplitDragEnd(sizes);\n }\n\n private loadLayoutPrefs(): void {\n const saved = UserInfoEngine.Instance.GetSetting('mj.predictiveStudio.studio.layout');\n if (saved) {\n try {\n const parsed = JSON.parse(saved);\n if (typeof parsed.navSizePct === 'number' && parsed.navSizePct >= 10 && parsed.navSizePct <= 35) {\n this.NavSizePct = parsed.navSizePct;\n }\n if (typeof parsed.isNavCollapsed === 'boolean') {\n this.IsNavCollapsed = parsed.isNavCollapsed;\n }\n if (typeof parsed.copilotSizePct === 'number' && parsed.copilotSizePct >= 20 && parsed.copilotSizePct <= 60) {\n this.CopilotSizePct = parsed.copilotSizePct;\n this.MainSizePct = 100 - this.CopilotSizePct;\n }\n } catch {}\n }\n }\n\n private saveLayoutPrefs(): void {\n const prefs = {\n navSizePct: this.NavSizePct,\n isNavCollapsed: this.IsNavCollapsed,\n copilotSizePct: this.CopilotSizePct,\n mainSizePct: this.MainSizePct,\n };\n UserInfoEngine.Instance.SetSettingDebounced('mj.predictiveStudio.studio.layout', JSON.stringify(prefs));\n }\n\n /** React to deep-link / back-forward `section` changes after the initial mount. */\n protected override OnQueryParamsChanged(params: Record<string, string>, _source: 'popstate' | 'deeplink'): void {\n const next = params['section'] as PSPanelKey | undefined;\n if (next && next !== this.ActiveSection && hasSection(this.sections, next)) {\n this.ActiveSection = next;\n this.cdrLocal.detectChanges();\n }\n }\n\n /** Deep agent context for the Studio door (build/run workbench counts + active section). */\n protected override extraAgentContext(): Record<string, unknown> {\n return buildStudioAgentContext({\n ActiveSection: this.ActiveSection,\n ActiveSectionLabel: this.ActiveLabel,\n SectionLabels: this.sections.map((s) => s.label),\n PublishedModelCount: this.engine.PublishedModels.length,\n RunningSessionCount: this.engine.RunningSessions.length,\n PipelineCount: this.engine.Pipelines.length,\n AlgorithmCount: this.engine.Algorithms.length,\n ExperimentCount: this.engine.Experiments.length,\n TrainingRunCount: this.engine.TrainingRuns.length,\n ChatOpen: this.ChatOpen,\n });\n }\n\n /**\n * 🔒 Read/navigate-only agent tools for the Studio door: switch the active section, or open the docked\n * Model Dev Agent co-pilot. NO build/train/publish tool is exposed — model creation runs through the\n * co-pilot conversation (the approve-gated builder), never a fire-and-forget agent tool.\n */\n protected override registerAgentTools(): void {\n this.navigationService.SetAgentClientTools(this, [\n {\n Name: 'SwitchStudioSection',\n Description:\n 'Switch the Studio workbench to a section. Pass the section key or label (see SectionLabels): Overview, Training Pipelines, Algorithm Catalog, Experiments, or Compare Runs.',\n ParameterSchema: { type: 'object', properties: { section: { type: 'string', description: 'The section key or label to switch to' } } },\n Handler: async (params: Record<string, unknown>) => {\n const check = validateStringParam(params['section'], 'section');\n if (!check.ok) return check.result;\n const candidates = this.sections.map((s) => ({ ID: s.key, Name: s.label }));\n const match = resolvePSRecord(check.value, candidates);\n if (!match) return { Success: false, ErrorMessage: buildPSNotFoundError(check.value, candidates, 'section') };\n this.selectSection(match.ID as PSPanelKey);\n return { Success: true, Data: { activeSection: match.Name } };\n },\n },\n {\n Name: 'OpenModelDevAgentCopilot',\n Description:\n 'Open the docked Model Development Agent co-pilot in the Studio (does not send a message — the user drives the conversation). Use when the user wants to design/build a new prediction.',\n ParameterSchema: { type: 'object', properties: {} },\n Handler: async () => {\n this.OpenCopilot();\n return { Success: true, Data: { chatOpen: true } };\n },\n },\n ]);\n }\n\n // ── left-nav ─────────────────────────────────────────────────────\n public get Groups(): string[] { return sectionGroups(this.sections); }\n\n /** @deprecated Use {@link Groups}. */\n public get groups(): string[] {\n return this.Groups;\n }\n public ItemsForGroup(group: string): PSSection[] { return sectionsInGroup(this.sections, group); }\n\n /** @deprecated Use {@link ItemsForGroup}. */\n public itemsForGroup(group: string): PSSection[] {\n return this.ItemsForGroup(group);\n }\n public get ActiveLabel(): string { return sectionLabel(this.sections, this.ActiveSection); }\n\n /** @deprecated Use {@link ActiveLabel}. */\n public get activeLabel(): string {\n return this.ActiveLabel;\n }\n\n /** Section-specific subtitle for the interior header (so every section doesn't repeat one generic line). */\n public get ActiveSubtitle(): string {\n const map: Record<string, string> = {\n home: 'Start a new prediction from your data, a template, or the agent.',\n pipelines: 'Assemble features and train from the algorithm catalog.',\n catalog: 'Browse algorithms with a fit guide for your use case.',\n experiments: 'Run and track model experiments.',\n compare: 'Compare runs on the honest holdout score.',\n };\n return map[this.ActiveSection] ?? '';\n }\n\n /** @deprecated Use {@link ActiveSubtitle}. */\n public get activeSubtitle(): string {\n return this.ActiveSubtitle;\n }\n\n public selectSection(key: PSPanelKey): void {\n if (this.ActiveSection === key) return;\n this.ActiveSection = key;\n this.UpdateQueryParams({ section: key });\n this.publishAgentContext();\n this.cdrLocal.detectChanges();\n }\n\n /** The Overview panel's in-app navigation: switch section in-place, or cross to the Models door. */\n public MapNavigate(key: PSPanelKey): void {\n const target = routeHomeNavigate(key);\n if (target.Kind === 'section') {\n this.selectSection(target.Key);\n } else if (target.Kind === 'app') {\n void this.navigationService.SwitchToApp(PREDICTIVE_STUDIO_APP_ID, target.NavLabel, { section: target.Section });\n }\n }\n\n /** @deprecated Use {@link MapNavigate}. */\n public mapNavigate(key: PSPanelKey): void {\n return this.MapNavigate(key);\n }\n\n // ── copilot ──────────────────────────────────────────────────────\n public get CurrentUser(): UserInfo | null { return this.ProviderToUse.CurrentUser ?? null; }\n\n /** @deprecated Use {@link CurrentUser}. */\n public get currentUser(): UserInfo | null {\n return this.CurrentUser;\n }\n\n public get ChatEnvironmentId(): string {\n return (this.Data?.Configuration?.['environmentId'] as string | undefined) || MJEnvironmentEntityExtended.DefaultEnvironmentID;\n }\n\n /** @deprecated Use {@link ChatEnvironmentId}. */\n public get chatEnvironmentId(): string {\n return this.ChatEnvironmentId;\n }\n public get applicationId(): string | null { return (this.Data?.Configuration?.['applicationId'] as string | undefined) ?? null; }\n public get ModelDevAgentId(): string | null { return this._modelDevAgentId; }\n\n /** @deprecated Use {@link ModelDevAgentId}. */\n public get modelDevAgentId(): string | null {\n return this.ModelDevAgentId;\n }\n public get ChatAppContext(): Record<string, unknown> {\n return { app: 'Predictive Studio', section: this.ActiveSection, publishedModels: this.engine.Models.filter((m) => m.Status === 'Published').length };\n }\n\n /** @deprecated Use {@link ChatAppContext}. */\n public get chatAppContext(): Record<string, unknown> {\n return this.ChatAppContext;\n }\n\n public OnAskAgent(starterPrompt: string): void {\n this.PendingPrompt = starterPrompt;\n this.ChatOpen = true;\n void this.ensureModelDevAgentResolved();\n this.publishAgentContext();\n this.cdrLocal.detectChanges();\n }\n\n /** @deprecated Use {@link OnAskAgent}. */\n public onAskAgent(starterPrompt: string): void {\n return this.OnAskAgent(starterPrompt);\n }\n\n /** Open the docked co-pilot (clean chat) — used by the read-only `OpenModelDevAgentCopilot` agent tool. */\n public OpenCopilot(): void {\n this.PendingPrompt = null;\n this.ChatOpen = true;\n void this.ensureModelDevAgentResolved();\n this.publishAgentContext();\n this.cdrLocal.detectChanges();\n }\n\n /** @deprecated Use {@link OpenCopilot}. */\n public openCopilot(): void {\n return this.OpenCopilot();\n }\n\n public CloseChat(): void {\n this.ChatOpen = false;\n this.PendingPrompt = null;\n this.CopilotExpanded = false;\n this.publishAgentContext();\n this.cdrLocal.detectChanges();\n }\n\n /** @deprecated Use {@link CloseChat}. */\n public closeChat(): void {\n return this.CloseChat();\n }\n\n public CopilotExpanded = false;\n\n /** @deprecated Use {@link CopilotExpanded}. */\n public get copilotExpanded() {\n return this.CopilotExpanded;\n }\n /** @deprecated Use {@link CopilotExpanded}. */\n public set copilotExpanded(value) {\n this.CopilotExpanded = value;\n }\n\n public ToggleCopilotExpanded(): void {\n this.CopilotExpanded = !this.CopilotExpanded;\n this.cdrLocal.detectChanges();\n }\n\n /** @deprecated Use {@link ToggleCopilotExpanded}. */\n public toggleCopilotExpanded(): void {\n return this.ToggleCopilotExpanded();\n }\n\n public OnNavigationRequest(req: NavigationRequest): void {\n if (req.navItemName === 'Models' || req.queryParams?.['modelId']) {\n void this.navigationService.SwitchToApp(PREDICTIVE_STUDIO_APP_ID, 'Models', req.queryParams);\n } else if (req.appName) {\n void this.navigationService.SwitchToApp(req.appName, req.navItemName, req.queryParams);\n }\n }\n\n /** @deprecated Use {@link OnNavigationRequest}. */\n public onNavigationRequest(req: NavigationRequest): void {\n return this.OnNavigationRequest(req);\n }\n\n /** Chat-area created its backing conversation on the first send — capture it + leave new-mode so the thread renders. */\n public OnChatConversationCreated(event: { conversation: MJConversationEntity; pendingMessage?: string }): void {\n this.PendingPrompt = event.pendingMessage ?? null;\n this.ChatConversation = event.conversation;\n this.ChatConversationId = event.conversation.ID;\n this.ChatIsNewConversation = false;\n this.cdrLocal.detectChanges();\n }\n\n /** @deprecated Use {@link OnChatConversationCreated}. */\n public onChatConversationCreated(event: { conversation: MJConversationEntity; pendingMessage?: string }): void {\n return this.OnChatConversationCreated(event);\n }\n\n /** Chat-area delivered the seeded prompt — clear the buffer so a re-render doesn't resend it. */\n public OnChatPendingMessageConsumed(): void {\n this.PendingPrompt = null;\n this.cdrLocal.detectChanges();\n }\n\n /** @deprecated Use {@link OnChatPendingMessageConsumed}. */\n public onChatPendingMessageConsumed(): void {\n return this.OnChatPendingMessageConsumed();\n }\n\n private async ensureModelDevAgentResolved(): Promise<void> {\n if (this._modelDevAgentId) return;\n try {\n await AIEngineBase.Instance.Config(false, this.ProviderToUse.CurrentUser ?? undefined);\n this._modelDevAgentId =\n AIEngineBase.Instance.Agents?.find((a) => a.Name?.trim().toLowerCase() === MODEL_DEV_AGENT_NAME.toLowerCase())?.ID ?? null;\n if (!this._modelDevAgentId) LogError(`PSStudioResource: '${MODEL_DEV_AGENT_NAME}' not found — chat uses default-agent routing.`);\n this.cdrLocal.detectChanges();\n } catch (err) {\n LogError(`PSStudioResource.ensureModelDevAgentResolved: ${err instanceof Error ? err.message : String(err)}`);\n }\n }\n}\n\n/** Tree-shaking prevention — called from the subpath module so the @RegisterClass survives bundling. */\nexport function LoadPSStudioResource(): void {\n // intentionally empty\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ps-studio-resource.component.js","sourceRoot":"","sources":["../../../src/PredictiveStudio/resources/ps-studio-resource.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ViewChild, inject } from '@angular/core';\nimport { RegisterClass } from '@memberjunction/global';\nimport { LogError, UserInfo } from '@memberjunction/core';\nimport { MJConversationEntity, MJEnvironmentEntityExtended, MJMLAlgorithmEntity, UserInfoEngine } from '@memberjunction/core-entities';\nimport { AIEngineBase } from '@memberjunction/ai-engine-base';\nimport { BaseResourceComponent } from '@memberjunction/ng-shared';\nimport { PSResourceBase } from './ps-resource-base';\nimport { PSPanelKey } from '../predictive-studio.types';\nimport { PSPipelinesComponent } from '../components/ps-pipelines.component';\nimport {\n STUDIO_SECTIONS,\n PSSection,\n sectionGroups,\n sectionsInGroup,\n sectionLabel,\n hasSection,\n routeHomeNavigate,\n} from '../predictive-studio.nav';\nimport {\n buildStudioAgentContext,\n resolvePSRecord,\n buildPSNotFoundError,\n} from '../predictive-studio-agent-context';\nimport { validateStringParam } from '../../shared/agent-tool-validation';\nimport type { NavigationRequest } from '@memberjunction/ng-artifacts';\n\n/** Predictive Studio application ID (from `metadata/applications/.predictive-studio-application.json`). */\nconst PREDICTIVE_STUDIO_APP_ID = '299C9272-8D38-40CA-85D4-0980F2C9FAD1';\nconst MODEL_DEV_AGENT_NAME = 'Model Development Agent';\n\n/**\n * **Studio** — the analyst workbench door (one of Predictive Studio's three consolidated nav items,\n * alongside `Predictions` and `Models`). Hosts the build/run section panels (`ps-home`, `ps-pipelines`,\n * `ps-catalog`, `ps-experiments`, `ps-compare`) behind an internal left-nav grouped by lifecycle\n * (Overview · Build · Run), so the outer app nav stays quiet while analysts get all the depth one click\n * in. The active section round-trips through the `section` query param (deep links + back/forward). A\n * single docked **Model Development Agent** copilot is shared by every section's \"Ask the agent\" CTA —\n * wired with the full conversation lifecycle (`isNewConversation` → `conversationCreated`) so the first\n * message actually creates + sends. Cross-door navigation (to a Models section) routes via the nav\n * service; see {@link routeHomeNavigate}.\n */\n@RegisterClass(BaseResourceComponent, 'PredictiveStudioStudioResource')\n@Component({\n standalone: false,\n selector: 'mj-ps-studio-resource',\n template: `\n <mj-page-header-interior [Title]=\"activeLabel\" [Subtitle]=\"activeSubtitle\">\n </mj-page-header-interior>\n <mj-page-body-interior [Flex]=\"true\" [Padding]=\"false\">\n @if (isLoading) {\n <mj-loading text=\"Loading Studio…\" size=\"medium\"></mj-loading>\n } @else if (loadError) {\n <div class=\"ps-load-error\" data-testid=\"ps-load-error\" role=\"alert\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i>\n <div class=\"ps-load-error-text\">\n <strong>Couldn't load {{ sectionTitle }}</strong>\n <span class=\"ps-load-error-detail\">{{ loadError }}</span>\n </div>\n <button mjButton variant=\"secondary\" size=\"sm\" (click)=\"retryLoad()\"><i class=\"fa-solid fa-rotate-right\"></i> Try again</button>\n </div>\n } @else {\n <div class=\"ps-studio-host\" [class.nav-collapsed]=\"isNavCollapsed\" [class.chat-open]=\"chatOpen\" data-testid=\"ps-studio-shell\">\n @if (isNavCollapsed) {\n <div class=\"ps-nav-collapsed-strip\" role=\"region\" aria-label=\"Studio navigation (collapsed)\">\n <button class=\"ps-nav-rail-collapse\" type=\"button\" (click)=\"toggleNav()\" aria-label=\"Expand studio navigation\" title=\"Expand navigation\">\n <i class=\"fa-solid fa-chevron-right\"></i>\n </button>\n <div class=\"ps-nav-collapsed-strip-label\"><i class=\"fa-solid fa-flask-vial\"></i> Studio</div>\n </div>\n }\n\n <as-split direction=\"horizontal\" class=\"studio-outer-splitter\" unit=\"percent\" [gutterSize]=\"isNavCollapsed ? 0 : 6\" (dragEnd)=\"onNavSplitDragEnd($event.sizes)\">\n @if (!isNavCollapsed) {\n <as-split-area [size]=\"navSizePct\" [minSize]=\"10\" [maxSize]=\"30\">\n <aside class=\"ps-leftnav\">\n <div class=\"ps-leftnav-header\">\n <span class=\"ps-leftnav-title\">Studio</span>\n <button class=\"ps-leftnav-collapse-btn\" type=\"button\" (click)=\"toggleNav()\" title=\"Collapse navigation\" aria-label=\"Collapse navigation\">\n <i class=\"fa-solid fa-chevron-left\"></i>\n </button>\n </div>\n @for (group of groups; track group) {\n @if (group) { <div class=\"ps-nav-group\">{{ group }}</div> }\n @for (item of itemsForGroup(group); track item.key) {\n <button class=\"ps-nav-item\" [class.active]=\"activeSection === item.key\"\n [attr.data-testid]=\"'ps-nav-' + item.key\" (click)=\"selectSection(item.key)\">\n <i [class]=\"item.icon\"></i> <span>{{ item.label }}</span>\n </button>\n }\n }\n </aside>\n </as-split-area>\n }\n\n <as-split-area [size]=\"isNavCollapsed ? 100 : (100 - navSizePct)\" [minSize]=\"60\">\n <div class=\"ps-studio-workspace\">\n <as-split direction=\"horizontal\" class=\"studio-copilot-splitter\" unit=\"percent\" [gutterSize]=\"chatOpen ? 6 : 0\" (dragEnd)=\"onCopilotSplitDragEnd($event.sizes)\">\n <as-split-area [size]=\"chatOpen ? (copilotExpanded ? 40 : mainSizePct) : 100\" [minSize]=\"30\">\n <section class=\"ps-content\" [class.fill]=\"activeSection === 'pipelines'\" [attr.data-testid]=\"'ps-panel-' + activeSection\">\n @switch (activeSection) {\n @case ('home') { <ps-home [engine]=\"engine\" [provider]=\"ProviderToUse\" [currentUser]=\"ProviderToUse.CurrentUser\" (navigate)=\"mapNavigate($event)\" (askAgent)=\"onAskAgent($event)\"></ps-home> }\n @case ('pipelines') { <ps-pipelines #pipelinesComp [engine]=\"engine\" [provider]=\"ProviderToUse\" [currentUser]=\"ProviderToUse.CurrentUser\" (askAgent)=\"onAskAgent($event)\" (navigate)=\"mapNavigate($event)\"></ps-pipelines> }\n @case ('catalog') { <ps-catalog [engine]=\"engine\" (askAgent)=\"onAskAgent($event)\" (createPipeline)=\"onCreatePipelineFromCatalog($event)\"></ps-catalog> }\n @case ('experiments') { <ps-experiments [engine]=\"engine\" [provider]=\"ProviderToUse\" [currentUser]=\"ProviderToUse.CurrentUser\"></ps-experiments> }\n @case ('compare') { <ps-compare [engine]=\"engine\"></ps-compare> }\n }\n </section>\n </as-split-area>\n\n @if (chatOpen) {\n <as-split-area [size]=\"copilotExpanded ? 60 : copilotSizePct\" [minSize]=\"20\" [maxSize]=\"70\">\n <aside class=\"ps-copilot\" [class.expanded]=\"copilotExpanded\" data-testid=\"ps-studio-copilot\">\n <div class=\"ps-copilot-head\">\n <div class=\"ps-copilot-title\"><i class=\"fa-solid fa-robot\"></i> Model Dev Agent</div>\n <div class=\"ps-copilot-actions\">\n <button class=\"ps-copilot-btn\" (click)=\"toggleCopilotExpanded()\" [title]=\"copilotExpanded ? 'Collapse panel' : 'Expand panel'\"><i class=\"fa-solid\" [class.fa-up-right-and-down-left-from-center]=\"!copilotExpanded\" [class.fa-down-left-and-up-right-to-center]=\"copilotExpanded\"></i></button>\n <button class=\"ps-copilot-close\" (click)=\"closeChat()\" aria-label=\"Close agent chat\"><i class=\"fa-solid fa-xmark\"></i></button>\n </div>\n </div>\n <div class=\"ps-copilot-body\">\n @if (currentUser) {\n <mj-conversation-chat-area\n [Provider]=\"Provider\" [environmentId]=\"chatEnvironmentId\" [currentUser]=\"currentUser\"\n [conversation]=\"chatConversation\" [conversationId]=\"chatConversationId\" [isNewConversation]=\"chatIsNewConversation\"\n [suppressNewConversationEmptyState]=\"true\" [allowMentions]=\"false\" [overlayMode]=\"false\"\n [showExportButton]=\"false\" [showShareButton]=\"false\" [showArtifactIndicator]=\"true\"\n [showAgentPicker]=\"false\" [showAgentModePicker]=\"false\"\n [defaultAgentId]=\"modelDevAgentId\" [pendingMessage]=\"pendingPrompt\"\n [applicationScope]=\"'Application'\" [applicationId]=\"applicationId\" [appContext]=\"chatAppContext\"\n (conversationCreated)=\"onChatConversationCreated($event)\"\n (pendingMessageConsumed)=\"onChatPendingMessageConsumed()\"\n (navigationRequest)=\"onNavigationRequest($event)\">\n </mj-conversation-chat-area>\n } @else { <div class=\"ps-copilot-empty\"><mj-loading text=\"Connecting…\" size=\"small\"></mj-loading></div> }\n </div>\n </aside>\n </as-split-area>\n }\n </as-split>\n </div>\n </as-split-area>\n </as-split>\n </div>\n }\n </mj-page-body-interior>\n `,\n styles: [\n `\n :host { display: flex; flex-direction: column; width: 100%; height: 100%; min-height: 0; }\n .ps-studio-host { display: flex; flex: 1; min-height: 0; overflow: hidden; width: 100%; height: 100%; }\n .studio-outer-splitter { flex: 1; width: 100%; height: 100%; min-height: 0; min-width: 0; background: transparent; }\n .studio-outer-splitter .as-split-gutter { background: transparent; transition: background-color 0.15s ease; position: relative; }\n .studio-outer-splitter .as-split-gutter:hover { background-color: var(--mj-brand-primary, #6366f1); }\n .studio-outer-splitter .as-split-gutter::after { content: ''; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 2px; height: 24px; border-radius: 1px; background: var(--mj-border-strong, #cbd5e1); }\n .studio-outer-splitter .as-split-gutter:hover::after { background: #ffffff; }\n\n .ps-nav-collapsed-strip { width: 44px; min-width: 44px; max-width: 44px; flex: none; background: var(--mj-bg-surface); border-right: 1px solid var(--mj-border-default); display: flex; flex-direction: column; align-items: center; padding: 10px 0; gap: 14px; z-index: 2; }\n .ps-nav-rail-collapse { background: var(--mj-bg-surface-subtle); border: 1px solid var(--mj-border-default); border-radius: 6px; color: var(--mj-text-secondary); cursor: pointer; display: grid; place-items: center; width: 28px; height: 28px; padding: 0; font-size: 11px; transition: background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease; }\n .ps-nav-rail-collapse:hover { background: var(--mj-bg-surface-hover); color: var(--mj-text-primary); border-color: var(--mj-border-strong); }\n .ps-nav-collapsed-strip-label { writing-mode: vertical-rl; transform: rotate(180deg); font-size: 11px; font-weight: 600; letter-spacing: 0.04em; color: var(--mj-text-muted); display: flex; align-items: center; gap: 8px; text-transform: uppercase; }\n\n .ps-leftnav { width: 100%; height: 100%; border-right: 1px solid var(--mj-border-default); background: var(--mj-bg-surface-card); overflow-y: auto; padding: 8px; display: flex; flex-direction: column; gap: 2px; box-sizing: border-box; }\n .ps-leftnav-header { display: flex; align-items: center; justify-content: space-between; padding: 4px 6px 8px; border-bottom: 1px solid var(--mj-border-subtle); margin-bottom: 4px; }\n .ps-leftnav-title { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; color: var(--mj-text-muted); }\n .ps-leftnav-collapse-btn { display: inline-flex; align-items: center; justify-content: center; width: 24px; height: 24px; border-radius: 6px; border: 1px solid var(--mj-border-default); background: var(--mj-bg-surface); color: var(--mj-text-muted); cursor: pointer; transition: all 0.15s ease; padding: 0; }\n .ps-leftnav-collapse-btn:hover { background: var(--mj-bg-surface-hover); color: var(--mj-text-primary); border-color: var(--mj-border-strong); }\n\n .ps-nav-group { font-size: var(--mj-text-xs); font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--mj-text-muted); padding: 10px 8px 4px; }\n .ps-nav-item { display: flex; align-items: center; gap: 10px; width: 100%; text-align: left; padding: 8px 10px; border: none; background: transparent; border-radius: var(--mj-radius-md); cursor: pointer; color: var(--mj-text-secondary); font-size: var(--mj-text-sm); font-weight: 500; transition: background .12s, color .12s; }\n .ps-nav-item i { width: 18px; text-align: center; color: var(--mj-text-muted); }\n .ps-nav-item:hover { background: var(--mj-bg-surface-hover); color: var(--mj-text-primary); }\n .ps-nav-item.active { background: color-mix(in srgb, var(--mj-brand-primary) 12%, transparent); color: var(--mj-brand-primary); font-weight: 600; }\n .ps-nav-item.active i { color: var(--mj-brand-primary); }\n\n .ps-studio-workspace { display: flex; flex: 1; width: 100%; height: 100%; min-height: 0; min-width: 0; overflow: hidden; }\n .studio-copilot-splitter { flex: 1; width: 100%; height: 100%; min-height: 0; min-width: 0; }\n .studio-copilot-splitter .as-split-gutter { background: transparent; transition: background-color 0.15s ease; position: relative; }\n .studio-copilot-splitter .as-split-gutter:hover { background-color: var(--mj-brand-primary, #6366f1); }\n .studio-copilot-splitter .as-split-gutter::after { content: ''; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 2px; height: 24px; border-radius: 1px; background: var(--mj-border-strong, #cbd5e1); }\n .ps-content { width: 100%; height: 100%; flex: 1; min-width: 0; overflow-y: auto; padding: 8px 14px 24px; }\n /* Fill mode (pipelines): the section stops page-scrolling so the panel's inner\n columns (canvas / inspector) can each own their scrollbar. */\n .ps-content.fill { overflow: hidden; display: flex; flex-direction: column; padding-bottom: 14px; }\n .ps-content.fill > * { flex: 1; min-height: 0; display: flex; flex-direction: column; }\n .ps-copilot { width: 100%; height: 100%; max-width: none; flex: 1; border-left: 1px solid var(--mj-border-default); background: var(--mj-bg-surface); display: flex; flex-direction: column; min-height: 0; }\n .ps-copilot-head { display: flex; align-items: center; justify-content: space-between; padding: 10px 14px; border-bottom: 1px solid var(--mj-border-default); }\n .ps-copilot-title { display: flex; align-items: center; gap: 8px; font-weight: 600; color: var(--mj-text-primary); }\n .ps-copilot-title i { color: var(--mj-brand-primary); }\n .ps-copilot-actions { display: flex; align-items: center; gap: 4px; }\n .ps-copilot-btn { background: transparent; border: none; cursor: pointer; padding: 6px 8px; border-radius: 6px; color: var(--mj-text-muted); }\n .ps-copilot-btn:hover { background: var(--mj-bg-surface-hover); color: var(--mj-text-secondary); }\n .ps-copilot-close { background: transparent; border: none; cursor: pointer; padding: 6px 8px; border-radius: 6px; color: var(--mj-text-muted); }\n .ps-copilot-close:hover { background: var(--mj-bg-surface-hover); color: var(--mj-text-secondary); }\n .ps-copilot-body { flex: 1; min-height: 0; overflow: hidden; display: flex; flex-direction: column; }\n .ps-copilot-body mj-conversation-chat-area { flex: 1; min-height: 0; display: block; }\n .ps-copilot-empty { display: flex; align-items: center; justify-content: center; flex: 1; }\n .ps-load-error { display: flex; align-items: center; gap: 14px; max-width: 620px; margin: 32px auto; padding: 18px 20px; border: 1px solid var(--mj-status-error-border); background: var(--mj-status-error-bg); border-radius: var(--mj-radius-lg); }\n .ps-load-error > i { font-size: 24px; color: var(--mj-status-error); }\n .ps-load-error-text { display: flex; flex-direction: column; gap: 2px; flex: 1; min-width: 0; }\n .ps-load-error-text strong { color: var(--mj-text-primary); }\n .ps-load-error-detail { color: var(--mj-text-secondary); font-size: var(--mj-text-sm); word-break: break-word; }\n @media (max-width: 1100px) { .ps-studio-host.chat-open .ps-content, .ps-studio-host.chat-open .ps-leftnav { display: none; } .ps-copilot { width: 100%; max-width: none; border-left: none; } }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PSStudioResourceComponent extends PSResourceBase {\n protected readonly SectionKey = 'studio';\n protected readonly SectionLabel = 'Studio';\n protected readonly SectionIcon = 'fa-solid fa-flask-vial';\n\n private readonly cdrLocal = inject(ChangeDetectorRef);\n\n /** The active workbench section (which panel renders). Round-trips through the `section` query param. */\n public ActiveSection: PSPanelKey = 'home';\n\n /** @deprecated Use {@link ActiveSection}. */\n public get activeSection(): PSPanelKey {\n return this.ActiveSection;\n }\n /** @deprecated Use {@link ActiveSection}. */\n public set activeSection(value: PSPanelKey) {\n this.ActiveSection = value;\n }\n public readonly sections: readonly PSSection[] = STUDIO_SECTIONS;\n\n @ViewChild('pipelinesComp') PipelinesComponent?: PSPipelinesComponent;\n\n /** @deprecated Use {@link PipelinesComponent}. */\n get pipelinesComponent(): PSPipelinesComponent | undefined {\n return this.PipelinesComponent;\n }\n /** @deprecated Use {@link PipelinesComponent}. */\n set pipelinesComponent(value: PSPipelinesComponent | undefined) {\n this.PipelinesComponent = value;\n }\n\n public OnCreatePipelineFromCatalog(algo: MJMLAlgorithmEntity): void {\n this.selectSection('pipelines');\n setTimeout(() => {\n this.PipelinesComponent?.openWizard(algo.ID);\n }, 50);\n }\n\n /** @deprecated Use {@link OnCreatePipelineFromCatalog}. */\n public onCreatePipelineFromCatalog(algo: MJMLAlgorithmEntity): void {\n return this.OnCreatePipelineFromCatalog(algo);\n }\n\n // ── docked Model Dev Agent copilot ───────────────────────────────\n public ChatOpen = false;\n\n /** @deprecated Use {@link ChatOpen}. */\n public get chatOpen() {\n return this.ChatOpen;\n }\n /** @deprecated Use {@link ChatOpen}. */\n public set chatOpen(value) {\n this.ChatOpen = value;\n }\n public PendingPrompt: string | null = null;\n\n /** @deprecated Use {@link PendingPrompt}. */\n public get pendingPrompt(): string | null {\n return this.PendingPrompt;\n }\n /** @deprecated Use {@link PendingPrompt}. */\n public set pendingPrompt(value: string | null) {\n this.PendingPrompt = value;\n }\n private _modelDevAgentId: string | null = null;\n /** Conversation lifecycle (see {@link onChatConversationCreated}) — without it the first send no-ops. */\n public ChatConversation: MJConversationEntity | null = null;\n\n /** @deprecated Use {@link ChatConversation}. */\n public get chatConversation(): MJConversationEntity | null {\n return this.ChatConversation;\n }\n /** @deprecated Use {@link ChatConversation}. */\n public set chatConversation(value: MJConversationEntity | null) {\n this.ChatConversation = value;\n }\n public ChatConversationId: string | null = null;\n\n /** @deprecated Use {@link ChatConversationId}. */\n public get chatConversationId(): string | null {\n return this.ChatConversationId;\n }\n /** @deprecated Use {@link ChatConversationId}. */\n public set chatConversationId(value: string | null) {\n this.ChatConversationId = value;\n }\n public ChatIsNewConversation = true;\n\n /** @deprecated Use {@link ChatIsNewConversation}. */\n public get chatIsNewConversation() {\n return this.ChatIsNewConversation;\n }\n /** @deprecated Use {@link ChatIsNewConversation}. */\n public set chatIsNewConversation(value) {\n this.ChatIsNewConversation = value;\n }\n public IsNavCollapsed = false;\n\n /** @deprecated Use {@link IsNavCollapsed}. */\n public get isNavCollapsed() {\n return this.IsNavCollapsed;\n }\n /** @deprecated Use {@link IsNavCollapsed}. */\n public set isNavCollapsed(value) {\n this.IsNavCollapsed = value;\n }\n public NavSizePct = 14;\n\n /** @deprecated Use {@link NavSizePct}. */\n public get navSizePct() {\n return this.NavSizePct;\n }\n /** @deprecated Use {@link NavSizePct}. */\n public set navSizePct(value) {\n this.NavSizePct = value;\n }\n public MainSizePct = 68;\n\n /** @deprecated Use {@link MainSizePct}. */\n public get mainSizePct() {\n return this.MainSizePct;\n }\n /** @deprecated Use {@link MainSizePct}. */\n public set mainSizePct(value) {\n this.MainSizePct = value;\n }\n public CopilotSizePct = 32;\n\n /** @deprecated Use {@link CopilotSizePct}. */\n public get copilotSizePct() {\n return this.CopilotSizePct;\n }\n /** @deprecated Use {@link CopilotSizePct}. */\n public set copilotSizePct(value) {\n this.CopilotSizePct = value;\n }\n\n override ngOnInit(): void {\n super.ngOnInit();\n const initial = this.GetQueryParams()['section'] as PSPanelKey | undefined;\n if (initial && hasSection(this.sections, initial)) this.ActiveSection = initial;\n this.loadLayoutPrefs();\n }\n\n public ToggleNav(): void {\n this.IsNavCollapsed = !this.IsNavCollapsed;\n this.saveLayoutPrefs();\n this.cdrLocal.detectChanges();\n }\n\n /** @deprecated Use {@link ToggleNav}. */\n public toggleNav(): void {\n return this.ToggleNav();\n }\n\n public OnNavSplitDragEnd(sizes: readonly (number | '*')[]): void {\n if (Array.isArray(sizes) && sizes.length === 2 && typeof sizes[0] === 'number') {\n this.NavSizePct = Math.round(sizes[0]);\n this.saveLayoutPrefs();\n }\n }\n\n /** @deprecated Use {@link OnNavSplitDragEnd}. */\n public onNavSplitDragEnd(sizes: readonly (number | '*')[]): void {\n return this.OnNavSplitDragEnd(sizes);\n }\n\n public OnCopilotSplitDragEnd(sizes: readonly (number | '*')[]): void {\n if (Array.isArray(sizes) && sizes.length === 2 && typeof sizes[0] === 'number' && typeof sizes[1] === 'number') {\n this.MainSizePct = Math.round(sizes[0]);\n this.CopilotSizePct = Math.round(sizes[1]);\n this.saveLayoutPrefs();\n }\n }\n\n /** @deprecated Use {@link OnCopilotSplitDragEnd}. */\n public onCopilotSplitDragEnd(sizes: readonly (number | '*')[]): void {\n return this.OnCopilotSplitDragEnd(sizes);\n }\n\n private loadLayoutPrefs(): void {\n const saved = UserInfoEngine.Instance.GetSetting('mj.predictiveStudio.studio.layout');\n if (saved) {\n try {\n const parsed = JSON.parse(saved);\n if (typeof parsed.navSizePct === 'number' && parsed.navSizePct >= 10 && parsed.navSizePct <= 35) {\n this.NavSizePct = parsed.navSizePct;\n }\n if (typeof parsed.isNavCollapsed === 'boolean') {\n this.IsNavCollapsed = parsed.isNavCollapsed;\n }\n if (typeof parsed.copilotSizePct === 'number' && parsed.copilotSizePct >= 20 && parsed.copilotSizePct <= 60) {\n this.CopilotSizePct = parsed.copilotSizePct;\n this.MainSizePct = 100 - this.CopilotSizePct;\n }\n } catch {}\n }\n }\n\n private saveLayoutPrefs(): void {\n const prefs = {\n navSizePct: this.NavSizePct,\n isNavCollapsed: this.IsNavCollapsed,\n copilotSizePct: this.CopilotSizePct,\n mainSizePct: this.MainSizePct,\n };\n UserInfoEngine.Instance.SetSettingDebounced('mj.predictiveStudio.studio.layout', JSON.stringify(prefs));\n }\n\n /** React to deep-link / back-forward `section` changes after the initial mount. */\n protected override OnQueryParamsChanged(params: Record<string, string>, _source: 'popstate' | 'deeplink'): void {\n const next = params['section'] as PSPanelKey | undefined;\n if (next && next !== this.ActiveSection && hasSection(this.sections, next)) {\n this.ActiveSection = next;\n this.cdrLocal.detectChanges();\n }\n }\n\n /** Deep agent context for the Studio door (build/run workbench counts + active section). */\n protected override extraAgentContext(): Record<string, unknown> {\n return buildStudioAgentContext({\n ActiveSection: this.ActiveSection,\n ActiveSectionLabel: this.ActiveLabel,\n SectionLabels: this.sections.map((s) => s.label),\n PublishedModelCount: this.engine.PublishedModels.length,\n RunningSessionCount: this.engine.RunningSessions.length,\n PipelineCount: this.engine.Pipelines.length,\n AlgorithmCount: this.engine.Algorithms.length,\n ExperimentCount: this.engine.Experiments.length,\n TrainingRunCount: this.engine.TrainingRuns.length,\n ChatOpen: this.ChatOpen,\n });\n }\n\n /**\n * 🔒 Read/navigate-only agent tools for the Studio door: switch the active section, or open the docked\n * Model Dev Agent co-pilot. NO build/train/publish tool is exposed — model creation runs through the\n * co-pilot conversation (the approve-gated builder), never a fire-and-forget agent tool.\n */\n protected override registerAgentTools(): void {\n this.navigationService.SetAgentClientTools(this, [\n {\n Name: 'SwitchStudioSection',\n Description:\n 'Switch the Studio workbench to a section. Pass the section key or label (see SectionLabels): Overview, Training Pipelines, Algorithm Catalog, Experiments, or Compare Runs.',\n ParameterSchema: { type: 'object', properties: { section: { type: 'string', description: 'The section key or label to switch to' } } },\n Handler: async (params: Record<string, unknown>) => {\n const check = validateStringParam(params['section'], 'section');\n if (!check.ok) return check.result;\n const candidates = this.sections.map((s) => ({ ID: s.key, Name: s.label }));\n const match = resolvePSRecord(check.value, candidates);\n if (!match) return { Success: false, ErrorMessage: buildPSNotFoundError(check.value, candidates, 'section') };\n this.selectSection(match.ID as PSPanelKey);\n return { Success: true, Data: { activeSection: match.Name } };\n },\n },\n {\n Name: 'OpenModelDevAgentCopilot',\n Description:\n 'Open the docked Model Development Agent co-pilot in the Studio (does not send a message — the user drives the conversation). Use when the user wants to design/build a new prediction.',\n ParameterSchema: { type: 'object', properties: {} },\n Handler: async () => {\n this.OpenCopilot();\n return { Success: true, Data: { chatOpen: true } };\n },\n },\n ]);\n }\n\n // ── left-nav ─────────────────────────────────────────────────────\n public get Groups(): string[] { return sectionGroups(this.sections); }\n\n /** @deprecated Use {@link Groups}. */\n public get groups(): string[] {\n return this.Groups;\n }\n public ItemsForGroup(group: string): PSSection[] { return sectionsInGroup(this.sections, group); }\n\n /** @deprecated Use {@link ItemsForGroup}. */\n public itemsForGroup(group: string): PSSection[] {\n return this.ItemsForGroup(group);\n }\n public get ActiveLabel(): string { return sectionLabel(this.sections, this.ActiveSection); }\n\n /** @deprecated Use {@link ActiveLabel}. */\n public get activeLabel(): string {\n return this.ActiveLabel;\n }\n\n /** Section-specific subtitle for the interior header (so every section doesn't repeat one generic line). */\n public get ActiveSubtitle(): string {\n const map: Record<string, string> = {\n home: 'Start a new prediction from your data, a template, or the agent.',\n pipelines: 'Assemble features and train from the algorithm catalog.',\n catalog: 'Browse algorithms with a fit guide for your use case.',\n experiments: 'Review earlier model experiment sessions.',\n compare: 'Compare runs on the honest holdout score.',\n };\n return map[this.ActiveSection] ?? '';\n }\n\n /** @deprecated Use {@link ActiveSubtitle}. */\n public get activeSubtitle(): string {\n return this.ActiveSubtitle;\n }\n\n public selectSection(key: PSPanelKey): void {\n if (this.ActiveSection === key) return;\n this.ActiveSection = key;\n this.UpdateQueryParams({ section: key });\n this.publishAgentContext();\n this.cdrLocal.detectChanges();\n }\n\n /** The Overview panel's in-app navigation: switch section in-place, or cross to the Models door. */\n public MapNavigate(key: PSPanelKey): void {\n const target = routeHomeNavigate(key);\n if (target.Kind === 'section') {\n this.selectSection(target.Key);\n } else if (target.Kind === 'app') {\n void this.navigationService.SwitchToApp(PREDICTIVE_STUDIO_APP_ID, target.NavLabel, { section: target.Section });\n }\n }\n\n /** @deprecated Use {@link MapNavigate}. */\n public mapNavigate(key: PSPanelKey): void {\n return this.MapNavigate(key);\n }\n\n // ── copilot ──────────────────────────────────────────────────────\n public get CurrentUser(): UserInfo | null { return this.ProviderToUse.CurrentUser ?? null; }\n\n /** @deprecated Use {@link CurrentUser}. */\n public get currentUser(): UserInfo | null {\n return this.CurrentUser;\n }\n\n public get ChatEnvironmentId(): string {\n return (this.Data?.Configuration?.['environmentId'] as string | undefined) || MJEnvironmentEntityExtended.DefaultEnvironmentID;\n }\n\n /** @deprecated Use {@link ChatEnvironmentId}. */\n public get chatEnvironmentId(): string {\n return this.ChatEnvironmentId;\n }\n public get applicationId(): string | null { return (this.Data?.Configuration?.['applicationId'] as string | undefined) ?? null; }\n public get ModelDevAgentId(): string | null { return this._modelDevAgentId; }\n\n /** @deprecated Use {@link ModelDevAgentId}. */\n public get modelDevAgentId(): string | null {\n return this.ModelDevAgentId;\n }\n public get ChatAppContext(): Record<string, unknown> {\n return { app: 'Predictive Studio', section: this.ActiveSection, publishedModels: this.engine.Models.filter((m) => m.Status === 'Published').length };\n }\n\n /** @deprecated Use {@link ChatAppContext}. */\n public get chatAppContext(): Record<string, unknown> {\n return this.ChatAppContext;\n }\n\n public OnAskAgent(starterPrompt: string): void {\n this.PendingPrompt = starterPrompt;\n this.ChatOpen = true;\n void this.ensureModelDevAgentResolved();\n this.publishAgentContext();\n this.cdrLocal.detectChanges();\n }\n\n /** @deprecated Use {@link OnAskAgent}. */\n public onAskAgent(starterPrompt: string): void {\n return this.OnAskAgent(starterPrompt);\n }\n\n /** Open the docked co-pilot (clean chat) — used by the read-only `OpenModelDevAgentCopilot` agent tool. */\n public OpenCopilot(): void {\n this.PendingPrompt = null;\n this.ChatOpen = true;\n void this.ensureModelDevAgentResolved();\n this.publishAgentContext();\n this.cdrLocal.detectChanges();\n }\n\n /** @deprecated Use {@link OpenCopilot}. */\n public openCopilot(): void {\n return this.OpenCopilot();\n }\n\n public CloseChat(): void {\n this.ChatOpen = false;\n this.PendingPrompt = null;\n this.CopilotExpanded = false;\n this.publishAgentContext();\n this.cdrLocal.detectChanges();\n }\n\n /** @deprecated Use {@link CloseChat}. */\n public closeChat(): void {\n return this.CloseChat();\n }\n\n public CopilotExpanded = false;\n\n /** @deprecated Use {@link CopilotExpanded}. */\n public get copilotExpanded() {\n return this.CopilotExpanded;\n }\n /** @deprecated Use {@link CopilotExpanded}. */\n public set copilotExpanded(value) {\n this.CopilotExpanded = value;\n }\n\n public ToggleCopilotExpanded(): void {\n this.CopilotExpanded = !this.CopilotExpanded;\n this.cdrLocal.detectChanges();\n }\n\n /** @deprecated Use {@link ToggleCopilotExpanded}. */\n public toggleCopilotExpanded(): void {\n return this.ToggleCopilotExpanded();\n }\n\n public OnNavigationRequest(req: NavigationRequest): void {\n if (req.navItemName === 'Models' || req.queryParams?.['modelId']) {\n void this.navigationService.SwitchToApp(PREDICTIVE_STUDIO_APP_ID, 'Models', req.queryParams);\n } else if (req.appName) {\n void this.navigationService.SwitchToApp(req.appName, req.navItemName, req.queryParams);\n }\n }\n\n /** @deprecated Use {@link OnNavigationRequest}. */\n public onNavigationRequest(req: NavigationRequest): void {\n return this.OnNavigationRequest(req);\n }\n\n /** Chat-area created its backing conversation on the first send — capture it + leave new-mode so the thread renders. */\n public OnChatConversationCreated(event: { conversation: MJConversationEntity; pendingMessage?: string }): void {\n this.PendingPrompt = event.pendingMessage ?? null;\n this.ChatConversation = event.conversation;\n this.ChatConversationId = event.conversation.ID;\n this.ChatIsNewConversation = false;\n this.cdrLocal.detectChanges();\n }\n\n /** @deprecated Use {@link OnChatConversationCreated}. */\n public onChatConversationCreated(event: { conversation: MJConversationEntity; pendingMessage?: string }): void {\n return this.OnChatConversationCreated(event);\n }\n\n /** Chat-area delivered the seeded prompt — clear the buffer so a re-render doesn't resend it. */\n public OnChatPendingMessageConsumed(): void {\n this.PendingPrompt = null;\n this.cdrLocal.detectChanges();\n }\n\n /** @deprecated Use {@link OnChatPendingMessageConsumed}. */\n public onChatPendingMessageConsumed(): void {\n return this.OnChatPendingMessageConsumed();\n }\n\n private async ensureModelDevAgentResolved(): Promise<void> {\n if (this._modelDevAgentId) return;\n try {\n await AIEngineBase.Instance.Config(false, this.ProviderToUse.CurrentUser ?? undefined);\n this._modelDevAgentId =\n AIEngineBase.Instance.Agents?.find((a) => a.Name?.trim().toLowerCase() === MODEL_DEV_AGENT_NAME.toLowerCase())?.ID ?? null;\n if (!this._modelDevAgentId) LogError(`PSStudioResource: '${MODEL_DEV_AGENT_NAME}' not found — chat uses default-agent routing.`);\n this.cdrLocal.detectChanges();\n } catch (err) {\n LogError(`PSStudioResource.ensureModelDevAgentResolved: ${err instanceof Error ? err.message : String(err)}`);\n }\n }\n}\n\n/** Tree-shaking prevention — called from the subpath module so the @RegisterClass survives bundling. */\nexport function LoadPSStudioResource(): void {\n // intentionally empty\n}\n"]}
|
|
@@ -4,9 +4,11 @@ import { BaseResourceComponent } from '@memberjunction/ng-shared';
|
|
|
4
4
|
import { CompositeKey, RunQueryResult } from '@memberjunction/core';
|
|
5
5
|
import { TreeBranchConfig } from '@memberjunction/ng-trees';
|
|
6
6
|
import { ResourceData, MJQueryEntityExtended, MJQueryCategoryEntity } from '@memberjunction/core-entities';
|
|
7
|
+
import type { QueryDiagnosticLine } from '@memberjunction/core-entities';
|
|
7
8
|
import { QueryEntityLinkClickEvent, QueryRowClickEvent } from '@memberjunction/ng-query-viewer';
|
|
8
9
|
import { CompositionTokenClickEvent } from '@memberjunction/ng-code-editor';
|
|
9
10
|
import { MJConfirmService } from '@memberjunction/ng-ui-components';
|
|
11
|
+
import type { QueryRefreshScope } from '@memberjunction/ng-query-viewer';
|
|
10
12
|
import * as i0 from "@angular/core";
|
|
11
13
|
/**
|
|
12
14
|
* Tree node for the query category hierarchy
|
|
@@ -122,6 +124,8 @@ export declare class QueryBrowserResourceComponent extends BaseResourceComponent
|
|
|
122
124
|
IsSavingDrawer: boolean;
|
|
123
125
|
DrawerNameError: boolean;
|
|
124
126
|
DrawerSaveError: string | null;
|
|
127
|
+
/** Why the drawer's last save was refused, one finding per rule the SQL broke. */
|
|
128
|
+
DrawerSaveDiagnostics: QueryDiagnosticLine[];
|
|
125
129
|
/** Ordered status options for the drawer dropdown — all valid Query statuses */
|
|
126
130
|
readonly DrawerStatuses: Array<'Pending' | 'Approved' | 'Rejected' | 'Expired'>;
|
|
127
131
|
private initialDrawerSnapshot;
|
|
@@ -285,6 +289,28 @@ export declare class QueryBrowserResourceComponent extends BaseResourceComponent
|
|
|
285
289
|
get NoQueryResultsMessage(): string;
|
|
286
290
|
/** True when the current user has permission to create new queries. */
|
|
287
291
|
get CanCreateQuery(): boolean;
|
|
292
|
+
ShowRefreshDialog: boolean;
|
|
293
|
+
RefreshScope: QueryRefreshScope | null;
|
|
294
|
+
RefreshScopeLabel: string;
|
|
295
|
+
/** Refreshes the metadata of one query (the selected one). */
|
|
296
|
+
OpenRefreshForQuery(query: MJQueryEntityExtended): void;
|
|
297
|
+
/** Refreshes the metadata of every query in a category and the categories below it. */
|
|
298
|
+
OpenRefreshForCategory(node: CategoryNode, event?: Event): void;
|
|
299
|
+
/** Refreshes the metadata of every query the user can read. */
|
|
300
|
+
OpenRefreshForAll(): void;
|
|
301
|
+
OnRefreshDialogClosed(): void;
|
|
302
|
+
/** A refresh was applied: reload the list, keeping the selected query selected. */
|
|
303
|
+
OnRefreshApplied(): Promise<void>;
|
|
304
|
+
/** A query named in the refresh report: close the dialog and select it. */
|
|
305
|
+
OnRefreshOpenQuery(queryID: string): void;
|
|
306
|
+
private openRefresh;
|
|
307
|
+
/** A category's full path (`Parent/Child`), as the refresh operation selects categories. */
|
|
308
|
+
private categoryPathOf;
|
|
309
|
+
/**
|
|
310
|
+
* Shows why a drawer save failed: the server's findings (rule code, line, column, fix) when the
|
|
311
|
+
* query's rules refused it, otherwise the server's message.
|
|
312
|
+
*/
|
|
313
|
+
private showDrawerSaveFailure;
|
|
288
314
|
/** True when the current user has permission to edit queries. */
|
|
289
315
|
get CanEditQuery(): boolean;
|
|
290
316
|
/** Close the drawer when Escape is pressed (if open). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-browser-resource.component.d.ts","sourceRoot":"","sources":["../../src/QueryBrowser/query-browser-resource.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAA2B,UAAU,EAAE,MAAM,EAA2B,MAAM,eAAe,CAAC;AAEtJ,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAY,YAAY,EAAY,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAkB,qBAAqB,EAAE,qBAAqB,
|
|
1
|
+
{"version":3,"file":"query-browser-resource.component.d.ts","sourceRoot":"","sources":["../../src/QueryBrowser/query-browser-resource.component.ts"],"names":[],"mappings":"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"}
|