@memberjunction/ng-dashboards 6.1.2 → 6.2.0-edge.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/dist/AI/components/vectors/vector-management-resource.component.d.ts +6 -1
  2. package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
  3. package/dist/AI/components/vectors/vector-management-resource.component.js +99 -45
  4. package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
  5. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.d.ts +4 -0
  6. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.d.ts.map +1 -1
  7. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js +16 -6
  8. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js.map +1 -1
  9. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts +4 -0
  10. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
  11. package/dist/DataExplorer/data-explorer-dashboard.component.js +14 -4
  12. package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
  13. package/dist/DataExplorer/services/explorer-state.service.js +2 -2
  14. package/dist/DataExplorer/services/explorer-state.service.js.map +1 -1
  15. package/dist/DevTools/graphql-console.component.d.ts.map +1 -1
  16. package/dist/DevTools/graphql-console.component.js +2 -0
  17. package/dist/DevTools/graphql-console.component.js.map +1 -1
  18. package/dist/Integration/components/connections/connections.component.d.ts.map +1 -1
  19. package/dist/Integration/components/connections/connections.component.js +2 -0
  20. package/dist/Integration/components/connections/connections.component.js.map +1 -1
  21. package/dist/KnowledgeHub/components/feature-pipelines/feature-pipelines-resource.component.d.ts +4 -12
  22. package/dist/KnowledgeHub/components/feature-pipelines/feature-pipelines-resource.component.d.ts.map +1 -1
  23. package/dist/KnowledgeHub/components/feature-pipelines/feature-pipelines-resource.component.js +39 -78
  24. package/dist/KnowledgeHub/components/feature-pipelines/feature-pipelines-resource.component.js.map +1 -1
  25. package/dist/Lists/components/lists-browse-resource.component.d.ts +3 -0
  26. package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
  27. package/dist/Lists/components/lists-browse-resource.component.js +7 -6
  28. package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
  29. package/dist/Lists/components/lists-my-lists-resource.component.d.ts +3 -0
  30. package/dist/Lists/components/lists-my-lists-resource.component.d.ts.map +1 -1
  31. package/dist/Lists/components/lists-my-lists-resource.component.js +7 -6
  32. package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
  33. package/dist/PredictiveStudio/at-risk.view-models.d.ts +41 -3
  34. package/dist/PredictiveStudio/at-risk.view-models.d.ts.map +1 -1
  35. package/dist/PredictiveStudio/at-risk.view-models.js +99 -6
  36. package/dist/PredictiveStudio/at-risk.view-models.js.map +1 -1
  37. package/dist/PredictiveStudio/components/ps-catalog.component.d.ts +4 -1
  38. package/dist/PredictiveStudio/components/ps-catalog.component.d.ts.map +1 -1
  39. package/dist/PredictiveStudio/components/ps-catalog.component.js +61 -37
  40. package/dist/PredictiveStudio/components/ps-catalog.component.js.map +1 -1
  41. package/dist/PredictiveStudio/components/ps-experiments.component.d.ts +12 -0
  42. package/dist/PredictiveStudio/components/ps-experiments.component.d.ts.map +1 -1
  43. package/dist/PredictiveStudio/components/ps-experiments.component.js +426 -184
  44. package/dist/PredictiveStudio/components/ps-experiments.component.js.map +1 -1
  45. package/dist/PredictiveStudio/components/ps-pipeline-wizard.component.d.ts +84 -0
  46. package/dist/PredictiveStudio/components/ps-pipeline-wizard.component.d.ts.map +1 -0
  47. package/dist/PredictiveStudio/components/ps-pipeline-wizard.component.js +1397 -0
  48. package/dist/PredictiveStudio/components/ps-pipeline-wizard.component.js.map +1 -0
  49. package/dist/PredictiveStudio/components/ps-pipelines.component.d.ts +66 -34
  50. package/dist/PredictiveStudio/components/ps-pipelines.component.d.ts.map +1 -1
  51. package/dist/PredictiveStudio/components/ps-pipelines.component.js +2456 -743
  52. package/dist/PredictiveStudio/components/ps-pipelines.component.js.map +1 -1
  53. package/dist/PredictiveStudio/components/ps-predictions-grid.component.d.ts +194 -0
  54. package/dist/PredictiveStudio/components/ps-predictions-grid.component.d.ts.map +1 -0
  55. package/dist/PredictiveStudio/components/ps-predictions-grid.component.js +1902 -0
  56. package/dist/PredictiveStudio/components/ps-predictions-grid.component.js.map +1 -0
  57. package/dist/PredictiveStudio/components/ps-production.component.d.ts +17 -1
  58. package/dist/PredictiveStudio/components/ps-production.component.d.ts.map +1 -1
  59. package/dist/PredictiveStudio/components/ps-production.component.js +653 -372
  60. package/dist/PredictiveStudio/components/ps-production.component.js.map +1 -1
  61. package/dist/PredictiveStudio/components/ps-registry.component.d.ts +21 -61
  62. package/dist/PredictiveStudio/components/ps-registry.component.d.ts.map +1 -1
  63. package/dist/PredictiveStudio/components/ps-registry.component.js +214 -681
  64. package/dist/PredictiveStudio/components/ps-registry.component.js.map +1 -1
  65. package/dist/PredictiveStudio/components/ps-run-experiment-modal.component.d.ts +49 -0
  66. package/dist/PredictiveStudio/components/ps-run-experiment-modal.component.d.ts.map +1 -0
  67. package/dist/PredictiveStudio/components/ps-run-experiment-modal.component.js +658 -0
  68. package/dist/PredictiveStudio/components/ps-run-experiment-modal.component.js.map +1 -0
  69. package/dist/PredictiveStudio/predictive-studio-score-history.service.d.ts +42 -0
  70. package/dist/PredictiveStudio/predictive-studio-score-history.service.d.ts.map +1 -0
  71. package/dist/PredictiveStudio/predictive-studio-score-history.service.js +90 -0
  72. package/dist/PredictiveStudio/predictive-studio-score-history.service.js.map +1 -0
  73. package/dist/PredictiveStudio/predictive-studio.view-models.d.ts +14 -2
  74. package/dist/PredictiveStudio/predictive-studio.view-models.d.ts.map +1 -1
  75. package/dist/PredictiveStudio/predictive-studio.view-models.js +41 -5
  76. package/dist/PredictiveStudio/predictive-studio.view-models.js.map +1 -1
  77. package/dist/PredictiveStudio/resources/ps-models-resource.component.d.ts +9 -1
  78. package/dist/PredictiveStudio/resources/ps-models-resource.component.d.ts.map +1 -1
  79. package/dist/PredictiveStudio/resources/ps-models-resource.component.js +178 -65
  80. package/dist/PredictiveStudio/resources/ps-models-resource.component.js.map +1 -1
  81. package/dist/PredictiveStudio/resources/ps-predictions-resource.component.d.ts +9 -1
  82. package/dist/PredictiveStudio/resources/ps-predictions-resource.component.d.ts.map +1 -1
  83. package/dist/PredictiveStudio/resources/ps-predictions-resource.component.js +307 -369
  84. package/dist/PredictiveStudio/resources/ps-predictions-resource.component.js.map +1 -1
  85. package/dist/PredictiveStudio/resources/ps-resource-base.js +1 -1
  86. package/dist/PredictiveStudio/resources/ps-resource-base.js.map +1 -1
  87. package/dist/PredictiveStudio/resources/ps-studio-resource.component.d.ts +17 -1
  88. package/dist/PredictiveStudio/resources/ps-studio-resource.component.d.ts.map +1 -1
  89. package/dist/PredictiveStudio/resources/ps-studio-resource.component.js +309 -138
  90. package/dist/PredictiveStudio/resources/ps-studio-resource.component.js.map +1 -1
  91. package/dist/VersionHistory/components/graph-resource.component.d.ts +1 -0
  92. package/dist/VersionHistory/components/graph-resource.component.d.ts.map +1 -1
  93. package/dist/VersionHistory/components/graph-resource.component.js +6 -5
  94. package/dist/VersionHistory/components/graph-resource.component.js.map +1 -1
  95. package/dist/predictive-studio-dashboards.module.d.ts +10 -8
  96. package/dist/predictive-studio-dashboards.module.d.ts.map +1 -1
  97. package/dist/predictive-studio-dashboards.module.js +13 -3
  98. package/dist/predictive-studio-dashboards.module.js.map +1 -1
  99. package/package.json +64 -63
@@ -7,7 +7,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  import { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject } from '@angular/core';
8
8
  import { NormalizeUUID, RegisterClass, UUIDsEqual } from '@memberjunction/global';
9
9
  import { CompositeKey, LogError, RunView } from '@memberjunction/core';
10
- import { MJEnvironmentEntityExtended } from '@memberjunction/core-entities';
10
+ import { MJEnvironmentEntityExtended, UserInfoEngine } from '@memberjunction/core-entities';
11
11
  import { AIEngineBase } from '@memberjunction/ai-engine-base';
12
12
  import { trustDots, trustEvidenceLine } from '@memberjunction/predictive-studio-core';
13
13
  import { BaseResourceComponent } from '@memberjunction/ng-shared';
@@ -22,11 +22,11 @@ import * as i0 from "@angular/core";
22
22
  import * as i1 from "@memberjunction/ng-ui-components";
23
23
  import * as i2 from "@memberjunction/ng-shared-generic";
24
24
  import * as i3 from "@memberjunction/ng-conversations";
25
+ import * as i4 from "angular-split";
26
+ import * as i5 from "../components/ps-predictions-grid.component";
25
27
  const _c0 = () => [1, 2, 3, 4, 5];
26
28
  const _forTrack0 = ($index, $item) => $item.title;
27
29
  const _forTrack1 = ($index, $item) => $item.modelId;
28
- const _forTrack2 = ($index, $item) => $item.recordId;
29
- const _forTrack3 = ($index, $item) => $item.label;
30
30
  function PSPredictionsResourceComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
31
31
  const _r1 = i0.ɵɵgetCurrentView();
32
32
  i0.ɵɵelementStart(0, "button", 8);
@@ -60,39 +60,39 @@ function PSPredictionsResourceComponent_Conditional_5_Template(rf, ctx) { if (rf
60
60
  i0.ɵɵadvance(2);
61
61
  i0.ɵɵtextInterpolate(ctx_r1.loadError);
62
62
  } }
63
- function PSPredictionsResourceComponent_Conditional_6_Conditional_2_Conditional_0_For_9_Template(rf, ctx) { if (rf & 1) {
64
- i0.ɵɵelementStart(0, "div", 23);
63
+ function PSPredictionsResourceComponent_Conditional_6_Conditional_4_Conditional_0_For_9_Template(rf, ctx) { if (rf & 1) {
64
+ i0.ɵɵelementStart(0, "div", 25);
65
65
  i0.ɵɵelement(1, "i");
66
- i0.ɵɵelementStart(2, "div", 25);
66
+ i0.ɵɵelementStart(2, "div", 27);
67
67
  i0.ɵɵtext(3);
68
68
  i0.ɵɵelementEnd();
69
- i0.ɵɵelementStart(4, "div", 26);
69
+ i0.ɵɵelementStart(4, "div", 28);
70
70
  i0.ɵɵtext(5);
71
71
  i0.ɵɵelementEnd()();
72
72
  } if (rf & 2) {
73
- const cap_r5 = ctx.$implicit;
73
+ const cap_r6 = ctx.$implicit;
74
74
  i0.ɵɵadvance();
75
- i0.ɵɵclassMap(cap_r5.icon);
75
+ i0.ɵɵclassMap(cap_r6.icon);
76
76
  i0.ɵɵadvance(2);
77
- i0.ɵɵtextInterpolate(cap_r5.title);
77
+ i0.ɵɵtextInterpolate(cap_r6.title);
78
78
  i0.ɵɵadvance(2);
79
- i0.ɵɵtextInterpolate(cap_r5.blurb);
79
+ i0.ɵɵtextInterpolate(cap_r6.blurb);
80
80
  } }
81
- function PSPredictionsResourceComponent_Conditional_6_Conditional_2_Conditional_0_Template(rf, ctx) { if (rf & 1) {
82
- const _r4 = i0.ɵɵgetCurrentView();
83
- i0.ɵɵelementStart(0, "div", 18)(1, "div", 20);
84
- i0.ɵɵelement(2, "i", 21);
81
+ function PSPredictionsResourceComponent_Conditional_6_Conditional_4_Conditional_0_Template(rf, ctx) { if (rf & 1) {
82
+ const _r5 = i0.ɵɵgetCurrentView();
83
+ i0.ɵɵelementStart(0, "div", 20)(1, "div", 22);
84
+ i0.ɵɵelement(2, "i", 23);
85
85
  i0.ɵɵelementStart(3, "h2");
86
86
  i0.ɵɵtext(4, "Predict what's next for your data");
87
87
  i0.ɵɵelementEnd();
88
88
  i0.ɵɵelementStart(5, "p");
89
89
  i0.ɵɵtext(6, "Predictive Studio turns your records into plain-language predictions \u2014 describe what you want to know, and the agent builds and trains a model with you. Here's what you can do:");
90
90
  i0.ɵɵelementEnd()();
91
- i0.ɵɵelementStart(7, "div", 22);
92
- i0.ɵɵrepeaterCreate(8, PSPredictionsResourceComponent_Conditional_6_Conditional_2_Conditional_0_For_9_Template, 6, 4, "div", 23, _forTrack0);
91
+ i0.ɵɵelementStart(7, "div", 24);
92
+ i0.ɵɵrepeaterCreate(8, PSPredictionsResourceComponent_Conditional_6_Conditional_4_Conditional_0_For_9_Template, 6, 4, "div", 25, _forTrack0);
93
93
  i0.ɵɵelementEnd();
94
- i0.ɵɵelementStart(10, "button", 24);
95
- i0.ɵɵlistener("click", function PSPredictionsResourceComponent_Conditional_6_Conditional_2_Conditional_0_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.newPrediction()); });
94
+ i0.ɵɵelementStart(10, "button", 26);
95
+ i0.ɵɵlistener("click", function PSPredictionsResourceComponent_Conditional_6_Conditional_4_Conditional_0_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.newPrediction()); });
96
96
  i0.ɵɵelement(11, "i", 9);
97
97
  i0.ɵɵtext(12, " Build your first prediction");
98
98
  i0.ɵɵelementEnd()();
@@ -101,222 +101,123 @@ function PSPredictionsResourceComponent_Conditional_6_Conditional_2_Conditional_
101
101
  i0.ɵɵadvance(8);
102
102
  i0.ɵɵrepeater(ctx_r1.capabilityCards);
103
103
  } }
104
- function PSPredictionsResourceComponent_Conditional_6_Conditional_2_Conditional_1_For_2_Conditional_10_Template(rf, ctx) { if (rf & 1) {
105
- const _r6 = i0.ɵɵgetCurrentView();
106
- i0.ɵɵelementStart(0, "button", 37);
107
- i0.ɵɵlistener("click", function PSPredictionsResourceComponent_Conditional_6_Conditional_2_Conditional_1_For_2_Conditional_10_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r6); const c_r7 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.open(c_r7)); });
104
+ function PSPredictionsResourceComponent_Conditional_6_Conditional_4_Conditional_1_For_2_Conditional_10_Template(rf, ctx) { if (rf & 1) {
105
+ const _r7 = i0.ɵɵgetCurrentView();
106
+ i0.ɵɵelementStart(0, "button", 39);
107
+ i0.ɵɵlistener("click", function PSPredictionsResourceComponent_Conditional_6_Conditional_4_Conditional_1_For_2_Conditional_10_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r7); const c_r8 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.open(c_r8)); });
108
108
  i0.ɵɵtext(1, "Open ");
109
- i0.ɵɵelement(2, "i", 38);
109
+ i0.ɵɵelement(2, "i", 40);
110
110
  i0.ɵɵelementEnd();
111
111
  } }
112
- function PSPredictionsResourceComponent_Conditional_6_Conditional_2_Conditional_1_For_2_Conditional_11_Template(rf, ctx) { if (rf & 1) {
113
- const _r8 = i0.ɵɵgetCurrentView();
114
- i0.ɵɵelementStart(0, "button", 39);
115
- i0.ɵɵlistener("click", function PSPredictionsResourceComponent_Conditional_6_Conditional_2_Conditional_1_For_2_Conditional_11_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r8); const c_r7 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.improvePrediction(c_r7)); });
116
- i0.ɵɵelement(1, "i", 21);
112
+ function PSPredictionsResourceComponent_Conditional_6_Conditional_4_Conditional_1_For_2_Conditional_11_Template(rf, ctx) { if (rf & 1) {
113
+ const _r9 = i0.ɵɵgetCurrentView();
114
+ i0.ɵɵelementStart(0, "button", 41);
115
+ i0.ɵɵlistener("click", function PSPredictionsResourceComponent_Conditional_6_Conditional_4_Conditional_1_For_2_Conditional_11_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r9); const c_r8 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.improvePrediction(c_r8)); });
116
+ i0.ɵɵelement(1, "i", 23);
117
117
  i0.ɵɵtext(2, " Improve this");
118
118
  i0.ɵɵelementEnd();
119
119
  } }
120
- function PSPredictionsResourceComponent_Conditional_6_Conditional_2_Conditional_1_For_2_Template(rf, ctx) { if (rf & 1) {
121
- i0.ɵɵelementStart(0, "div", 28)(1, "div", 29)(2, "span", 30);
122
- i0.ɵɵelement(3, "i", 31);
120
+ function PSPredictionsResourceComponent_Conditional_6_Conditional_4_Conditional_1_For_2_Template(rf, ctx) { if (rf & 1) {
121
+ i0.ɵɵelementStart(0, "div", 30)(1, "div", 31)(2, "span", 32);
122
+ i0.ɵɵelement(3, "i", 33);
123
123
  i0.ɵɵtext(4);
124
124
  i0.ɵɵelementEnd()();
125
- i0.ɵɵelementStart(5, "h3", 32);
125
+ i0.ɵɵelementStart(5, "h3", 34);
126
126
  i0.ɵɵtext(6);
127
127
  i0.ɵɵelementEnd();
128
- i0.ɵɵelementStart(7, "p", 33);
128
+ i0.ɵɵelementStart(7, "p", 35);
129
129
  i0.ɵɵtext(8);
130
130
  i0.ɵɵelementEnd();
131
- i0.ɵɵelementStart(9, "div", 34);
132
- i0.ɵɵconditionalCreate(10, PSPredictionsResourceComponent_Conditional_6_Conditional_2_Conditional_1_For_2_Conditional_10_Template, 3, 0, "button", 35)(11, PSPredictionsResourceComponent_Conditional_6_Conditional_2_Conditional_1_For_2_Conditional_11_Template, 3, 0, "button", 36);
131
+ i0.ɵɵelementStart(9, "div", 36);
132
+ i0.ɵɵconditionalCreate(10, PSPredictionsResourceComponent_Conditional_6_Conditional_4_Conditional_1_For_2_Conditional_10_Template, 3, 0, "button", 37)(11, PSPredictionsResourceComponent_Conditional_6_Conditional_4_Conditional_1_For_2_Conditional_11_Template, 3, 0, "button", 38);
133
133
  i0.ɵɵelementEnd()();
134
134
  } if (rf & 2) {
135
- const c_r7 = ctx.$implicit;
136
- i0.ɵɵclassProp("blocked", !c_r7.canOpen);
135
+ const c_r8 = ctx.$implicit;
136
+ i0.ɵɵclassProp("blocked", !c_r8.canOpen);
137
137
  i0.ɵɵadvance(2);
138
- i0.ɵɵclassMap("trust-" + c_r7.trust.grade.toLowerCase());
138
+ i0.ɵɵclassMap("trust-" + c_r8.trust.grade.toLowerCase());
139
139
  i0.ɵɵadvance(2);
140
- i0.ɵɵtextInterpolate1(" ", c_r7.canOpen ? c_r7.trust.grade : "Not ready", " ");
140
+ i0.ɵɵtextInterpolate1(" ", c_r8.canOpen ? c_r8.trust.grade : "Not ready", " ");
141
141
  i0.ɵɵadvance(2);
142
- i0.ɵɵtextInterpolate(c_r7.title);
142
+ i0.ɵɵtextInterpolate(c_r8.title);
143
143
  i0.ɵɵadvance(2);
144
- i0.ɵɵtextInterpolate(c_r7.canOpen ? c_r7.trust.oneLiner : c_r7.blockedReason);
144
+ i0.ɵɵtextInterpolate(c_r8.canOpen ? c_r8.trust.oneLiner : c_r8.blockedReason);
145
145
  i0.ɵɵadvance(2);
146
- i0.ɵɵconditional(c_r7.canOpen ? 10 : 11);
146
+ i0.ɵɵconditional(c_r8.canOpen ? 10 : 11);
147
147
  } }
148
- function PSPredictionsResourceComponent_Conditional_6_Conditional_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
149
- i0.ɵɵelementStart(0, "div", 19);
150
- i0.ɵɵrepeaterCreate(1, PSPredictionsResourceComponent_Conditional_6_Conditional_2_Conditional_1_For_2_Template, 12, 8, "div", 27, _forTrack1);
148
+ function PSPredictionsResourceComponent_Conditional_6_Conditional_4_Conditional_1_Template(rf, ctx) { if (rf & 1) {
149
+ i0.ɵɵelementStart(0, "div", 21);
150
+ i0.ɵɵrepeaterCreate(1, PSPredictionsResourceComponent_Conditional_6_Conditional_4_Conditional_1_For_2_Template, 12, 8, "div", 29, _forTrack1);
151
151
  i0.ɵɵelementEnd();
152
152
  } if (rf & 2) {
153
153
  const ctx_r1 = i0.ɵɵnextContext(3);
154
154
  i0.ɵɵadvance();
155
155
  i0.ɵɵrepeater(ctx_r1.cards);
156
156
  } }
157
- function PSPredictionsResourceComponent_Conditional_6_Conditional_2_Template(rf, ctx) { if (rf & 1) {
158
- i0.ɵɵconditionalCreate(0, PSPredictionsResourceComponent_Conditional_6_Conditional_2_Conditional_0_Template, 13, 0, "div", 18)(1, PSPredictionsResourceComponent_Conditional_6_Conditional_2_Conditional_1_Template, 3, 0, "div", 19);
157
+ function PSPredictionsResourceComponent_Conditional_6_Conditional_4_Template(rf, ctx) { if (rf & 1) {
158
+ i0.ɵɵconditionalCreate(0, PSPredictionsResourceComponent_Conditional_6_Conditional_4_Conditional_0_Template, 13, 0, "div", 20)(1, PSPredictionsResourceComponent_Conditional_6_Conditional_4_Conditional_1_Template, 3, 0, "div", 21);
159
159
  } if (rf & 2) {
160
160
  const ctx_r1 = i0.ɵɵnextContext(2);
161
161
  i0.ɵɵconditional(ctx_r1.cards.length === 0 ? 0 : 1);
162
162
  } }
163
- function PSPredictionsResourceComponent_Conditional_6_Conditional_3_For_9_Template(rf, ctx) { if (rf & 1) {
164
- i0.ɵɵelement(0, "i", 55);
163
+ function PSPredictionsResourceComponent_Conditional_6_Conditional_5_For_9_Template(rf, ctx) { if (rf & 1) {
164
+ i0.ɵɵelement(0, "i", 57);
165
165
  } if (rf & 2) {
166
- const d_r10 = ctx.$implicit;
166
+ const d_r11 = ctx.$implicit;
167
167
  const ctx_r1 = i0.ɵɵnextContext(3);
168
- i0.ɵɵclassProp("on", d_r10 <= ctx_r1.dots(ctx_r1.selected));
168
+ i0.ɵɵclassProp("on", d_r11 <= ctx_r1.dots(ctx_r1.selected));
169
169
  } }
170
- function PSPredictionsResourceComponent_Conditional_6_Conditional_3_Conditional_20_Conditional_0_For_5_Template(rf, ctx) { if (rf & 1) {
171
- i0.ɵɵelementStart(0, "span", 62);
170
+ function PSPredictionsResourceComponent_Conditional_6_Conditional_5_Conditional_20_Conditional_0_For_5_Template(rf, ctx) { if (rf & 1) {
171
+ i0.ɵɵelementStart(0, "span", 61);
172
172
  i0.ɵɵtext(1);
173
173
  i0.ɵɵelementEnd();
174
174
  } if (rf & 2) {
175
- const d_r11 = ctx.$implicit;
175
+ const d_r12 = ctx.$implicit;
176
176
  i0.ɵɵadvance();
177
- i0.ɵɵtextInterpolate(d_r11);
177
+ i0.ɵɵtextInterpolate(d_r12);
178
178
  } }
179
- function PSPredictionsResourceComponent_Conditional_6_Conditional_3_Conditional_20_Conditional_0_Template(rf, ctx) { if (rf & 1) {
180
- i0.ɵɵelementStart(0, "div", 56);
181
- i0.ɵɵelement(1, "i", 61);
179
+ function PSPredictionsResourceComponent_Conditional_6_Conditional_5_Conditional_20_Conditional_0_Template(rf, ctx) { if (rf & 1) {
180
+ i0.ɵɵelementStart(0, "div", 58);
181
+ i0.ɵɵelement(1, "i", 60);
182
182
  i0.ɵɵelementStart(2, "strong");
183
183
  i0.ɵɵtext(3, "What's driving this:");
184
184
  i0.ɵɵelementEnd();
185
- i0.ɵɵrepeaterCreate(4, PSPredictionsResourceComponent_Conditional_6_Conditional_3_Conditional_20_Conditional_0_For_5_Template, 2, 1, "span", 62, i0.ɵɵrepeaterTrackByIdentity);
185
+ i0.ɵɵrepeaterCreate(4, PSPredictionsResourceComponent_Conditional_6_Conditional_5_Conditional_20_Conditional_0_For_5_Template, 2, 1, "span", 61, i0.ɵɵrepeaterTrackByIdentity);
186
186
  i0.ɵɵelementEnd();
187
187
  } if (rf & 2) {
188
188
  const ctx_r1 = i0.ɵɵnextContext(4);
189
189
  i0.ɵɵadvance(4);
190
190
  i0.ɵɵrepeater(ctx_r1.drivers);
191
191
  } }
192
- function PSPredictionsResourceComponent_Conditional_6_Conditional_3_Conditional_20_Conditional_1_Template(rf, ctx) { if (rf & 1) {
193
- i0.ɵɵelement(0, "mj-loading", 57);
194
- } }
195
- function PSPredictionsResourceComponent_Conditional_6_Conditional_3_Conditional_20_Conditional_2_Template(rf, ctx) { if (rf & 1) {
196
- const _r12 = i0.ɵɵgetCurrentView();
197
- i0.ɵɵelementStart(0, "div", 58);
198
- i0.ɵɵelement(1, "i", 10);
199
- i0.ɵɵelementStart(2, "span", 63);
200
- i0.ɵɵtext(3);
201
- i0.ɵɵelementEnd();
202
- i0.ɵɵelementStart(4, "button", 13);
203
- i0.ɵɵlistener("click", function PSPredictionsResourceComponent_Conditional_6_Conditional_3_Conditional_20_Conditional_2_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.retryAtRisk()); });
204
- i0.ɵɵelement(5, "i", 14);
205
- i0.ɵɵtext(6, " Try again");
206
- i0.ɵɵelementEnd()();
207
- } if (rf & 2) {
208
- const ctx_r1 = i0.ɵɵnextContext(4);
209
- i0.ɵɵadvance(3);
210
- i0.ɵɵtextInterpolate1("Couldn't load who's at risk: ", ctx_r1.atRiskError);
211
- } }
212
- function PSPredictionsResourceComponent_Conditional_6_Conditional_3_Conditional_20_Conditional_3_For_8_Conditional_4_For_2_Template(rf, ctx) { if (rf & 1) {
213
- i0.ɵɵelementStart(0, "span", 75);
214
- i0.ɵɵelement(1, "i", 76);
215
- i0.ɵɵtext(2);
216
- i0.ɵɵelementEnd();
217
- } if (rf & 2) {
218
- const d_r13 = ctx.$implicit;
219
- i0.ɵɵclassProp("up", d_r13.up)("down", !d_r13.up);
220
- i0.ɵɵproperty("title", (d_r13.up ? "Increases risk: " : "Lowers risk: ") + d_r13.label);
221
- i0.ɵɵadvance();
222
- i0.ɵɵclassProp("fa-arrow-up", d_r13.up)("fa-arrow-down", !d_r13.up);
223
- i0.ɵɵadvance();
224
- i0.ɵɵtextInterpolate1(" ", d_r13.label, " ");
225
- } }
226
- function PSPredictionsResourceComponent_Conditional_6_Conditional_3_Conditional_20_Conditional_3_For_8_Conditional_4_Template(rf, ctx) { if (rf & 1) {
227
- i0.ɵɵelementStart(0, "span", 70);
228
- i0.ɵɵrepeaterCreate(1, PSPredictionsResourceComponent_Conditional_6_Conditional_3_Conditional_20_Conditional_3_For_8_Conditional_4_For_2_Template, 3, 10, "span", 74, _forTrack3);
229
- i0.ɵɵelementEnd();
230
- } if (rf & 2) {
231
- const r_r14 = i0.ɵɵnextContext().$implicit;
232
- i0.ɵɵadvance();
233
- i0.ɵɵrepeater(r_r14.drivers.slice(0, 2));
234
- } }
235
- function PSPredictionsResourceComponent_Conditional_6_Conditional_3_Conditional_20_Conditional_3_For_8_Template(rf, ctx) { if (rf & 1) {
236
- i0.ɵɵelementStart(0, "div", 66)(1, "div", 68)(2, "span", 69);
237
- i0.ɵɵtext(3);
238
- i0.ɵɵelementEnd();
239
- i0.ɵɵconditionalCreate(4, PSPredictionsResourceComponent_Conditional_6_Conditional_3_Conditional_20_Conditional_3_For_8_Conditional_4_Template, 3, 0, "span", 70);
240
- i0.ɵɵelementEnd();
241
- i0.ɵɵelementStart(5, "span", 71);
242
- i0.ɵɵelement(6, "span", 72);
243
- i0.ɵɵelementEnd();
244
- i0.ɵɵelementStart(7, "span", 73);
245
- i0.ɵɵtext(8);
246
- i0.ɵɵelementEnd()();
247
- } if (rf & 2) {
248
- const r_r14 = ctx.$implicit;
249
- i0.ɵɵadvance(2);
250
- i0.ɵɵclassProp("mono", !r_r14.label);
251
- i0.ɵɵproperty("title", r_r14.recordId);
252
- i0.ɵɵadvance();
253
- i0.ɵɵtextInterpolate(r_r14.label || r_r14.recordId);
254
- i0.ɵɵadvance();
255
- i0.ɵɵconditional(r_r14.drivers && r_r14.drivers.length > 0 ? 4 : -1);
256
- i0.ɵɵadvance(2);
257
- i0.ɵɵclassMap("risk-" + r_r14.band);
258
- i0.ɵɵstyleProp("width", r_r14.riskPct, "%");
259
- i0.ɵɵadvance();
260
- i0.ɵɵclassMap("risk-" + r_r14.band);
261
- i0.ɵɵadvance();
262
- i0.ɵɵtextInterpolate1("", r_r14.riskPct, "%");
263
- } }
264
- function PSPredictionsResourceComponent_Conditional_6_Conditional_3_Conditional_20_Conditional_3_Template(rf, ctx) { if (rf & 1) {
265
- i0.ɵɵelementStart(0, "div", 59, 0)(2, "div", 64)(3, "span");
266
- i0.ɵɵtext(4, "Member");
267
- i0.ɵɵelementEnd();
268
- i0.ɵɵelementStart(5, "span", 65);
269
- i0.ɵɵtext(6, "Likelihood");
270
- i0.ɵɵelementEnd()();
271
- i0.ɵɵrepeaterCreate(7, PSPredictionsResourceComponent_Conditional_6_Conditional_3_Conditional_20_Conditional_3_For_8_Template, 9, 12, "div", 66, _forTrack2);
272
- i0.ɵɵelementStart(9, "div", 67);
273
- i0.ɵɵtext(10);
274
- i0.ɵɵelementEnd()();
275
- } if (rf & 2) {
276
- const ctx_r1 = i0.ɵɵnextContext(4);
277
- i0.ɵɵadvance(7);
278
- i0.ɵɵrepeater(ctx_r1.atRiskRows.slice(0, 50));
279
- i0.ɵɵadvance(3);
280
- i0.ɵɵtextInterpolate1("", ctx_r1.atRiskRows.length > 50 ? "Showing top 50 of " + ctx_r1.atRiskRows.length : ctx_r1.atRiskRows.length + " members", " \u00B7 highest first");
281
- } }
282
- function PSPredictionsResourceComponent_Conditional_6_Conditional_3_Conditional_20_Conditional_4_Template(rf, ctx) { if (rf & 1) {
283
- i0.ɵɵelementStart(0, "div", 60);
284
- i0.ɵɵtext(1, "No results yet \u2014 run this prediction from ");
285
- i0.ɵɵelementStart(2, "strong");
286
- i0.ɵɵtext(3, "Models in Production");
287
- i0.ɵɵelementEnd();
288
- i0.ɵɵtext(4, " to see who's at risk.");
289
- i0.ɵɵelementEnd();
290
- } }
291
- function PSPredictionsResourceComponent_Conditional_6_Conditional_3_Conditional_20_Template(rf, ctx) { if (rf & 1) {
292
- i0.ɵɵconditionalCreate(0, PSPredictionsResourceComponent_Conditional_6_Conditional_3_Conditional_20_Conditional_0_Template, 6, 0, "div", 56);
293
- i0.ɵɵconditionalCreate(1, PSPredictionsResourceComponent_Conditional_6_Conditional_3_Conditional_20_Conditional_1_Template, 1, 0, "mj-loading", 57)(2, PSPredictionsResourceComponent_Conditional_6_Conditional_3_Conditional_20_Conditional_2_Template, 7, 1, "div", 58)(3, PSPredictionsResourceComponent_Conditional_6_Conditional_3_Conditional_20_Conditional_3_Template, 11, 1, "div", 59)(4, PSPredictionsResourceComponent_Conditional_6_Conditional_3_Conditional_20_Conditional_4_Template, 5, 0, "div", 60);
192
+ function PSPredictionsResourceComponent_Conditional_6_Conditional_5_Conditional_20_Template(rf, ctx) { if (rf & 1) {
193
+ i0.ɵɵconditionalCreate(0, PSPredictionsResourceComponent_Conditional_6_Conditional_5_Conditional_20_Conditional_0_Template, 6, 0, "div", 58);
194
+ i0.ɵɵelement(1, "ps-predictions-grid", 59, 0);
294
195
  } if (rf & 2) {
295
196
  const ctx_r1 = i0.ɵɵnextContext(3);
296
197
  i0.ɵɵconditional(ctx_r1.drivers.length > 0 ? 0 : -1);
297
198
  i0.ɵɵadvance();
298
- i0.ɵɵconditional(ctx_r1.atRiskLoading ? 1 : ctx_r1.atRiskError ? 2 : ctx_r1.atRiskRows.length > 0 ? 3 : 4);
199
+ i0.ɵɵproperty("modelId", ctx_r1.selected.modelId)("runId", ctx_r1.latestRunId)("title", ctx_r1.selected.title)("entityName", ctx_r1.selectedTargetEntityName)("problemType", ctx_r1.selectedProblemType);
299
200
  } }
300
- function PSPredictionsResourceComponent_Conditional_6_Conditional_3_Conditional_22_Template(rf, ctx) { if (rf & 1) {
301
- const _r15 = i0.ɵɵgetCurrentView();
302
- i0.ɵɵelementStart(0, "button", 77);
303
- i0.ɵɵlistener("click", function PSPredictionsResourceComponent_Conditional_6_Conditional_3_Conditional_22_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.scrollToList()); });
304
- i0.ɵɵelement(1, "i", 78);
201
+ function PSPredictionsResourceComponent_Conditional_6_Conditional_5_Conditional_22_Template(rf, ctx) { if (rf & 1) {
202
+ const _r13 = i0.ɵɵgetCurrentView();
203
+ i0.ɵɵelementStart(0, "button", 62);
204
+ i0.ɵɵlistener("click", function PSPredictionsResourceComponent_Conditional_6_Conditional_5_Conditional_22_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.scrollToList()); });
205
+ i0.ɵɵelement(1, "i", 63);
305
206
  i0.ɵɵtext(2, " Review the call list");
306
207
  i0.ɵɵelementEnd();
307
- i0.ɵɵelementStart(3, "button", 79);
308
- i0.ɵɵlistener("click", function PSPredictionsResourceComponent_Conditional_6_Conditional_3_Conditional_22_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.askAgentTo("Save these renewal-risk scores onto the member records so my team can use them.")); });
309
- i0.ɵɵelement(4, "i", 80);
208
+ i0.ɵɵelementStart(3, "button", 64);
209
+ i0.ɵɵlistener("click", function PSPredictionsResourceComponent_Conditional_6_Conditional_5_Conditional_22_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.askAgentTo("Save these prediction scores onto the records so my team can use them.")); });
210
+ i0.ɵɵelement(4, "i", 65);
310
211
  i0.ɵɵtext(5, " Save scores to records");
311
212
  i0.ɵɵelementEnd();
312
- i0.ɵɵelementStart(6, "button", 81);
313
- i0.ɵɵlistener("click", function PSPredictionsResourceComponent_Conditional_6_Conditional_3_Conditional_22_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.sendToList()); });
314
- i0.ɵɵelement(7, "i", 76);
213
+ i0.ɵɵelementStart(6, "button", 66);
214
+ i0.ɵɵlistener("click", function PSPredictionsResourceComponent_Conditional_6_Conditional_5_Conditional_22_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.sendToList()); });
215
+ i0.ɵɵelement(7, "i", 67);
315
216
  i0.ɵɵtext(8, " Send to a list");
316
217
  i0.ɵɵelementEnd();
317
- i0.ɵɵelementStart(9, "button", 82);
318
- i0.ɵɵlistener("click", function PSPredictionsResourceComponent_Conditional_6_Conditional_3_Conditional_22_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.exportList()); });
319
- i0.ɵɵelement(10, "i", 83);
218
+ i0.ɵɵelementStart(9, "button", 68);
219
+ i0.ɵɵlistener("click", function PSPredictionsResourceComponent_Conditional_6_Conditional_5_Conditional_22_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.exportList()); });
220
+ i0.ɵɵelement(10, "i", 69);
320
221
  i0.ɵɵtext(11, " Share / export");
321
222
  i0.ɵɵelementEnd();
322
223
  } if (rf & 2) {
@@ -328,9 +229,9 @@ function PSPredictionsResourceComponent_Conditional_6_Conditional_3_Conditional_
328
229
  i0.ɵɵadvance(2);
329
230
  i0.ɵɵproperty("disabled", ctx_r1.atRiskRows.length === 0);
330
231
  } }
331
- function PSPredictionsResourceComponent_Conditional_6_Conditional_3_Conditional_23_Template(rf, ctx) { if (rf & 1) {
332
- i0.ɵɵelementStart(0, "div", 53);
333
- i0.ɵɵelement(1, "i", 84);
232
+ function PSPredictionsResourceComponent_Conditional_6_Conditional_5_Conditional_23_Template(rf, ctx) { if (rf & 1) {
233
+ i0.ɵɵelementStart(0, "div", 55);
234
+ i0.ɵɵelement(1, "i", 70);
334
235
  i0.ɵɵtext(2);
335
236
  i0.ɵɵelementEnd();
336
237
  } if (rf & 2) {
@@ -338,8 +239,8 @@ function PSPredictionsResourceComponent_Conditional_6_Conditional_3_Conditional_
338
239
  i0.ɵɵadvance(2);
339
240
  i0.ɵɵtextInterpolate1(" ", ctx_r1.selected.trust.gateReason);
340
241
  } }
341
- function PSPredictionsResourceComponent_Conditional_6_Conditional_3_Conditional_24_Template(rf, ctx) { if (rf & 1) {
342
- i0.ɵɵelementStart(0, "div", 54);
242
+ function PSPredictionsResourceComponent_Conditional_6_Conditional_5_Conditional_24_Template(rf, ctx) { if (rf & 1) {
243
+ i0.ɵɵelementStart(0, "div", 56);
343
244
  i0.ɵɵtext(1);
344
245
  i0.ɵɵelementEnd();
345
246
  } if (rf & 2) {
@@ -347,37 +248,37 @@ function PSPredictionsResourceComponent_Conditional_6_Conditional_3_Conditional_
347
248
  i0.ɵɵadvance();
348
249
  i0.ɵɵtextInterpolate(ctx_r1.listResult);
349
250
  } }
350
- function PSPredictionsResourceComponent_Conditional_6_Conditional_3_Template(rf, ctx) { if (rf & 1) {
351
- const _r9 = i0.ɵɵgetCurrentView();
352
- i0.ɵɵelementStart(0, "nav", 40)(1, "a", 41);
353
- i0.ɵɵlistener("click", function PSPredictionsResourceComponent_Conditional_6_Conditional_3_Template_a_click_1_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.backToCatalog()); });
251
+ function PSPredictionsResourceComponent_Conditional_6_Conditional_5_Template(rf, ctx) { if (rf & 1) {
252
+ const _r10 = i0.ɵɵgetCurrentView();
253
+ i0.ɵɵelementStart(0, "nav", 42)(1, "a", 43);
254
+ i0.ɵɵlistener("click", function PSPredictionsResourceComponent_Conditional_6_Conditional_5_Template_a_click_1_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.backToCatalog()); });
354
255
  i0.ɵɵtext(2, "Predictions");
355
256
  i0.ɵɵelementEnd();
356
- i0.ɵɵelement(3, "i", 42);
257
+ i0.ɵɵelement(3, "i", 44);
357
258
  i0.ɵɵelementStart(4, "span");
358
259
  i0.ɵɵtext(5);
359
260
  i0.ɵɵelementEnd()();
360
- i0.ɵɵelementStart(6, "div", 43)(7, "div", 44);
361
- i0.ɵɵrepeaterCreate(8, PSPredictionsResourceComponent_Conditional_6_Conditional_3_For_9_Template, 1, 2, "i", 45, i0.ɵɵrepeaterTrackByIdentity);
261
+ i0.ɵɵelementStart(6, "div", 45)(7, "div", 46);
262
+ i0.ɵɵrepeaterCreate(8, PSPredictionsResourceComponent_Conditional_6_Conditional_5_For_9_Template, 1, 2, "i", 47, i0.ɵɵrepeaterTrackByIdentity);
362
263
  i0.ɵɵelementEnd();
363
- i0.ɵɵelementStart(10, "div", 46)(11, "div", 47);
264
+ i0.ɵɵelementStart(10, "div", 48)(11, "div", 49);
364
265
  i0.ɵɵtext(12);
365
266
  i0.ɵɵelementEnd();
366
- i0.ɵɵelementStart(13, "div", 48);
267
+ i0.ɵɵelementStart(13, "div", 50);
367
268
  i0.ɵɵtext(14);
368
269
  i0.ɵɵelementEnd();
369
- i0.ɵɵelementStart(15, "div", 49);
270
+ i0.ɵɵelementStart(15, "div", 51);
370
271
  i0.ɵɵtext(16);
371
272
  i0.ɵɵelementEnd();
372
- i0.ɵɵelementStart(17, "div", 50);
273
+ i0.ɵɵelementStart(17, "div", 52);
373
274
  i0.ɵɵtext(18);
374
275
  i0.ɵɵelementEnd()()();
375
- i0.ɵɵelementStart(19, "div", 51);
376
- i0.ɵɵconditionalCreate(20, PSPredictionsResourceComponent_Conditional_6_Conditional_3_Conditional_20_Template, 5, 2);
377
- i0.ɵɵelementStart(21, "div", 52);
378
- i0.ɵɵconditionalCreate(22, PSPredictionsResourceComponent_Conditional_6_Conditional_3_Conditional_22_Template, 12, 8)(23, PSPredictionsResourceComponent_Conditional_6_Conditional_3_Conditional_23_Template, 3, 1, "div", 53);
276
+ i0.ɵɵelementStart(19, "div", 53);
277
+ i0.ɵɵconditionalCreate(20, PSPredictionsResourceComponent_Conditional_6_Conditional_5_Conditional_20_Template, 3, 6);
278
+ i0.ɵɵelementStart(21, "div", 54);
279
+ i0.ɵɵconditionalCreate(22, PSPredictionsResourceComponent_Conditional_6_Conditional_5_Conditional_22_Template, 12, 8)(23, PSPredictionsResourceComponent_Conditional_6_Conditional_5_Conditional_23_Template, 3, 1, "div", 55);
379
280
  i0.ɵɵelementEnd();
380
- i0.ɵɵconditionalCreate(24, PSPredictionsResourceComponent_Conditional_6_Conditional_3_Conditional_24_Template, 2, 1, "div", 54);
281
+ i0.ɵɵconditionalCreate(24, PSPredictionsResourceComponent_Conditional_6_Conditional_5_Conditional_24_Template, 2, 1, "div", 56);
381
282
  i0.ɵɵelementEnd();
382
283
  } if (rf & 2) {
383
284
  const ctx_r1 = i0.ɵɵnextContext(2);
@@ -404,54 +305,62 @@ function PSPredictionsResourceComponent_Conditional_6_Conditional_3_Template(rf,
404
305
  i0.ɵɵadvance(2);
405
306
  i0.ɵɵconditional(ctx_r1.listResult ? 24 : -1);
406
307
  } }
407
- function PSPredictionsResourceComponent_Conditional_6_Conditional_4_Conditional_8_Template(rf, ctx) { if (rf & 1) {
408
- const _r17 = i0.ɵɵgetCurrentView();
409
- i0.ɵɵelementStart(0, "mj-conversation-chat-area", 93);
410
- i0.ɵɵlistener("conversationCreated", function PSPredictionsResourceComponent_Conditional_6_Conditional_4_Conditional_8_Template_mj_conversation_chat_area_conversationCreated_0_listener($event) { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.onChatConversationCreated($event)); })("pendingMessageConsumed", function PSPredictionsResourceComponent_Conditional_6_Conditional_4_Conditional_8_Template_mj_conversation_chat_area_pendingMessageConsumed_0_listener() { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.onChatPendingMessageConsumed()); });
308
+ function PSPredictionsResourceComponent_Conditional_6_Conditional_6_Conditional_9_Template(rf, ctx) { if (rf & 1) {
309
+ const _r15 = i0.ɵɵgetCurrentView();
310
+ i0.ɵɵelementStart(0, "mj-conversation-chat-area", 80);
311
+ i0.ɵɵlistener("conversationCreated", function PSPredictionsResourceComponent_Conditional_6_Conditional_6_Conditional_9_Template_mj_conversation_chat_area_conversationCreated_0_listener($event) { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.onChatConversationCreated($event)); })("pendingMessageConsumed", function PSPredictionsResourceComponent_Conditional_6_Conditional_6_Conditional_9_Template_mj_conversation_chat_area_pendingMessageConsumed_0_listener() { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.onChatPendingMessageConsumed()); });
411
312
  i0.ɵɵelementEnd();
412
313
  } if (rf & 2) {
413
314
  const ctx_r1 = i0.ɵɵnextContext(3);
414
315
  i0.ɵɵproperty("Provider", ctx_r1.Provider)("environmentId", ctx_r1.chatEnvironmentId)("currentUser", ctx_r1.currentUser)("conversation", ctx_r1.chatConversation)("conversationId", ctx_r1.chatConversationId)("isNewConversation", ctx_r1.chatIsNewConversation)("suppressNewConversationEmptyState", true)("allowMentions", false)("overlayMode", true)("showExportButton", false)("showShareButton", false)("showArtifactIndicator", false)("showAgentPicker", false)("showAgentModePicker", false)("defaultAgentId", ctx_r1.modelDevAgentId)("pendingMessage", ctx_r1.pendingPrompt)("applicationScope", "Application")("applicationId", ctx_r1.applicationId)("appContext", ctx_r1.chatAppContext);
415
316
  } }
416
- function PSPredictionsResourceComponent_Conditional_6_Conditional_4_Conditional_9_Template(rf, ctx) { if (rf & 1) {
417
- i0.ɵɵelementStart(0, "div", 92);
418
- i0.ɵɵelement(1, "mj-loading", 94);
317
+ function PSPredictionsResourceComponent_Conditional_6_Conditional_6_Conditional_10_Template(rf, ctx) { if (rf & 1) {
318
+ i0.ɵɵelementStart(0, "div", 79);
319
+ i0.ɵɵelement(1, "mj-loading", 81);
419
320
  i0.ɵɵelementEnd();
420
321
  } }
421
- function PSPredictionsResourceComponent_Conditional_6_Conditional_4_Template(rf, ctx) { if (rf & 1) {
422
- const _r16 = i0.ɵɵgetCurrentView();
423
- i0.ɵɵelementStart(0, "aside", 17)(1, "div", 85)(2, "div", 86);
424
- i0.ɵɵelement(3, "i", 87);
425
- i0.ɵɵtext(4, " New prediction");
322
+ function PSPredictionsResourceComponent_Conditional_6_Conditional_6_Template(rf, ctx) { if (rf & 1) {
323
+ const _r14 = i0.ɵɵgetCurrentView();
324
+ i0.ɵɵelementStart(0, "as-split-area", 19)(1, "aside", 71)(2, "div", 72)(3, "div", 73);
325
+ i0.ɵɵelement(4, "i", 74);
326
+ i0.ɵɵtext(5, " New prediction");
426
327
  i0.ɵɵelementEnd();
427
- i0.ɵɵelementStart(5, "button", 88);
428
- i0.ɵɵlistener("click", function PSPredictionsResourceComponent_Conditional_6_Conditional_4_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.closeChat()); });
429
- i0.ɵɵelement(6, "i", 89);
430
- i0.ɵɵelementEnd()();
431
- i0.ɵɵelementStart(7, "div", 90);
432
- i0.ɵɵconditionalCreate(8, PSPredictionsResourceComponent_Conditional_6_Conditional_4_Conditional_8_Template, 1, 19, "mj-conversation-chat-area", 91)(9, PSPredictionsResourceComponent_Conditional_6_Conditional_4_Conditional_9_Template, 2, 0, "div", 92);
328
+ i0.ɵɵelementStart(6, "button", 75);
329
+ i0.ɵɵlistener("click", function PSPredictionsResourceComponent_Conditional_6_Conditional_6_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.closeChat()); });
330
+ i0.ɵɵelement(7, "i", 76);
433
331
  i0.ɵɵelementEnd()();
332
+ i0.ɵɵelementStart(8, "div", 77);
333
+ i0.ɵɵconditionalCreate(9, PSPredictionsResourceComponent_Conditional_6_Conditional_6_Conditional_9_Template, 1, 19, "mj-conversation-chat-area", 78)(10, PSPredictionsResourceComponent_Conditional_6_Conditional_6_Conditional_10_Template, 2, 0, "div", 79);
334
+ i0.ɵɵelementEnd()()();
434
335
  } if (rf & 2) {
435
336
  const ctx_r1 = i0.ɵɵnextContext(2);
436
- i0.ɵɵadvance(8);
437
- i0.ɵɵconditional(ctx_r1.currentUser ? 8 : 9);
337
+ i0.ɵɵproperty("size", ctx_r1.copilotSizePct)("minSize", 20)("maxSize", 65);
338
+ i0.ɵɵadvance(9);
339
+ i0.ɵɵconditional(ctx_r1.currentUser ? 9 : 10);
438
340
  } }
439
341
  function PSPredictionsResourceComponent_Conditional_6_Template(rf, ctx) { if (rf & 1) {
440
- i0.ɵɵelementStart(0, "div", 15)(1, "div", 16);
441
- i0.ɵɵconditionalCreate(2, PSPredictionsResourceComponent_Conditional_6_Conditional_2_Template, 2, 1);
442
- i0.ɵɵconditionalCreate(3, PSPredictionsResourceComponent_Conditional_6_Conditional_3_Template, 25, 13);
443
- i0.ɵɵelementEnd();
444
- i0.ɵɵconditionalCreate(4, PSPredictionsResourceComponent_Conditional_6_Conditional_4_Template, 10, 1, "aside", 17);
445
- i0.ɵɵelementEnd();
342
+ const _r4 = i0.ɵɵgetCurrentView();
343
+ i0.ɵɵelementStart(0, "div", 15)(1, "as-split", 16);
344
+ i0.ɵɵlistener("dragEnd", function PSPredictionsResourceComponent_Conditional_6_Template_as_split_dragEnd_1_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onCopilotSplitDragEnd($event.sizes)); });
345
+ i0.ɵɵelementStart(2, "as-split-area", 17)(3, "div", 18);
346
+ i0.ɵɵconditionalCreate(4, PSPredictionsResourceComponent_Conditional_6_Conditional_4_Template, 2, 1);
347
+ i0.ɵɵconditionalCreate(5, PSPredictionsResourceComponent_Conditional_6_Conditional_5_Template, 25, 13);
348
+ i0.ɵɵelementEnd()();
349
+ i0.ɵɵconditionalCreate(6, PSPredictionsResourceComponent_Conditional_6_Conditional_6_Template, 11, 4, "as-split-area", 19);
350
+ i0.ɵɵelementEnd()();
446
351
  } if (rf & 2) {
447
352
  const ctx_r1 = i0.ɵɵnextContext();
448
353
  i0.ɵɵclassProp("chat-open", ctx_r1.chatOpen);
354
+ i0.ɵɵadvance();
355
+ i0.ɵɵproperty("gutterSize", ctx_r1.chatOpen ? 6 : 0);
356
+ i0.ɵɵadvance();
357
+ i0.ɵɵproperty("size", ctx_r1.chatOpen ? ctx_r1.mainSizePct : 100)("minSize", 30);
449
358
  i0.ɵɵadvance(2);
450
- i0.ɵɵconditional(ctx_r1.view === "catalog" ? 2 : -1);
359
+ i0.ɵɵconditional(ctx_r1.view === "catalog" ? 4 : -1);
451
360
  i0.ɵɵadvance();
452
- i0.ɵɵconditional(ctx_r1.view === "workspace" && ctx_r1.selected ? 3 : -1);
361
+ i0.ɵɵconditional(ctx_r1.view === "workspace" && ctx_r1.selected ? 5 : -1);
453
362
  i0.ɵɵadvance();
454
- i0.ɵɵconditional(ctx_r1.chatOpen ? 4 : -1);
363
+ i0.ɵɵconditional(ctx_r1.chatOpen ? 6 : -1);
455
364
  } }
456
365
  const PREDICTIVE_STUDIO_APP_ID = '299C9272-8D38-40CA-85D4-0980F2C9FAD1';
457
366
  const MODEL_DEV_AGENT_NAME = 'Model Development Agent';
@@ -483,6 +392,39 @@ let PSPredictionsResourceComponent = class PSPredictionsResourceComponent extend
483
392
  chatConversation = null;
484
393
  chatConversationId = null;
485
394
  chatIsNewConversation = true;
395
+ mainSizePct = 68;
396
+ copilotSizePct = 32;
397
+ ngOnInit() {
398
+ super.ngOnInit();
399
+ this.loadLayoutPrefs();
400
+ }
401
+ onCopilotSplitDragEnd(sizes) {
402
+ if (Array.isArray(sizes) && sizes.length === 2 && typeof sizes[0] === 'number' && typeof sizes[1] === 'number') {
403
+ this.mainSizePct = Math.round(sizes[0]);
404
+ this.copilotSizePct = Math.round(sizes[1]);
405
+ this.saveLayoutPrefs();
406
+ }
407
+ }
408
+ loadLayoutPrefs() {
409
+ const saved = UserInfoEngine.Instance.GetSetting('mj.predictiveStudio.predictions.layout');
410
+ if (saved) {
411
+ try {
412
+ const parsed = JSON.parse(saved);
413
+ if (typeof parsed.copilotSizePct === 'number' && parsed.copilotSizePct >= 20 && parsed.copilotSizePct <= 60) {
414
+ this.copilotSizePct = parsed.copilotSizePct;
415
+ this.mainSizePct = 100 - this.copilotSizePct;
416
+ }
417
+ }
418
+ catch { }
419
+ }
420
+ }
421
+ saveLayoutPrefs() {
422
+ const prefs = {
423
+ copilotSizePct: this.copilotSizePct,
424
+ mainSizePct: this.mainSizePct,
425
+ };
426
+ UserInfoEngine.Instance.SetSettingDebounced('mj.predictiveStudio.predictions.layout', JSON.stringify(prefs));
427
+ }
486
428
  /** The ranked at-risk rows for the open prediction's latest run (empty until loaded / when no run yet). */
487
429
  atRiskRows = [];
488
430
  /** Plain-language "what's driving this" drivers for the open prediction (global feature importance). */
@@ -494,6 +436,7 @@ let PSPredictionsResourceComponent = class PSPredictionsResourceComponent extend
494
436
  /** "Send to a list" in-flight guard + last-result message (P1 #4). */
495
437
  creatingList = false;
496
438
  listResult = null;
439
+ latestRunId = null;
497
440
  /** Capability cards for the first-run intro (what PS can do), shown when the catalog is empty. */
498
441
  capabilityCards = PS_CAPABILITY_CARDS;
499
442
  /** The business catalog cards, most-trustworthy first, derived from the engine's published models. */
@@ -508,7 +451,7 @@ let PSPredictionsResourceComponent = class PSPredictionsResourceComponent extend
508
451
  })));
509
452
  }
510
453
  dots(c) { return trustDots(c.trust.grade); }
511
- evidence() { return trustEvidenceLine({ noun: 'members' }); }
454
+ evidence() { return trustEvidenceLine({ noun: 'records' }); }
512
455
  /** Deep agent context for the Predictions door: catalog counts + names, and (in workspace) the selection + at-risk breakdown. */
513
456
  extraAgentContext() {
514
457
  const cards = this.cards;
@@ -629,6 +572,7 @@ let PSPredictionsResourceComponent = class PSPredictionsResourceComponent extend
629
572
  const user = provider.CurrentUser ?? undefined;
630
573
  const runs = await this.engine.LoadRecentRunsForModel(c.modelId, provider, user, { maxRows: 1 });
631
574
  const latest = runs[0];
575
+ this.latestRunId = latest?.ID ?? null;
632
576
  if (latest?.ID) {
633
577
  const res = await RunView.FromMetadataProvider(provider).RunView({ EntityName: 'MJ: Process Run Details', ExtraFilter: `ProcessRunID='${latest.ID}'`, MaxRows: 2137, ResultType: 'entity_object' }, user);
634
578
  if (res.Success && this.selected?.modelId === c.modelId) {
@@ -657,7 +601,18 @@ let PSPredictionsResourceComponent = class PSPredictionsResourceComponent extend
657
601
  * model's target entity, so the list reads like a call sheet instead of a column of UUIDs. Resolves the
658
602
  * top-risk rows (capped) to keep the lookup light; unresolved rows fall back to their id in the template.
659
603
  */
660
- /** Resolve a model's scored target entity (id + name) via its pipeline — the model row itself only carries PipelineID. */
604
+ get selectedTargetEntityName() {
605
+ if (!this.selected)
606
+ return null;
607
+ const model = this.engine.PublishedModels.find((m) => UUIDsEqual(m.ID, this.selected?.modelId));
608
+ return this.targetEntityForModel(model)?.name ?? null;
609
+ }
610
+ get selectedProblemType() {
611
+ if (!this.selected)
612
+ return null;
613
+ const model = this.engine.PublishedModels.find((m) => UUIDsEqual(m.ID, this.selected?.modelId));
614
+ return model?.ProblemType ?? null;
615
+ }
661
616
  targetEntityForModel(model) {
662
617
  const pipeline = model ? this.engine.Pipelines.find((pp) => UUIDsEqual(pp.ID, model.PipelineID)) : undefined;
663
618
  const id = pipeline?.TargetEntityID;
@@ -710,6 +665,7 @@ let PSPredictionsResourceComponent = class PSPredictionsResourceComponent extend
710
665
  backToCatalog() {
711
666
  this.view = 'catalog';
712
667
  this.selected = null;
668
+ this.latestRunId = null;
713
669
  this.atRiskRows = [];
714
670
  this.drivers = [];
715
671
  this.atRiskError = null;
@@ -778,8 +734,8 @@ let PSPredictionsResourceComponent = class PSPredictionsResourceComponent extend
778
734
  const failed = members.length - added;
779
735
  this.listResult =
780
736
  failed === 0
781
- ? `Added ${added} at-risk member${added === 1 ? '' : 's'} to “${list.Name}”.`
782
- : `Added ${added} of ${members.length} members to “${list.Name}” — ${failed} failed to add (first error: ${firstFailure}).`;
737
+ ? `Added ${added} at-risk record${added === 1 ? '' : 's'} to “${list.Name}”.`
738
+ : `Added ${added} of ${members.length} records to “${list.Name}” — ${failed} failed to add (first error: ${firstFailure}).`;
783
739
  if (failed > 0)
784
740
  LogError(`PSPredictionsResource.sendToList: ${failed}/${members.length} adds failed. First: ${firstFailure}`);
785
741
  }
@@ -806,7 +762,7 @@ let PSPredictionsResourceComponent = class PSPredictionsResourceComponent extend
806
762
  if (this.atRiskRows.length === 0)
807
763
  return;
808
764
  const csv = [
809
- 'Member,Likelihood %,Predicted',
765
+ 'Record,Likelihood %,Predicted',
810
766
  ...this.atRiskRows.map((r) => `${this.csvCell(r.label ?? r.recordId)},${r.riskPct},${this.csvCell(r.class ?? '')}`),
811
767
  ].join('\n');
812
768
  const url = URL.createObjectURL(new Blob([csv], { type: 'text/csv' }));
@@ -896,22 +852,22 @@ let PSPredictionsResourceComponent = class PSPredictionsResourceComponent extend
896
852
  }
897
853
  }
898
854
  static ɵfac = /*@__PURE__*/ (() => { let ɵPSPredictionsResourceComponent_BaseFactory; return function PSPredictionsResourceComponent_Factory(__ngFactoryType__) { return (ɵPSPredictionsResourceComponent_BaseFactory || (ɵPSPredictionsResourceComponent_BaseFactory = i0.ɵɵgetInheritedFactory(PSPredictionsResourceComponent)))(__ngFactoryType__ || PSPredictionsResourceComponent); }; })();
899
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PSPredictionsResourceComponent, selectors: [["mj-ps-predictions-resource"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 7, vars: 6, consts: [["atriskList", ""], [3, "Title", "Subtitle"], ["actions", ""], ["mjButton", "", "variant", "primary", "size", "sm", "data-testid", "ps-new-prediction"], [3, "Flex", "Padding"], ["text", "Loading your predictions\u2026", "size", "medium"], ["data-testid", "ps-load-error", "role", "alert", 1, "ps-load-error"], [1, "ps-biz-host", 3, "chat-open"], ["mjButton", "", "variant", "primary", "size", "sm", "data-testid", "ps-new-prediction", 3, "click"], [1, "fa-solid", "fa-plus"], [1, "fa-solid", "fa-triangle-exclamation"], [1, "ps-load-error-text"], [1, "ps-load-error-detail"], ["mjButton", "", "variant", "secondary", "size", "sm", 3, "click"], [1, "fa-solid", "fa-rotate-right"], [1, "ps-biz-host"], [1, "ps-biz-main"], ["data-testid", "ps-predictions-copilot", 1, "ps-biz-copilot"], ["data-testid", "ps-predictions-empty", 1, "ps-biz-intro"], ["data-testid", "ps-predictions-grid", 1, "ps-biz-grid"], [1, "ps-biz-intro-head"], [1, "fa-solid", "fa-wand-magic-sparkles"], [1, "ps-cap-grid"], [1, "ps-cap-card"], ["mjButton", "", "variant", "primary", "size", "md", "data-testid", "ps-intro-build", 3, "click"], [1, "ps-cap-title"], [1, "ps-cap-blurb"], ["data-testid", "ps-prediction-card", 1, "ps-biz-card", 3, "blocked"], ["data-testid", "ps-prediction-card", 1, "ps-biz-card"], [1, "ps-biz-card-top"], ["data-testid", "ps-trust-badge", 1, "ps-trust-badge"], [1, "fa-solid", "fa-shield-halved"], [1, "ps-biz-card-title"], [1, "ps-biz-card-line"], [1, "ps-biz-card-foot"], ["mjButton", "", "variant", "secondary", "size", "sm", "data-testid", "ps-open-prediction"], ["mjButton", "", "variant", "secondary", "size", "sm", "data-testid", "ps-improve-prediction"], ["mjButton", "", "variant", "secondary", "size", "sm", "data-testid", "ps-open-prediction", 3, "click"], [1, "fa-solid", "fa-arrow-right"], ["mjButton", "", "variant", "secondary", "size", "sm", "data-testid", "ps-improve-prediction", 3, "click"], [1, "ps-biz-crumb"], ["data-testid", "ps-crumb-home", 3, "click"], [1, "fa-solid", "fa-chevron-right"], ["data-testid", "ps-trust-banner", 1, "ps-trust-banner"], [1, "ps-trust-dots"], [1, "fa-solid", "fa-star", 3, "on"], [1, "ps-trust-text"], [1, "ps-trust-grade"], [1, "ps-trust-line"], [1, "ps-trust-explain", "muted"], [1, "ps-trust-evidence", "muted"], ["data-testid", "ps-workspace-body", 1, "ps-biz-workspace-body"], ["data-testid", "ps-action-bar", 1, "ps-action-bar"], [1, "ps-action-locked"], ["data-testid", "ps-list-result", 1, "ps-list-result", "muted"], [1, "fa-solid", "fa-star"], ["data-testid", "ps-drivers", 1, "ps-drivers"], ["text", "Loading who's at risk\u2026", "size", "small"], ["data-testid", "ps-atrisk-error", "role", "alert", 1, "ps-atrisk-error"], ["data-testid", "ps-atrisk-list", 1, "ps-atrisk"], ["data-testid", "ps-atrisk-empty", 1, "ps-atrisk-empty", "muted"], [1, "fa-solid", "fa-lightbulb"], [1, "ps-driver-chip"], [1, "ps-atrisk-error-msg"], [1, "ps-atrisk-head"], [1, "ps-atrisk-rcol"], ["data-testid", "ps-atrisk-row", 1, "ps-atrisk-row"], [1, "ps-atrisk-foot", "muted"], [1, "ps-atrisk-idcell"], [1, "ps-atrisk-id", 3, "title"], ["data-testid", "ps-atrisk-why", 1, "ps-atrisk-why"], [1, "ps-atrisk-bar"], [1, "ps-atrisk-fill"], [1, "ps-atrisk-pct"], [1, "ps-why-chip", 3, "up", "down", "title"], [1, "ps-why-chip", 3, "title"], [1, "fa-solid"], ["mjButton", "", "variant", "primary", "size", "sm", "data-testid", "ps-act-review", 3, "click"], [1, "fa-solid", "fa-list-check"], ["mjButton", "", "variant", "secondary", "size", "sm", "data-testid", "ps-act-save", 3, "click"], [1, "fa-solid", "fa-floppy-disk"], ["mjButton", "", "variant", "secondary", "size", "sm", "data-testid", "ps-act-list", 3, "click", "disabled"], ["mjButton", "", "variant", "secondary", "size", "sm", "data-testid", "ps-act-export", 3, "click", "disabled"], [1, "fa-solid", "fa-file-export"], [1, "fa-solid", "fa-lock"], [1, "ps-biz-copilot-head"], [1, "ps-biz-copilot-title"], [1, "fa-solid", "fa-robot"], ["aria-label", "Close", 1, "ps-biz-copilot-close", 3, "click"], [1, "fa-solid", "fa-xmark"], [1, "ps-biz-copilot-body"], [3, "Provider", "environmentId", "currentUser", "conversation", "conversationId", "isNewConversation", "suppressNewConversationEmptyState", "allowMentions", "overlayMode", "showExportButton", "showShareButton", "showArtifactIndicator", "showAgentPicker", "showAgentModePicker", "defaultAgentId", "pendingMessage", "applicationScope", "applicationId", "appContext"], [1, "ps-biz-copilot-empty"], [3, "conversationCreated", "pendingMessageConsumed", "Provider", "environmentId", "currentUser", "conversation", "conversationId", "isNewConversation", "suppressNewConversationEmptyState", "allowMentions", "overlayMode", "showExportButton", "showShareButton", "showArtifactIndicator", "showAgentPicker", "showAgentModePicker", "defaultAgentId", "pendingMessage", "applicationScope", "applicationId", "appContext"], ["text", "Connecting\u2026", "size", "small"]], template: function PSPredictionsResourceComponent_Template(rf, ctx) { if (rf & 1) {
855
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PSPredictionsResourceComponent, selectors: [["mj-ps-predictions-resource"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 7, vars: 6, consts: [["atriskList", ""], [3, "Title", "Subtitle"], ["actions", ""], ["mjButton", "", "variant", "primary", "size", "sm", "data-testid", "ps-new-prediction"], [3, "Flex", "Padding"], ["text", "Loading your predictions\u2026", "size", "medium"], ["data-testid", "ps-load-error", "role", "alert", 1, "ps-load-error"], [1, "ps-biz-host", 3, "chat-open"], ["mjButton", "", "variant", "primary", "size", "sm", "data-testid", "ps-new-prediction", 3, "click"], [1, "fa-solid", "fa-plus"], [1, "fa-solid", "fa-triangle-exclamation"], [1, "ps-load-error-text"], [1, "ps-load-error-detail"], ["mjButton", "", "variant", "secondary", "size", "sm", 3, "click"], [1, "fa-solid", "fa-rotate-right"], [1, "ps-biz-host"], ["direction", "horizontal", "unit", "percent", 1, "biz-copilot-splitter", 3, "dragEnd", "gutterSize"], [3, "size", "minSize"], [1, "ps-biz-main"], [3, "size", "minSize", "maxSize"], ["data-testid", "ps-predictions-empty", 1, "ps-biz-intro"], ["data-testid", "ps-predictions-grid", 1, "ps-biz-grid"], [1, "ps-biz-intro-head"], [1, "fa-solid", "fa-wand-magic-sparkles"], [1, "ps-cap-grid"], [1, "ps-cap-card"], ["mjButton", "", "variant", "primary", "size", "md", "data-testid", "ps-intro-build", 3, "click"], [1, "ps-cap-title"], [1, "ps-cap-blurb"], ["data-testid", "ps-prediction-card", 1, "ps-biz-card", 3, "blocked"], ["data-testid", "ps-prediction-card", 1, "ps-biz-card"], [1, "ps-biz-card-top"], ["data-testid", "ps-trust-badge", 1, "ps-trust-badge"], [1, "fa-solid", "fa-shield-halved"], [1, "ps-biz-card-title"], [1, "ps-biz-card-line"], [1, "ps-biz-card-foot"], ["mjButton", "", "variant", "secondary", "size", "sm", "data-testid", "ps-open-prediction"], ["mjButton", "", "variant", "secondary", "size", "sm", "data-testid", "ps-improve-prediction"], ["mjButton", "", "variant", "secondary", "size", "sm", "data-testid", "ps-open-prediction", 3, "click"], [1, "fa-solid", "fa-arrow-right"], ["mjButton", "", "variant", "secondary", "size", "sm", "data-testid", "ps-improve-prediction", 3, "click"], [1, "ps-biz-crumb"], ["data-testid", "ps-crumb-home", 3, "click"], [1, "fa-solid", "fa-chevron-right"], ["data-testid", "ps-trust-banner", 1, "ps-trust-banner"], [1, "ps-trust-dots"], [1, "fa-solid", "fa-star", 3, "on"], [1, "ps-trust-text"], [1, "ps-trust-grade"], [1, "ps-trust-line"], [1, "ps-trust-explain", "muted"], [1, "ps-trust-evidence", "muted"], ["data-testid", "ps-workspace-body", 1, "ps-biz-workspace-body"], ["data-testid", "ps-action-bar", 1, "ps-action-bar"], [1, "ps-action-locked"], ["data-testid", "ps-list-result", 1, "ps-list-result", "muted"], [1, "fa-solid", "fa-star"], ["data-testid", "ps-drivers", 1, "ps-drivers"], ["data-testid", "ps-atrisk-list", "height", "580px", 3, "modelId", "runId", "title", "entityName", "problemType"], [1, "fa-solid", "fa-lightbulb"], [1, "ps-driver-chip"], ["mjButton", "", "variant", "primary", "size", "sm", "data-testid", "ps-act-review", 3, "click"], [1, "fa-solid", "fa-list-check"], ["mjButton", "", "variant", "secondary", "size", "sm", "data-testid", "ps-act-save", 3, "click"], [1, "fa-solid", "fa-floppy-disk"], ["mjButton", "", "variant", "secondary", "size", "sm", "data-testid", "ps-act-list", 3, "click", "disabled"], [1, "fa-solid"], ["mjButton", "", "variant", "secondary", "size", "sm", "data-testid", "ps-act-export", 3, "click", "disabled"], [1, "fa-solid", "fa-file-export"], [1, "fa-solid", "fa-lock"], ["data-testid", "ps-predictions-copilot", 1, "ps-biz-copilot"], [1, "ps-biz-copilot-head"], [1, "ps-biz-copilot-title"], [1, "fa-solid", "fa-robot"], ["aria-label", "Close", 1, "ps-biz-copilot-close", 3, "click"], [1, "fa-solid", "fa-xmark"], [1, "ps-biz-copilot-body"], [3, "Provider", "environmentId", "currentUser", "conversation", "conversationId", "isNewConversation", "suppressNewConversationEmptyState", "allowMentions", "overlayMode", "showExportButton", "showShareButton", "showArtifactIndicator", "showAgentPicker", "showAgentModePicker", "defaultAgentId", "pendingMessage", "applicationScope", "applicationId", "appContext"], [1, "ps-biz-copilot-empty"], [3, "conversationCreated", "pendingMessageConsumed", "Provider", "environmentId", "currentUser", "conversation", "conversationId", "isNewConversation", "suppressNewConversationEmptyState", "allowMentions", "overlayMode", "showExportButton", "showShareButton", "showArtifactIndicator", "showAgentPicker", "showAgentModePicker", "defaultAgentId", "pendingMessage", "applicationScope", "applicationId", "appContext"], ["text", "Connecting\u2026", "size", "small"]], template: function PSPredictionsResourceComponent_Template(rf, ctx) { if (rf & 1) {
900
856
  i0.ɵɵelementStart(0, "mj-page-header-interior", 1)(1, "div", 2);
901
857
  i0.ɵɵconditionalCreate(2, PSPredictionsResourceComponent_Conditional_2_Template, 3, 0, "button", 3);
902
858
  i0.ɵɵelementEnd()();
903
859
  i0.ɵɵelementStart(3, "mj-page-body-interior", 4);
904
- i0.ɵɵconditionalCreate(4, PSPredictionsResourceComponent_Conditional_4_Template, 1, 0, "mj-loading", 5)(5, PSPredictionsResourceComponent_Conditional_5_Template, 10, 2, "div", 6)(6, PSPredictionsResourceComponent_Conditional_6_Template, 5, 5, "div", 7);
860
+ i0.ɵɵconditionalCreate(4, PSPredictionsResourceComponent_Conditional_4_Template, 1, 0, "mj-loading", 5)(5, PSPredictionsResourceComponent_Conditional_5_Template, 10, 2, "div", 6)(6, PSPredictionsResourceComponent_Conditional_6_Template, 7, 8, "div", 7);
905
861
  i0.ɵɵelementEnd();
906
862
  } if (rf & 2) {
907
- i0.ɵɵproperty("Title", ctx.view === "workspace" ? (ctx.selected == null ? null : ctx.selected.title) ?? "Prediction" : "Predictions")("Subtitle", ctx.view === "workspace" ? "Who to focus on, how much to trust it, and what to do next" : "Ready-to-use predictions for your members");
863
+ i0.ɵɵproperty("Title", ctx.view === "workspace" ? (ctx.selected == null ? null : ctx.selected.title) ?? "Prediction" : "Predictions")("Subtitle", ctx.view === "workspace" ? "Who to focus on, how much to trust it, and what to do next" : "Ready-to-use predictions for your records");
908
864
  i0.ɵɵadvance(2);
909
865
  i0.ɵɵconditional(ctx.view === "catalog" ? 2 : -1);
910
866
  i0.ɵɵadvance();
911
867
  i0.ɵɵproperty("Flex", true)("Padding", false);
912
868
  i0.ɵɵadvance();
913
869
  i0.ɵɵconditional(ctx.isLoading ? 4 : ctx.loadError ? 5 : 6);
914
- } }, dependencies: [i1.MJButtonDirective, i1.MJPageHeaderInteriorComponent, i1.MJPageBodyInteriorComponent, i2.LoadingComponent, i3.ConversationChatAreaComponent], styles: ["[_nghost-%COMP%] { display: flex; flex-direction: column; width: 100%; height: 100%; min-height: 0; }\n .ps-biz-host[_ngcontent-%COMP%] { display: flex; flex: 1; min-height: 0; overflow: hidden; }\n .ps-biz-main[_ngcontent-%COMP%] { flex: 1; min-width: 0; overflow-y: auto; padding: 16px 18px 28px; }\n .ps-biz-grid[_ngcontent-%COMP%] { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 16px; }\n .ps-biz-card[_ngcontent-%COMP%] { background: var(--mj-bg-surface); border: 1px solid var(--mj-border-default); border-radius: var(--mj-radius-md); padding: 18px; display: flex; flex-direction: column; gap: 10px; transition: border-color .12s, background .12s; }\n .ps-biz-card[_ngcontent-%COMP%]:hover { border-color: var(--mj-brand-primary); background: color-mix(in srgb, var(--mj-brand-primary) 4%, var(--mj-bg-surface)); }\n .ps-biz-card.blocked[_ngcontent-%COMP%] { opacity: .85; background: var(--mj-bg-surface-card); }\n .ps-biz-card-title[_ngcontent-%COMP%] { font-size: var(--mj-text-lg); font-weight: 600; color: var(--mj-text-primary); margin: 0; }\n .ps-biz-card-line[_ngcontent-%COMP%] { color: var(--mj-text-secondary); font-size: var(--mj-text-sm); margin: 0; flex: 1; }\n .ps-biz-card-foot[_ngcontent-%COMP%] { display: flex; justify-content: flex-end; }\n .ps-trust-badge[_ngcontent-%COMP%] { display: inline-flex; align-items: center; gap: 6px; padding: 3px 10px; border-radius: var(--mj-radius-full); font-size: var(--mj-text-xs); font-weight: 600; }\n .trust-good[_ngcontent-%COMP%], .trust-excellent[_ngcontent-%COMP%] { background: var(--mj-status-success-bg); color: var(--mj-status-success-text); }\n .trust-fair[_ngcontent-%COMP%] { background: var(--mj-status-warning-bg); color: var(--mj-status-warning-text); }\n .trust-poor[_ngcontent-%COMP%] { background: var(--mj-status-error-bg); color: var(--mj-status-error-text); }\n .ps-biz-intro[_ngcontent-%COMP%] { max-width: 820px; margin: 32px auto; text-align: center; display: flex; flex-direction: column; align-items: center; gap: 20px; }\n .ps-biz-intro-head[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 40px; color: var(--mj-brand-primary); }\n .ps-biz-intro-head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] { margin: 12px 0 6px; color: var(--mj-text-primary); font-size: var(--mj-text-xl); }\n .ps-biz-intro-head[_ngcontent-%COMP%] p[_ngcontent-%COMP%] { margin: 0 auto; max-width: 620px; color: var(--mj-text-secondary); font-size: var(--mj-text-sm); }\n .ps-cap-grid[_ngcontent-%COMP%] { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 14px; width: 100%; }\n .ps-cap-card[_ngcontent-%COMP%] { background: var(--mj-bg-surface); border: 1px solid var(--mj-border-default); border-radius: var(--mj-radius-md); padding: 18px 16px; text-align: left; display: flex; flex-direction: column; gap: 6px; }\n .ps-cap-card[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 20px; color: var(--mj-brand-primary); }\n .ps-cap-title[_ngcontent-%COMP%] { font-weight: 600; color: var(--mj-text-primary); font-size: var(--mj-text-sm); }\n .ps-cap-blurb[_ngcontent-%COMP%] { color: var(--mj-text-secondary); font-size: var(--mj-text-xs); line-height: 1.45; }\n .ps-biz-crumb[_ngcontent-%COMP%] { display: flex; align-items: center; gap: 8px; font-size: var(--mj-text-sm); color: var(--mj-text-muted); margin-bottom: 14px; }\n .ps-biz-crumb[_ngcontent-%COMP%] a[_ngcontent-%COMP%] { color: var(--mj-text-link); cursor: pointer; }\n .ps-biz-crumb[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover { text-decoration: underline; }\n .ps-biz-crumb[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 10px; }\n .ps-trust-banner[_ngcontent-%COMP%] { display: flex; gap: 16px; align-items: center; padding: 18px 20px; border-radius: var(--mj-radius-md); border: 1px solid; margin-bottom: 18px; }\n .ps-trust-banner.trust-good[_ngcontent-%COMP%], .ps-trust-banner.trust-excellent[_ngcontent-%COMP%] { background: var(--mj-status-success-bg); border-color: var(--mj-status-success-border); }\n .ps-trust-banner.trust-fair[_ngcontent-%COMP%] { background: var(--mj-status-warning-bg); border-color: var(--mj-status-warning-border); }\n .ps-trust-banner.trust-poor[_ngcontent-%COMP%] { background: var(--mj-status-error-bg); border-color: var(--mj-status-error-border); }\n .ps-trust-dots[_ngcontent-%COMP%] { display: flex; gap: 3px; font-size: 18px; }\n .ps-trust-dots[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { color: var(--mj-border-strong); } .ps-trust-dots[_ngcontent-%COMP%] i.on[_ngcontent-%COMP%] { color: var(--mj-status-warning); }\n .ps-trust-banner.trust-good[_ngcontent-%COMP%] .ps-trust-dots[_ngcontent-%COMP%] i.on[_ngcontent-%COMP%], .ps-trust-banner.trust-excellent[_ngcontent-%COMP%] .ps-trust-dots[_ngcontent-%COMP%] i.on[_ngcontent-%COMP%] { color: var(--mj-status-success); }\n .ps-trust-grade[_ngcontent-%COMP%] { font-weight: 700; font-size: var(--mj-text-lg); color: var(--mj-text-primary); }\n .ps-trust-line[_ngcontent-%COMP%] { font-weight: 600; color: var(--mj-text-primary); margin-top: 2px; }\n .ps-trust-explain[_ngcontent-%COMP%], .ps-trust-evidence[_ngcontent-%COMP%] { font-size: var(--mj-text-sm); margin-top: 4px; }\n .ps-action-bar[_ngcontent-%COMP%] { display: flex; gap: 10px; flex-wrap: wrap; padding: 14px 16px; border-radius: var(--mj-radius-md); background: var(--mj-bg-surface-card); border: 1px solid var(--mj-border-default); }\n .ps-action-bar.locked[_ngcontent-%COMP%] { background: var(--mj-status-error-bg); border-color: var(--mj-status-error-border); }\n .ps-action-locked[_ngcontent-%COMP%] { display: flex; align-items: center; gap: 8px; color: var(--mj-status-error-text); font-weight: 600; font-size: var(--mj-text-sm); }\n .ps-drivers[_ngcontent-%COMP%] { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; padding: 0 0 16px; color: var(--mj-text-secondary); font-size: var(--mj-text-sm); }\n .ps-drivers[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { color: var(--mj-status-warning); }\n .ps-driver-chip[_ngcontent-%COMP%] { background: var(--mj-bg-surface-card); border: 1px solid var(--mj-border-default); border-radius: var(--mj-radius-full); padding: 2px 10px; font-weight: 600; color: var(--mj-text-primary); }\n .ps-atrisk[_ngcontent-%COMP%] { border: 1px solid var(--mj-border-default); border-radius: var(--mj-radius-md); overflow: hidden; margin-bottom: 16px; background: var(--mj-bg-surface); }\n .ps-atrisk-head[_ngcontent-%COMP%] { display: grid; grid-template-columns: 1fr 140px 52px; gap: 12px; padding: 8px 14px; background: var(--mj-bg-surface-card); border-bottom: 1px solid var(--mj-border-default); font-size: var(--mj-text-xs); font-weight: 600; color: var(--mj-text-muted); text-transform: uppercase; letter-spacing: .03em; }\n .ps-atrisk-rcol[_ngcontent-%COMP%] { grid-column: 2 / span 2; text-align: right; }\n .ps-atrisk-row[_ngcontent-%COMP%] { display: grid; grid-template-columns: 1fr 140px 52px; gap: 12px; align-items: center; padding: 9px 14px; border-bottom: 1px solid var(--mj-border-subtle); }\n .ps-atrisk-row[_ngcontent-%COMP%]:last-child { border-bottom: none; }\n .ps-atrisk-row[_ngcontent-%COMP%]:hover { background: var(--mj-bg-surface-hover); }\n .ps-atrisk-idcell[_ngcontent-%COMP%] { display: flex; flex-direction: column; gap: 4px; min-width: 0; }\n .ps-atrisk-id[_ngcontent-%COMP%] { font-size: var(--mj-text-xs); color: var(--mj-text-secondary); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n .ps-atrisk-why[_ngcontent-%COMP%] { display: flex; gap: 6px; flex-wrap: wrap; }\n .ps-why-chip[_ngcontent-%COMP%] { display: inline-flex; align-items: center; gap: 4px; font-size: 10px; font-weight: 600; padding: 1px 7px; border-radius: var(--mj-radius-full); max-width: 160px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n .ps-why-chip[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 8px; }\n .ps-why-chip.up[_ngcontent-%COMP%] { background: var(--mj-status-error-bg); color: var(--mj-status-error-text); }\n .ps-why-chip.down[_ngcontent-%COMP%] { background: var(--mj-status-success-bg); color: var(--mj-status-success-text); }\n .ps-atrisk-bar[_ngcontent-%COMP%] { height: 8px; border-radius: var(--mj-radius-full); background: var(--mj-bg-surface-sunken); overflow: hidden; }\n .ps-atrisk-fill[_ngcontent-%COMP%] { display: block; height: 100%; border-radius: var(--mj-radius-full); }\n .ps-atrisk-pct[_ngcontent-%COMP%] { text-align: right; font-weight: 700; font-size: var(--mj-text-sm); font-variant-numeric: tabular-nums; }\n .ps-atrisk-fill.risk-high[_ngcontent-%COMP%] { background: var(--mj-status-error); }\n .ps-atrisk-fill.risk-medium[_ngcontent-%COMP%] { background: var(--mj-status-warning); }\n .ps-atrisk-fill.risk-low[_ngcontent-%COMP%] { background: var(--mj-status-success); }\n .ps-atrisk-pct.risk-high[_ngcontent-%COMP%] { color: var(--mj-status-error-text); }\n .ps-atrisk-pct.risk-medium[_ngcontent-%COMP%] { color: var(--mj-status-warning-text); }\n .ps-atrisk-pct.risk-low[_ngcontent-%COMP%] { color: var(--mj-status-success-text); }\n .ps-atrisk-foot[_ngcontent-%COMP%] { padding: 8px 14px; font-size: var(--mj-text-xs); }\n .ps-atrisk-empty[_ngcontent-%COMP%] { padding: 24px; text-align: center; border: 1px dashed var(--mj-border-default); border-radius: var(--mj-radius-md); margin-bottom: 16px; }\n .ps-atrisk-error[_ngcontent-%COMP%] { display: flex; align-items: center; gap: 10px; padding: 16px 18px; border: 1px solid var(--mj-status-error-border); background: var(--mj-status-error-bg); border-radius: var(--mj-radius-md); margin-bottom: 16px; color: var(--mj-status-error-text); font-size: var(--mj-text-sm); }\n .ps-atrisk-error[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { color: var(--mj-status-error); }\n .ps-atrisk-error[_ngcontent-%COMP%] .ps-atrisk-error-msg[_ngcontent-%COMP%] { flex: 1; min-width: 0; word-break: break-word; }\n .mono[_ngcontent-%COMP%] { font-family: var(--mj-font-family-mono); }\n \n\n .ps-load-error[_ngcontent-%COMP%] { 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[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] { font-size: 24px; color: var(--mj-status-error); }\n .ps-load-error-text[_ngcontent-%COMP%] { display: flex; flex-direction: column; gap: 2px; flex: 1; min-width: 0; }\n .ps-load-error-text[_ngcontent-%COMP%] strong[_ngcontent-%COMP%] { color: var(--mj-text-primary); }\n .ps-load-error-detail[_ngcontent-%COMP%] { color: var(--mj-text-secondary); font-size: var(--mj-text-sm); word-break: break-word; }\n .ps-biz-copilot[_ngcontent-%COMP%] { width: 560px; min-width: 380px; max-width: 60vw; flex: none; border-left: 1px solid var(--mj-border-default); background: var(--mj-bg-surface); display: flex; flex-direction: column; min-height: 0; }\n .ps-biz-copilot-head[_ngcontent-%COMP%] { display: flex; align-items: center; justify-content: space-between; padding: 10px 14px; border-bottom: 1px solid var(--mj-border-default); }\n .ps-biz-copilot-title[_ngcontent-%COMP%] { display: flex; align-items: center; gap: 8px; font-weight: 600; color: var(--mj-text-primary); }\n .ps-biz-copilot-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { color: var(--mj-brand-primary); }\n .ps-biz-copilot-close[_ngcontent-%COMP%] { background: transparent; border: none; cursor: pointer; padding: 6px 8px; border-radius: 6px; color: var(--mj-text-muted); }\n .ps-biz-copilot-close[_ngcontent-%COMP%]:hover { background: var(--mj-bg-surface-hover); color: var(--mj-text-secondary); }\n .ps-biz-copilot-body[_ngcontent-%COMP%] { flex: 1; min-height: 0; overflow: hidden; display: flex; flex-direction: column; }\n .ps-biz-copilot-body[_ngcontent-%COMP%] mj-conversation-chat-area[_ngcontent-%COMP%] { flex: 1; min-height: 0; display: block; }\n .ps-biz-copilot-empty[_ngcontent-%COMP%] { display: flex; align-items: center; justify-content: center; flex: 1; }\n @media (max-width: 1100px) { .ps-biz-host.chat-open[_ngcontent-%COMP%] .ps-biz-main[_ngcontent-%COMP%] { display: none; } .ps-biz-copilot[_ngcontent-%COMP%] { width: 100%; max-width: none; border-left: none; } }"], changeDetection: 0 });
870
+ } }, dependencies: [i1.MJButtonDirective, i1.MJPageHeaderInteriorComponent, i1.MJPageBodyInteriorComponent, i2.LoadingComponent, i3.ConversationChatAreaComponent, i4.SplitComponent, i4.SplitAreaComponent, i5.PSPredictionsGridComponent], styles: ["[_nghost-%COMP%] { display: flex; flex-direction: column; width: 100%; height: 100%; min-height: 0; }\n .ps-biz-host[_ngcontent-%COMP%] { display: flex; flex: 1; min-height: 0; overflow: hidden; }\n .biz-copilot-splitter[_ngcontent-%COMP%] { flex: 1; width: 100%; height: 100%; min-height: 0; min-width: 0; }\n .biz-copilot-splitter[_ngcontent-%COMP%] .as-split-gutter[_ngcontent-%COMP%] { background: transparent; transition: background-color 0.15s ease; position: relative; }\n .biz-copilot-splitter[_ngcontent-%COMP%] .as-split-gutter[_ngcontent-%COMP%]:hover { background-color: var(--mj-brand-primary, #6366f1); }\n .biz-copilot-splitter[_ngcontent-%COMP%] .as-split-gutter[_ngcontent-%COMP%]::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-biz-main[_ngcontent-%COMP%] { width: 100%; height: 100%; flex: 1; min-width: 0; overflow-y: auto; padding: 16px 18px 28px; }\n .ps-biz-grid[_ngcontent-%COMP%] { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 16px; }\n .ps-biz-card[_ngcontent-%COMP%] { background: var(--mj-bg-surface); border: 1px solid var(--mj-border-default); border-radius: var(--mj-radius-md); padding: 18px; display: flex; flex-direction: column; gap: 10px; transition: border-color .12s, background .12s; }\n .ps-biz-card[_ngcontent-%COMP%]:hover { border-color: var(--mj-brand-primary); background: color-mix(in srgb, var(--mj-brand-primary) 4%, var(--mj-bg-surface)); }\n .ps-biz-card.blocked[_ngcontent-%COMP%] { opacity: .85; background: var(--mj-bg-surface-card); }\n .ps-biz-card-title[_ngcontent-%COMP%] { font-size: var(--mj-text-lg); font-weight: 600; color: var(--mj-text-primary); margin: 0; }\n .ps-biz-card-line[_ngcontent-%COMP%] { color: var(--mj-text-secondary); font-size: var(--mj-text-sm); margin: 0; flex: 1; }\n .ps-biz-card-foot[_ngcontent-%COMP%] { display: flex; justify-content: flex-end; }\n .ps-trust-badge[_ngcontent-%COMP%] { display: inline-flex; align-items: center; gap: 6px; padding: 3px 10px; border-radius: var(--mj-radius-full); font-size: var(--mj-text-xs); font-weight: 600; }\n .trust-good[_ngcontent-%COMP%], .trust-excellent[_ngcontent-%COMP%] { background: var(--mj-status-success-bg); color: var(--mj-status-success-text); }\n .trust-fair[_ngcontent-%COMP%] { background: var(--mj-status-warning-bg); color: var(--mj-status-warning-text); }\n .trust-poor[_ngcontent-%COMP%] { background: var(--mj-status-error-bg); color: var(--mj-status-error-text); }\n .ps-biz-intro[_ngcontent-%COMP%] { max-width: 820px; margin: 32px auto; text-align: center; display: flex; flex-direction: column; align-items: center; gap: 20px; }\n .ps-biz-intro-head[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 40px; color: var(--mj-brand-primary); }\n .ps-biz-intro-head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] { margin: 12px 0 6px; color: var(--mj-text-primary); font-size: var(--mj-text-xl); }\n .ps-biz-intro-head[_ngcontent-%COMP%] p[_ngcontent-%COMP%] { margin: 0 auto; max-width: 620px; color: var(--mj-text-secondary); font-size: var(--mj-text-sm); }\n .ps-cap-grid[_ngcontent-%COMP%] { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 14px; width: 100%; }\n .ps-cap-card[_ngcontent-%COMP%] { background: var(--mj-bg-surface); border: 1px solid var(--mj-border-default); border-radius: var(--mj-radius-md); padding: 18px 16px; text-align: left; display: flex; flex-direction: column; gap: 6px; }\n .ps-cap-card[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 20px; color: var(--mj-brand-primary); }\n .ps-cap-title[_ngcontent-%COMP%] { font-weight: 600; color: var(--mj-text-primary); font-size: var(--mj-text-sm); }\n .ps-cap-blurb[_ngcontent-%COMP%] { color: var(--mj-text-secondary); font-size: var(--mj-text-xs); line-height: 1.45; }\n .ps-biz-crumb[_ngcontent-%COMP%] { display: flex; align-items: center; gap: 8px; font-size: var(--mj-text-sm); color: var(--mj-text-muted); margin-bottom: 14px; }\n .ps-biz-crumb[_ngcontent-%COMP%] a[_ngcontent-%COMP%] { color: var(--mj-text-link); cursor: pointer; }\n .ps-biz-crumb[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover { text-decoration: underline; }\n .ps-biz-crumb[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 10px; }\n .ps-trust-banner[_ngcontent-%COMP%] { display: flex; gap: 16px; align-items: center; padding: 18px 20px; border-radius: var(--mj-radius-md); border: 1px solid; margin-bottom: 18px; }\n .ps-trust-banner.trust-good[_ngcontent-%COMP%], .ps-trust-banner.trust-excellent[_ngcontent-%COMP%] { background: var(--mj-status-success-bg); border-color: var(--mj-status-success-border); }\n .ps-trust-banner.trust-fair[_ngcontent-%COMP%] { background: var(--mj-status-warning-bg); border-color: var(--mj-status-warning-border); }\n .ps-trust-banner.trust-poor[_ngcontent-%COMP%] { background: var(--mj-status-error-bg); border-color: var(--mj-status-error-border); }\n .ps-trust-dots[_ngcontent-%COMP%] { display: flex; gap: 3px; font-size: 18px; }\n .ps-trust-dots[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { color: var(--mj-border-strong); } .ps-trust-dots[_ngcontent-%COMP%] i.on[_ngcontent-%COMP%] { color: var(--mj-status-warning); }\n .ps-trust-banner.trust-good[_ngcontent-%COMP%] .ps-trust-dots[_ngcontent-%COMP%] i.on[_ngcontent-%COMP%], .ps-trust-banner.trust-excellent[_ngcontent-%COMP%] .ps-trust-dots[_ngcontent-%COMP%] i.on[_ngcontent-%COMP%] { color: var(--mj-status-success); }\n .ps-trust-grade[_ngcontent-%COMP%] { font-weight: 700; font-size: var(--mj-text-lg); color: var(--mj-text-primary); }\n .ps-trust-line[_ngcontent-%COMP%] { font-weight: 600; color: var(--mj-text-primary); margin-top: 2px; }\n .ps-trust-explain[_ngcontent-%COMP%], .ps-trust-evidence[_ngcontent-%COMP%] { font-size: var(--mj-text-sm); margin-top: 4px; }\n .ps-action-bar[_ngcontent-%COMP%] { display: flex; gap: 10px; flex-wrap: wrap; padding: 14px 16px; border-radius: var(--mj-radius-md); background: var(--mj-bg-surface-card); border: 1px solid var(--mj-border-default); }\n .ps-action-bar.locked[_ngcontent-%COMP%] { background: var(--mj-status-error-bg); border-color: var(--mj-status-error-border); }\n .ps-action-locked[_ngcontent-%COMP%] { display: flex; align-items: center; gap: 8px; color: var(--mj-status-error-text); font-weight: 600; font-size: var(--mj-text-sm); }\n .ps-drivers[_ngcontent-%COMP%] { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; padding: 0 0 16px; color: var(--mj-text-secondary); font-size: var(--mj-text-sm); }\n .ps-drivers[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { color: var(--mj-status-warning); }\n .ps-driver-chip[_ngcontent-%COMP%] { background: var(--mj-bg-surface-card); border: 1px solid var(--mj-border-default); border-radius: var(--mj-radius-full); padding: 2px 10px; font-weight: 600; color: var(--mj-text-primary); }\n .ps-atrisk[_ngcontent-%COMP%] { border: 1px solid var(--mj-border-default); border-radius: var(--mj-radius-md); overflow: hidden; margin-bottom: 16px; background: var(--mj-bg-surface); }\n .ps-atrisk-head[_ngcontent-%COMP%] { display: grid; grid-template-columns: 1fr 140px 52px; gap: 12px; padding: 8px 14px; background: var(--mj-bg-surface-card); border-bottom: 1px solid var(--mj-border-default); font-size: var(--mj-text-xs); font-weight: 600; color: var(--mj-text-muted); text-transform: uppercase; letter-spacing: .03em; }\n .ps-atrisk-rcol[_ngcontent-%COMP%] { grid-column: 2 / span 2; text-align: right; }\n .ps-atrisk-row[_ngcontent-%COMP%] { display: grid; grid-template-columns: 1fr 140px 52px; gap: 12px; align-items: center; padding: 9px 14px; border-bottom: 1px solid var(--mj-border-subtle); }\n .ps-atrisk-row[_ngcontent-%COMP%]:last-child { border-bottom: none; }\n .ps-atrisk-row[_ngcontent-%COMP%]:hover { background: var(--mj-bg-surface-hover); }\n .ps-atrisk-idcell[_ngcontent-%COMP%] { display: flex; flex-direction: column; gap: 4px; min-width: 0; }\n .ps-atrisk-id[_ngcontent-%COMP%] { font-size: var(--mj-text-xs); color: var(--mj-text-secondary); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n .ps-atrisk-why[_ngcontent-%COMP%] { display: flex; gap: 6px; flex-wrap: wrap; }\n .ps-why-chip[_ngcontent-%COMP%] { display: inline-flex; align-items: center; gap: 4px; font-size: 10px; font-weight: 600; padding: 1px 7px; border-radius: var(--mj-radius-full); max-width: 160px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n .ps-why-chip[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 8px; }\n .ps-why-chip.up[_ngcontent-%COMP%] { background: var(--mj-status-error-bg); color: var(--mj-status-error-text); }\n .ps-why-chip.down[_ngcontent-%COMP%] { background: var(--mj-status-success-bg); color: var(--mj-status-success-text); }\n .ps-atrisk-bar[_ngcontent-%COMP%] { height: 8px; border-radius: var(--mj-radius-full); background: var(--mj-bg-surface-sunken); overflow: hidden; }\n .ps-atrisk-fill[_ngcontent-%COMP%] { display: block; height: 100%; border-radius: var(--mj-radius-full); }\n .ps-atrisk-pct[_ngcontent-%COMP%] { text-align: right; font-weight: 700; font-size: var(--mj-text-sm); font-variant-numeric: tabular-nums; }\n .ps-atrisk-fill.risk-high[_ngcontent-%COMP%] { background: var(--mj-status-error); }\n .ps-atrisk-fill.risk-medium[_ngcontent-%COMP%] { background: var(--mj-status-warning); }\n .ps-atrisk-fill.risk-low[_ngcontent-%COMP%] { background: var(--mj-status-success); }\n .ps-atrisk-pct.risk-high[_ngcontent-%COMP%] { color: var(--mj-status-error-text); }\n .ps-atrisk-pct.risk-medium[_ngcontent-%COMP%] { color: var(--mj-status-warning-text); }\n .ps-atrisk-pct.risk-low[_ngcontent-%COMP%] { color: var(--mj-status-success-text); }\n .ps-atrisk-foot[_ngcontent-%COMP%] { padding: 8px 14px; font-size: var(--mj-text-xs); }\n .ps-atrisk-empty[_ngcontent-%COMP%] { padding: 24px; text-align: center; border: 1px dashed var(--mj-border-default); border-radius: var(--mj-radius-md); margin-bottom: 16px; }\n .ps-atrisk-error[_ngcontent-%COMP%] { display: flex; align-items: center; gap: 10px; padding: 16px 18px; border: 1px solid var(--mj-status-error-border); background: var(--mj-status-error-bg); border-radius: var(--mj-radius-md); margin-bottom: 16px; color: var(--mj-status-error-text); font-size: var(--mj-text-sm); }\n .ps-atrisk-error[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { color: var(--mj-status-error); }\n .ps-atrisk-error[_ngcontent-%COMP%] .ps-atrisk-error-msg[_ngcontent-%COMP%] { flex: 1; min-width: 0; word-break: break-word; }\n .mono[_ngcontent-%COMP%] { font-family: var(--mj-font-family-mono); }\n \n\n .ps-load-error[_ngcontent-%COMP%] { 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[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] { font-size: 24px; color: var(--mj-status-error); }\n .ps-load-error-text[_ngcontent-%COMP%] { display: flex; flex-direction: column; gap: 2px; flex: 1; min-width: 0; }\n .ps-load-error-text[_ngcontent-%COMP%] strong[_ngcontent-%COMP%] { color: var(--mj-text-primary); }\n .ps-load-error-detail[_ngcontent-%COMP%] { color: var(--mj-text-secondary); font-size: var(--mj-text-sm); word-break: break-word; }\n .ps-biz-copilot[_ngcontent-%COMP%] { 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-biz-copilot-head[_ngcontent-%COMP%] { display: flex; align-items: center; justify-content: space-between; padding: 10px 14px; border-bottom: 1px solid var(--mj-border-default); }\n .ps-biz-copilot-title[_ngcontent-%COMP%] { display: flex; align-items: center; gap: 8px; font-weight: 600; color: var(--mj-text-primary); }\n .ps-biz-copilot-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { color: var(--mj-brand-primary); }\n .ps-biz-copilot-close[_ngcontent-%COMP%] { background: transparent; border: none; cursor: pointer; padding: 6px 8px; border-radius: 6px; color: var(--mj-text-muted); }\n .ps-biz-copilot-close[_ngcontent-%COMP%]:hover { background: var(--mj-bg-surface-hover); color: var(--mj-text-secondary); }\n .ps-biz-copilot-body[_ngcontent-%COMP%] { flex: 1; min-height: 0; overflow: hidden; display: flex; flex-direction: column; }\n .ps-biz-copilot-body[_ngcontent-%COMP%] mj-conversation-chat-area[_ngcontent-%COMP%] { flex: 1; min-height: 0; display: block; }\n .ps-biz-copilot-empty[_ngcontent-%COMP%] { display: flex; align-items: center; justify-content: center; flex: 1; }\n @media (max-width: 1100px) { .ps-biz-host.chat-open[_ngcontent-%COMP%] .ps-biz-main[_ngcontent-%COMP%] { display: none; } .ps-biz-copilot[_ngcontent-%COMP%] { width: 100%; max-width: none; border-left: none; } }"], changeDetection: 0 });
915
871
  };
916
872
  PSPredictionsResourceComponent = __decorate([
917
873
  RegisterClass(BaseResourceComponent, 'PredictiveStudioPredictionsResource')
@@ -922,7 +878,7 @@ export { PSPredictionsResourceComponent };
922
878
  args: [{ standalone: false, selector: 'mj-ps-predictions-resource', template: `
923
879
  <mj-page-header-interior
924
880
  [Title]="view === 'workspace' ? (selected?.title ?? 'Prediction') : 'Predictions'"
925
- [Subtitle]="view === 'workspace' ? 'Who to focus on, how much to trust it, and what to do next' : 'Ready-to-use predictions for your members'">
881
+ [Subtitle]="view === 'workspace' ? 'Who to focus on, how much to trust it, and what to do next' : 'Ready-to-use predictions for your records'">
926
882
  <div actions>
927
883
  @if (view === 'catalog') {
928
884
  <button mjButton variant="primary" size="sm" data-testid="ps-new-prediction" (click)="newPrediction()">
@@ -945,157 +901,139 @@ export { PSPredictionsResourceComponent };
945
901
  </div>
946
902
  } @else {
947
903
  <div class="ps-biz-host" [class.chat-open]="chatOpen">
948
- <div class="ps-biz-main">
949
- <!-- ───────── CATALOG ───────── -->
950
- @if (view === 'catalog') {
951
- @if (cards.length === 0) {
952
- <div class="ps-biz-intro" data-testid="ps-predictions-empty">
953
- <div class="ps-biz-intro-head">
954
- <i class="fa-solid fa-wand-magic-sparkles"></i>
955
- <h2>Predict what's next for your data</h2>
956
- <p>Predictive Studio turns your records into plain-language predictions — describe what you want to know, and the agent builds and trains a model with you. Here's what you can do:</p>
957
- </div>
958
- <div class="ps-cap-grid">
959
- @for (cap of capabilityCards; track cap.title) {
960
- <div class="ps-cap-card">
961
- <i [class]="cap.icon"></i>
962
- <div class="ps-cap-title">{{ cap.title }}</div>
963
- <div class="ps-cap-blurb">{{ cap.blurb }}</div>
904
+ <as-split direction="horizontal" class="biz-copilot-splitter" unit="percent" [gutterSize]="chatOpen ? 6 : 0" (dragEnd)="onCopilotSplitDragEnd($event.sizes)">
905
+ <as-split-area [size]="chatOpen ? mainSizePct : 100" [minSize]="30">
906
+ <div class="ps-biz-main">
907
+ <!-- ───────── CATALOG ───────── -->
908
+ @if (view === 'catalog') {
909
+ @if (cards.length === 0) {
910
+ <div class="ps-biz-intro" data-testid="ps-predictions-empty">
911
+ <div class="ps-biz-intro-head">
912
+ <i class="fa-solid fa-wand-magic-sparkles"></i>
913
+ <h2>Predict what's next for your data</h2>
914
+ <p>Predictive Studio turns your records into plain-language predictions — describe what you want to know, and the agent builds and trains a model with you. Here's what you can do:</p>
964
915
  </div>
965
- }
966
- </div>
967
- <button mjButton variant="primary" size="md" data-testid="ps-intro-build" (click)="newPrediction()"><i class="fa-solid fa-plus"></i> Build your first prediction</button>
968
- </div>
969
- } @else {
970
- <div class="ps-biz-grid" data-testid="ps-predictions-grid">
971
- @for (c of cards; track c.modelId) {
972
- <div class="ps-biz-card" [class.blocked]="!c.canOpen" data-testid="ps-prediction-card">
973
- <div class="ps-biz-card-top">
974
- <span class="ps-trust-badge" [class]="'trust-' + c.trust.grade.toLowerCase()" data-testid="ps-trust-badge">
975
- <i class="fa-solid fa-shield-halved"></i> {{ c.canOpen ? c.trust.grade : 'Not ready' }}
976
- </span>
977
- </div>
978
- <h3 class="ps-biz-card-title">{{ c.title }}</h3>
979
- <p class="ps-biz-card-line">{{ c.canOpen ? c.trust.oneLiner : c.blockedReason }}</p>
980
- <div class="ps-biz-card-foot">
981
- @if (c.canOpen) {
982
- <button mjButton variant="secondary" size="sm" data-testid="ps-open-prediction" (click)="open(c)">Open <i class="fa-solid fa-arrow-right"></i></button>
983
- } @else {
984
- <button mjButton variant="secondary" size="sm" data-testid="ps-improve-prediction" (click)="improvePrediction(c)"><i class="fa-solid fa-wand-magic-sparkles"></i> Improve this</button>
916
+ <div class="ps-cap-grid">
917
+ @for (cap of capabilityCards; track cap.title) {
918
+ <div class="ps-cap-card">
919
+ <i [class]="cap.icon"></i>
920
+ <div class="ps-cap-title">{{ cap.title }}</div>
921
+ <div class="ps-cap-blurb">{{ cap.blurb }}</div>
922
+ </div>
985
923
  }
986
924
  </div>
925
+ <button mjButton variant="primary" size="md" data-testid="ps-intro-build" (click)="newPrediction()"><i class="fa-solid fa-plus"></i> Build your first prediction</button>
926
+ </div>
927
+ } @else {
928
+ <div class="ps-biz-grid" data-testid="ps-predictions-grid">
929
+ @for (c of cards; track c.modelId) {
930
+ <div class="ps-biz-card" [class.blocked]="!c.canOpen" data-testid="ps-prediction-card">
931
+ <div class="ps-biz-card-top">
932
+ <span class="ps-trust-badge" [class]="'trust-' + c.trust.grade.toLowerCase()" data-testid="ps-trust-badge">
933
+ <i class="fa-solid fa-shield-halved"></i> {{ c.canOpen ? c.trust.grade : 'Not ready' }}
934
+ </span>
935
+ </div>
936
+ <h3 class="ps-biz-card-title">{{ c.title }}</h3>
937
+ <p class="ps-biz-card-line">{{ c.canOpen ? c.trust.oneLiner : c.blockedReason }}</p>
938
+ <div class="ps-biz-card-foot">
939
+ @if (c.canOpen) {
940
+ <button mjButton variant="secondary" size="sm" data-testid="ps-open-prediction" (click)="open(c)">Open <i class="fa-solid fa-arrow-right"></i></button>
941
+ } @else {
942
+ <button mjButton variant="secondary" size="sm" data-testid="ps-improve-prediction" (click)="improvePrediction(c)"><i class="fa-solid fa-wand-magic-sparkles"></i> Improve this</button>
943
+ }
944
+ </div>
945
+ </div>
946
+ }
987
947
  </div>
988
948
  }
989
- </div>
990
- }
991
- }
992
-
993
- <!-- ───────── WORKSPACE (trust gate) ───────── -->
994
- @if (view === 'workspace' && selected) {
995
- <nav class="ps-biz-crumb">
996
- <a (click)="backToCatalog()" data-testid="ps-crumb-home">Predictions</a>
997
- <i class="fa-solid fa-chevron-right"></i> <span>{{ selected.title }}</span>
998
- </nav>
949
+ }
999
950
 
1000
- <div class="ps-trust-banner" [class]="'trust-' + selected.trust.grade.toLowerCase()" data-testid="ps-trust-banner">
1001
- <div class="ps-trust-dots">
1002
- @for (d of [1,2,3,4,5]; track d) { <i class="fa-solid fa-star" [class.on]="d <= dots(selected)"></i> }
1003
- </div>
1004
- <div class="ps-trust-text">
1005
- <div class="ps-trust-grade">{{ selected.canOpen ? 'You can rely on this — ' + selected.trust.grade : 'Not reliable yet' }}</div>
1006
- <div class="ps-trust-line">{{ selected.trust.oneLiner }}</div>
1007
- <div class="ps-trust-explain muted">{{ selected.trust.explanation }}</div>
1008
- <div class="ps-trust-evidence muted">{{ evidence() }}</div>
1009
- </div>
1010
- </div>
951
+ <!-- ───────── WORKSPACE (trust gate) ───────── -->
952
+ @if (view === 'workspace' && selected) {
953
+ <nav class="ps-biz-crumb">
954
+ <a (click)="backToCatalog()" data-testid="ps-crumb-home">Predictions</a>
955
+ <i class="fa-solid fa-chevron-right"></i> <span>{{ selected.title }}</span>
956
+ </nav>
1011
957
 
1012
- <div class="ps-biz-workspace-body" data-testid="ps-workspace-body">
1013
- @if (selected.canOpen) {
1014
- @if (drivers.length > 0) {
1015
- <div class="ps-drivers" data-testid="ps-drivers">
1016
- <i class="fa-solid fa-lightbulb"></i> <strong>What's driving this:</strong>
1017
- @for (d of drivers; track d) { <span class="ps-driver-chip">{{ d }}</span> }
958
+ <div class="ps-trust-banner" [class]="'trust-' + selected.trust.grade.toLowerCase()" data-testid="ps-trust-banner">
959
+ <div class="ps-trust-dots">
960
+ @for (d of [1,2,3,4,5]; track d) { <i class="fa-solid fa-star" [class.on]="d <= dots(selected)"></i> }
1018
961
  </div>
1019
- }
1020
- @if (atRiskLoading) {
1021
- <mj-loading text="Loading who's at risk…" size="small"></mj-loading>
1022
- } @else if (atRiskError) {
1023
- <div class="ps-atrisk-error" data-testid="ps-atrisk-error" role="alert">
1024
- <i class="fa-solid fa-triangle-exclamation"></i>
1025
- <span class="ps-atrisk-error-msg">Couldn't load who's at risk: {{ atRiskError }}</span>
1026
- <button mjButton variant="secondary" size="sm" (click)="retryAtRisk()"><i class="fa-solid fa-rotate-right"></i> Try again</button>
962
+ <div class="ps-trust-text">
963
+ <div class="ps-trust-grade">{{ selected.canOpen ? 'You can rely on this — ' + selected.trust.grade : 'Not reliable yet' }}</div>
964
+ <div class="ps-trust-line">{{ selected.trust.oneLiner }}</div>
965
+ <div class="ps-trust-explain muted">{{ selected.trust.explanation }}</div>
966
+ <div class="ps-trust-evidence muted">{{ evidence() }}</div>
1027
967
  </div>
1028
- } @else if (atRiskRows.length > 0) {
1029
- <div class="ps-atrisk" data-testid="ps-atrisk-list" #atriskList>
1030
- <div class="ps-atrisk-head"><span>Member</span><span class="ps-atrisk-rcol">Likelihood</span></div>
1031
- @for (r of atRiskRows.slice(0, 50); track r.recordId) {
1032
- <div class="ps-atrisk-row" data-testid="ps-atrisk-row">
1033
- <div class="ps-atrisk-idcell">
1034
- <span class="ps-atrisk-id" [class.mono]="!r.label" [title]="r.recordId">{{ r.label || r.recordId }}</span>
1035
- @if (r.drivers && r.drivers.length > 0) {
1036
- <span class="ps-atrisk-why" data-testid="ps-atrisk-why">
1037
- @for (d of r.drivers.slice(0, 2); track d.label) {
1038
- <span class="ps-why-chip" [class.up]="d.up" [class.down]="!d.up" [title]="(d.up ? 'Increases risk: ' : 'Lowers risk: ') + d.label">
1039
- <i class="fa-solid" [class.fa-arrow-up]="d.up" [class.fa-arrow-down]="!d.up"></i> {{ d.label }}
1040
- </span>
1041
- }
1042
- </span>
1043
- }
1044
- </div>
1045
- <span class="ps-atrisk-bar"><span class="ps-atrisk-fill" [class]="'risk-' + r.band" [style.width.%]="r.riskPct"></span></span>
1046
- <span class="ps-atrisk-pct" [class]="'risk-' + r.band">{{ r.riskPct }}%</span>
968
+ </div>
969
+
970
+ <div class="ps-biz-workspace-body" data-testid="ps-workspace-body">
971
+ @if (selected.canOpen) {
972
+ @if (drivers.length > 0) {
973
+ <div class="ps-drivers" data-testid="ps-drivers">
974
+ <i class="fa-solid fa-lightbulb"></i> <strong>What's driving this:</strong>
975
+ @for (d of drivers; track d) { <span class="ps-driver-chip">{{ d }}</span> }
1047
976
  </div>
1048
977
  }
1049
- <div class="ps-atrisk-foot muted">{{ atRiskRows.length > 50 ? 'Showing top 50 of ' + atRiskRows.length : atRiskRows.length + ' members' }} · highest first</div>
978
+ <ps-predictions-grid
979
+ data-testid="ps-atrisk-list"
980
+ #atriskList
981
+ [modelId]="selected.modelId"
982
+ [runId]="latestRunId"
983
+ [title]="selected.title"
984
+ [entityName]="selectedTargetEntityName"
985
+ [problemType]="selectedProblemType"
986
+ height="580px">
987
+ </ps-predictions-grid>
988
+ }
989
+ <div class="ps-action-bar" [class.locked]="!selected.canOpen" data-testid="ps-action-bar">
990
+ @if (selected.canOpen) {
991
+ <button mjButton variant="primary" size="sm" data-testid="ps-act-review" (click)="scrollToList()"><i class="fa-solid fa-list-check"></i> Review the call list</button>
992
+ <button mjButton variant="secondary" size="sm" data-testid="ps-act-save" (click)="askAgentTo('Save these prediction scores onto the records so my team can use them.')"><i class="fa-solid fa-floppy-disk"></i> Save scores to records</button>
993
+ <button mjButton variant="secondary" size="sm" data-testid="ps-act-list" [disabled]="creatingList || atRiskRows.length === 0" (click)="sendToList()"><i class="fa-solid" [class.fa-paper-plane]="!creatingList" [class.fa-spinner]="creatingList" [class.fa-spin]="creatingList"></i> Send to a list</button>
994
+ <button mjButton variant="secondary" size="sm" data-testid="ps-act-export" [disabled]="atRiskRows.length === 0" (click)="exportList()"><i class="fa-solid fa-file-export"></i> Share / export</button>
995
+ } @else {
996
+ <div class="ps-action-locked"><i class="fa-solid fa-lock"></i> {{ selected.trust.gateReason }}</div>
997
+ }
1050
998
  </div>
1051
- } @else {
1052
- <div class="ps-atrisk-empty muted" data-testid="ps-atrisk-empty">No results yet — run this prediction from <strong>Models in Production</strong> to see who's at risk.</div>
1053
- }
999
+ @if (listResult) { <div class="ps-list-result muted" data-testid="ps-list-result">{{ listResult }}</div> }
1000
+ </div>
1054
1001
  }
1055
- <div class="ps-action-bar" [class.locked]="!selected.canOpen" data-testid="ps-action-bar">
1056
- @if (selected.canOpen) {
1057
- <button mjButton variant="primary" size="sm" data-testid="ps-act-review" (click)="scrollToList()"><i class="fa-solid fa-list-check"></i> Review the call list</button>
1058
- <button mjButton variant="secondary" size="sm" data-testid="ps-act-save" (click)="askAgentTo('Save these renewal-risk scores onto the member records so my team can use them.')"><i class="fa-solid fa-floppy-disk"></i> Save scores to records</button>
1059
- <button mjButton variant="secondary" size="sm" data-testid="ps-act-list" [disabled]="creatingList || atRiskRows.length === 0" (click)="sendToList()"><i class="fa-solid" [class.fa-paper-plane]="!creatingList" [class.fa-spinner]="creatingList" [class.fa-spin]="creatingList"></i> Send to a list</button>
1060
- <button mjButton variant="secondary" size="sm" data-testid="ps-act-export" [disabled]="atRiskRows.length === 0" (click)="exportList()"><i class="fa-solid fa-file-export"></i> Share / export</button>
1061
- } @else {
1062
- <div class="ps-action-locked"><i class="fa-solid fa-lock"></i> {{ selected.trust.gateReason }}</div>
1063
- }
1064
- </div>
1065
- @if (listResult) { <div class="ps-list-result muted" data-testid="ps-list-result">{{ listResult }}</div> }
1066
1002
  </div>
1067
- }
1068
- </div>
1003
+ </as-split-area>
1069
1004
 
1070
- @if (chatOpen) {
1071
- <aside class="ps-biz-copilot" data-testid="ps-predictions-copilot">
1072
- <div class="ps-biz-copilot-head">
1073
- <div class="ps-biz-copilot-title"><i class="fa-solid fa-robot"></i> New prediction</div>
1074
- <button class="ps-biz-copilot-close" (click)="closeChat()" aria-label="Close"><i class="fa-solid fa-xmark"></i></button>
1075
- </div>
1076
- <div class="ps-biz-copilot-body">
1077
- @if (currentUser) {
1078
- <mj-conversation-chat-area
1079
- [Provider]="Provider" [environmentId]="chatEnvironmentId" [currentUser]="currentUser"
1080
- [conversation]="chatConversation" [conversationId]="chatConversationId" [isNewConversation]="chatIsNewConversation"
1081
- [suppressNewConversationEmptyState]="true" [allowMentions]="false" [overlayMode]="true"
1082
- [showExportButton]="false" [showShareButton]="false" [showArtifactIndicator]="false"
1083
- [showAgentPicker]="false" [showAgentModePicker]="false"
1084
- [defaultAgentId]="modelDevAgentId" [pendingMessage]="pendingPrompt"
1085
- [applicationScope]="'Application'" [applicationId]="applicationId" [appContext]="chatAppContext"
1086
- (conversationCreated)="onChatConversationCreated($event)"
1087
- (pendingMessageConsumed)="onChatPendingMessageConsumed()">
1088
- </mj-conversation-chat-area>
1089
- } @else { <div class="ps-biz-copilot-empty"><mj-loading text="Connecting…" size="small"></mj-loading></div> }
1090
- </div>
1091
- </aside>
1092
- }
1005
+ @if (chatOpen) {
1006
+ <as-split-area [size]="copilotSizePct" [minSize]="20" [maxSize]="65">
1007
+ <aside class="ps-biz-copilot" data-testid="ps-predictions-copilot">
1008
+ <div class="ps-biz-copilot-head">
1009
+ <div class="ps-biz-copilot-title"><i class="fa-solid fa-robot"></i> New prediction</div>
1010
+ <button class="ps-biz-copilot-close" (click)="closeChat()" aria-label="Close"><i class="fa-solid fa-xmark"></i></button>
1011
+ </div>
1012
+ <div class="ps-biz-copilot-body">
1013
+ @if (currentUser) {
1014
+ <mj-conversation-chat-area
1015
+ [Provider]="Provider" [environmentId]="chatEnvironmentId" [currentUser]="currentUser"
1016
+ [conversation]="chatConversation" [conversationId]="chatConversationId" [isNewConversation]="chatIsNewConversation"
1017
+ [suppressNewConversationEmptyState]="true" [allowMentions]="false" [overlayMode]="true"
1018
+ [showExportButton]="false" [showShareButton]="false" [showArtifactIndicator]="false"
1019
+ [showAgentPicker]="false" [showAgentModePicker]="false"
1020
+ [defaultAgentId]="modelDevAgentId" [pendingMessage]="pendingPrompt"
1021
+ [applicationScope]="'Application'" [applicationId]="applicationId" [appContext]="chatAppContext"
1022
+ (conversationCreated)="onChatConversationCreated($event)"
1023
+ (pendingMessageConsumed)="onChatPendingMessageConsumed()">
1024
+ </mj-conversation-chat-area>
1025
+ } @else { <div class="ps-biz-copilot-empty"><mj-loading text="Connecting…" size="small"></mj-loading></div> }
1026
+ </div>
1027
+ </aside>
1028
+ </as-split-area>
1029
+ }
1030
+ </as-split>
1093
1031
  </div>
1094
1032
  }
1095
1033
  </mj-page-body-interior>
1096
- `, changeDetection: ChangeDetectionStrategy.OnPush, styles: ["\n :host { display: flex; flex-direction: column; width: 100%; height: 100%; min-height: 0; }\n .ps-biz-host { display: flex; flex: 1; min-height: 0; overflow: hidden; }\n .ps-biz-main { flex: 1; min-width: 0; overflow-y: auto; padding: 16px 18px 28px; }\n .ps-biz-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 16px; }\n .ps-biz-card { background: var(--mj-bg-surface); border: 1px solid var(--mj-border-default); border-radius: var(--mj-radius-md); padding: 18px; display: flex; flex-direction: column; gap: 10px; transition: border-color .12s, background .12s; }\n .ps-biz-card:hover { border-color: var(--mj-brand-primary); background: color-mix(in srgb, var(--mj-brand-primary) 4%, var(--mj-bg-surface)); }\n .ps-biz-card.blocked { opacity: .85; background: var(--mj-bg-surface-card); }\n .ps-biz-card-title { font-size: var(--mj-text-lg); font-weight: 600; color: var(--mj-text-primary); margin: 0; }\n .ps-biz-card-line { color: var(--mj-text-secondary); font-size: var(--mj-text-sm); margin: 0; flex: 1; }\n .ps-biz-card-foot { display: flex; justify-content: flex-end; }\n .ps-trust-badge { display: inline-flex; align-items: center; gap: 6px; padding: 3px 10px; border-radius: var(--mj-radius-full); font-size: var(--mj-text-xs); font-weight: 600; }\n .trust-good, .trust-excellent { background: var(--mj-status-success-bg); color: var(--mj-status-success-text); }\n .trust-fair { background: var(--mj-status-warning-bg); color: var(--mj-status-warning-text); }\n .trust-poor { background: var(--mj-status-error-bg); color: var(--mj-status-error-text); }\n .ps-biz-intro { max-width: 820px; margin: 32px auto; text-align: center; display: flex; flex-direction: column; align-items: center; gap: 20px; }\n .ps-biz-intro-head i { font-size: 40px; color: var(--mj-brand-primary); }\n .ps-biz-intro-head h2 { margin: 12px 0 6px; color: var(--mj-text-primary); font-size: var(--mj-text-xl); }\n .ps-biz-intro-head p { margin: 0 auto; max-width: 620px; color: var(--mj-text-secondary); font-size: var(--mj-text-sm); }\n .ps-cap-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 14px; width: 100%; }\n .ps-cap-card { background: var(--mj-bg-surface); border: 1px solid var(--mj-border-default); border-radius: var(--mj-radius-md); padding: 18px 16px; text-align: left; display: flex; flex-direction: column; gap: 6px; }\n .ps-cap-card i { font-size: 20px; color: var(--mj-brand-primary); }\n .ps-cap-title { font-weight: 600; color: var(--mj-text-primary); font-size: var(--mj-text-sm); }\n .ps-cap-blurb { color: var(--mj-text-secondary); font-size: var(--mj-text-xs); line-height: 1.45; }\n .ps-biz-crumb { display: flex; align-items: center; gap: 8px; font-size: var(--mj-text-sm); color: var(--mj-text-muted); margin-bottom: 14px; }\n .ps-biz-crumb a { color: var(--mj-text-link); cursor: pointer; }\n .ps-biz-crumb a:hover { text-decoration: underline; }\n .ps-biz-crumb i { font-size: 10px; }\n .ps-trust-banner { display: flex; gap: 16px; align-items: center; padding: 18px 20px; border-radius: var(--mj-radius-md); border: 1px solid; margin-bottom: 18px; }\n .ps-trust-banner.trust-good, .ps-trust-banner.trust-excellent { background: var(--mj-status-success-bg); border-color: var(--mj-status-success-border); }\n .ps-trust-banner.trust-fair { background: var(--mj-status-warning-bg); border-color: var(--mj-status-warning-border); }\n .ps-trust-banner.trust-poor { background: var(--mj-status-error-bg); border-color: var(--mj-status-error-border); }\n .ps-trust-dots { display: flex; gap: 3px; font-size: 18px; }\n .ps-trust-dots i { color: var(--mj-border-strong); } .ps-trust-dots i.on { color: var(--mj-status-warning); }\n .ps-trust-banner.trust-good .ps-trust-dots i.on, .ps-trust-banner.trust-excellent .ps-trust-dots i.on { color: var(--mj-status-success); }\n .ps-trust-grade { font-weight: 700; font-size: var(--mj-text-lg); color: var(--mj-text-primary); }\n .ps-trust-line { font-weight: 600; color: var(--mj-text-primary); margin-top: 2px; }\n .ps-trust-explain, .ps-trust-evidence { font-size: var(--mj-text-sm); margin-top: 4px; }\n .ps-action-bar { display: flex; gap: 10px; flex-wrap: wrap; padding: 14px 16px; border-radius: var(--mj-radius-md); background: var(--mj-bg-surface-card); border: 1px solid var(--mj-border-default); }\n .ps-action-bar.locked { background: var(--mj-status-error-bg); border-color: var(--mj-status-error-border); }\n .ps-action-locked { display: flex; align-items: center; gap: 8px; color: var(--mj-status-error-text); font-weight: 600; font-size: var(--mj-text-sm); }\n .ps-drivers { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; padding: 0 0 16px; color: var(--mj-text-secondary); font-size: var(--mj-text-sm); }\n .ps-drivers i { color: var(--mj-status-warning); }\n .ps-driver-chip { background: var(--mj-bg-surface-card); border: 1px solid var(--mj-border-default); border-radius: var(--mj-radius-full); padding: 2px 10px; font-weight: 600; color: var(--mj-text-primary); }\n .ps-atrisk { border: 1px solid var(--mj-border-default); border-radius: var(--mj-radius-md); overflow: hidden; margin-bottom: 16px; background: var(--mj-bg-surface); }\n .ps-atrisk-head { display: grid; grid-template-columns: 1fr 140px 52px; gap: 12px; padding: 8px 14px; background: var(--mj-bg-surface-card); border-bottom: 1px solid var(--mj-border-default); font-size: var(--mj-text-xs); font-weight: 600; color: var(--mj-text-muted); text-transform: uppercase; letter-spacing: .03em; }\n .ps-atrisk-rcol { grid-column: 2 / span 2; text-align: right; }\n .ps-atrisk-row { display: grid; grid-template-columns: 1fr 140px 52px; gap: 12px; align-items: center; padding: 9px 14px; border-bottom: 1px solid var(--mj-border-subtle); }\n .ps-atrisk-row:last-child { border-bottom: none; }\n .ps-atrisk-row:hover { background: var(--mj-bg-surface-hover); }\n .ps-atrisk-idcell { display: flex; flex-direction: column; gap: 4px; min-width: 0; }\n .ps-atrisk-id { font-size: var(--mj-text-xs); color: var(--mj-text-secondary); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n .ps-atrisk-why { display: flex; gap: 6px; flex-wrap: wrap; }\n .ps-why-chip { display: inline-flex; align-items: center; gap: 4px; font-size: 10px; font-weight: 600; padding: 1px 7px; border-radius: var(--mj-radius-full); max-width: 160px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n .ps-why-chip i { font-size: 8px; }\n .ps-why-chip.up { background: var(--mj-status-error-bg); color: var(--mj-status-error-text); }\n .ps-why-chip.down { background: var(--mj-status-success-bg); color: var(--mj-status-success-text); }\n .ps-atrisk-bar { height: 8px; border-radius: var(--mj-radius-full); background: var(--mj-bg-surface-sunken); overflow: hidden; }\n .ps-atrisk-fill { display: block; height: 100%; border-radius: var(--mj-radius-full); }\n .ps-atrisk-pct { text-align: right; font-weight: 700; font-size: var(--mj-text-sm); font-variant-numeric: tabular-nums; }\n .ps-atrisk-fill.risk-high { background: var(--mj-status-error); }\n .ps-atrisk-fill.risk-medium { background: var(--mj-status-warning); }\n .ps-atrisk-fill.risk-low { background: var(--mj-status-success); }\n .ps-atrisk-pct.risk-high { color: var(--mj-status-error-text); }\n .ps-atrisk-pct.risk-medium { color: var(--mj-status-warning-text); }\n .ps-atrisk-pct.risk-low { color: var(--mj-status-success-text); }\n .ps-atrisk-foot { padding: 8px 14px; font-size: var(--mj-text-xs); }\n .ps-atrisk-empty { padding: 24px; text-align: center; border: 1px dashed var(--mj-border-default); border-radius: var(--mj-radius-md); margin-bottom: 16px; }\n .ps-atrisk-error { display: flex; align-items: center; gap: 10px; padding: 16px 18px; border: 1px solid var(--mj-status-error-border); background: var(--mj-status-error-bg); border-radius: var(--mj-radius-md); margin-bottom: 16px; color: var(--mj-status-error-text); font-size: var(--mj-text-sm); }\n .ps-atrisk-error i { color: var(--mj-status-error); }\n .ps-atrisk-error .ps-atrisk-error-msg { flex: 1; min-width: 0; word-break: break-word; }\n .mono { font-family: var(--mj-font-family-mono); }\n /* Kept local (not in the shared stylesheet) deliberately: shared styles are injected by the\n ViewEncapsulation.None PANEL components, and this banner renders precisely when panels DON'T. */\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 .ps-biz-copilot { width: 560px; min-width: 380px; max-width: 60vw; flex: none; border-left: 1px solid var(--mj-border-default); background: var(--mj-bg-surface); display: flex; flex-direction: column; min-height: 0; }\n .ps-biz-copilot-head { display: flex; align-items: center; justify-content: space-between; padding: 10px 14px; border-bottom: 1px solid var(--mj-border-default); }\n .ps-biz-copilot-title { display: flex; align-items: center; gap: 8px; font-weight: 600; color: var(--mj-text-primary); }\n .ps-biz-copilot-title i { color: var(--mj-brand-primary); }\n .ps-biz-copilot-close { background: transparent; border: none; cursor: pointer; padding: 6px 8px; border-radius: 6px; color: var(--mj-text-muted); }\n .ps-biz-copilot-close:hover { background: var(--mj-bg-surface-hover); color: var(--mj-text-secondary); }\n .ps-biz-copilot-body { flex: 1; min-height: 0; overflow: hidden; display: flex; flex-direction: column; }\n .ps-biz-copilot-body mj-conversation-chat-area { flex: 1; min-height: 0; display: block; }\n .ps-biz-copilot-empty { display: flex; align-items: center; justify-content: center; flex: 1; }\n @media (max-width: 1100px) { .ps-biz-host.chat-open .ps-biz-main { display: none; } .ps-biz-copilot { width: 100%; max-width: none; border-left: none; } }\n "] }]
1034
+ `, changeDetection: ChangeDetectionStrategy.OnPush, styles: ["\n :host { display: flex; flex-direction: column; width: 100%; height: 100%; min-height: 0; }\n .ps-biz-host { display: flex; flex: 1; min-height: 0; overflow: hidden; }\n .biz-copilot-splitter { flex: 1; width: 100%; height: 100%; min-height: 0; min-width: 0; }\n .biz-copilot-splitter .as-split-gutter { background: transparent; transition: background-color 0.15s ease; position: relative; }\n .biz-copilot-splitter .as-split-gutter:hover { background-color: var(--mj-brand-primary, #6366f1); }\n .biz-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-biz-main { width: 100%; height: 100%; flex: 1; min-width: 0; overflow-y: auto; padding: 16px 18px 28px; }\n .ps-biz-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 16px; }\n .ps-biz-card { background: var(--mj-bg-surface); border: 1px solid var(--mj-border-default); border-radius: var(--mj-radius-md); padding: 18px; display: flex; flex-direction: column; gap: 10px; transition: border-color .12s, background .12s; }\n .ps-biz-card:hover { border-color: var(--mj-brand-primary); background: color-mix(in srgb, var(--mj-brand-primary) 4%, var(--mj-bg-surface)); }\n .ps-biz-card.blocked { opacity: .85; background: var(--mj-bg-surface-card); }\n .ps-biz-card-title { font-size: var(--mj-text-lg); font-weight: 600; color: var(--mj-text-primary); margin: 0; }\n .ps-biz-card-line { color: var(--mj-text-secondary); font-size: var(--mj-text-sm); margin: 0; flex: 1; }\n .ps-biz-card-foot { display: flex; justify-content: flex-end; }\n .ps-trust-badge { display: inline-flex; align-items: center; gap: 6px; padding: 3px 10px; border-radius: var(--mj-radius-full); font-size: var(--mj-text-xs); font-weight: 600; }\n .trust-good, .trust-excellent { background: var(--mj-status-success-bg); color: var(--mj-status-success-text); }\n .trust-fair { background: var(--mj-status-warning-bg); color: var(--mj-status-warning-text); }\n .trust-poor { background: var(--mj-status-error-bg); color: var(--mj-status-error-text); }\n .ps-biz-intro { max-width: 820px; margin: 32px auto; text-align: center; display: flex; flex-direction: column; align-items: center; gap: 20px; }\n .ps-biz-intro-head i { font-size: 40px; color: var(--mj-brand-primary); }\n .ps-biz-intro-head h2 { margin: 12px 0 6px; color: var(--mj-text-primary); font-size: var(--mj-text-xl); }\n .ps-biz-intro-head p { margin: 0 auto; max-width: 620px; color: var(--mj-text-secondary); font-size: var(--mj-text-sm); }\n .ps-cap-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 14px; width: 100%; }\n .ps-cap-card { background: var(--mj-bg-surface); border: 1px solid var(--mj-border-default); border-radius: var(--mj-radius-md); padding: 18px 16px; text-align: left; display: flex; flex-direction: column; gap: 6px; }\n .ps-cap-card i { font-size: 20px; color: var(--mj-brand-primary); }\n .ps-cap-title { font-weight: 600; color: var(--mj-text-primary); font-size: var(--mj-text-sm); }\n .ps-cap-blurb { color: var(--mj-text-secondary); font-size: var(--mj-text-xs); line-height: 1.45; }\n .ps-biz-crumb { display: flex; align-items: center; gap: 8px; font-size: var(--mj-text-sm); color: var(--mj-text-muted); margin-bottom: 14px; }\n .ps-biz-crumb a { color: var(--mj-text-link); cursor: pointer; }\n .ps-biz-crumb a:hover { text-decoration: underline; }\n .ps-biz-crumb i { font-size: 10px; }\n .ps-trust-banner { display: flex; gap: 16px; align-items: center; padding: 18px 20px; border-radius: var(--mj-radius-md); border: 1px solid; margin-bottom: 18px; }\n .ps-trust-banner.trust-good, .ps-trust-banner.trust-excellent { background: var(--mj-status-success-bg); border-color: var(--mj-status-success-border); }\n .ps-trust-banner.trust-fair { background: var(--mj-status-warning-bg); border-color: var(--mj-status-warning-border); }\n .ps-trust-banner.trust-poor { background: var(--mj-status-error-bg); border-color: var(--mj-status-error-border); }\n .ps-trust-dots { display: flex; gap: 3px; font-size: 18px; }\n .ps-trust-dots i { color: var(--mj-border-strong); } .ps-trust-dots i.on { color: var(--mj-status-warning); }\n .ps-trust-banner.trust-good .ps-trust-dots i.on, .ps-trust-banner.trust-excellent .ps-trust-dots i.on { color: var(--mj-status-success); }\n .ps-trust-grade { font-weight: 700; font-size: var(--mj-text-lg); color: var(--mj-text-primary); }\n .ps-trust-line { font-weight: 600; color: var(--mj-text-primary); margin-top: 2px; }\n .ps-trust-explain, .ps-trust-evidence { font-size: var(--mj-text-sm); margin-top: 4px; }\n .ps-action-bar { display: flex; gap: 10px; flex-wrap: wrap; padding: 14px 16px; border-radius: var(--mj-radius-md); background: var(--mj-bg-surface-card); border: 1px solid var(--mj-border-default); }\n .ps-action-bar.locked { background: var(--mj-status-error-bg); border-color: var(--mj-status-error-border); }\n .ps-action-locked { display: flex; align-items: center; gap: 8px; color: var(--mj-status-error-text); font-weight: 600; font-size: var(--mj-text-sm); }\n .ps-drivers { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; padding: 0 0 16px; color: var(--mj-text-secondary); font-size: var(--mj-text-sm); }\n .ps-drivers i { color: var(--mj-status-warning); }\n .ps-driver-chip { background: var(--mj-bg-surface-card); border: 1px solid var(--mj-border-default); border-radius: var(--mj-radius-full); padding: 2px 10px; font-weight: 600; color: var(--mj-text-primary); }\n .ps-atrisk { border: 1px solid var(--mj-border-default); border-radius: var(--mj-radius-md); overflow: hidden; margin-bottom: 16px; background: var(--mj-bg-surface); }\n .ps-atrisk-head { display: grid; grid-template-columns: 1fr 140px 52px; gap: 12px; padding: 8px 14px; background: var(--mj-bg-surface-card); border-bottom: 1px solid var(--mj-border-default); font-size: var(--mj-text-xs); font-weight: 600; color: var(--mj-text-muted); text-transform: uppercase; letter-spacing: .03em; }\n .ps-atrisk-rcol { grid-column: 2 / span 2; text-align: right; }\n .ps-atrisk-row { display: grid; grid-template-columns: 1fr 140px 52px; gap: 12px; align-items: center; padding: 9px 14px; border-bottom: 1px solid var(--mj-border-subtle); }\n .ps-atrisk-row:last-child { border-bottom: none; }\n .ps-atrisk-row:hover { background: var(--mj-bg-surface-hover); }\n .ps-atrisk-idcell { display: flex; flex-direction: column; gap: 4px; min-width: 0; }\n .ps-atrisk-id { font-size: var(--mj-text-xs); color: var(--mj-text-secondary); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n .ps-atrisk-why { display: flex; gap: 6px; flex-wrap: wrap; }\n .ps-why-chip { display: inline-flex; align-items: center; gap: 4px; font-size: 10px; font-weight: 600; padding: 1px 7px; border-radius: var(--mj-radius-full); max-width: 160px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n .ps-why-chip i { font-size: 8px; }\n .ps-why-chip.up { background: var(--mj-status-error-bg); color: var(--mj-status-error-text); }\n .ps-why-chip.down { background: var(--mj-status-success-bg); color: var(--mj-status-success-text); }\n .ps-atrisk-bar { height: 8px; border-radius: var(--mj-radius-full); background: var(--mj-bg-surface-sunken); overflow: hidden; }\n .ps-atrisk-fill { display: block; height: 100%; border-radius: var(--mj-radius-full); }\n .ps-atrisk-pct { text-align: right; font-weight: 700; font-size: var(--mj-text-sm); font-variant-numeric: tabular-nums; }\n .ps-atrisk-fill.risk-high { background: var(--mj-status-error); }\n .ps-atrisk-fill.risk-medium { background: var(--mj-status-warning); }\n .ps-atrisk-fill.risk-low { background: var(--mj-status-success); }\n .ps-atrisk-pct.risk-high { color: var(--mj-status-error-text); }\n .ps-atrisk-pct.risk-medium { color: var(--mj-status-warning-text); }\n .ps-atrisk-pct.risk-low { color: var(--mj-status-success-text); }\n .ps-atrisk-foot { padding: 8px 14px; font-size: var(--mj-text-xs); }\n .ps-atrisk-empty { padding: 24px; text-align: center; border: 1px dashed var(--mj-border-default); border-radius: var(--mj-radius-md); margin-bottom: 16px; }\n .ps-atrisk-error { display: flex; align-items: center; gap: 10px; padding: 16px 18px; border: 1px solid var(--mj-status-error-border); background: var(--mj-status-error-bg); border-radius: var(--mj-radius-md); margin-bottom: 16px; color: var(--mj-status-error-text); font-size: var(--mj-text-sm); }\n .ps-atrisk-error i { color: var(--mj-status-error); }\n .ps-atrisk-error .ps-atrisk-error-msg { flex: 1; min-width: 0; word-break: break-word; }\n .mono { font-family: var(--mj-font-family-mono); }\n /* Kept local (not in the shared stylesheet) deliberately: shared styles are injected by the\n ViewEncapsulation.None PANEL components, and this banner renders precisely when panels DON'T. */\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 .ps-biz-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-biz-copilot-head { display: flex; align-items: center; justify-content: space-between; padding: 10px 14px; border-bottom: 1px solid var(--mj-border-default); }\n .ps-biz-copilot-title { display: flex; align-items: center; gap: 8px; font-weight: 600; color: var(--mj-text-primary); }\n .ps-biz-copilot-title i { color: var(--mj-brand-primary); }\n .ps-biz-copilot-close { background: transparent; border: none; cursor: pointer; padding: 6px 8px; border-radius: 6px; color: var(--mj-text-muted); }\n .ps-biz-copilot-close:hover { background: var(--mj-bg-surface-hover); color: var(--mj-text-secondary); }\n .ps-biz-copilot-body { flex: 1; min-height: 0; overflow: hidden; display: flex; flex-direction: column; }\n .ps-biz-copilot-body mj-conversation-chat-area { flex: 1; min-height: 0; display: block; }\n .ps-biz-copilot-empty { display: flex; align-items: center; justify-content: center; flex: 1; }\n @media (max-width: 1100px) { .ps-biz-host.chat-open .ps-biz-main { display: none; } .ps-biz-copilot { width: 100%; max-width: none; border-left: none; } }\n "] }]
1097
1035
  }], null, null); })();
1098
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PSPredictionsResourceComponent, { className: "PSPredictionsResourceComponent", filePath: "src/PredictiveStudio/resources/ps-predictions-resource.component.ts", lineNumber: 299 }); })();
1036
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PSPredictionsResourceComponent, { className: "PSPredictionsResourceComponent", filePath: "src/PredictiveStudio/resources/ps-predictions-resource.component.ts", lineNumber: 285 }); })();
1099
1037
  /** Tree-shaking prevention — called from the subpath module so the @RegisterClass survives bundling. */
1100
1038
  export function LoadPSPredictionsResource() {
1101
1039
  // intentionally empty