@memberjunction/ng-core-entity-forms 5.16.0 → 5.18.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.
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.d.ts +5 -0
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js +754 -622
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js.map +1 -1
- package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.d.ts +15 -0
- package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.d.ts.map +1 -1
- package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.js +110 -42
- package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.d.ts +29 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.js +400 -44
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js +9 -9
- package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js +9 -9
- package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIConfiguration/mjaiconfiguration.form.component.js +16 -16
- package/dist/lib/generated/Entities/MJAIConfiguration/mjaiconfiguration.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIVendor/mjaivendor.form.component.js +10 -10
- package/dist/lib/generated/Entities/MJAIVendor/mjaivendor.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAPIScope/mjapiscope.form.component.js +10 -10
- package/dist/lib/generated/Entities/MJAPIScope/mjapiscope.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJCompanyIntegrationEntityMap/mjcompanyintegrationentitymap.form.component.js +10 -10
- package/dist/lib/generated/Entities/MJCompanyIntegrationEntityMap/mjcompanyintegrationentitymap.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJComponent/mjcomponent.form.component.js +9 -9
- package/dist/lib/generated/Entities/MJComponent/mjcomponent.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJContentSource/mjcontentsource.form.component.js +13 -13
- package/dist/lib/generated/Entities/MJContentSource/mjcontentsource.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js +9 -9
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEnvironment/mjenvironment.form.component.js +16 -16
- package/dist/lib/generated/Entities/MJEnvironment/mjenvironment.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJGeneratedCodeCategory/mjgeneratedcodecategory.form.component.js +10 -10
- package/dist/lib/generated/Entities/MJGeneratedCodeCategory/mjgeneratedcodecategory.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJMCPServerConnection/mjmcpserverconnection.form.component.js +9 -9
- package/dist/lib/generated/Entities/MJMCPServerConnection/mjmcpserverconnection.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJTestType/mjtesttype.form.component.js +10 -10
- package/dist/lib/generated/Entities/MJTestType/mjtesttype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js +30 -30
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJVersionLabel/mjversionlabel.form.component.js +10 -10
- package/dist/lib/generated/Entities/MJVersionLabel/mjversionlabel.form.component.js.map +1 -1
- package/package.json +31 -31
|
@@ -23,7 +23,7 @@ import * as i7 from "@angular/common";
|
|
|
23
23
|
const _forTrack0 = ($index, $item) => $item.attemptNumber;
|
|
24
24
|
const _forTrack1 = ($index, $item) => $item.ID;
|
|
25
25
|
function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
26
|
-
i0.ɵɵelementStart(0, "span",
|
|
26
|
+
i0.ɵɵelementStart(0, "span", 11);
|
|
27
27
|
i0.ɵɵtext(1);
|
|
28
28
|
i0.ɵɵelementEnd();
|
|
29
29
|
} if (rf & 2) {
|
|
@@ -31,71 +31,118 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_11_Templat
|
|
|
31
31
|
i0.ɵɵadvance();
|
|
32
32
|
i0.ɵɵtextInterpolate1("#", ctx_r1.record.ID.substring(0, 8));
|
|
33
33
|
} }
|
|
34
|
-
function
|
|
35
|
-
i0.ɵɵelementStart(0, "
|
|
36
|
-
i0.ɵɵ
|
|
37
|
-
i0.ɵɵtext(2);
|
|
34
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_20_Template(rf, ctx) { if (rf & 1) {
|
|
35
|
+
i0.ɵɵelementStart(0, "div", 17)(1, "div", 14);
|
|
36
|
+
i0.ɵɵtext(2, "Execution");
|
|
38
37
|
i0.ɵɵelementEnd();
|
|
38
|
+
i0.ɵɵelementStart(3, "div", 15);
|
|
39
|
+
i0.ɵɵelement(4, "i");
|
|
40
|
+
i0.ɵɵtext(5);
|
|
41
|
+
i0.ɵɵelementEnd()();
|
|
39
42
|
} if (rf & 2) {
|
|
40
43
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
41
|
-
i0.ɵɵ
|
|
42
|
-
i0.ɵɵadvance();
|
|
44
|
+
i0.ɵɵadvance(4);
|
|
43
45
|
i0.ɵɵclassMap("fa-solid " + ctx_r1.getRunTypeIcon(ctx_r1.record.RunType));
|
|
46
|
+
i0.ɵɵstyleProp("color", ctx_r1.getRunTypeColor(ctx_r1.record.RunType));
|
|
44
47
|
i0.ɵɵadvance();
|
|
45
48
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.RunType, " ");
|
|
46
49
|
} }
|
|
47
|
-
function
|
|
50
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_21_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
48
51
|
const _r3 = i0.ɵɵgetCurrentView();
|
|
49
|
-
i0.ɵɵelementStart(0, "
|
|
50
|
-
i0.ɵɵ
|
|
51
|
-
i0.ɵɵelement(1, "i", 32);
|
|
52
|
-
i0.ɵɵtext(2);
|
|
52
|
+
i0.ɵɵelementStart(0, "div", 32)(1, "div", 14);
|
|
53
|
+
i0.ɵɵtext(2, "Prompt");
|
|
53
54
|
i0.ɵɵelementEnd();
|
|
55
|
+
i0.ɵɵelementStart(3, "div", 34);
|
|
56
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_21_Conditional_0_Template_div_click_3_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Prompts", ctx_r1.record.ChildPromptID)); });
|
|
57
|
+
i0.ɵɵelement(4, "i", 35);
|
|
58
|
+
i0.ɵɵtext(5);
|
|
59
|
+
i0.ɵɵelementEnd();
|
|
60
|
+
i0.ɵɵelementStart(6, "div", 36);
|
|
61
|
+
i0.ɵɵelement(7, "span", 37);
|
|
62
|
+
i0.ɵɵelementStart(8, "span", 38);
|
|
63
|
+
i0.ɵɵtext(9, "wrapped by");
|
|
64
|
+
i0.ɵɵelementEnd();
|
|
65
|
+
i0.ɵɵelement(10, "span", 37);
|
|
66
|
+
i0.ɵɵelementEnd();
|
|
67
|
+
i0.ɵɵelementStart(11, "div", 39);
|
|
68
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_21_Conditional_0_Template_div_click_11_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Prompts", ctx_r1.prompt.ID)); });
|
|
69
|
+
i0.ɵɵelement(12, "i", 40);
|
|
70
|
+
i0.ɵɵtext(13);
|
|
71
|
+
i0.ɵɵelement(14, "i", 41);
|
|
72
|
+
i0.ɵɵelementEnd()();
|
|
54
73
|
} if (rf & 2) {
|
|
55
|
-
const ctx_r1 = i0.ɵɵnextContext(
|
|
56
|
-
i0.ɵɵadvance(
|
|
74
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
75
|
+
i0.ɵɵadvance(5);
|
|
76
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.ChildPrompt, " ");
|
|
77
|
+
i0.ɵɵadvance(8);
|
|
57
78
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.prompt.Name, " ");
|
|
58
79
|
} }
|
|
59
|
-
function
|
|
80
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_21_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
60
81
|
const _r4 = i0.ɵɵgetCurrentView();
|
|
61
|
-
i0.ɵɵelementStart(0, "
|
|
62
|
-
i0.ɵɵ
|
|
63
|
-
i0.ɵɵelement(1, "i", 34);
|
|
64
|
-
i0.ɵɵtext(2);
|
|
82
|
+
i0.ɵɵelementStart(0, "div", 33)(1, "div", 14);
|
|
83
|
+
i0.ɵɵtext(2, "Prompt");
|
|
65
84
|
i0.ɵɵelementEnd();
|
|
85
|
+
i0.ɵɵelementStart(3, "div", 42);
|
|
86
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_21_Conditional_1_Template_div_click_3_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Prompts", ctx_r1.prompt.ID)); });
|
|
87
|
+
i0.ɵɵelement(4, "i", 43);
|
|
88
|
+
i0.ɵɵtext(5);
|
|
89
|
+
i0.ɵɵelementEnd()();
|
|
90
|
+
} if (rf & 2) {
|
|
91
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
92
|
+
i0.ɵɵadvance(5);
|
|
93
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.prompt.Name, " ");
|
|
94
|
+
} }
|
|
95
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_21_Template(rf, ctx) { if (rf & 1) {
|
|
96
|
+
i0.ɵɵconditionalCreate(0, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_21_Conditional_0_Template, 15, 2, "div", 32)(1, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_21_Conditional_1_Template, 6, 1, "div", 33);
|
|
66
97
|
} if (rf & 2) {
|
|
67
98
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
68
|
-
i0.ɵɵ
|
|
69
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r1.model.Name, " ");
|
|
99
|
+
i0.ɵɵconditional(ctx_r1.record.ChildPromptID ? 0 : 1);
|
|
70
100
|
} }
|
|
71
|
-
function
|
|
101
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_22_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
102
|
+
i0.ɵɵelementStart(0, "span", 47);
|
|
103
|
+
i0.ɵɵtext(1);
|
|
104
|
+
i0.ɵɵelementEnd();
|
|
105
|
+
} if (rf & 2) {
|
|
106
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
107
|
+
i0.ɵɵadvance();
|
|
108
|
+
i0.ɵɵtextInterpolate(ctx_r1.record.Vendor);
|
|
109
|
+
} }
|
|
110
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_22_Template(rf, ctx) { if (rf & 1) {
|
|
72
111
|
const _r5 = i0.ɵɵgetCurrentView();
|
|
73
|
-
i0.ɵɵelementStart(0, "
|
|
74
|
-
i0.ɵɵ
|
|
75
|
-
i0.ɵɵelement(1, "i", 36);
|
|
76
|
-
i0.ɵɵtext(2);
|
|
112
|
+
i0.ɵɵelementStart(0, "div", 18)(1, "div", 14);
|
|
113
|
+
i0.ɵɵtext(2, "Model");
|
|
77
114
|
i0.ɵɵelementEnd();
|
|
115
|
+
i0.ɵɵelementStart(3, "div", 44);
|
|
116
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_22_Template_div_click_3_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Models", ctx_r1.model.ID)); });
|
|
117
|
+
i0.ɵɵelementStart(4, "span", 45);
|
|
118
|
+
i0.ɵɵelement(5, "i", 46);
|
|
119
|
+
i0.ɵɵtext(6);
|
|
120
|
+
i0.ɵɵelementEnd();
|
|
121
|
+
i0.ɵɵconditionalCreate(7, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_22_Conditional_7_Template, 2, 1, "span", 47);
|
|
122
|
+
i0.ɵɵelementEnd()();
|
|
78
123
|
} if (rf & 2) {
|
|
79
124
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
80
|
-
i0.ɵɵadvance(
|
|
81
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r1.
|
|
125
|
+
i0.ɵɵadvance(6);
|
|
126
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.model.Name);
|
|
127
|
+
i0.ɵɵadvance();
|
|
128
|
+
i0.ɵɵconditional(ctx_r1.record.Vendor ? 7 : -1);
|
|
82
129
|
} }
|
|
83
|
-
function
|
|
130
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_23_Template(rf, ctx) { if (rf & 1) {
|
|
84
131
|
const _r6 = i0.ɵɵgetCurrentView();
|
|
85
|
-
i0.ɵɵelementStart(0, "span",
|
|
86
|
-
i0.ɵɵelement(1, "i",
|
|
87
|
-
i0.ɵɵelementStart(2, "a",
|
|
88
|
-
i0.ɵɵlistener("click", function
|
|
132
|
+
i0.ɵɵelementStart(0, "span", 19);
|
|
133
|
+
i0.ɵɵelement(1, "i", 48);
|
|
134
|
+
i0.ɵɵelementStart(2, "a", 49);
|
|
135
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_23_Template_a_click_2_listener() { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.navigateToOriginalRun()); });
|
|
89
136
|
i0.ɵɵtext(3, "Original Run");
|
|
90
137
|
i0.ɵɵelementEnd()();
|
|
91
138
|
} }
|
|
92
|
-
function
|
|
93
|
-
i0.ɵɵelementStart(0, "div",
|
|
94
|
-
i0.ɵɵelement(1, "i",
|
|
95
|
-
i0.ɵɵelementStart(2, "div",
|
|
139
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_30_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
140
|
+
i0.ɵɵelementStart(0, "div", 50);
|
|
141
|
+
i0.ɵɵelement(1, "i", 58);
|
|
142
|
+
i0.ɵɵelementStart(2, "div", 51)(3, "div", 52);
|
|
96
143
|
i0.ɵɵtext(4, "Temperature");
|
|
97
144
|
i0.ɵɵelementEnd();
|
|
98
|
-
i0.ɵɵelementStart(5, "div",
|
|
145
|
+
i0.ɵɵelementStart(5, "div", 53);
|
|
99
146
|
i0.ɵɵtext(6);
|
|
100
147
|
i0.ɵɵelementEnd()()();
|
|
101
148
|
} if (rf & 2) {
|
|
@@ -103,13 +150,13 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_27_Conditi
|
|
|
103
150
|
i0.ɵɵadvance(6);
|
|
104
151
|
i0.ɵɵtextInterpolate(ctx_r1.record.Temperature);
|
|
105
152
|
} }
|
|
106
|
-
function
|
|
107
|
-
i0.ɵɵelementStart(0, "div",
|
|
108
|
-
i0.ɵɵelement(1, "i",
|
|
109
|
-
i0.ɵɵelementStart(2, "div",
|
|
153
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_30_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
154
|
+
i0.ɵɵelementStart(0, "div", 50);
|
|
155
|
+
i0.ɵɵelement(1, "i", 59);
|
|
156
|
+
i0.ɵɵelementStart(2, "div", 51)(3, "div", 52);
|
|
110
157
|
i0.ɵɵtext(4, "Top P");
|
|
111
158
|
i0.ɵɵelementEnd();
|
|
112
|
-
i0.ɵɵelementStart(5, "div",
|
|
159
|
+
i0.ɵɵelementStart(5, "div", 53);
|
|
113
160
|
i0.ɵɵtext(6);
|
|
114
161
|
i0.ɵɵelementEnd()()();
|
|
115
162
|
} if (rf & 2) {
|
|
@@ -117,13 +164,13 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_27_Conditi
|
|
|
117
164
|
i0.ɵɵadvance(6);
|
|
118
165
|
i0.ɵɵtextInterpolate(ctx_r1.record.TopP);
|
|
119
166
|
} }
|
|
120
|
-
function
|
|
121
|
-
i0.ɵɵelementStart(0, "div",
|
|
122
|
-
i0.ɵɵelement(1, "i",
|
|
123
|
-
i0.ɵɵelementStart(2, "div",
|
|
167
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_30_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
168
|
+
i0.ɵɵelementStart(0, "div", 50);
|
|
169
|
+
i0.ɵɵelement(1, "i", 60);
|
|
170
|
+
i0.ɵɵelementStart(2, "div", 51)(3, "div", 52);
|
|
124
171
|
i0.ɵɵtext(4, "Top K");
|
|
125
172
|
i0.ɵɵelementEnd();
|
|
126
|
-
i0.ɵɵelementStart(5, "div",
|
|
173
|
+
i0.ɵɵelementStart(5, "div", 53);
|
|
127
174
|
i0.ɵɵtext(6);
|
|
128
175
|
i0.ɵɵelementEnd()()();
|
|
129
176
|
} if (rf & 2) {
|
|
@@ -131,13 +178,13 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_27_Conditi
|
|
|
131
178
|
i0.ɵɵadvance(6);
|
|
132
179
|
i0.ɵɵtextInterpolate(ctx_r1.record.TopK);
|
|
133
180
|
} }
|
|
134
|
-
function
|
|
135
|
-
i0.ɵɵelementStart(0, "div",
|
|
136
|
-
i0.ɵɵelement(1, "i",
|
|
137
|
-
i0.ɵɵelementStart(2, "div",
|
|
181
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_30_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
182
|
+
i0.ɵɵelementStart(0, "div", 50);
|
|
183
|
+
i0.ɵɵelement(1, "i", 61);
|
|
184
|
+
i0.ɵɵelementStart(2, "div", 51)(3, "div", 52);
|
|
138
185
|
i0.ɵɵtext(4, "Effort Level");
|
|
139
186
|
i0.ɵɵelementEnd();
|
|
140
|
-
i0.ɵɵelementStart(5, "div",
|
|
187
|
+
i0.ɵɵelementStart(5, "div", 53);
|
|
141
188
|
i0.ɵɵtext(6);
|
|
142
189
|
i0.ɵɵelementEnd()()();
|
|
143
190
|
} if (rf & 2) {
|
|
@@ -145,13 +192,13 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_27_Conditi
|
|
|
145
192
|
i0.ɵɵadvance(6);
|
|
146
193
|
i0.ɵɵtextInterpolate(ctx_r1.record.EffortLevel);
|
|
147
194
|
} }
|
|
148
|
-
function
|
|
149
|
-
i0.ɵɵelementStart(0, "div",
|
|
150
|
-
i0.ɵɵelement(1, "i",
|
|
151
|
-
i0.ɵɵelementStart(2, "div",
|
|
195
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_30_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
196
|
+
i0.ɵɵelementStart(0, "div", 50);
|
|
197
|
+
i0.ɵɵelement(1, "i", 62);
|
|
198
|
+
i0.ɵɵelementStart(2, "div", 51)(3, "div", 52);
|
|
152
199
|
i0.ɵɵtext(4, "Response Format");
|
|
153
200
|
i0.ɵɵelementEnd();
|
|
154
|
-
i0.ɵɵelementStart(5, "div",
|
|
201
|
+
i0.ɵɵelementStart(5, "div", 53);
|
|
155
202
|
i0.ɵɵtext(6);
|
|
156
203
|
i0.ɵɵelementEnd()()();
|
|
157
204
|
} if (rf & 2) {
|
|
@@ -159,13 +206,13 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_27_Conditi
|
|
|
159
206
|
i0.ɵɵadvance(6);
|
|
160
207
|
i0.ɵɵtextInterpolate(ctx_r1.record.ResponseFormat);
|
|
161
208
|
} }
|
|
162
|
-
function
|
|
163
|
-
i0.ɵɵelementStart(0, "div",
|
|
164
|
-
i0.ɵɵelement(1, "i",
|
|
165
|
-
i0.ɵɵelementStart(2, "div",
|
|
209
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_30_Conditional_36_Template(rf, ctx) { if (rf & 1) {
|
|
210
|
+
i0.ɵɵelementStart(0, "div", 50);
|
|
211
|
+
i0.ɵɵelement(1, "i", 63);
|
|
212
|
+
i0.ɵɵelementStart(2, "div", 51)(3, "div", 52);
|
|
166
213
|
i0.ɵɵtext(4, "Started");
|
|
167
214
|
i0.ɵɵelementEnd();
|
|
168
|
-
i0.ɵɵelementStart(5, "div",
|
|
215
|
+
i0.ɵɵelementStart(5, "div", 53);
|
|
169
216
|
i0.ɵɵtext(6);
|
|
170
217
|
i0.ɵɵpipe(7, "date");
|
|
171
218
|
i0.ɵɵelementEnd()()();
|
|
@@ -174,48 +221,48 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_27_Conditi
|
|
|
174
221
|
i0.ɵɵadvance(6);
|
|
175
222
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(7, 1, ctx_r1.record.RunAt, "short"));
|
|
176
223
|
} }
|
|
177
|
-
function
|
|
224
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_30_Template(rf, ctx) { if (rf & 1) {
|
|
178
225
|
const _r7 = i0.ɵɵgetCurrentView();
|
|
179
|
-
i0.ɵɵelementStart(0, "div",
|
|
226
|
+
i0.ɵɵelementStart(0, "div", 25)(1, "div", 50);
|
|
180
227
|
i0.ɵɵelement(2, "i", 40);
|
|
181
|
-
i0.ɵɵelementStart(3, "div",
|
|
228
|
+
i0.ɵɵelementStart(3, "div", 51)(4, "div", 52);
|
|
182
229
|
i0.ɵɵtext(5, "Configuration");
|
|
183
230
|
i0.ɵɵelementEnd();
|
|
184
|
-
i0.ɵɵelementStart(6, "div",
|
|
185
|
-
i0.ɵɵlistener("click", function
|
|
231
|
+
i0.ɵɵelementStart(6, "div", 53)(7, "a", 54);
|
|
232
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_30_Template_a_click_7_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Configurations", ctx_r1.record.ConfigurationID)); });
|
|
186
233
|
i0.ɵɵtext(8);
|
|
187
234
|
i0.ɵɵelementEnd()()()();
|
|
188
|
-
i0.ɵɵconditionalCreate(9,
|
|
189
|
-
i0.ɵɵconditionalCreate(10,
|
|
190
|
-
i0.ɵɵconditionalCreate(11,
|
|
191
|
-
i0.ɵɵconditionalCreate(12,
|
|
192
|
-
i0.ɵɵconditionalCreate(13,
|
|
193
|
-
i0.ɵɵelementEnd();
|
|
194
|
-
i0.ɵɵelementStart(14, "div",
|
|
195
|
-
i0.ɵɵelement(16, "i",
|
|
196
|
-
i0.ɵɵelementStart(17, "div",
|
|
235
|
+
i0.ɵɵconditionalCreate(9, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_30_Conditional_9_Template, 7, 1, "div", 50);
|
|
236
|
+
i0.ɵɵconditionalCreate(10, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_30_Conditional_10_Template, 7, 1, "div", 50);
|
|
237
|
+
i0.ɵɵconditionalCreate(11, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_30_Conditional_11_Template, 7, 1, "div", 50);
|
|
238
|
+
i0.ɵɵconditionalCreate(12, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_30_Conditional_12_Template, 7, 1, "div", 50);
|
|
239
|
+
i0.ɵɵconditionalCreate(13, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_30_Conditional_13_Template, 7, 1, "div", 50);
|
|
240
|
+
i0.ɵɵelementEnd();
|
|
241
|
+
i0.ɵɵelementStart(14, "div", 25)(15, "div", 50);
|
|
242
|
+
i0.ɵɵelement(16, "i", 55);
|
|
243
|
+
i0.ɵɵelementStart(17, "div", 51)(18, "div", 52);
|
|
197
244
|
i0.ɵɵtext(19, "Duration");
|
|
198
245
|
i0.ɵɵelementEnd();
|
|
199
|
-
i0.ɵɵelementStart(20, "div",
|
|
246
|
+
i0.ɵɵelementStart(20, "div", 53);
|
|
200
247
|
i0.ɵɵtext(21);
|
|
201
248
|
i0.ɵɵelementEnd()()();
|
|
202
|
-
i0.ɵɵelementStart(22, "div",
|
|
203
|
-
i0.ɵɵelement(23, "i",
|
|
204
|
-
i0.ɵɵelementStart(24, "div",
|
|
249
|
+
i0.ɵɵelementStart(22, "div", 50);
|
|
250
|
+
i0.ɵɵelement(23, "i", 56);
|
|
251
|
+
i0.ɵɵelementStart(24, "div", 51)(25, "div", 52);
|
|
205
252
|
i0.ɵɵtext(26, "Total Tokens");
|
|
206
253
|
i0.ɵɵelementEnd();
|
|
207
|
-
i0.ɵɵelementStart(27, "div",
|
|
254
|
+
i0.ɵɵelementStart(27, "div", 53);
|
|
208
255
|
i0.ɵɵtext(28);
|
|
209
256
|
i0.ɵɵelementEnd()()();
|
|
210
|
-
i0.ɵɵelementStart(29, "div",
|
|
211
|
-
i0.ɵɵelement(30, "i",
|
|
212
|
-
i0.ɵɵelementStart(31, "div",
|
|
257
|
+
i0.ɵɵelementStart(29, "div", 50);
|
|
258
|
+
i0.ɵɵelement(30, "i", 57);
|
|
259
|
+
i0.ɵɵelementStart(31, "div", 51)(32, "div", 52);
|
|
213
260
|
i0.ɵɵtext(33, "Cost");
|
|
214
261
|
i0.ɵɵelementEnd();
|
|
215
|
-
i0.ɵɵelementStart(34, "div",
|
|
262
|
+
i0.ɵɵelementStart(34, "div", 53);
|
|
216
263
|
i0.ɵɵtext(35);
|
|
217
264
|
i0.ɵɵelementEnd()()();
|
|
218
|
-
i0.ɵɵconditionalCreate(36,
|
|
265
|
+
i0.ɵɵconditionalCreate(36, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_30_Conditional_36_Template, 8, 4, "div", 50);
|
|
219
266
|
i0.ɵɵelementEnd();
|
|
220
267
|
} if (rf & 2) {
|
|
221
268
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -240,13 +287,13 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_27_Templat
|
|
|
240
287
|
i0.ɵɵadvance();
|
|
241
288
|
i0.ɵɵconditional(ctx_r1.record.RunAt ? 36 : -1);
|
|
242
289
|
} }
|
|
243
|
-
function
|
|
244
|
-
i0.ɵɵelementStart(0, "div",
|
|
245
|
-
i0.ɵɵelement(1, "i",
|
|
246
|
-
i0.ɵɵelementStart(2, "div",
|
|
290
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_31_Conditional_22_Template(rf, ctx) { if (rf & 1) {
|
|
291
|
+
i0.ɵɵelementStart(0, "div", 50);
|
|
292
|
+
i0.ɵɵelement(1, "i", 63);
|
|
293
|
+
i0.ɵɵelementStart(2, "div", 51)(3, "div", 52);
|
|
247
294
|
i0.ɵɵtext(4, "Started");
|
|
248
295
|
i0.ɵɵelementEnd();
|
|
249
|
-
i0.ɵɵelementStart(5, "div",
|
|
296
|
+
i0.ɵɵelementStart(5, "div", 53);
|
|
250
297
|
i0.ɵɵtext(6);
|
|
251
298
|
i0.ɵɵpipe(7, "date");
|
|
252
299
|
i0.ɵɵelementEnd()()();
|
|
@@ -255,32 +302,32 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_28_Conditi
|
|
|
255
302
|
i0.ɵɵadvance(6);
|
|
256
303
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(7, 1, ctx_r1.record.RunAt, "short"));
|
|
257
304
|
} }
|
|
258
|
-
function
|
|
259
|
-
i0.ɵɵelementStart(0, "div",
|
|
260
|
-
i0.ɵɵelement(2, "i",
|
|
261
|
-
i0.ɵɵelementStart(3, "div",
|
|
305
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_31_Template(rf, ctx) { if (rf & 1) {
|
|
306
|
+
i0.ɵɵelementStart(0, "div", 25)(1, "div", 50);
|
|
307
|
+
i0.ɵɵelement(2, "i", 55);
|
|
308
|
+
i0.ɵɵelementStart(3, "div", 51)(4, "div", 52);
|
|
262
309
|
i0.ɵɵtext(5, "Duration");
|
|
263
310
|
i0.ɵɵelementEnd();
|
|
264
|
-
i0.ɵɵelementStart(6, "div",
|
|
311
|
+
i0.ɵɵelementStart(6, "div", 53);
|
|
265
312
|
i0.ɵɵtext(7);
|
|
266
313
|
i0.ɵɵelementEnd()()();
|
|
267
|
-
i0.ɵɵelementStart(8, "div",
|
|
268
|
-
i0.ɵɵelement(9, "i",
|
|
269
|
-
i0.ɵɵelementStart(10, "div",
|
|
314
|
+
i0.ɵɵelementStart(8, "div", 50);
|
|
315
|
+
i0.ɵɵelement(9, "i", 56);
|
|
316
|
+
i0.ɵɵelementStart(10, "div", 51)(11, "div", 52);
|
|
270
317
|
i0.ɵɵtext(12, "Total Tokens");
|
|
271
318
|
i0.ɵɵelementEnd();
|
|
272
|
-
i0.ɵɵelementStart(13, "div",
|
|
319
|
+
i0.ɵɵelementStart(13, "div", 53);
|
|
273
320
|
i0.ɵɵtext(14);
|
|
274
321
|
i0.ɵɵelementEnd()()();
|
|
275
|
-
i0.ɵɵelementStart(15, "div",
|
|
276
|
-
i0.ɵɵelement(16, "i",
|
|
277
|
-
i0.ɵɵelementStart(17, "div",
|
|
322
|
+
i0.ɵɵelementStart(15, "div", 50);
|
|
323
|
+
i0.ɵɵelement(16, "i", 57);
|
|
324
|
+
i0.ɵɵelementStart(17, "div", 51)(18, "div", 52);
|
|
278
325
|
i0.ɵɵtext(19, "Cost");
|
|
279
326
|
i0.ɵɵelementEnd();
|
|
280
|
-
i0.ɵɵelementStart(20, "div",
|
|
327
|
+
i0.ɵɵelementStart(20, "div", 53);
|
|
281
328
|
i0.ɵɵtext(21);
|
|
282
329
|
i0.ɵɵelementEnd()()();
|
|
283
|
-
i0.ɵɵconditionalCreate(22,
|
|
330
|
+
i0.ɵɵconditionalCreate(22, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_31_Conditional_22_Template, 8, 4, "div", 50);
|
|
284
331
|
i0.ɵɵelementEnd();
|
|
285
332
|
} if (rf & 2) {
|
|
286
333
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -293,24 +340,24 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_28_Templat
|
|
|
293
340
|
i0.ɵɵadvance();
|
|
294
341
|
i0.ɵɵconditional(ctx_r1.record.RunAt ? 22 : -1);
|
|
295
342
|
} }
|
|
296
|
-
function
|
|
297
|
-
i0.ɵɵelementStart(0, "span",
|
|
343
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_35_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
344
|
+
i0.ɵɵelementStart(0, "span", 66);
|
|
298
345
|
i0.ɵɵtext(1, "JSON");
|
|
299
346
|
i0.ɵɵelementEnd();
|
|
300
347
|
} }
|
|
301
|
-
function
|
|
302
|
-
i0.ɵɵelementStart(0, "span",
|
|
303
|
-
i0.ɵɵelement(1, "i",
|
|
348
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_35_Template(rf, ctx) { if (rf & 1) {
|
|
349
|
+
i0.ɵɵelementStart(0, "span", 64);
|
|
350
|
+
i0.ɵɵelement(1, "i", 65);
|
|
304
351
|
i0.ɵɵtext(2, " Input ");
|
|
305
|
-
i0.ɵɵconditionalCreate(3,
|
|
352
|
+
i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_35_Conditional_3_Template, 2, 0, "span", 66);
|
|
306
353
|
i0.ɵɵelementEnd();
|
|
307
354
|
} if (rf & 2) {
|
|
308
355
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
309
356
|
i0.ɵɵadvance(3);
|
|
310
357
|
i0.ɵɵconditional(ctx_r1.record.Messages && ctx_r1.record.Messages.trim() !== "" ? 3 : -1);
|
|
311
358
|
} }
|
|
312
|
-
function
|
|
313
|
-
i0.ɵɵelementStart(0, "span",
|
|
359
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_1_ng_template_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
360
|
+
i0.ɵɵelementStart(0, "span", 84);
|
|
314
361
|
i0.ɵɵtext(1);
|
|
315
362
|
i0.ɵɵelementEnd();
|
|
316
363
|
} if (rf & 2) {
|
|
@@ -318,103 +365,111 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_33_Conditi
|
|
|
318
365
|
i0.ɵɵadvance();
|
|
319
366
|
i0.ɵɵtextInterpolate1("(", ctx_r1.chatMessages.length, ")");
|
|
320
367
|
} }
|
|
321
|
-
function
|
|
322
|
-
i0.ɵɵelementStart(0, "span",
|
|
323
|
-
i0.ɵɵelement(1, "i",
|
|
368
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_1_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
369
|
+
i0.ɵɵelementStart(0, "span", 82);
|
|
370
|
+
i0.ɵɵelement(1, "i", 83);
|
|
324
371
|
i0.ɵɵtext(2, " Messages ");
|
|
325
|
-
i0.ɵɵconditionalCreate(3,
|
|
372
|
+
i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_1_ng_template_2_Conditional_3_Template, 2, 1, "span", 84);
|
|
326
373
|
i0.ɵɵelementEnd();
|
|
327
374
|
} if (rf & 2) {
|
|
328
375
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
329
376
|
i0.ɵɵadvance(3);
|
|
330
377
|
i0.ɵɵconditional(ctx_r1.chatMessages.length > 0 ? 3 : -1);
|
|
331
378
|
} }
|
|
332
|
-
function
|
|
333
|
-
i0.ɵɵelementStart(0, "div",
|
|
334
|
-
i0.ɵɵelement(1, "i",
|
|
379
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_1_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
380
|
+
i0.ɵɵelementStart(0, "div", 73);
|
|
381
|
+
i0.ɵɵelement(1, "i", 85);
|
|
335
382
|
i0.ɵɵelementStart(2, "p");
|
|
336
383
|
i0.ɵɵtext(3, "Loading messages...");
|
|
337
384
|
i0.ɵɵelementEnd()();
|
|
338
385
|
} }
|
|
339
|
-
function
|
|
340
|
-
i0.ɵɵelement(0, "mj-chat-message-viewer",
|
|
386
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_1_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
387
|
+
i0.ɵɵelement(0, "mj-chat-message-viewer", 74);
|
|
341
388
|
} if (rf & 2) {
|
|
342
389
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
343
390
|
i0.ɵɵproperty("messages", ctx_r1.chatMessages);
|
|
344
391
|
} }
|
|
345
|
-
function
|
|
346
|
-
i0.ɵɵelementStart(0, "div",
|
|
347
|
-
i0.ɵɵelement(1, "i",
|
|
392
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_1_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
393
|
+
i0.ɵɵelementStart(0, "div", 69);
|
|
394
|
+
i0.ɵɵelement(1, "i", 86);
|
|
348
395
|
i0.ɵɵelementStart(2, "p");
|
|
349
396
|
i0.ɵɵtext(3, "No chat messages found");
|
|
350
397
|
i0.ɵɵelementEnd()();
|
|
351
398
|
} }
|
|
352
|
-
function
|
|
353
|
-
i0.ɵɵelementStart(0, "span",
|
|
399
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_1_ng_template_8_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
400
|
+
i0.ɵɵelementStart(0, "span", 66);
|
|
354
401
|
i0.ɵɵtext(1, "Object");
|
|
355
402
|
i0.ɵɵelementEnd();
|
|
356
403
|
} }
|
|
357
|
-
function
|
|
358
|
-
i0.ɵɵelementStart(0, "span",
|
|
359
|
-
i0.ɵɵelement(1, "i",
|
|
404
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_1_ng_template_8_Template(rf, ctx) { if (rf & 1) {
|
|
405
|
+
i0.ɵɵelementStart(0, "span", 82);
|
|
406
|
+
i0.ɵɵelement(1, "i", 87);
|
|
360
407
|
i0.ɵɵtext(2, " Data ");
|
|
361
|
-
i0.ɵɵconditionalCreate(3,
|
|
408
|
+
i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_1_ng_template_8_Conditional_3_Template, 2, 0, "span", 66);
|
|
362
409
|
i0.ɵɵelementEnd();
|
|
363
410
|
} if (rf & 2) {
|
|
364
411
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
365
412
|
i0.ɵɵadvance(3);
|
|
366
413
|
i0.ɵɵconditional(ctx_r1.inputData ? 3 : -1);
|
|
367
414
|
} }
|
|
368
|
-
function
|
|
415
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_1_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
369
416
|
const _r9 = i0.ɵɵgetCurrentView();
|
|
370
|
-
i0.ɵɵelementStart(0, "div",
|
|
371
|
-
i0.ɵɵlistener("click", function
|
|
372
|
-
i0.ɵɵelement(3, "i",
|
|
417
|
+
i0.ɵɵelementStart(0, "div", 75)(1, "div", 76)(2, "button", 77);
|
|
418
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_1_Conditional_10_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.copyToClipboard(ctx_r1.formattedData, "Data")); });
|
|
419
|
+
i0.ɵɵelement(3, "i", 78);
|
|
373
420
|
i0.ɵɵtext(4, " Copy ");
|
|
421
|
+
i0.ɵɵelementEnd();
|
|
422
|
+
i0.ɵɵelementStart(5, "button", 79);
|
|
423
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_1_Conditional_10_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.openFullScreen(ctx_r1.formattedData, "json", "Data")); });
|
|
424
|
+
i0.ɵɵelement(6, "i", 80);
|
|
374
425
|
i0.ɵɵelementEnd()();
|
|
375
|
-
i0.ɵɵelementStart(
|
|
376
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
426
|
+
i0.ɵɵelementStart(7, "mj-code-editor", 88);
|
|
427
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_1_Conditional_10_Template_mj_code_editor_ngModelChange_7_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r1.formattedData, $event) || (ctx_r1.formattedData = $event); return i0.ɵɵresetView($event); });
|
|
377
428
|
i0.ɵɵelementEnd()();
|
|
378
429
|
} if (rf & 2) {
|
|
379
430
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
380
|
-
i0.ɵɵadvance(
|
|
431
|
+
i0.ɵɵadvance(7);
|
|
381
432
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.formattedData);
|
|
382
433
|
i0.ɵɵproperty("readonly", true)("language", "json")("lineWrapping", true);
|
|
383
434
|
} }
|
|
384
|
-
function
|
|
385
|
-
i0.ɵɵelementStart(0, "div",
|
|
386
|
-
i0.ɵɵelement(1, "i",
|
|
435
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_1_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
436
|
+
i0.ɵɵelementStart(0, "div", 69);
|
|
437
|
+
i0.ɵɵelement(1, "i", 87);
|
|
387
438
|
i0.ɵɵelementStart(2, "p");
|
|
388
439
|
i0.ɵɵtext(3, "No data object found");
|
|
389
440
|
i0.ɵɵelementEnd()();
|
|
390
441
|
} }
|
|
391
|
-
function
|
|
392
|
-
i0.ɵɵelementStart(0, "span",
|
|
393
|
-
i0.ɵɵelement(1, "i",
|
|
442
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_1_ng_template_13_Template(rf, ctx) { if (rf & 1) {
|
|
443
|
+
i0.ɵɵelementStart(0, "span", 82);
|
|
444
|
+
i0.ɵɵelement(1, "i", 62);
|
|
394
445
|
i0.ɵɵtext(2, " Raw ");
|
|
395
446
|
i0.ɵɵelementEnd();
|
|
396
447
|
} }
|
|
397
|
-
function
|
|
448
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
398
449
|
const _r8 = i0.ɵɵgetCurrentView();
|
|
399
|
-
i0.ɵɵelementStart(0, "div",
|
|
400
|
-
i0.ɵɵtemplate(2,
|
|
401
|
-
i0.ɵɵelementStart(3, "div",
|
|
402
|
-
i0.ɵɵconditionalCreate(4,
|
|
403
|
-
i0.ɵɵelementEnd()();
|
|
404
|
-
i0.ɵɵelementStart(7, "kendo-expansionpanel",
|
|
405
|
-
i0.ɵɵtemplate(8,
|
|
406
|
-
i0.ɵɵelementStart(9, "div",
|
|
407
|
-
i0.ɵɵconditionalCreate(10,
|
|
408
|
-
i0.ɵɵelementEnd()();
|
|
409
|
-
i0.ɵɵelementStart(12, "kendo-expansionpanel",
|
|
410
|
-
i0.ɵɵtemplate(13,
|
|
411
|
-
i0.ɵɵelementStart(14, "div",
|
|
412
|
-
i0.ɵɵlistener("click", function
|
|
413
|
-
i0.ɵɵelement(18, "i",
|
|
450
|
+
i0.ɵɵelementStart(0, "div", 68)(1, "kendo-expansionpanel", 70);
|
|
451
|
+
i0.ɵɵtemplate(2, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_1_ng_template_2_Template, 4, 1, "ng-template", 71);
|
|
452
|
+
i0.ɵɵelementStart(3, "div", 72);
|
|
453
|
+
i0.ɵɵconditionalCreate(4, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_1_Conditional_4_Template, 4, 0, "div", 73)(5, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_1_Conditional_5_Template, 1, 1, "mj-chat-message-viewer", 74)(6, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_1_Conditional_6_Template, 4, 0, "div", 69);
|
|
454
|
+
i0.ɵɵelementEnd()();
|
|
455
|
+
i0.ɵɵelementStart(7, "kendo-expansionpanel", 70);
|
|
456
|
+
i0.ɵɵtemplate(8, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_1_ng_template_8_Template, 4, 1, "ng-template", 71);
|
|
457
|
+
i0.ɵɵelementStart(9, "div", 72);
|
|
458
|
+
i0.ɵɵconditionalCreate(10, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_1_Conditional_10_Template, 8, 4, "div", 75)(11, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_1_Conditional_11_Template, 4, 0, "div", 69);
|
|
459
|
+
i0.ɵɵelementEnd()();
|
|
460
|
+
i0.ɵɵelementStart(12, "kendo-expansionpanel", 70);
|
|
461
|
+
i0.ɵɵtemplate(13, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_1_ng_template_13_Template, 3, 0, "ng-template", 71);
|
|
462
|
+
i0.ɵɵelementStart(14, "div", 72)(15, "div", 75)(16, "div", 76)(17, "button", 77);
|
|
463
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_1_Template_button_click_17_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.copyToClipboard(ctx_r1.formattedMessages, "Messages")); });
|
|
464
|
+
i0.ɵɵelement(18, "i", 78);
|
|
414
465
|
i0.ɵɵtext(19, " Copy ");
|
|
466
|
+
i0.ɵɵelementEnd();
|
|
467
|
+
i0.ɵɵelementStart(20, "button", 79);
|
|
468
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_1_Template_button_click_20_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openFullScreen(ctx_r1.formattedMessages, "json", "Raw Messages")); });
|
|
469
|
+
i0.ɵɵelement(21, "i", 80);
|
|
415
470
|
i0.ɵɵelementEnd()();
|
|
416
|
-
i0.ɵɵelementStart(
|
|
417
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
471
|
+
i0.ɵɵelementStart(22, "mj-code-editor", 81);
|
|
472
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_1_Template_mj_code_editor_ngModelChange_22_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.formattedMessages, $event) || (ctx_r1.formattedMessages = $event); return i0.ɵɵresetView($event); });
|
|
418
473
|
i0.ɵɵelementEnd()()()()();
|
|
419
474
|
} if (rf & 2) {
|
|
420
475
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -428,42 +483,42 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_33_Conditi
|
|
|
428
483
|
i0.ɵɵconditional(ctx_r1.inputData && ctx_r1.formattedData ? 10 : 11);
|
|
429
484
|
i0.ɵɵadvance(2);
|
|
430
485
|
i0.ɵɵproperty("expanded", ctx_r1.rawExpanded)("animation", false);
|
|
431
|
-
i0.ɵɵadvance(
|
|
486
|
+
i0.ɵɵadvance(10);
|
|
432
487
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.formattedMessages);
|
|
433
488
|
i0.ɵɵproperty("readonly", true)("language", "json")("lineWrapping", true);
|
|
434
489
|
} }
|
|
435
|
-
function
|
|
436
|
-
i0.ɵɵelementStart(0, "div",
|
|
437
|
-
i0.ɵɵelement(1, "i",
|
|
490
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
491
|
+
i0.ɵɵelementStart(0, "div", 69);
|
|
492
|
+
i0.ɵɵelement(1, "i", 86);
|
|
438
493
|
i0.ɵɵelementStart(2, "p");
|
|
439
494
|
i0.ɵɵtext(3, "No input messages recorded");
|
|
440
495
|
i0.ɵɵelementEnd()();
|
|
441
496
|
} }
|
|
442
|
-
function
|
|
443
|
-
i0.ɵɵelementStart(0, "div",
|
|
444
|
-
i0.ɵɵconditionalCreate(1,
|
|
497
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Template(rf, ctx) { if (rf & 1) {
|
|
498
|
+
i0.ɵɵelementStart(0, "div", 67);
|
|
499
|
+
i0.ɵɵconditionalCreate(1, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_1_Template, 23, 12, "div", 68)(2, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditional_2_Template, 4, 0, "div", 69);
|
|
445
500
|
i0.ɵɵelementEnd();
|
|
446
501
|
} if (rf & 2) {
|
|
447
502
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
448
503
|
i0.ɵɵadvance();
|
|
449
504
|
i0.ɵɵconditional(ctx_r1.record.Messages && ctx_r1.record.Messages.trim() !== "" ? 1 : 2);
|
|
450
505
|
} }
|
|
451
|
-
function
|
|
452
|
-
i0.ɵɵelementStart(0, "span",
|
|
506
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_38_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
507
|
+
i0.ɵɵelementStart(0, "span", 66);
|
|
453
508
|
i0.ɵɵtext(1, "JSON");
|
|
454
509
|
i0.ɵɵelementEnd();
|
|
455
510
|
} }
|
|
456
|
-
function
|
|
457
|
-
i0.ɵɵelementStart(0, "span",
|
|
511
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_38_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
512
|
+
i0.ɵɵelementStart(0, "span", 90);
|
|
458
513
|
i0.ɵɵtext(1, "Error");
|
|
459
514
|
i0.ɵɵelementEnd();
|
|
460
515
|
} }
|
|
461
|
-
function
|
|
462
|
-
i0.ɵɵelementStart(0, "span",
|
|
463
|
-
i0.ɵɵelement(1, "i",
|
|
516
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_38_Template(rf, ctx) { if (rf & 1) {
|
|
517
|
+
i0.ɵɵelementStart(0, "span", 64);
|
|
518
|
+
i0.ɵɵelement(1, "i", 89);
|
|
464
519
|
i0.ɵɵtext(2, " Result ");
|
|
465
|
-
i0.ɵɵconditionalCreate(3,
|
|
466
|
-
i0.ɵɵconditionalCreate(4,
|
|
520
|
+
i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_38_Conditional_3_Template, 2, 0, "span", 66);
|
|
521
|
+
i0.ɵɵconditionalCreate(4, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_38_Conditional_4_Template, 2, 0, "span", 90);
|
|
467
522
|
i0.ɵɵelementEnd();
|
|
468
523
|
} if (rf & 2) {
|
|
469
524
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -472,10 +527,10 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_35_Templat
|
|
|
472
527
|
i0.ɵɵadvance();
|
|
473
528
|
i0.ɵɵconditional(ctx_r1.record.ErrorMessage ? 4 : -1);
|
|
474
529
|
} }
|
|
475
|
-
function
|
|
476
|
-
i0.ɵɵelementStart(0, "div",
|
|
477
|
-
i0.ɵɵelement(1, "i",
|
|
478
|
-
i0.ɵɵelementStart(2, "div",
|
|
530
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_39_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
531
|
+
i0.ɵɵelementStart(0, "div", 91);
|
|
532
|
+
i0.ɵɵelement(1, "i", 92);
|
|
533
|
+
i0.ɵɵelementStart(2, "div", 93)(3, "h4");
|
|
479
534
|
i0.ɵɵtext(4, "Error Message");
|
|
480
535
|
i0.ɵɵelementEnd();
|
|
481
536
|
i0.ɵɵelementStart(5, "p");
|
|
@@ -486,24 +541,28 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditi
|
|
|
486
541
|
i0.ɵɵadvance(6);
|
|
487
542
|
i0.ɵɵtextInterpolate(ctx_r1.record.ErrorMessage);
|
|
488
543
|
} }
|
|
489
|
-
function
|
|
544
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_39_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
490
545
|
const _r10 = i0.ɵɵgetCurrentView();
|
|
491
|
-
i0.ɵɵelementStart(0, "div",
|
|
492
|
-
i0.ɵɵlistener("click", function
|
|
493
|
-
i0.ɵɵelement(3, "i",
|
|
546
|
+
i0.ɵɵelementStart(0, "div", 75)(1, "div", 76)(2, "button", 77);
|
|
547
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_39_Conditional_2_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.copyToClipboard(ctx_r1.formattedResult, "Result")); });
|
|
548
|
+
i0.ɵɵelement(3, "i", 78);
|
|
494
549
|
i0.ɵɵtext(4, " Copy ");
|
|
550
|
+
i0.ɵɵelementEnd();
|
|
551
|
+
i0.ɵɵelementStart(5, "button", 79);
|
|
552
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_39_Conditional_2_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openFullScreen(ctx_r1.formattedResult, "json", "Result")); });
|
|
553
|
+
i0.ɵɵelement(6, "i", 80);
|
|
495
554
|
i0.ɵɵelementEnd()();
|
|
496
|
-
i0.ɵɵelementStart(
|
|
497
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
555
|
+
i0.ɵɵelementStart(7, "mj-code-editor", 94);
|
|
556
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_39_Conditional_2_Template_mj_code_editor_ngModelChange_7_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.formattedResult, $event) || (ctx_r1.formattedResult = $event); return i0.ɵɵresetView($event); });
|
|
498
557
|
i0.ɵɵelementEnd()();
|
|
499
558
|
} if (rf & 2) {
|
|
500
559
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
501
|
-
i0.ɵɵadvance(
|
|
560
|
+
i0.ɵɵadvance(7);
|
|
502
561
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.formattedResult);
|
|
503
562
|
i0.ɵɵproperty("readonly", true)("language", "json")("lineWrapping", true);
|
|
504
563
|
} }
|
|
505
|
-
function
|
|
506
|
-
i0.ɵɵelementStart(0, "p",
|
|
564
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_39_Conditional_3_Conditional_4_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
565
|
+
i0.ɵɵelementStart(0, "p", 97)(1, "strong");
|
|
507
566
|
i0.ɵɵtext(2, "Status:");
|
|
508
567
|
i0.ɵɵelementEnd();
|
|
509
568
|
i0.ɵɵtext(3);
|
|
@@ -513,27 +572,32 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditi
|
|
|
513
572
|
i0.ɵɵadvance(3);
|
|
514
573
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.Status, " ");
|
|
515
574
|
} }
|
|
516
|
-
function
|
|
517
|
-
i0.ɵɵ
|
|
518
|
-
i0.ɵɵ
|
|
575
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_39_Conditional_3_Conditional_4_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
576
|
+
const _r11 = i0.ɵɵgetCurrentView();
|
|
577
|
+
i0.ɵɵelementStart(0, "div", 98)(1, "div", 76)(2, "h4", 100);
|
|
578
|
+
i0.ɵɵtext(3, "Error Details");
|
|
519
579
|
i0.ɵɵelementEnd();
|
|
520
|
-
i0.ɵɵ
|
|
580
|
+
i0.ɵɵelementStart(4, "button", 79);
|
|
581
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_39_Conditional_3_Conditional_4_Conditional_2_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.openFullScreen(ctx_r1.formattedErrorDetails, "json", "Error Details")); });
|
|
582
|
+
i0.ɵɵelement(5, "i", 80);
|
|
583
|
+
i0.ɵɵelementEnd()();
|
|
584
|
+
i0.ɵɵelement(6, "mj-code-editor", 101);
|
|
521
585
|
i0.ɵɵelementEnd();
|
|
522
586
|
} if (rf & 2) {
|
|
523
587
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
524
|
-
i0.ɵɵadvance(
|
|
588
|
+
i0.ɵɵadvance(6);
|
|
525
589
|
i0.ɵɵproperty("ngModel", ctx_r1.formattedErrorDetails)("disabled", true)("language", "json")("lineWrapping", true);
|
|
526
590
|
} }
|
|
527
|
-
function
|
|
528
|
-
i0.ɵɵelementStart(0, "p",
|
|
591
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_39_Conditional_3_Conditional_4_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
592
|
+
i0.ɵɵelementStart(0, "p", 99);
|
|
529
593
|
i0.ɵɵtext(1, " The prompt execution failed but no additional error information is available. ");
|
|
530
594
|
i0.ɵɵelementEnd();
|
|
531
595
|
} }
|
|
532
|
-
function
|
|
533
|
-
i0.ɵɵelementStart(0, "div",
|
|
534
|
-
i0.ɵɵconditionalCreate(1,
|
|
535
|
-
i0.ɵɵconditionalCreate(2,
|
|
536
|
-
i0.ɵɵconditionalCreate(3,
|
|
596
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_39_Conditional_3_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
597
|
+
i0.ɵɵelementStart(0, "div", 96);
|
|
598
|
+
i0.ɵɵconditionalCreate(1, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_39_Conditional_3_Conditional_4_Conditional_1_Template, 4, 1, "p", 97);
|
|
599
|
+
i0.ɵɵconditionalCreate(2, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_39_Conditional_3_Conditional_4_Conditional_2_Template, 7, 4, "div", 98);
|
|
600
|
+
i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_39_Conditional_3_Conditional_4_Conditional_3_Template, 2, 0, "p", 99);
|
|
537
601
|
i0.ɵɵelementEnd();
|
|
538
602
|
} if (rf & 2) {
|
|
539
603
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
@@ -544,23 +608,23 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Conditi
|
|
|
544
608
|
i0.ɵɵadvance();
|
|
545
609
|
i0.ɵɵconditional(!ctx_r1.formattedErrorDetails ? 3 : -1);
|
|
546
610
|
} }
|
|
547
|
-
function
|
|
548
|
-
i0.ɵɵelementStart(0, "div",
|
|
549
|
-
i0.ɵɵelement(1, "i",
|
|
611
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_39_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
612
|
+
i0.ɵɵelementStart(0, "div", 69);
|
|
613
|
+
i0.ɵɵelement(1, "i", 95);
|
|
550
614
|
i0.ɵɵelementStart(2, "p");
|
|
551
615
|
i0.ɵɵtext(3, "No result data recorded");
|
|
552
616
|
i0.ɵɵelementEnd();
|
|
553
|
-
i0.ɵɵconditionalCreate(4,
|
|
617
|
+
i0.ɵɵconditionalCreate(4, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_39_Conditional_3_Conditional_4_Template, 4, 3, "div", 96);
|
|
554
618
|
i0.ɵɵelementEnd();
|
|
555
619
|
} if (rf & 2) {
|
|
556
620
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
557
621
|
i0.ɵɵadvance(4);
|
|
558
622
|
i0.ɵɵconditional(ctx_r1.record.Status === "Failed" || ctx_r1.record.Success === false ? 4 : -1);
|
|
559
623
|
} }
|
|
560
|
-
function
|
|
561
|
-
i0.ɵɵelementStart(0, "div",
|
|
562
|
-
i0.ɵɵconditionalCreate(1,
|
|
563
|
-
i0.ɵɵconditionalCreate(2,
|
|
624
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_39_Template(rf, ctx) { if (rf & 1) {
|
|
625
|
+
i0.ɵɵelementStart(0, "div", 67);
|
|
626
|
+
i0.ɵɵconditionalCreate(1, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_39_Conditional_1_Template, 7, 1, "div", 91);
|
|
627
|
+
i0.ɵɵconditionalCreate(2, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_39_Conditional_2_Template, 8, 4, "div", 75)(3, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_39_Conditional_3_Template, 5, 1, "div", 69);
|
|
564
628
|
i0.ɵɵelementEnd();
|
|
565
629
|
} if (rf & 2) {
|
|
566
630
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -569,14 +633,14 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Templat
|
|
|
569
633
|
i0.ɵɵadvance();
|
|
570
634
|
i0.ɵɵconditional(ctx_r1.record.Result && ctx_r1.record.Result.trim() !== "" ? 2 : !ctx_r1.record.ErrorMessage ? 3 : -1);
|
|
571
635
|
} }
|
|
572
|
-
function
|
|
573
|
-
i0.ɵɵelementStart(0, "span",
|
|
574
|
-
i0.ɵɵelement(1, "i",
|
|
636
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_41_Template(rf, ctx) { if (rf & 1) {
|
|
637
|
+
i0.ɵɵelementStart(0, "span", 64);
|
|
638
|
+
i0.ɵɵelement(1, "i", 102);
|
|
575
639
|
i0.ɵɵtext(2, " Token Usage & Metrics ");
|
|
576
640
|
i0.ɵɵelementEnd();
|
|
577
641
|
} }
|
|
578
|
-
function
|
|
579
|
-
i0.ɵɵelementStart(0, "div",
|
|
642
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_42_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
643
|
+
i0.ɵɵelementStart(0, "div", 108)(1, "span");
|
|
580
644
|
i0.ɵɵtext(2);
|
|
581
645
|
i0.ɵɵelementEnd()();
|
|
582
646
|
} if (rf & 2) {
|
|
@@ -584,8 +648,8 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_39_Conditi
|
|
|
584
648
|
i0.ɵɵadvance(2);
|
|
585
649
|
i0.ɵɵtextInterpolate1("Rollup: ", ctx_r1.formatTokens(ctx_r1.record.TokensPromptRollup));
|
|
586
650
|
} }
|
|
587
|
-
function
|
|
588
|
-
i0.ɵɵelementStart(0, "div",
|
|
651
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_42_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
652
|
+
i0.ɵɵelementStart(0, "div", 108)(1, "span");
|
|
589
653
|
i0.ɵɵtext(2);
|
|
590
654
|
i0.ɵɵelementEnd()();
|
|
591
655
|
} if (rf & 2) {
|
|
@@ -593,8 +657,8 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_39_Conditi
|
|
|
593
657
|
i0.ɵɵadvance(2);
|
|
594
658
|
i0.ɵɵtextInterpolate1("Rollup: ", ctx_r1.formatTokens(ctx_r1.record.TokensCompletionRollup));
|
|
595
659
|
} }
|
|
596
|
-
function
|
|
597
|
-
i0.ɵɵelementStart(0, "div",
|
|
660
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_42_Conditional_25_Template(rf, ctx) { if (rf & 1) {
|
|
661
|
+
i0.ɵɵelementStart(0, "div", 108)(1, "span");
|
|
598
662
|
i0.ɵɵtext(2);
|
|
599
663
|
i0.ɵɵelementEnd()();
|
|
600
664
|
} if (rf & 2) {
|
|
@@ -602,8 +666,8 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_39_Conditi
|
|
|
602
666
|
i0.ɵɵadvance(2);
|
|
603
667
|
i0.ɵɵtextInterpolate1("Rollup: ", ctx_r1.formatTokens(ctx_r1.record.TokensUsedRollup));
|
|
604
668
|
} }
|
|
605
|
-
function
|
|
606
|
-
i0.ɵɵelementStart(0, "div",
|
|
669
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_42_Conditional_33_Template(rf, ctx) { if (rf & 1) {
|
|
670
|
+
i0.ɵɵelementStart(0, "div", 108)(1, "span");
|
|
607
671
|
i0.ɵɵtext(2);
|
|
608
672
|
i0.ɵɵelementEnd()();
|
|
609
673
|
} if (rf & 2) {
|
|
@@ -611,8 +675,8 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_39_Conditi
|
|
|
611
675
|
i0.ɵɵadvance(2);
|
|
612
676
|
i0.ɵɵtextInterpolate1("Total: ", ctx_r1.formatCost(ctx_r1.record.TotalCost));
|
|
613
677
|
} }
|
|
614
|
-
function
|
|
615
|
-
i0.ɵɵelementStart(0, "div",
|
|
678
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_42_Conditional_34_Template(rf, ctx) { if (rf & 1) {
|
|
679
|
+
i0.ɵɵelementStart(0, "div", 110);
|
|
616
680
|
i0.ɵɵtext(1);
|
|
617
681
|
i0.ɵɵelementEnd();
|
|
618
682
|
} if (rf & 2) {
|
|
@@ -620,13 +684,13 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_39_Conditi
|
|
|
620
684
|
i0.ɵɵadvance();
|
|
621
685
|
i0.ɵɵtextInterpolate(ctx_r1.record.CostCurrency);
|
|
622
686
|
} }
|
|
623
|
-
function
|
|
624
|
-
i0.ɵɵelementStart(0, "div",
|
|
625
|
-
i0.ɵɵelement(2, "i",
|
|
687
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_42_Conditional_35_Template(rf, ctx) { if (rf & 1) {
|
|
688
|
+
i0.ɵɵelementStart(0, "div", 104)(1, "div", 105);
|
|
689
|
+
i0.ɵɵelement(2, "i", 113);
|
|
626
690
|
i0.ɵɵelementStart(3, "h4");
|
|
627
691
|
i0.ɵɵtext(4, "Queue Time");
|
|
628
692
|
i0.ɵɵelementEnd()();
|
|
629
|
-
i0.ɵɵelementStart(5, "div",
|
|
693
|
+
i0.ɵɵelementStart(5, "div", 107);
|
|
630
694
|
i0.ɵɵtext(6);
|
|
631
695
|
i0.ɵɵelementEnd()();
|
|
632
696
|
} if (rf & 2) {
|
|
@@ -634,13 +698,13 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_39_Conditi
|
|
|
634
698
|
i0.ɵɵadvance(6);
|
|
635
699
|
i0.ɵɵtextInterpolate(ctx_r1.formatDuration(ctx_r1.record.QueueTime));
|
|
636
700
|
} }
|
|
637
|
-
function
|
|
638
|
-
i0.ɵɵelementStart(0, "div",
|
|
639
|
-
i0.ɵɵelement(2, "i",
|
|
701
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_42_Conditional_36_Template(rf, ctx) { if (rf & 1) {
|
|
702
|
+
i0.ɵɵelementStart(0, "div", 104)(1, "div", 105);
|
|
703
|
+
i0.ɵɵelement(2, "i", 114);
|
|
640
704
|
i0.ɵɵelementStart(3, "h4");
|
|
641
705
|
i0.ɵɵtext(4, "Prompt Time");
|
|
642
706
|
i0.ɵɵelementEnd()();
|
|
643
|
-
i0.ɵɵelementStart(5, "div",
|
|
707
|
+
i0.ɵɵelementStart(5, "div", 107);
|
|
644
708
|
i0.ɵɵtext(6);
|
|
645
709
|
i0.ɵɵelementEnd()();
|
|
646
710
|
} if (rf & 2) {
|
|
@@ -648,13 +712,13 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_39_Conditi
|
|
|
648
712
|
i0.ɵɵadvance(6);
|
|
649
713
|
i0.ɵɵtextInterpolate(ctx_r1.formatDuration(ctx_r1.record.PromptTime));
|
|
650
714
|
} }
|
|
651
|
-
function
|
|
652
|
-
i0.ɵɵelementStart(0, "div",
|
|
653
|
-
i0.ɵɵelement(2, "i",
|
|
715
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_42_Conditional_37_Template(rf, ctx) { if (rf & 1) {
|
|
716
|
+
i0.ɵɵelementStart(0, "div", 104)(1, "div", 105);
|
|
717
|
+
i0.ɵɵelement(2, "i", 115);
|
|
654
718
|
i0.ɵɵelementStart(3, "h4");
|
|
655
719
|
i0.ɵɵtext(4, "Completion Time");
|
|
656
720
|
i0.ɵɵelementEnd()();
|
|
657
|
-
i0.ɵɵelementStart(5, "div",
|
|
721
|
+
i0.ɵɵelementStart(5, "div", 107);
|
|
658
722
|
i0.ɵɵtext(6);
|
|
659
723
|
i0.ɵɵelementEnd()();
|
|
660
724
|
} if (rf & 2) {
|
|
@@ -662,11 +726,11 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_39_Conditi
|
|
|
662
726
|
i0.ɵɵadvance(6);
|
|
663
727
|
i0.ɵɵtextInterpolate(ctx_r1.formatDuration(ctx_r1.record.CompletionTime));
|
|
664
728
|
} }
|
|
665
|
-
function
|
|
666
|
-
i0.ɵɵelementStart(0, "div",
|
|
729
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_42_Conditional_39_Template(rf, ctx) { if (rf & 1) {
|
|
730
|
+
i0.ɵɵelementStart(0, "div", 112)(1, "span", 52);
|
|
667
731
|
i0.ɵɵtext(2, "Execution Order:");
|
|
668
732
|
i0.ɵɵelementEnd();
|
|
669
|
-
i0.ɵɵelementStart(3, "span",
|
|
733
|
+
i0.ɵɵelementStart(3, "span", 53);
|
|
670
734
|
i0.ɵɵtext(4);
|
|
671
735
|
i0.ɵɵelementEnd()();
|
|
672
736
|
} if (rf & 2) {
|
|
@@ -674,70 +738,70 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_39_Conditi
|
|
|
674
738
|
i0.ɵɵadvance(4);
|
|
675
739
|
i0.ɵɵtextInterpolate(ctx_r1.record.ExecutionOrder);
|
|
676
740
|
} }
|
|
677
|
-
function
|
|
678
|
-
const
|
|
679
|
-
i0.ɵɵelementStart(0, "div",
|
|
741
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_42_Conditional_40_Template(rf, ctx) { if (rf & 1) {
|
|
742
|
+
const _r12 = i0.ɵɵgetCurrentView();
|
|
743
|
+
i0.ɵɵelementStart(0, "div", 112)(1, "span", 52);
|
|
680
744
|
i0.ɵɵtext(2, "Agent:");
|
|
681
745
|
i0.ɵɵelementEnd();
|
|
682
|
-
i0.ɵɵelementStart(3, "span",
|
|
683
|
-
i0.ɵɵlistener("click", function
|
|
746
|
+
i0.ɵɵelementStart(3, "span", 116);
|
|
747
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_42_Conditional_40_Template_span_click_3_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Agents", ctx_r1.record.AgentID)); });
|
|
684
748
|
i0.ɵɵtext(4);
|
|
685
|
-
i0.ɵɵelement(5, "i",
|
|
749
|
+
i0.ɵɵelement(5, "i", 117);
|
|
686
750
|
i0.ɵɵelementEnd()();
|
|
687
751
|
} if (rf & 2) {
|
|
688
752
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
689
753
|
i0.ɵɵadvance(4);
|
|
690
754
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.Agent, " ");
|
|
691
755
|
} }
|
|
692
|
-
function
|
|
693
|
-
i0.ɵɵelementStart(0, "div",
|
|
694
|
-
i0.ɵɵelement(4, "i",
|
|
756
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_42_Template(rf, ctx) { if (rf & 1) {
|
|
757
|
+
i0.ɵɵelementStart(0, "div", 67)(1, "div", 103)(2, "div", 104)(3, "div", 105);
|
|
758
|
+
i0.ɵɵelement(4, "i", 106);
|
|
695
759
|
i0.ɵɵelementStart(5, "h4");
|
|
696
760
|
i0.ɵɵtext(6, "Prompt Tokens");
|
|
697
761
|
i0.ɵɵelementEnd()();
|
|
698
|
-
i0.ɵɵelementStart(7, "div",
|
|
762
|
+
i0.ɵɵelementStart(7, "div", 107);
|
|
699
763
|
i0.ɵɵtext(8);
|
|
700
764
|
i0.ɵɵelementEnd();
|
|
701
|
-
i0.ɵɵconditionalCreate(9,
|
|
765
|
+
i0.ɵɵconditionalCreate(9, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_42_Conditional_9_Template, 3, 1, "div", 108);
|
|
702
766
|
i0.ɵɵelementEnd();
|
|
703
|
-
i0.ɵɵelementStart(10, "div",
|
|
704
|
-
i0.ɵɵelement(12, "i",
|
|
767
|
+
i0.ɵɵelementStart(10, "div", 104)(11, "div", 105);
|
|
768
|
+
i0.ɵɵelement(12, "i", 109);
|
|
705
769
|
i0.ɵɵelementStart(13, "h4");
|
|
706
770
|
i0.ɵɵtext(14, "Completion Tokens");
|
|
707
771
|
i0.ɵɵelementEnd()();
|
|
708
|
-
i0.ɵɵelementStart(15, "div",
|
|
772
|
+
i0.ɵɵelementStart(15, "div", 107);
|
|
709
773
|
i0.ɵɵtext(16);
|
|
710
774
|
i0.ɵɵelementEnd();
|
|
711
|
-
i0.ɵɵconditionalCreate(17,
|
|
775
|
+
i0.ɵɵconditionalCreate(17, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_42_Conditional_17_Template, 3, 1, "div", 108);
|
|
712
776
|
i0.ɵɵelementEnd();
|
|
713
|
-
i0.ɵɵelementStart(18, "div",
|
|
714
|
-
i0.ɵɵelement(20, "i",
|
|
777
|
+
i0.ɵɵelementStart(18, "div", 104)(19, "div", 105);
|
|
778
|
+
i0.ɵɵelement(20, "i", 56);
|
|
715
779
|
i0.ɵɵelementStart(21, "h4");
|
|
716
780
|
i0.ɵɵtext(22, "Total Tokens");
|
|
717
781
|
i0.ɵɵelementEnd()();
|
|
718
|
-
i0.ɵɵelementStart(23, "div",
|
|
782
|
+
i0.ɵɵelementStart(23, "div", 107);
|
|
719
783
|
i0.ɵɵtext(24);
|
|
720
784
|
i0.ɵɵelementEnd();
|
|
721
|
-
i0.ɵɵconditionalCreate(25,
|
|
785
|
+
i0.ɵɵconditionalCreate(25, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_42_Conditional_25_Template, 3, 1, "div", 108);
|
|
722
786
|
i0.ɵɵelementEnd();
|
|
723
|
-
i0.ɵɵelementStart(26, "div",
|
|
724
|
-
i0.ɵɵelement(28, "i",
|
|
787
|
+
i0.ɵɵelementStart(26, "div", 104)(27, "div", 105);
|
|
788
|
+
i0.ɵɵelement(28, "i", 57);
|
|
725
789
|
i0.ɵɵelementStart(29, "h4");
|
|
726
790
|
i0.ɵɵtext(30, "Cost");
|
|
727
791
|
i0.ɵɵelementEnd()();
|
|
728
|
-
i0.ɵɵelementStart(31, "div",
|
|
792
|
+
i0.ɵɵelementStart(31, "div", 107);
|
|
729
793
|
i0.ɵɵtext(32);
|
|
730
794
|
i0.ɵɵelementEnd();
|
|
731
|
-
i0.ɵɵconditionalCreate(33,
|
|
732
|
-
i0.ɵɵconditionalCreate(34,
|
|
795
|
+
i0.ɵɵconditionalCreate(33, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_42_Conditional_33_Template, 3, 1, "div", 108);
|
|
796
|
+
i0.ɵɵconditionalCreate(34, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_42_Conditional_34_Template, 2, 1, "div", 110);
|
|
733
797
|
i0.ɵɵelementEnd();
|
|
734
|
-
i0.ɵɵconditionalCreate(35,
|
|
735
|
-
i0.ɵɵconditionalCreate(36,
|
|
736
|
-
i0.ɵɵconditionalCreate(37,
|
|
798
|
+
i0.ɵɵconditionalCreate(35, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_42_Conditional_35_Template, 7, 1, "div", 104);
|
|
799
|
+
i0.ɵɵconditionalCreate(36, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_42_Conditional_36_Template, 7, 1, "div", 104);
|
|
800
|
+
i0.ɵɵconditionalCreate(37, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_42_Conditional_37_Template, 7, 1, "div", 104);
|
|
737
801
|
i0.ɵɵelementEnd();
|
|
738
|
-
i0.ɵɵelementStart(38, "div",
|
|
739
|
-
i0.ɵɵconditionalCreate(39,
|
|
740
|
-
i0.ɵɵconditionalCreate(40,
|
|
802
|
+
i0.ɵɵelementStart(38, "div", 111);
|
|
803
|
+
i0.ɵɵconditionalCreate(39, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_42_Conditional_39_Template, 5, 1, "div", 112);
|
|
804
|
+
i0.ɵɵconditionalCreate(40, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_42_Conditional_40_Template, 6, 1, "div", 112);
|
|
741
805
|
i0.ɵɵelementEnd()();
|
|
742
806
|
} if (rf & 2) {
|
|
743
807
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -770,8 +834,8 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_39_Templat
|
|
|
770
834
|
i0.ɵɵadvance();
|
|
771
835
|
i0.ɵɵconditional(ctx_r1.record.AgentID ? 40 : -1);
|
|
772
836
|
} }
|
|
773
|
-
function
|
|
774
|
-
i0.ɵɵelementStart(0, "span",
|
|
837
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
838
|
+
i0.ɵɵelementStart(0, "span", 84);
|
|
775
839
|
i0.ɵɵtext(1);
|
|
776
840
|
i0.ɵɵelementEnd();
|
|
777
841
|
} if (rf & 2) {
|
|
@@ -779,22 +843,22 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_40_ng_temp
|
|
|
779
843
|
i0.ɵɵadvance();
|
|
780
844
|
i0.ɵɵtextInterpolate1("(", ctx_r1.record.ValidationAttemptCount, " attempts)");
|
|
781
845
|
} }
|
|
782
|
-
function
|
|
783
|
-
i0.ɵɵelementStart(0, "span",
|
|
846
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_1_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
847
|
+
i0.ɵɵelementStart(0, "span", 119);
|
|
784
848
|
i0.ɵɵtext(1, "Passed");
|
|
785
849
|
i0.ɵɵelementEnd();
|
|
786
850
|
} }
|
|
787
|
-
function
|
|
788
|
-
i0.ɵɵelementStart(0, "span",
|
|
851
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_1_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
852
|
+
i0.ɵɵelementStart(0, "span", 90);
|
|
789
853
|
i0.ɵɵtext(1, "Failed");
|
|
790
854
|
i0.ɵɵelementEnd();
|
|
791
855
|
} }
|
|
792
|
-
function
|
|
793
|
-
i0.ɵɵelementStart(0, "span",
|
|
794
|
-
i0.ɵɵelement(1, "i",
|
|
856
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
857
|
+
i0.ɵɵelementStart(0, "span", 64);
|
|
858
|
+
i0.ɵɵelement(1, "i", 118);
|
|
795
859
|
i0.ɵɵtext(2, " Validation & Retries ");
|
|
796
|
-
i0.ɵɵconditionalCreate(3,
|
|
797
|
-
i0.ɵɵconditionalCreate(4,
|
|
860
|
+
i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_1_Conditional_3_Template, 2, 1, "span", 84);
|
|
861
|
+
i0.ɵɵconditionalCreate(4, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_1_Conditional_4_Template, 2, 0, "span", 119)(5, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_1_Conditional_5_Template, 2, 0, "span", 90);
|
|
798
862
|
i0.ɵɵelementEnd();
|
|
799
863
|
} if (rf & 2) {
|
|
800
864
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -803,8 +867,8 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_40_ng_temp
|
|
|
803
867
|
i0.ɵɵadvance();
|
|
804
868
|
i0.ɵɵconditional(ctx_r1.record.FinalValidationPassed ? 4 : ctx_r1.record.FinalValidationPassed === false ? 5 : -1);
|
|
805
869
|
} }
|
|
806
|
-
function
|
|
807
|
-
i0.ɵɵelementStart(0, "span",
|
|
870
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_2_Conditional_29_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
871
|
+
i0.ɵɵelementStart(0, "span", 130);
|
|
808
872
|
i0.ɵɵtext(1);
|
|
809
873
|
i0.ɵɵelementEnd();
|
|
810
874
|
} if (rf & 2) {
|
|
@@ -812,15 +876,15 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_40_ng_temp
|
|
|
812
876
|
i0.ɵɵadvance();
|
|
813
877
|
i0.ɵɵtextInterpolate1("", ctx_r1.record.ValidationErrorCount, " validation errors");
|
|
814
878
|
} }
|
|
815
|
-
function
|
|
816
|
-
i0.ɵɵelementStart(0, "div",
|
|
817
|
-
i0.ɵɵelement(2, "i",
|
|
879
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_2_Conditional_29_Template(rf, ctx) { if (rf & 1) {
|
|
880
|
+
i0.ɵɵelementStart(0, "div", 125)(1, "h5");
|
|
881
|
+
i0.ɵɵelement(2, "i", 92);
|
|
818
882
|
i0.ɵɵtext(3, " Final Validation Error");
|
|
819
883
|
i0.ɵɵelementEnd();
|
|
820
884
|
i0.ɵɵelementStart(4, "p");
|
|
821
885
|
i0.ɵɵtext(5);
|
|
822
886
|
i0.ɵɵelementEnd();
|
|
823
|
-
i0.ɵɵconditionalCreate(6,
|
|
887
|
+
i0.ɵɵconditionalCreate(6, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_2_Conditional_29_Conditional_6_Template, 2, 1, "span", 130);
|
|
824
888
|
i0.ɵɵelementEnd();
|
|
825
889
|
} if (rf & 2) {
|
|
826
890
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
@@ -829,9 +893,9 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_40_ng_temp
|
|
|
829
893
|
i0.ɵɵadvance();
|
|
830
894
|
i0.ɵɵconditional(ctx_r1.record && ctx_r1.record.ValidationErrorCount && ctx_r1.record.ValidationErrorCount > 0 ? 6 : -1);
|
|
831
895
|
} }
|
|
832
|
-
function
|
|
833
|
-
i0.ɵɵelementStart(0, "div",
|
|
834
|
-
i0.ɵɵelement(2, "i",
|
|
896
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_2_Conditional_30_Template(rf, ctx) { if (rf & 1) {
|
|
897
|
+
i0.ɵɵelementStart(0, "div", 126)(1, "h5");
|
|
898
|
+
i0.ɵɵelement(2, "i", 131);
|
|
835
899
|
i0.ɵɵtext(3, " Most Common Error");
|
|
836
900
|
i0.ɵɵelementEnd();
|
|
837
901
|
i0.ɵɵelementStart(4, "p");
|
|
@@ -842,24 +906,24 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_40_ng_temp
|
|
|
842
906
|
i0.ɵɵadvance(5);
|
|
843
907
|
i0.ɵɵtextInterpolate(ctx_r1.record.CommonValidationError);
|
|
844
908
|
} }
|
|
845
|
-
function
|
|
846
|
-
i0.ɵɵelementStart(0, "div",
|
|
909
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_2_Conditional_31_Template(rf, ctx) { if (rf & 1) {
|
|
910
|
+
i0.ɵɵelementStart(0, "div", 127)(1, "h4");
|
|
847
911
|
i0.ɵɵtext(2, "Retry Timeline");
|
|
848
912
|
i0.ɵɵelementEnd();
|
|
849
|
-
i0.ɵɵelementStart(3, "div",
|
|
850
|
-
i0.ɵɵelement(5, "i",
|
|
913
|
+
i0.ɵɵelementStart(3, "div", 132)(4, "div", 133);
|
|
914
|
+
i0.ɵɵelement(5, "i", 55);
|
|
851
915
|
i0.ɵɵelementStart(6, "span");
|
|
852
916
|
i0.ɵɵtext(7);
|
|
853
917
|
i0.ɵɵpipe(8, "date");
|
|
854
918
|
i0.ɵɵelementEnd()();
|
|
855
|
-
i0.ɵɵelementStart(9, "div",
|
|
856
|
-
i0.ɵɵelement(10, "i",
|
|
919
|
+
i0.ɵɵelementStart(9, "div", 133);
|
|
920
|
+
i0.ɵɵelement(10, "i", 115);
|
|
857
921
|
i0.ɵɵelementStart(11, "span");
|
|
858
922
|
i0.ɵɵtext(12);
|
|
859
923
|
i0.ɵɵpipe(13, "date");
|
|
860
924
|
i0.ɵɵelementEnd()();
|
|
861
|
-
i0.ɵɵelementStart(14, "div",
|
|
862
|
-
i0.ɵɵelement(15, "i",
|
|
925
|
+
i0.ɵɵelementStart(14, "div", 133);
|
|
926
|
+
i0.ɵɵelement(15, "i", 134);
|
|
863
927
|
i0.ɵɵelementStart(16, "span");
|
|
864
928
|
i0.ɵɵtext(17);
|
|
865
929
|
i0.ɵɵelementEnd()()()();
|
|
@@ -872,140 +936,148 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_40_ng_temp
|
|
|
872
936
|
i0.ɵɵadvance(5);
|
|
873
937
|
i0.ɵɵtextInterpolate1("Total Retry Duration: ", ctx_r1.formatDuration(ctx_r1.record.TotalRetryDurationMS));
|
|
874
938
|
} }
|
|
875
|
-
function
|
|
876
|
-
i0.ɵɵelementStart(0, "span",
|
|
939
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_2_Conditional_32_For_5_Conditional_7_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
940
|
+
i0.ɵɵelementStart(0, "span", 130);
|
|
877
941
|
i0.ɵɵtext(1);
|
|
878
942
|
i0.ɵɵelementEnd();
|
|
879
943
|
} if (rf & 2) {
|
|
880
|
-
const
|
|
944
|
+
const attempt_r14 = i0.ɵɵnextContext(2).$implicit;
|
|
881
945
|
i0.ɵɵadvance();
|
|
882
|
-
i0.ɵɵtextInterpolate1("(",
|
|
946
|
+
i0.ɵɵtextInterpolate1("(", attempt_r14.validationErrorCount, " errors)");
|
|
883
947
|
} }
|
|
884
|
-
function
|
|
885
|
-
i0.ɵɵelementStart(0, "span",
|
|
948
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_2_Conditional_32_For_5_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
949
|
+
i0.ɵɵelementStart(0, "span", 142);
|
|
886
950
|
i0.ɵɵtext(1);
|
|
887
951
|
i0.ɵɵelementEnd();
|
|
888
|
-
i0.ɵɵconditionalCreate(2,
|
|
952
|
+
i0.ɵɵconditionalCreate(2, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_2_Conditional_32_For_5_Conditional_7_Conditional_2_Template, 2, 1, "span", 130);
|
|
889
953
|
} if (rf & 2) {
|
|
890
|
-
const
|
|
954
|
+
const attempt_r14 = i0.ɵɵnextContext().$implicit;
|
|
891
955
|
i0.ɵɵadvance();
|
|
892
|
-
i0.ɵɵtextInterpolate(
|
|
956
|
+
i0.ɵɵtextInterpolate(attempt_r14.errorMessage || "Unknown error");
|
|
893
957
|
i0.ɵɵadvance();
|
|
894
|
-
i0.ɵɵconditional(
|
|
958
|
+
i0.ɵɵconditional(attempt_r14.validationErrorCount > 0 ? 2 : -1);
|
|
895
959
|
} }
|
|
896
|
-
function
|
|
897
|
-
i0.ɵɵelementStart(0, "span",
|
|
960
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_2_Conditional_32_For_5_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
961
|
+
i0.ɵɵelementStart(0, "span", 141);
|
|
898
962
|
i0.ɵɵtext(1);
|
|
899
963
|
i0.ɵɵelementEnd();
|
|
900
964
|
} if (rf & 2) {
|
|
901
|
-
const
|
|
965
|
+
const attempt_r14 = i0.ɵɵnextContext().$implicit;
|
|
902
966
|
i0.ɵɵadvance();
|
|
903
|
-
i0.ɵɵtextInterpolate1("Output: ",
|
|
967
|
+
i0.ɵɵtextInterpolate1("Output: ", attempt_r14.outputLength, " chars");
|
|
904
968
|
} }
|
|
905
|
-
function
|
|
906
|
-
i0.ɵɵelementStart(0, "div",
|
|
969
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_2_Conditional_32_For_5_Template(rf, ctx) { if (rf & 1) {
|
|
970
|
+
i0.ɵɵelementStart(0, "div", 137)(1, "div", 138);
|
|
907
971
|
i0.ɵɵelement(2, "i");
|
|
908
972
|
i0.ɵɵtext(3);
|
|
909
973
|
i0.ɵɵelementEnd();
|
|
910
|
-
i0.ɵɵelementStart(4, "div",
|
|
974
|
+
i0.ɵɵelementStart(4, "div", 139)(5, "span", 140);
|
|
911
975
|
i0.ɵɵtext(6);
|
|
912
976
|
i0.ɵɵelementEnd();
|
|
913
|
-
i0.ɵɵconditionalCreate(7,
|
|
914
|
-
i0.ɵɵconditionalCreate(8,
|
|
977
|
+
i0.ɵɵconditionalCreate(7, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_2_Conditional_32_For_5_Conditional_7_Template, 3, 2);
|
|
978
|
+
i0.ɵɵconditionalCreate(8, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_2_Conditional_32_For_5_Conditional_8_Template, 2, 1, "span", 141);
|
|
915
979
|
i0.ɵɵelementEnd()();
|
|
916
980
|
} if (rf & 2) {
|
|
917
|
-
const
|
|
918
|
-
i0.ɵɵclassProp("success",
|
|
981
|
+
const attempt_r14 = ctx.$implicit;
|
|
982
|
+
i0.ɵɵclassProp("success", attempt_r14.success)("failed", !attempt_r14.success);
|
|
919
983
|
i0.ɵɵadvance(2);
|
|
920
|
-
i0.ɵɵclassMap(
|
|
984
|
+
i0.ɵɵclassMap(attempt_r14.success ? "fa-solid fa-check" : "fa-solid fa-times");
|
|
921
985
|
i0.ɵɵadvance();
|
|
922
|
-
i0.ɵɵtextInterpolate1(" Attempt #",
|
|
986
|
+
i0.ɵɵtextInterpolate1(" Attempt #", attempt_r14.attemptNumber, " ");
|
|
923
987
|
i0.ɵɵadvance(3);
|
|
924
|
-
i0.ɵɵtextInterpolate(
|
|
988
|
+
i0.ɵɵtextInterpolate(attempt_r14.timestamp);
|
|
925
989
|
i0.ɵɵadvance();
|
|
926
|
-
i0.ɵɵconditional(!
|
|
990
|
+
i0.ɵɵconditional(!attempt_r14.success ? 7 : -1);
|
|
927
991
|
i0.ɵɵadvance();
|
|
928
|
-
i0.ɵɵconditional(
|
|
992
|
+
i0.ɵɵconditional(attempt_r14.outputLength ? 8 : -1);
|
|
929
993
|
} }
|
|
930
|
-
function
|
|
931
|
-
i0.ɵɵelementStart(0, "div",
|
|
994
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_2_Conditional_32_Template(rf, ctx) { if (rf & 1) {
|
|
995
|
+
i0.ɵɵelementStart(0, "div", 128)(1, "h4");
|
|
932
996
|
i0.ɵɵtext(2, "Validation Attempts");
|
|
933
997
|
i0.ɵɵelementEnd();
|
|
934
|
-
i0.ɵɵelementStart(3, "div",
|
|
935
|
-
i0.ɵɵrepeaterCreate(4,
|
|
998
|
+
i0.ɵɵelementStart(3, "div", 135);
|
|
999
|
+
i0.ɵɵrepeaterCreate(4, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_2_Conditional_32_For_5_Template, 9, 10, "div", 136, _forTrack0);
|
|
936
1000
|
i0.ɵɵelementEnd()();
|
|
937
1001
|
} if (rf & 2) {
|
|
938
1002
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
939
1003
|
i0.ɵɵadvance(4);
|
|
940
1004
|
i0.ɵɵrepeater(ctx_r1.validationAttempts);
|
|
941
1005
|
} }
|
|
942
|
-
function
|
|
943
|
-
const
|
|
944
|
-
i0.ɵɵelementStart(0, "div",
|
|
945
|
-
i0.ɵɵtext(
|
|
1006
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_2_Conditional_33_Template(rf, ctx) { if (rf & 1) {
|
|
1007
|
+
const _r15 = i0.ɵɵgetCurrentView();
|
|
1008
|
+
i0.ɵɵelementStart(0, "div", 129)(1, "div", 76)(2, "h4", 100);
|
|
1009
|
+
i0.ɵɵtext(3, "Validation Summary Details");
|
|
946
1010
|
i0.ɵɵelementEnd();
|
|
947
|
-
i0.ɵɵelementStart(
|
|
948
|
-
i0.ɵɵ
|
|
1011
|
+
i0.ɵɵelementStart(4, "button", 79);
|
|
1012
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_2_Conditional_33_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.openFullScreen(ctx_r1.formattedValidationSummary, "json", "Validation Summary")); });
|
|
1013
|
+
i0.ɵɵelement(5, "i", 80);
|
|
1014
|
+
i0.ɵɵelementEnd()();
|
|
1015
|
+
i0.ɵɵelementStart(6, "div", 143)(7, "mj-code-editor", 144);
|
|
1016
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_2_Conditional_33_Template_mj_code_editor_ngModelChange_7_listener($event) { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r1.formattedValidationSummary, $event) || (ctx_r1.formattedValidationSummary = $event); return i0.ɵɵresetView($event); });
|
|
949
1017
|
i0.ɵɵelementEnd()()();
|
|
950
1018
|
} if (rf & 2) {
|
|
951
1019
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
952
|
-
i0.ɵɵadvance(
|
|
1020
|
+
i0.ɵɵadvance(7);
|
|
953
1021
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.formattedValidationSummary);
|
|
954
1022
|
i0.ɵɵproperty("readonly", true)("language", "json")("lineWrapping", true);
|
|
955
1023
|
} }
|
|
956
|
-
function
|
|
957
|
-
const
|
|
958
|
-
i0.ɵɵelementStart(0, "div",
|
|
959
|
-
i0.ɵɵtext(
|
|
1024
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_2_Conditional_34_Template(rf, ctx) { if (rf & 1) {
|
|
1025
|
+
const _r16 = i0.ɵɵgetCurrentView();
|
|
1026
|
+
i0.ɵɵelementStart(0, "div", 129)(1, "div", 76)(2, "h4", 100);
|
|
1027
|
+
i0.ɵɵtext(3, "Validation Attempts (Raw JSON)");
|
|
960
1028
|
i0.ɵɵelementEnd();
|
|
961
|
-
i0.ɵɵelementStart(
|
|
962
|
-
i0.ɵɵ
|
|
1029
|
+
i0.ɵɵelementStart(4, "button", 79);
|
|
1030
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_2_Conditional_34_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.openFullScreen(ctx_r1.formattedValidationAttempts, "json", "Validation Attempts")); });
|
|
1031
|
+
i0.ɵɵelement(5, "i", 80);
|
|
1032
|
+
i0.ɵɵelementEnd()();
|
|
1033
|
+
i0.ɵɵelementStart(6, "div", 143)(7, "mj-code-editor", 145);
|
|
1034
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_2_Conditional_34_Template_mj_code_editor_ngModelChange_7_listener($event) { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r1.formattedValidationAttempts, $event) || (ctx_r1.formattedValidationAttempts = $event); return i0.ɵɵresetView($event); });
|
|
963
1035
|
i0.ɵɵelementEnd()()();
|
|
964
1036
|
} if (rf & 2) {
|
|
965
1037
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
966
|
-
i0.ɵɵadvance(
|
|
1038
|
+
i0.ɵɵadvance(7);
|
|
967
1039
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.formattedValidationAttempts);
|
|
968
1040
|
i0.ɵɵproperty("readonly", true)("language", "json")("lineWrapping", true);
|
|
969
1041
|
} }
|
|
970
|
-
function
|
|
971
|
-
i0.ɵɵelementStart(0, "div",
|
|
1042
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
1043
|
+
i0.ɵɵelementStart(0, "div", 67)(1, "div", 120)(2, "div", 121)(3, "h4");
|
|
972
1044
|
i0.ɵɵtext(4, "Validation Summary");
|
|
973
1045
|
i0.ɵɵelementEnd();
|
|
974
|
-
i0.ɵɵelementStart(5, "div",
|
|
1046
|
+
i0.ɵɵelementStart(5, "div", 122);
|
|
975
1047
|
i0.ɵɵelement(6, "i");
|
|
976
1048
|
i0.ɵɵtext(7);
|
|
977
1049
|
i0.ɵɵelementEnd()();
|
|
978
|
-
i0.ɵɵelementStart(8, "div",
|
|
1050
|
+
i0.ɵɵelementStart(8, "div", 123)(9, "div", 124)(10, "div", 52);
|
|
979
1051
|
i0.ɵɵtext(11, "Total Attempts");
|
|
980
1052
|
i0.ɵɵelementEnd();
|
|
981
|
-
i0.ɵɵelementStart(12, "div",
|
|
1053
|
+
i0.ɵɵelementStart(12, "div", 53);
|
|
982
1054
|
i0.ɵɵtext(13);
|
|
983
1055
|
i0.ɵɵelementEnd()();
|
|
984
|
-
i0.ɵɵelementStart(14, "div",
|
|
1056
|
+
i0.ɵɵelementStart(14, "div", 124)(15, "div", 52);
|
|
985
1057
|
i0.ɵɵtext(16, "Successful");
|
|
986
1058
|
i0.ɵɵelementEnd();
|
|
987
|
-
i0.ɵɵelementStart(17, "div",
|
|
1059
|
+
i0.ɵɵelementStart(17, "div", 53);
|
|
988
1060
|
i0.ɵɵtext(18);
|
|
989
1061
|
i0.ɵɵelementEnd()();
|
|
990
|
-
i0.ɵɵelementStart(19, "div",
|
|
1062
|
+
i0.ɵɵelementStart(19, "div", 124)(20, "div", 52);
|
|
991
1063
|
i0.ɵɵtext(21, "Behavior");
|
|
992
1064
|
i0.ɵɵelementEnd();
|
|
993
|
-
i0.ɵɵelementStart(22, "div",
|
|
1065
|
+
i0.ɵɵelementStart(22, "div", 53);
|
|
994
1066
|
i0.ɵɵtext(23);
|
|
995
1067
|
i0.ɵɵelementEnd()();
|
|
996
|
-
i0.ɵɵelementStart(24, "div",
|
|
1068
|
+
i0.ɵɵelementStart(24, "div", 124)(25, "div", 52);
|
|
997
1069
|
i0.ɵɵtext(26, "Retry Strategy");
|
|
998
1070
|
i0.ɵɵelementEnd();
|
|
999
|
-
i0.ɵɵelementStart(27, "div",
|
|
1071
|
+
i0.ɵɵelementStart(27, "div", 53);
|
|
1000
1072
|
i0.ɵɵtext(28);
|
|
1001
1073
|
i0.ɵɵelementEnd()()();
|
|
1002
|
-
i0.ɵɵconditionalCreate(29,
|
|
1003
|
-
i0.ɵɵconditionalCreate(30,
|
|
1074
|
+
i0.ɵɵconditionalCreate(29, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_2_Conditional_29_Template, 7, 2, "div", 125);
|
|
1075
|
+
i0.ɵɵconditionalCreate(30, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_2_Conditional_30_Template, 6, 1, "div", 126);
|
|
1004
1076
|
i0.ɵɵelementEnd();
|
|
1005
|
-
i0.ɵɵconditionalCreate(31,
|
|
1006
|
-
i0.ɵɵconditionalCreate(32,
|
|
1007
|
-
i0.ɵɵconditionalCreate(33,
|
|
1008
|
-
i0.ɵɵconditionalCreate(34,
|
|
1077
|
+
i0.ɵɵconditionalCreate(31, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_2_Conditional_31_Template, 18, 9, "div", 127);
|
|
1078
|
+
i0.ɵɵconditionalCreate(32, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_2_Conditional_32_Template, 6, 0, "div", 128);
|
|
1079
|
+
i0.ɵɵconditionalCreate(33, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_2_Conditional_33_Template, 8, 4, "div", 129);
|
|
1080
|
+
i0.ɵɵconditionalCreate(34, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_2_Conditional_34_Template, 8, 4, "div", 129);
|
|
1009
1081
|
i0.ɵɵelementEnd();
|
|
1010
1082
|
} if (rf & 2) {
|
|
1011
1083
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -1036,18 +1108,18 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_40_ng_temp
|
|
|
1036
1108
|
i0.ɵɵadvance();
|
|
1037
1109
|
i0.ɵɵconditional(ctx_r1.record.ValidationAttempts ? 34 : -1);
|
|
1038
1110
|
} }
|
|
1039
|
-
function
|
|
1040
|
-
const
|
|
1041
|
-
i0.ɵɵelementStart(0, "kendo-panelbar-item",
|
|
1042
|
-
i0.ɵɵlistener("stateChange", function
|
|
1043
|
-
i0.ɵɵtemplate(1,
|
|
1111
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_Template(rf, ctx) { if (rf & 1) {
|
|
1112
|
+
const _r13 = i0.ɵɵgetCurrentView();
|
|
1113
|
+
i0.ɵɵelementStart(0, "kendo-panelbar-item", 28);
|
|
1114
|
+
i0.ɵɵlistener("stateChange", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_Template_kendo_panelbar_item_stateChange_0_listener($event) { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onValidationPanelToggle($event)); });
|
|
1115
|
+
i0.ɵɵtemplate(1, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_1_Template, 6, 2, "ng-template", 29)(2, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_ng_template_2_Template, 35, 17, "ng-template", 30);
|
|
1044
1116
|
i0.ɵɵelementEnd();
|
|
1045
1117
|
} if (rf & 2) {
|
|
1046
1118
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
1047
1119
|
i0.ɵɵproperty("expanded", ctx_r1.validationExpanded);
|
|
1048
1120
|
} }
|
|
1049
|
-
function
|
|
1050
|
-
i0.ɵɵelementStart(0, "span",
|
|
1121
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_44_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
1122
|
+
i0.ɵɵelementStart(0, "span", 84);
|
|
1051
1123
|
i0.ɵɵtext(1);
|
|
1052
1124
|
i0.ɵɵelementEnd();
|
|
1053
1125
|
} if (rf & 2) {
|
|
@@ -1055,47 +1127,47 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_41_ng_temp
|
|
|
1055
1127
|
i0.ɵɵadvance();
|
|
1056
1128
|
i0.ɵɵtextInterpolate1("(", ctx_r1.childRuns.length, " children)");
|
|
1057
1129
|
} }
|
|
1058
|
-
function
|
|
1059
|
-
i0.ɵɵelementStart(0, "span",
|
|
1060
|
-
i0.ɵɵelement(1, "i",
|
|
1130
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_44_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
1131
|
+
i0.ɵɵelementStart(0, "span", 64);
|
|
1132
|
+
i0.ɵɵelement(1, "i", 146);
|
|
1061
1133
|
i0.ɵɵtext(2, " Run Hierarchy ");
|
|
1062
|
-
i0.ɵɵconditionalCreate(3,
|
|
1134
|
+
i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_44_ng_template_1_Conditional_3_Template, 2, 1, "span", 84);
|
|
1063
1135
|
i0.ɵɵelementEnd();
|
|
1064
1136
|
} if (rf & 2) {
|
|
1065
1137
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
1066
1138
|
i0.ɵɵadvance(3);
|
|
1067
1139
|
i0.ɵɵconditional(ctx_r1.childRuns.length > 0 ? 3 : -1);
|
|
1068
1140
|
} }
|
|
1069
|
-
function
|
|
1070
|
-
const
|
|
1071
|
-
i0.ɵɵelementStart(0, "div",
|
|
1072
|
-
i0.ɵɵelement(2, "i",
|
|
1141
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_44_ng_template_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
1142
|
+
const _r17 = i0.ɵɵgetCurrentView();
|
|
1143
|
+
i0.ɵɵelementStart(0, "div", 147)(1, "h4");
|
|
1144
|
+
i0.ɵɵelement(2, "i", 48);
|
|
1073
1145
|
i0.ɵɵtext(3, " Parent Run");
|
|
1074
1146
|
i0.ɵɵelementEnd();
|
|
1075
|
-
i0.ɵɵelementStart(4, "div",
|
|
1076
|
-
i0.ɵɵlistener("click", function
|
|
1077
|
-
i0.ɵɵelementStart(5, "div",
|
|
1147
|
+
i0.ɵɵelementStart(4, "div", 149);
|
|
1148
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_44_ng_template_2_Conditional_1_Template_div_click_4_listener() { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Prompt Runs", ctx_r1.parentRun.ID)); });
|
|
1149
|
+
i0.ɵɵelementStart(5, "div", 150);
|
|
1078
1150
|
i0.ɵɵelement(6, "i");
|
|
1079
1151
|
i0.ɵɵelementEnd();
|
|
1080
|
-
i0.ɵɵelementStart(7, "div",
|
|
1152
|
+
i0.ɵɵelementStart(7, "div", 151)(8, "div", 152);
|
|
1081
1153
|
i0.ɵɵtext(9);
|
|
1082
|
-
i0.ɵɵelementStart(10, "span",
|
|
1154
|
+
i0.ɵɵelementStart(10, "span", 153);
|
|
1083
1155
|
i0.ɵɵtext(11);
|
|
1084
1156
|
i0.ɵɵelementEnd()();
|
|
1085
|
-
i0.ɵɵelementStart(12, "div",
|
|
1086
|
-
i0.ɵɵelement(14, "i",
|
|
1157
|
+
i0.ɵɵelementStart(12, "div", 154)(13, "span");
|
|
1158
|
+
i0.ɵɵelement(14, "i", 55);
|
|
1087
1159
|
i0.ɵɵtext(15);
|
|
1088
1160
|
i0.ɵɵelementEnd();
|
|
1089
1161
|
i0.ɵɵelementStart(16, "span");
|
|
1090
|
-
i0.ɵɵelement(17, "i",
|
|
1162
|
+
i0.ɵɵelement(17, "i", 56);
|
|
1091
1163
|
i0.ɵɵtext(18);
|
|
1092
1164
|
i0.ɵɵelementEnd();
|
|
1093
1165
|
i0.ɵɵelementStart(19, "span");
|
|
1094
|
-
i0.ɵɵelement(20, "i",
|
|
1166
|
+
i0.ɵɵelement(20, "i", 63);
|
|
1095
1167
|
i0.ɵɵtext(21);
|
|
1096
1168
|
i0.ɵɵpipe(22, "date");
|
|
1097
1169
|
i0.ɵɵelementEnd()()();
|
|
1098
|
-
i0.ɵɵelement(23, "i",
|
|
1170
|
+
i0.ɵɵelement(23, "i", 117);
|
|
1099
1171
|
i0.ɵɵelementEnd()();
|
|
1100
1172
|
} if (rf & 2) {
|
|
1101
1173
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
@@ -1114,83 +1186,83 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_41_ng_temp
|
|
|
1114
1186
|
i0.ɵɵadvance(3);
|
|
1115
1187
|
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(22, 9, ctx_r1.parentRun.RunAt, "short"));
|
|
1116
1188
|
} }
|
|
1117
|
-
function
|
|
1118
|
-
i0.ɵɵelementStart(0, "span",
|
|
1189
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_44_ng_template_2_Conditional_2_For_6_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
1190
|
+
i0.ɵɵelementStart(0, "span", 159);
|
|
1119
1191
|
i0.ɵɵtext(1);
|
|
1120
1192
|
i0.ɵɵelementEnd();
|
|
1121
1193
|
} if (rf & 2) {
|
|
1122
|
-
const
|
|
1194
|
+
const childRun_r19 = i0.ɵɵnextContext().$implicit;
|
|
1123
1195
|
i0.ɵɵadvance();
|
|
1124
|
-
i0.ɵɵtextInterpolate1("#",
|
|
1196
|
+
i0.ɵɵtextInterpolate1("#", childRun_r19.ExecutionOrder);
|
|
1125
1197
|
} }
|
|
1126
|
-
function
|
|
1127
|
-
const
|
|
1128
|
-
i0.ɵɵelementStart(0, "div",
|
|
1129
|
-
i0.ɵɵlistener("click", function
|
|
1130
|
-
i0.ɵɵelementStart(1, "div",
|
|
1198
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_44_ng_template_2_Conditional_2_For_6_Template(rf, ctx) { if (rf & 1) {
|
|
1199
|
+
const _r18 = i0.ɵɵgetCurrentView();
|
|
1200
|
+
i0.ɵɵelementStart(0, "div", 158);
|
|
1201
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_44_ng_template_2_Conditional_2_For_6_Template_div_click_0_listener() { const childRun_r19 = i0.ɵɵrestoreView(_r18).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Prompt Runs", childRun_r19.ID)); });
|
|
1202
|
+
i0.ɵɵelementStart(1, "div", 150);
|
|
1131
1203
|
i0.ɵɵelement(2, "i");
|
|
1132
1204
|
i0.ɵɵelementEnd();
|
|
1133
|
-
i0.ɵɵelementStart(3, "div",
|
|
1205
|
+
i0.ɵɵelementStart(3, "div", 151)(4, "div", 152);
|
|
1134
1206
|
i0.ɵɵtext(5);
|
|
1135
|
-
i0.ɵɵconditionalCreate(6,
|
|
1136
|
-
i0.ɵɵelementStart(7, "span",
|
|
1207
|
+
i0.ɵɵconditionalCreate(6, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_44_ng_template_2_Conditional_2_For_6_Conditional_6_Template, 2, 1, "span", 159);
|
|
1208
|
+
i0.ɵɵelementStart(7, "span", 153);
|
|
1137
1209
|
i0.ɵɵtext(8);
|
|
1138
1210
|
i0.ɵɵelementEnd()();
|
|
1139
|
-
i0.ɵɵelementStart(9, "div",
|
|
1211
|
+
i0.ɵɵelementStart(9, "div", 154)(10, "span", 16);
|
|
1140
1212
|
i0.ɵɵelement(11, "i");
|
|
1141
1213
|
i0.ɵɵtext(12);
|
|
1142
1214
|
i0.ɵɵelementEnd();
|
|
1143
1215
|
i0.ɵɵelementStart(13, "span");
|
|
1144
|
-
i0.ɵɵelement(14, "i",
|
|
1216
|
+
i0.ɵɵelement(14, "i", 55);
|
|
1145
1217
|
i0.ɵɵtext(15);
|
|
1146
1218
|
i0.ɵɵelementEnd();
|
|
1147
1219
|
i0.ɵɵelementStart(16, "span");
|
|
1148
|
-
i0.ɵɵelement(17, "i",
|
|
1220
|
+
i0.ɵɵelement(17, "i", 56);
|
|
1149
1221
|
i0.ɵɵtext(18);
|
|
1150
1222
|
i0.ɵɵelementEnd()()();
|
|
1151
|
-
i0.ɵɵelement(19, "i",
|
|
1223
|
+
i0.ɵɵelement(19, "i", 117);
|
|
1152
1224
|
i0.ɵɵelementEnd();
|
|
1153
1225
|
} if (rf & 2) {
|
|
1154
|
-
const
|
|
1226
|
+
const childRun_r19 = ctx.$implicit;
|
|
1155
1227
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
1156
1228
|
i0.ɵɵadvance();
|
|
1157
1229
|
i0.ɵɵstyleProp("background-color", ctx_r1.getStatusColor() + "20");
|
|
1158
1230
|
i0.ɵɵadvance();
|
|
1159
|
-
i0.ɵɵclassMap("fa-solid " + ctx_r1.getRunTypeIcon(
|
|
1231
|
+
i0.ɵɵclassMap("fa-solid " + ctx_r1.getRunTypeIcon(childRun_r19.RunType));
|
|
1160
1232
|
i0.ɵɵadvance(3);
|
|
1161
|
-
i0.ɵɵtextInterpolate1(" Child Run #",
|
|
1233
|
+
i0.ɵɵtextInterpolate1(" Child Run #", childRun_r19.ID.substring(0, 8), " ");
|
|
1162
1234
|
i0.ɵɵadvance();
|
|
1163
|
-
i0.ɵɵconditional(
|
|
1235
|
+
i0.ɵɵconditional(childRun_r19.ExecutionOrder !== null ? 6 : -1);
|
|
1164
1236
|
i0.ɵɵadvance(2);
|
|
1165
|
-
i0.ɵɵtextInterpolate(
|
|
1237
|
+
i0.ɵɵtextInterpolate(childRun_r19.RunType);
|
|
1166
1238
|
i0.ɵɵadvance(2);
|
|
1167
1239
|
i0.ɵɵstyleProp("color", ctx_r1.getStatusColor());
|
|
1168
1240
|
i0.ɵɵadvance();
|
|
1169
1241
|
i0.ɵɵclassMap("fa-solid " + ctx_r1.getStatusIcon());
|
|
1170
1242
|
i0.ɵɵadvance();
|
|
1171
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
1243
|
+
i0.ɵɵtextInterpolate1(" ", childRun_r19.Success ? "Success" : childRun_r19.ErrorMessage ? "Failed" : "Running", " ");
|
|
1172
1244
|
i0.ɵɵadvance(3);
|
|
1173
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r1.formatDuration(
|
|
1245
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.formatDuration(childRun_r19.ExecutionTimeMS));
|
|
1174
1246
|
i0.ɵɵadvance(3);
|
|
1175
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r1.formatTokens(
|
|
1247
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.formatTokens(childRun_r19.TokensUsed));
|
|
1176
1248
|
} }
|
|
1177
|
-
function
|
|
1178
|
-
i0.ɵɵelementStart(0, "div",
|
|
1179
|
-
i0.ɵɵelement(2, "i",
|
|
1249
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_44_ng_template_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
1250
|
+
i0.ɵɵelementStart(0, "div", 148)(1, "h4");
|
|
1251
|
+
i0.ɵɵelement(2, "i", 155);
|
|
1180
1252
|
i0.ɵɵtext(3, " Child Runs");
|
|
1181
1253
|
i0.ɵɵelementEnd();
|
|
1182
|
-
i0.ɵɵelementStart(4, "div",
|
|
1183
|
-
i0.ɵɵrepeaterCreate(5,
|
|
1254
|
+
i0.ɵɵelementStart(4, "div", 156);
|
|
1255
|
+
i0.ɵɵrepeaterCreate(5, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_44_ng_template_2_Conditional_2_For_6_Template, 20, 14, "div", 157, _forTrack1);
|
|
1184
1256
|
i0.ɵɵelementEnd()();
|
|
1185
1257
|
} if (rf & 2) {
|
|
1186
1258
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
1187
1259
|
i0.ɵɵadvance(5);
|
|
1188
1260
|
i0.ɵɵrepeater(ctx_r1.childRuns);
|
|
1189
1261
|
} }
|
|
1190
|
-
function
|
|
1191
|
-
i0.ɵɵelementStart(0, "div",
|
|
1192
|
-
i0.ɵɵconditionalCreate(1,
|
|
1193
|
-
i0.ɵɵconditionalCreate(2,
|
|
1262
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_44_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
1263
|
+
i0.ɵɵelementStart(0, "div", 67);
|
|
1264
|
+
i0.ɵɵconditionalCreate(1, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_44_ng_template_2_Conditional_1_Template, 24, 12, "div", 147);
|
|
1265
|
+
i0.ɵɵconditionalCreate(2, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_44_ng_template_2_Conditional_2_Template, 7, 0, "div", 148);
|
|
1194
1266
|
i0.ɵɵelementEnd();
|
|
1195
1267
|
} if (rf & 2) {
|
|
1196
1268
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -1199,41 +1271,41 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_41_ng_temp
|
|
|
1199
1271
|
i0.ɵɵadvance();
|
|
1200
1272
|
i0.ɵɵconditional(ctx_r1.childRuns.length > 0 ? 2 : -1);
|
|
1201
1273
|
} }
|
|
1202
|
-
function
|
|
1203
|
-
i0.ɵɵelementStart(0, "kendo-panelbar-item",
|
|
1204
|
-
i0.ɵɵtemplate(1,
|
|
1274
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_44_Template(rf, ctx) { if (rf & 1) {
|
|
1275
|
+
i0.ɵɵelementStart(0, "kendo-panelbar-item", 31);
|
|
1276
|
+
i0.ɵɵtemplate(1, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_44_ng_template_1_Template, 4, 1, "ng-template", 29)(2, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_44_ng_template_2_Template, 3, 2, "ng-template", 30);
|
|
1205
1277
|
i0.ɵɵelementEnd();
|
|
1206
1278
|
} if (rf & 2) {
|
|
1207
1279
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
1208
1280
|
i0.ɵɵproperty("expanded", ctx_r1.hierarchyExpanded);
|
|
1209
1281
|
} }
|
|
1210
|
-
function
|
|
1211
|
-
i0.ɵɵelementStart(0, "span",
|
|
1212
|
-
i0.ɵɵelement(1, "i",
|
|
1282
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_46_Template(rf, ctx) { if (rf & 1) {
|
|
1283
|
+
i0.ɵɵelementStart(0, "span", 64);
|
|
1284
|
+
i0.ɵɵelement(1, "i", 160);
|
|
1213
1285
|
i0.ɵɵtext(2, " Additional Details ");
|
|
1214
1286
|
i0.ɵɵelementEnd();
|
|
1215
1287
|
} }
|
|
1216
|
-
function
|
|
1217
|
-
const
|
|
1218
|
-
i0.ɵɵelementStart(0, "div",
|
|
1288
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_47_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
1289
|
+
const _r20 = i0.ɵɵgetCurrentView();
|
|
1290
|
+
i0.ɵɵelementStart(0, "div", 162)(1, "label");
|
|
1219
1291
|
i0.ɵɵtext(2, "Agent");
|
|
1220
1292
|
i0.ɵɵelementEnd();
|
|
1221
|
-
i0.ɵɵelementStart(3, "div",
|
|
1222
|
-
i0.ɵɵlistener("click", function
|
|
1223
|
-
i0.ɵɵelement(4, "i",
|
|
1293
|
+
i0.ɵɵelementStart(3, "div", 169);
|
|
1294
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_47_Conditional_2_Template_div_click_3_listener() { i0.ɵɵrestoreView(_r20); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Agents", ctx_r1.record.AgentID)); });
|
|
1295
|
+
i0.ɵɵelement(4, "i", 170);
|
|
1224
1296
|
i0.ɵɵtext(5);
|
|
1225
|
-
i0.ɵɵelement(6, "i",
|
|
1297
|
+
i0.ɵɵelement(6, "i", 117);
|
|
1226
1298
|
i0.ɵɵelementEnd()();
|
|
1227
1299
|
} if (rf & 2) {
|
|
1228
1300
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
1229
1301
|
i0.ɵɵadvance(5);
|
|
1230
1302
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.Agent || "Unknown", " ");
|
|
1231
1303
|
} }
|
|
1232
|
-
function
|
|
1233
|
-
i0.ɵɵelementStart(0, "div",
|
|
1304
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_47_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
1305
|
+
i0.ɵɵelementStart(0, "div", 162)(1, "label");
|
|
1234
1306
|
i0.ɵɵtext(2, "Run Type");
|
|
1235
1307
|
i0.ɵɵelementEnd();
|
|
1236
|
-
i0.ɵɵelementStart(3, "div",
|
|
1308
|
+
i0.ɵɵelementStart(3, "div", 163);
|
|
1237
1309
|
i0.ɵɵelement(4, "i");
|
|
1238
1310
|
i0.ɵɵtext(5);
|
|
1239
1311
|
i0.ɵɵelementEnd()();
|
|
@@ -1244,12 +1316,12 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_44_Conditi
|
|
|
1244
1316
|
i0.ɵɵadvance();
|
|
1245
1317
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.RunType, " ");
|
|
1246
1318
|
} }
|
|
1247
|
-
function
|
|
1248
|
-
i0.ɵɵelementStart(0, "div",
|
|
1319
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_47_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
1320
|
+
i0.ɵɵelementStart(0, "div", 162)(1, "label");
|
|
1249
1321
|
i0.ɵɵtext(2, "Response Format");
|
|
1250
1322
|
i0.ɵɵelementEnd();
|
|
1251
|
-
i0.ɵɵelementStart(3, "div",
|
|
1252
|
-
i0.ɵɵelement(4, "i",
|
|
1323
|
+
i0.ɵɵelementStart(3, "div", 163);
|
|
1324
|
+
i0.ɵɵelement(4, "i", 62);
|
|
1253
1325
|
i0.ɵɵtext(5);
|
|
1254
1326
|
i0.ɵɵelementEnd()();
|
|
1255
1327
|
} if (rf & 2) {
|
|
@@ -1257,12 +1329,12 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_44_Conditi
|
|
|
1257
1329
|
i0.ɵɵadvance(5);
|
|
1258
1330
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.ResponseFormat, " ");
|
|
1259
1331
|
} }
|
|
1260
|
-
function
|
|
1261
|
-
i0.ɵɵelementStart(0, "div",
|
|
1332
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_47_Conditional_59_Template(rf, ctx) { if (rf & 1) {
|
|
1333
|
+
i0.ɵɵelementStart(0, "div", 162)(1, "label");
|
|
1262
1334
|
i0.ɵɵtext(2, "Started At");
|
|
1263
1335
|
i0.ɵɵelementEnd();
|
|
1264
|
-
i0.ɵɵelementStart(3, "div",
|
|
1265
|
-
i0.ɵɵelement(4, "i",
|
|
1336
|
+
i0.ɵɵelementStart(3, "div", 163);
|
|
1337
|
+
i0.ɵɵelement(4, "i", 55);
|
|
1266
1338
|
i0.ɵɵtext(5);
|
|
1267
1339
|
i0.ɵɵpipe(6, "date");
|
|
1268
1340
|
i0.ɵɵelementEnd()();
|
|
@@ -1271,12 +1343,12 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_44_Conditi
|
|
|
1271
1343
|
i0.ɵɵadvance(5);
|
|
1272
1344
|
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(6, 1, ctx_r1.record.RunAt, "medium"), " ");
|
|
1273
1345
|
} }
|
|
1274
|
-
function
|
|
1275
|
-
i0.ɵɵelementStart(0, "div",
|
|
1346
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_47_Conditional_60_Template(rf, ctx) { if (rf & 1) {
|
|
1347
|
+
i0.ɵɵelementStart(0, "div", 162)(1, "label");
|
|
1276
1348
|
i0.ɵɵtext(2, "Completed At");
|
|
1277
1349
|
i0.ɵɵelementEnd();
|
|
1278
|
-
i0.ɵɵelementStart(3, "div",
|
|
1279
|
-
i0.ɵɵelement(4, "i",
|
|
1350
|
+
i0.ɵɵelementStart(3, "div", 163);
|
|
1351
|
+
i0.ɵɵelement(4, "i", 171);
|
|
1280
1352
|
i0.ɵɵtext(5);
|
|
1281
1353
|
i0.ɵɵpipe(6, "date");
|
|
1282
1354
|
i0.ɵɵelementEnd()();
|
|
@@ -1285,76 +1357,76 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_44_Conditi
|
|
|
1285
1357
|
i0.ɵɵadvance(5);
|
|
1286
1358
|
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(6, 1, ctx_r1.record.CompletedAt, "medium"), " ");
|
|
1287
1359
|
} }
|
|
1288
|
-
function
|
|
1289
|
-
i0.ɵɵelementStart(0, "div",
|
|
1290
|
-
i0.ɵɵconditionalCreate(2,
|
|
1291
|
-
i0.ɵɵconditionalCreate(3,
|
|
1292
|
-
i0.ɵɵconditionalCreate(4,
|
|
1293
|
-
i0.ɵɵelementStart(5, "div",
|
|
1360
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_47_Template(rf, ctx) { if (rf & 1) {
|
|
1361
|
+
i0.ɵɵelementStart(0, "div", 67)(1, "div", 161);
|
|
1362
|
+
i0.ɵɵconditionalCreate(2, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_47_Conditional_2_Template, 7, 1, "div", 162);
|
|
1363
|
+
i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_47_Conditional_3_Template, 6, 3, "div", 162);
|
|
1364
|
+
i0.ɵɵconditionalCreate(4, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_47_Conditional_4_Template, 6, 1, "div", 162);
|
|
1365
|
+
i0.ɵɵelementStart(5, "div", 162)(6, "label");
|
|
1294
1366
|
i0.ɵɵtext(7, "Temperature");
|
|
1295
1367
|
i0.ɵɵelementEnd();
|
|
1296
|
-
i0.ɵɵelementStart(8, "div",
|
|
1297
|
-
i0.ɵɵelement(9, "i",
|
|
1368
|
+
i0.ɵɵelementStart(8, "div", 163);
|
|
1369
|
+
i0.ɵɵelement(9, "i", 58);
|
|
1298
1370
|
i0.ɵɵtext(10);
|
|
1299
1371
|
i0.ɵɵelementEnd()();
|
|
1300
|
-
i0.ɵɵelementStart(11, "div",
|
|
1372
|
+
i0.ɵɵelementStart(11, "div", 162)(12, "label");
|
|
1301
1373
|
i0.ɵɵtext(13, "Top P");
|
|
1302
1374
|
i0.ɵɵelementEnd();
|
|
1303
|
-
i0.ɵɵelementStart(14, "div",
|
|
1304
|
-
i0.ɵɵelement(15, "i",
|
|
1375
|
+
i0.ɵɵelementStart(14, "div", 163);
|
|
1376
|
+
i0.ɵɵelement(15, "i", 59);
|
|
1305
1377
|
i0.ɵɵtext(16);
|
|
1306
1378
|
i0.ɵɵelementEnd()();
|
|
1307
|
-
i0.ɵɵelementStart(17, "div",
|
|
1379
|
+
i0.ɵɵelementStart(17, "div", 162)(18, "label");
|
|
1308
1380
|
i0.ɵɵtext(19, "Top K");
|
|
1309
1381
|
i0.ɵɵelementEnd();
|
|
1310
|
-
i0.ɵɵelementStart(20, "div",
|
|
1311
|
-
i0.ɵɵelement(21, "i",
|
|
1382
|
+
i0.ɵɵelementStart(20, "div", 163);
|
|
1383
|
+
i0.ɵɵelement(21, "i", 60);
|
|
1312
1384
|
i0.ɵɵtext(22);
|
|
1313
1385
|
i0.ɵɵelementEnd()();
|
|
1314
|
-
i0.ɵɵelementStart(23, "div",
|
|
1386
|
+
i0.ɵɵelementStart(23, "div", 162)(24, "label");
|
|
1315
1387
|
i0.ɵɵtext(25, "Min P");
|
|
1316
1388
|
i0.ɵɵelementEnd();
|
|
1317
|
-
i0.ɵɵelementStart(26, "div",
|
|
1318
|
-
i0.ɵɵelement(27, "i",
|
|
1389
|
+
i0.ɵɵelementStart(26, "div", 163);
|
|
1390
|
+
i0.ɵɵelement(27, "i", 164);
|
|
1319
1391
|
i0.ɵɵtext(28);
|
|
1320
1392
|
i0.ɵɵelementEnd()();
|
|
1321
|
-
i0.ɵɵelementStart(29, "div",
|
|
1393
|
+
i0.ɵɵelementStart(29, "div", 162)(30, "label");
|
|
1322
1394
|
i0.ɵɵtext(31, "Frequency Penalty");
|
|
1323
1395
|
i0.ɵɵelementEnd();
|
|
1324
|
-
i0.ɵɵelementStart(32, "div",
|
|
1325
|
-
i0.ɵɵelement(33, "i",
|
|
1396
|
+
i0.ɵɵelementStart(32, "div", 163);
|
|
1397
|
+
i0.ɵɵelement(33, "i", 131);
|
|
1326
1398
|
i0.ɵɵtext(34);
|
|
1327
1399
|
i0.ɵɵelementEnd()();
|
|
1328
|
-
i0.ɵɵelementStart(35, "div",
|
|
1400
|
+
i0.ɵɵelementStart(35, "div", 162)(36, "label");
|
|
1329
1401
|
i0.ɵɵtext(37, "Presence Penalty");
|
|
1330
1402
|
i0.ɵɵelementEnd();
|
|
1331
|
-
i0.ɵɵelementStart(38, "div",
|
|
1332
|
-
i0.ɵɵelement(39, "i",
|
|
1403
|
+
i0.ɵɵelementStart(38, "div", 163);
|
|
1404
|
+
i0.ɵɵelement(39, "i", 165);
|
|
1333
1405
|
i0.ɵɵtext(40);
|
|
1334
1406
|
i0.ɵɵelementEnd()();
|
|
1335
|
-
i0.ɵɵelementStart(41, "div",
|
|
1407
|
+
i0.ɵɵelementStart(41, "div", 162)(42, "label");
|
|
1336
1408
|
i0.ɵɵtext(43, "Seed");
|
|
1337
1409
|
i0.ɵɵelementEnd();
|
|
1338
|
-
i0.ɵɵelementStart(44, "div",
|
|
1339
|
-
i0.ɵɵelement(45, "i",
|
|
1410
|
+
i0.ɵɵelementStart(44, "div", 163);
|
|
1411
|
+
i0.ɵɵelement(45, "i", 166);
|
|
1340
1412
|
i0.ɵɵtext(46);
|
|
1341
1413
|
i0.ɵɵelementEnd()();
|
|
1342
|
-
i0.ɵɵelementStart(47, "div",
|
|
1414
|
+
i0.ɵɵelementStart(47, "div", 162)(48, "label");
|
|
1343
1415
|
i0.ɵɵtext(49, "Stop Sequences");
|
|
1344
1416
|
i0.ɵɵelementEnd();
|
|
1345
|
-
i0.ɵɵelementStart(50, "div",
|
|
1346
|
-
i0.ɵɵelement(51, "i",
|
|
1417
|
+
i0.ɵɵelementStart(50, "div", 163);
|
|
1418
|
+
i0.ɵɵelement(51, "i", 167);
|
|
1347
1419
|
i0.ɵɵtext(52);
|
|
1348
1420
|
i0.ɵɵelementEnd()();
|
|
1349
|
-
i0.ɵɵelementStart(53, "div",
|
|
1421
|
+
i0.ɵɵelementStart(53, "div", 162)(54, "label");
|
|
1350
1422
|
i0.ɵɵtext(55, "Assistant Prefill");
|
|
1351
1423
|
i0.ɵɵelementEnd();
|
|
1352
|
-
i0.ɵɵelementStart(56, "div",
|
|
1353
|
-
i0.ɵɵelement(57, "i",
|
|
1424
|
+
i0.ɵɵelementStart(56, "div", 163);
|
|
1425
|
+
i0.ɵɵelement(57, "i", 168);
|
|
1354
1426
|
i0.ɵɵtext(58);
|
|
1355
1427
|
i0.ɵɵelementEnd()();
|
|
1356
|
-
i0.ɵɵconditionalCreate(59,
|
|
1357
|
-
i0.ɵɵconditionalCreate(60,
|
|
1428
|
+
i0.ɵɵconditionalCreate(59, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_47_Conditional_59_Template, 7, 4, "div", 162);
|
|
1429
|
+
i0.ɵɵconditionalCreate(60, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_47_Conditional_60_Template, 7, 4, "div", 162);
|
|
1358
1430
|
i0.ɵɵelementEnd()();
|
|
1359
1431
|
} if (rf & 2) {
|
|
1360
1432
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -1405,56 +1477,60 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_44_Templat
|
|
|
1405
1477
|
i0.ɵɵadvance();
|
|
1406
1478
|
i0.ɵɵconditional(ctx_r1.record.CompletedAt ? 60 : -1);
|
|
1407
1479
|
} }
|
|
1408
|
-
function
|
|
1409
|
-
i0.ɵɵelementStart(0, "span",
|
|
1410
|
-
i0.ɵɵelement(1, "i",
|
|
1480
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_48_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
1481
|
+
i0.ɵɵelementStart(0, "span", 64);
|
|
1482
|
+
i0.ɵɵelement(1, "i", 46);
|
|
1411
1483
|
i0.ɵɵtext(2, " Model Specific Response Details ");
|
|
1412
|
-
i0.ɵɵelementStart(3, "span",
|
|
1484
|
+
i0.ɵɵelementStart(3, "span", 66);
|
|
1413
1485
|
i0.ɵɵtext(4, "JSON");
|
|
1414
1486
|
i0.ɵɵelementEnd()();
|
|
1415
1487
|
} }
|
|
1416
|
-
function
|
|
1417
|
-
const
|
|
1418
|
-
i0.ɵɵelementStart(0, "div",
|
|
1419
|
-
i0.ɵɵlistener("click", function
|
|
1420
|
-
i0.ɵɵelement(4, "i",
|
|
1488
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_48_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
1489
|
+
const _r22 = i0.ɵɵgetCurrentView();
|
|
1490
|
+
i0.ɵɵelementStart(0, "div", 67)(1, "div", 75)(2, "div", 76)(3, "button", 77);
|
|
1491
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_48_ng_template_2_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r22); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.copyToClipboard(ctx_r1.formattedModelSpecificResponseDetails, "Model Specific Response Details")); });
|
|
1492
|
+
i0.ɵɵelement(4, "i", 78);
|
|
1421
1493
|
i0.ɵɵtext(5, " Copy ");
|
|
1494
|
+
i0.ɵɵelementEnd();
|
|
1495
|
+
i0.ɵɵelementStart(6, "button", 79);
|
|
1496
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_48_ng_template_2_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r22); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openFullScreen(ctx_r1.formattedModelSpecificResponseDetails, "json", "Model Specific Response Details")); });
|
|
1497
|
+
i0.ɵɵelement(7, "i", 80);
|
|
1422
1498
|
i0.ɵɵelementEnd()();
|
|
1423
|
-
i0.ɵɵelementStart(
|
|
1424
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
1499
|
+
i0.ɵɵelementStart(8, "mj-code-editor", 172);
|
|
1500
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_48_ng_template_2_Template_mj_code_editor_ngModelChange_8_listener($event) { i0.ɵɵrestoreView(_r22); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.formattedModelSpecificResponseDetails, $event) || (ctx_r1.formattedModelSpecificResponseDetails = $event); return i0.ɵɵresetView($event); });
|
|
1425
1501
|
i0.ɵɵelementEnd()()();
|
|
1426
1502
|
} if (rf & 2) {
|
|
1427
1503
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
1428
|
-
i0.ɵɵadvance(
|
|
1504
|
+
i0.ɵɵadvance(8);
|
|
1429
1505
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.formattedModelSpecificResponseDetails);
|
|
1430
1506
|
i0.ɵɵproperty("readonly", true)("language", "json")("lineWrapping", true);
|
|
1431
1507
|
} }
|
|
1432
|
-
function
|
|
1433
|
-
const
|
|
1434
|
-
i0.ɵɵelementStart(0, "kendo-panelbar-item",
|
|
1435
|
-
i0.ɵɵlistener("stateChange", function
|
|
1436
|
-
i0.ɵɵtemplate(1,
|
|
1508
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_48_Template(rf, ctx) { if (rf & 1) {
|
|
1509
|
+
const _r21 = i0.ɵɵgetCurrentView();
|
|
1510
|
+
i0.ɵɵelementStart(0, "kendo-panelbar-item", 28);
|
|
1511
|
+
i0.ɵɵlistener("stateChange", function MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_48_Template_kendo_panelbar_item_stateChange_0_listener($event) { i0.ɵɵrestoreView(_r21); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onModelSpecificPanelToggle($event)); });
|
|
1512
|
+
i0.ɵɵtemplate(1, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_48_ng_template_1_Template, 5, 0, "ng-template", 29)(2, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_48_ng_template_2_Template, 9, 4, "ng-template", 30);
|
|
1437
1513
|
i0.ɵɵelementEnd();
|
|
1438
1514
|
} if (rf & 2) {
|
|
1439
1515
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
1440
1516
|
i0.ɵɵproperty("expanded", ctx_r1.modelSpecificExpanded);
|
|
1441
1517
|
} }
|
|
1442
|
-
function
|
|
1443
|
-
i0.ɵɵelementStart(0, "span",
|
|
1518
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_50_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
1519
|
+
i0.ɵɵelementStart(0, "span", 119);
|
|
1444
1520
|
i0.ɵɵtext(1, "Cached");
|
|
1445
1521
|
i0.ɵɵelementEnd();
|
|
1446
1522
|
} }
|
|
1447
|
-
function
|
|
1448
|
-
i0.ɵɵelementStart(0, "span",
|
|
1523
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_50_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
1524
|
+
i0.ɵɵelementStart(0, "span", 119);
|
|
1449
1525
|
i0.ɵɵtext(1, "Selected");
|
|
1450
1526
|
i0.ɵɵelementEnd();
|
|
1451
1527
|
} }
|
|
1452
|
-
function
|
|
1453
|
-
i0.ɵɵelementStart(0, "span",
|
|
1454
|
-
i0.ɵɵelement(1, "i",
|
|
1528
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_50_Template(rf, ctx) { if (rf & 1) {
|
|
1529
|
+
i0.ɵɵelementStart(0, "span", 64);
|
|
1530
|
+
i0.ɵɵelement(1, "i", 46);
|
|
1455
1531
|
i0.ɵɵtext(2, " Model Selection & Performance ");
|
|
1456
|
-
i0.ɵɵconditionalCreate(3,
|
|
1457
|
-
i0.ɵɵconditionalCreate(4,
|
|
1532
|
+
i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_50_Conditional_3_Template, 2, 0, "span", 119);
|
|
1533
|
+
i0.ɵɵconditionalCreate(4, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_50_Conditional_4_Template, 2, 0, "span", 119);
|
|
1458
1534
|
i0.ɵɵelementEnd();
|
|
1459
1535
|
} if (rf & 2) {
|
|
1460
1536
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -1463,12 +1539,12 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_47_Templat
|
|
|
1463
1539
|
i0.ɵɵadvance();
|
|
1464
1540
|
i0.ɵɵconditional(ctx_r1.record.WasSelectedResult ? 4 : -1);
|
|
1465
1541
|
} }
|
|
1466
|
-
function
|
|
1467
|
-
i0.ɵɵelementStart(0, "div",
|
|
1542
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_51_Conditional_26_Template(rf, ctx) { if (rf & 1) {
|
|
1543
|
+
i0.ɵɵelementStart(0, "div", 175)(1, "label");
|
|
1468
1544
|
i0.ɵɵtext(2, "Cache Key");
|
|
1469
1545
|
i0.ɵɵelementEnd();
|
|
1470
|
-
i0.ɵɵelementStart(3, "div",
|
|
1471
|
-
i0.ɵɵelement(4, "i",
|
|
1546
|
+
i0.ɵɵelementStart(3, "div", 163);
|
|
1547
|
+
i0.ɵɵelement(4, "i", 178);
|
|
1472
1548
|
i0.ɵɵelementStart(5, "code");
|
|
1473
1549
|
i0.ɵɵtext(6);
|
|
1474
1550
|
i0.ɵɵelementEnd()()();
|
|
@@ -1477,28 +1553,28 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_48_Conditi
|
|
|
1477
1553
|
i0.ɵɵadvance(6);
|
|
1478
1554
|
i0.ɵɵtextInterpolate(ctx_r1.record.CacheKey);
|
|
1479
1555
|
} }
|
|
1480
|
-
function
|
|
1481
|
-
const
|
|
1482
|
-
i0.ɵɵelementStart(0, "div",
|
|
1556
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_51_Conditional_27_Template(rf, ctx) { if (rf & 1) {
|
|
1557
|
+
const _r23 = i0.ɵɵgetCurrentView();
|
|
1558
|
+
i0.ɵɵelementStart(0, "div", 162)(1, "label");
|
|
1483
1559
|
i0.ɵɵtext(2, "Judge Prompt");
|
|
1484
1560
|
i0.ɵɵelementEnd();
|
|
1485
|
-
i0.ɵɵelementStart(3, "div",
|
|
1486
|
-
i0.ɵɵlistener("click", function
|
|
1487
|
-
i0.ɵɵelement(4, "i",
|
|
1561
|
+
i0.ɵɵelementStart(3, "div", 179);
|
|
1562
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_51_Conditional_27_Template_div_click_3_listener() { i0.ɵɵrestoreView(_r23); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Prompts", ctx_r1.record.JudgeID)); });
|
|
1563
|
+
i0.ɵɵelement(4, "i", 180);
|
|
1488
1564
|
i0.ɵɵtext(5);
|
|
1489
|
-
i0.ɵɵelement(6, "i",
|
|
1565
|
+
i0.ɵɵelement(6, "i", 117);
|
|
1490
1566
|
i0.ɵɵelementEnd()();
|
|
1491
1567
|
} if (rf & 2) {
|
|
1492
1568
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
1493
1569
|
i0.ɵɵadvance(5);
|
|
1494
1570
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.Judge || "Unknown", " ");
|
|
1495
1571
|
} }
|
|
1496
|
-
function
|
|
1497
|
-
i0.ɵɵelementStart(0, "div",
|
|
1572
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_51_Conditional_28_Template(rf, ctx) { if (rf & 1) {
|
|
1573
|
+
i0.ɵɵelementStart(0, "div", 162)(1, "label");
|
|
1498
1574
|
i0.ɵɵtext(2, "Judge Score");
|
|
1499
1575
|
i0.ɵɵelementEnd();
|
|
1500
|
-
i0.ɵɵelementStart(3, "div",
|
|
1501
|
-
i0.ɵɵelement(4, "i",
|
|
1576
|
+
i0.ɵɵelementStart(3, "div", 163);
|
|
1577
|
+
i0.ɵɵelement(4, "i", 181);
|
|
1502
1578
|
i0.ɵɵtext(5);
|
|
1503
1579
|
i0.ɵɵelementEnd()();
|
|
1504
1580
|
} if (rf & 2) {
|
|
@@ -1506,12 +1582,12 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_48_Conditi
|
|
|
1506
1582
|
i0.ɵɵadvance(5);
|
|
1507
1583
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.JudgeScore, " ");
|
|
1508
1584
|
} }
|
|
1509
|
-
function
|
|
1510
|
-
i0.ɵɵelementStart(0, "div",
|
|
1585
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_51_Conditional_41_Template(rf, ctx) { if (rf & 1) {
|
|
1586
|
+
i0.ɵɵelementStart(0, "div", 162)(1, "label");
|
|
1511
1587
|
i0.ɵɵtext(2, "First Token Time");
|
|
1512
1588
|
i0.ɵɵelementEnd();
|
|
1513
|
-
i0.ɵɵelementStart(3, "div",
|
|
1514
|
-
i0.ɵɵelement(4, "i",
|
|
1589
|
+
i0.ɵɵelementStart(3, "div", 163);
|
|
1590
|
+
i0.ɵɵelement(4, "i", 182);
|
|
1515
1591
|
i0.ɵɵtext(5);
|
|
1516
1592
|
i0.ɵɵelementEnd()();
|
|
1517
1593
|
} if (rf & 2) {
|
|
@@ -1519,12 +1595,12 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_48_Conditi
|
|
|
1519
1595
|
i0.ɵɵadvance(5);
|
|
1520
1596
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.FirstTokenTime, " ms ");
|
|
1521
1597
|
} }
|
|
1522
|
-
function
|
|
1523
|
-
i0.ɵɵelementStart(0, "div",
|
|
1598
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_51_Conditional_42_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
1599
|
+
i0.ɵɵelementStart(0, "div", 175)(1, "label");
|
|
1524
1600
|
i0.ɵɵtext(2, "Cancellation Reason");
|
|
1525
1601
|
i0.ɵɵelementEnd();
|
|
1526
|
-
i0.ɵɵelementStart(3, "div",
|
|
1527
|
-
i0.ɵɵelement(4, "i",
|
|
1602
|
+
i0.ɵɵelementStart(3, "div", 163);
|
|
1603
|
+
i0.ɵɵelement(4, "i", 185);
|
|
1528
1604
|
i0.ɵɵtext(5);
|
|
1529
1605
|
i0.ɵɵelementEnd()();
|
|
1530
1606
|
} if (rf & 2) {
|
|
@@ -1532,99 +1608,107 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_48_Conditi
|
|
|
1532
1608
|
i0.ɵɵadvance(5);
|
|
1533
1609
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.CancellationReason, " ");
|
|
1534
1610
|
} }
|
|
1535
|
-
function
|
|
1536
|
-
i0.ɵɵelementStart(0, "div",
|
|
1611
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_51_Conditional_42_Template(rf, ctx) { if (rf & 1) {
|
|
1612
|
+
i0.ɵɵelementStart(0, "div", 162)(1, "label");
|
|
1537
1613
|
i0.ɵɵtext(2, "Cancelled");
|
|
1538
1614
|
i0.ɵɵelementEnd();
|
|
1539
|
-
i0.ɵɵelementStart(3, "div",
|
|
1540
|
-
i0.ɵɵelement(4, "i",
|
|
1615
|
+
i0.ɵɵelementStart(3, "div", 183);
|
|
1616
|
+
i0.ɵɵelement(4, "i", 184);
|
|
1541
1617
|
i0.ɵɵtext(5, " Yes ");
|
|
1542
1618
|
i0.ɵɵelementEnd()();
|
|
1543
|
-
i0.ɵɵconditionalCreate(6,
|
|
1619
|
+
i0.ɵɵconditionalCreate(6, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_51_Conditional_42_Conditional_6_Template, 6, 1, "div", 175);
|
|
1544
1620
|
} if (rf & 2) {
|
|
1545
1621
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
1546
1622
|
i0.ɵɵadvance(6);
|
|
1547
1623
|
i0.ɵɵconditional(ctx_r1.record.CancellationReason ? 6 : -1);
|
|
1548
1624
|
} }
|
|
1549
|
-
function
|
|
1550
|
-
const
|
|
1551
|
-
i0.ɵɵelementStart(0, "div",
|
|
1552
|
-
i0.ɵɵtext(
|
|
1625
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_51_Conditional_43_Template(rf, ctx) { if (rf & 1) {
|
|
1626
|
+
const _r24 = i0.ɵɵgetCurrentView();
|
|
1627
|
+
i0.ɵɵelementStart(0, "div", 176)(1, "div", 76)(2, "h4", 100);
|
|
1628
|
+
i0.ɵɵtext(3, "Model Selection Details");
|
|
1553
1629
|
i0.ɵɵelementEnd();
|
|
1554
|
-
i0.ɵɵelementStart(
|
|
1555
|
-
i0.ɵɵ
|
|
1630
|
+
i0.ɵɵelementStart(4, "button", 79);
|
|
1631
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_51_Conditional_43_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r24); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openFullScreen(ctx_r1.formattedModelSelection, "json", "Model Selection")); });
|
|
1632
|
+
i0.ɵɵelement(5, "i", 80);
|
|
1633
|
+
i0.ɵɵelementEnd()();
|
|
1634
|
+
i0.ɵɵelementStart(6, "div", 143)(7, "mj-code-editor", 186);
|
|
1635
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_51_Conditional_43_Template_mj_code_editor_ngModelChange_7_listener($event) { i0.ɵɵrestoreView(_r24); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.formattedModelSelection, $event) || (ctx_r1.formattedModelSelection = $event); return i0.ɵɵresetView($event); });
|
|
1556
1636
|
i0.ɵɵelementEnd()()();
|
|
1557
1637
|
} if (rf & 2) {
|
|
1558
1638
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
1559
|
-
i0.ɵɵadvance(
|
|
1639
|
+
i0.ɵɵadvance(7);
|
|
1560
1640
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.formattedModelSelection);
|
|
1561
1641
|
i0.ɵɵproperty("readonly", true)("language", "json")("lineWrapping", true);
|
|
1562
1642
|
} }
|
|
1563
|
-
function
|
|
1564
|
-
const
|
|
1565
|
-
i0.ɵɵelementStart(0, "div",
|
|
1566
|
-
i0.ɵɵtext(
|
|
1643
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_51_Conditional_44_Template(rf, ctx) { if (rf & 1) {
|
|
1644
|
+
const _r25 = i0.ɵɵgetCurrentView();
|
|
1645
|
+
i0.ɵɵelementStart(0, "div", 177)(1, "div", 76)(2, "h4", 100);
|
|
1646
|
+
i0.ɵɵtext(3, "Error Details");
|
|
1567
1647
|
i0.ɵɵelementEnd();
|
|
1568
|
-
i0.ɵɵelementStart(
|
|
1569
|
-
i0.ɵɵ
|
|
1648
|
+
i0.ɵɵelementStart(4, "button", 79);
|
|
1649
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_51_Conditional_44_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r25); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openFullScreen(ctx_r1.formattedErrorDetails, "json", "Error Details")); });
|
|
1650
|
+
i0.ɵɵelement(5, "i", 80);
|
|
1651
|
+
i0.ɵɵelementEnd()();
|
|
1652
|
+
i0.ɵɵelementStart(6, "div", 143)(7, "mj-code-editor", 187);
|
|
1653
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_51_Conditional_44_Template_mj_code_editor_ngModelChange_7_listener($event) { i0.ɵɵrestoreView(_r25); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.formattedErrorDetails, $event) || (ctx_r1.formattedErrorDetails = $event); return i0.ɵɵresetView($event); });
|
|
1570
1654
|
i0.ɵɵelementEnd()()();
|
|
1571
1655
|
} if (rf & 2) {
|
|
1572
1656
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
1573
|
-
i0.ɵɵadvance(
|
|
1657
|
+
i0.ɵɵadvance(7);
|
|
1574
1658
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.formattedErrorDetails);
|
|
1575
1659
|
i0.ɵɵproperty("readonly", true)("language", "json")("lineWrapping", true);
|
|
1576
1660
|
} }
|
|
1577
|
-
function
|
|
1578
|
-
i0.ɵɵelementStart(0, "div",
|
|
1661
|
+
function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_51_Template(rf, ctx) { if (rf & 1) {
|
|
1662
|
+
i0.ɵɵelementStart(0, "div", 67)(1, "div", 161)(2, "div", 162)(3, "label");
|
|
1579
1663
|
i0.ɵɵtext(4, "Status");
|
|
1580
1664
|
i0.ɵɵelementEnd();
|
|
1581
|
-
i0.ɵɵelementStart(5, "div",
|
|
1582
|
-
i0.ɵɵelement(6, "i",
|
|
1665
|
+
i0.ɵɵelementStart(5, "div", 163);
|
|
1666
|
+
i0.ɵɵelement(6, "i", 160);
|
|
1583
1667
|
i0.ɵɵtext(7);
|
|
1584
1668
|
i0.ɵɵelementEnd()();
|
|
1585
|
-
i0.ɵɵelementStart(8, "div",
|
|
1669
|
+
i0.ɵɵelementStart(8, "div", 162)(9, "label");
|
|
1586
1670
|
i0.ɵɵtext(10, "Selection Strategy");
|
|
1587
1671
|
i0.ɵɵelementEnd();
|
|
1588
|
-
i0.ɵɵelementStart(11, "div",
|
|
1589
|
-
i0.ɵɵelement(12, "i",
|
|
1672
|
+
i0.ɵɵelementStart(11, "div", 163);
|
|
1673
|
+
i0.ɵɵelement(12, "i", 173);
|
|
1590
1674
|
i0.ɵɵtext(13);
|
|
1591
1675
|
i0.ɵɵelementEnd()();
|
|
1592
|
-
i0.ɵɵelementStart(14, "div",
|
|
1676
|
+
i0.ɵɵelementStart(14, "div", 162)(15, "label");
|
|
1593
1677
|
i0.ɵɵtext(16, "Model Power Rank");
|
|
1594
1678
|
i0.ɵɵelementEnd();
|
|
1595
|
-
i0.ɵɵelementStart(17, "div",
|
|
1596
|
-
i0.ɵɵelement(18, "i",
|
|
1679
|
+
i0.ɵɵelementStart(17, "div", 163);
|
|
1680
|
+
i0.ɵɵelement(18, "i", 174);
|
|
1597
1681
|
i0.ɵɵtext(19);
|
|
1598
1682
|
i0.ɵɵelementEnd()();
|
|
1599
|
-
i0.ɵɵelementStart(20, "div",
|
|
1683
|
+
i0.ɵɵelementStart(20, "div", 162)(21, "label");
|
|
1600
1684
|
i0.ɵɵtext(22, "Cache Hit");
|
|
1601
1685
|
i0.ɵɵelementEnd();
|
|
1602
|
-
i0.ɵɵelementStart(23, "div",
|
|
1686
|
+
i0.ɵɵelementStart(23, "div", 163);
|
|
1603
1687
|
i0.ɵɵelement(24, "i");
|
|
1604
1688
|
i0.ɵɵtext(25);
|
|
1605
1689
|
i0.ɵɵelementEnd()();
|
|
1606
|
-
i0.ɵɵconditionalCreate(26,
|
|
1607
|
-
i0.ɵɵconditionalCreate(27,
|
|
1608
|
-
i0.ɵɵconditionalCreate(28,
|
|
1609
|
-
i0.ɵɵelementStart(29, "div",
|
|
1690
|
+
i0.ɵɵconditionalCreate(26, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_51_Conditional_26_Template, 7, 1, "div", 175);
|
|
1691
|
+
i0.ɵɵconditionalCreate(27, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_51_Conditional_27_Template, 7, 1, "div", 162);
|
|
1692
|
+
i0.ɵɵconditionalCreate(28, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_51_Conditional_28_Template, 6, 1, "div", 162);
|
|
1693
|
+
i0.ɵɵelementStart(29, "div", 162)(30, "label");
|
|
1610
1694
|
i0.ɵɵtext(31, "Was Selected Result");
|
|
1611
1695
|
i0.ɵɵelementEnd();
|
|
1612
|
-
i0.ɵɵelementStart(32, "div",
|
|
1696
|
+
i0.ɵɵelementStart(32, "div", 163);
|
|
1613
1697
|
i0.ɵɵelement(33, "i");
|
|
1614
1698
|
i0.ɵɵtext(34);
|
|
1615
1699
|
i0.ɵɵelementEnd()();
|
|
1616
|
-
i0.ɵɵelementStart(35, "div",
|
|
1700
|
+
i0.ɵɵelementStart(35, "div", 162)(36, "label");
|
|
1617
1701
|
i0.ɵɵtext(37, "Streaming Enabled");
|
|
1618
1702
|
i0.ɵɵelementEnd();
|
|
1619
|
-
i0.ɵɵelementStart(38, "div",
|
|
1703
|
+
i0.ɵɵelementStart(38, "div", 163);
|
|
1620
1704
|
i0.ɵɵelement(39, "i");
|
|
1621
1705
|
i0.ɵɵtext(40);
|
|
1622
1706
|
i0.ɵɵelementEnd()();
|
|
1623
|
-
i0.ɵɵconditionalCreate(41,
|
|
1624
|
-
i0.ɵɵconditionalCreate(42,
|
|
1707
|
+
i0.ɵɵconditionalCreate(41, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_51_Conditional_41_Template, 6, 1, "div", 162);
|
|
1708
|
+
i0.ɵɵconditionalCreate(42, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_51_Conditional_42_Template, 7, 1);
|
|
1625
1709
|
i0.ɵɵelementEnd();
|
|
1626
|
-
i0.ɵɵconditionalCreate(43,
|
|
1627
|
-
i0.ɵɵconditionalCreate(44,
|
|
1710
|
+
i0.ɵɵconditionalCreate(43, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_51_Conditional_43_Template, 8, 4, "div", 176);
|
|
1711
|
+
i0.ɵɵconditionalCreate(44, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_51_Conditional_44_Template, 8, 4, "div", 177);
|
|
1628
1712
|
i0.ɵɵelementEnd();
|
|
1629
1713
|
} if (rf & 2) {
|
|
1630
1714
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -1666,56 +1750,58 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_48_Templat
|
|
|
1666
1750
|
function MJAIPromptRunFormComponentExtended_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
1667
1751
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
1668
1752
|
i0.ɵɵelementStart(0, "form", 2, 0);
|
|
1669
|
-
i0.ɵɵelement(2, "mj-form-toolbar",
|
|
1670
|
-
i0.ɵɵelementStart(3, "div",
|
|
1753
|
+
i0.ɵɵelement(2, "mj-form-toolbar", 4);
|
|
1754
|
+
i0.ɵɵelementStart(3, "div", 5)(4, "div", 6)(5, "div", 7)(6, "div", 8);
|
|
1671
1755
|
i0.ɵɵelement(7, "i");
|
|
1672
1756
|
i0.ɵɵelementEnd();
|
|
1673
|
-
i0.ɵɵelementStart(8, "div",
|
|
1757
|
+
i0.ɵɵelementStart(8, "div", 9)(9, "h1", 10);
|
|
1674
1758
|
i0.ɵɵtext(10, " Prompt Run ");
|
|
1675
|
-
i0.ɵɵconditionalCreate(11, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_11_Template, 2, 1, "span",
|
|
1759
|
+
i0.ɵɵconditionalCreate(11, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_11_Template, 2, 1, "span", 11);
|
|
1676
1760
|
i0.ɵɵelementEnd();
|
|
1677
|
-
i0.ɵɵelementStart(12, "div",
|
|
1678
|
-
i0.ɵɵ
|
|
1679
|
-
i0.ɵɵtext(15);
|
|
1761
|
+
i0.ɵɵelementStart(12, "div", 12)(13, "div", 13)(14, "div", 14);
|
|
1762
|
+
i0.ɵɵtext(15, "Status");
|
|
1680
1763
|
i0.ɵɵelementEnd();
|
|
1681
|
-
i0.ɵɵ
|
|
1682
|
-
i0.ɵɵ
|
|
1683
|
-
i0.ɵɵ
|
|
1684
|
-
i0.ɵɵ
|
|
1685
|
-
i0.ɵɵconditionalCreate(20, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_20_Template,
|
|
1764
|
+
i0.ɵɵelementStart(16, "div", 15);
|
|
1765
|
+
i0.ɵɵelement(17, "span", 16)(18, "i");
|
|
1766
|
+
i0.ɵɵtext(19);
|
|
1767
|
+
i0.ɵɵelementEnd()();
|
|
1768
|
+
i0.ɵɵconditionalCreate(20, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_20_Template, 6, 5, "div", 17);
|
|
1769
|
+
i0.ɵɵconditionalCreate(21, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_21_Template, 2, 1);
|
|
1770
|
+
i0.ɵɵconditionalCreate(22, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_22_Template, 8, 2, "div", 18);
|
|
1771
|
+
i0.ɵɵconditionalCreate(23, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_23_Template, 4, 0, "span", 19);
|
|
1686
1772
|
i0.ɵɵelementEnd()()();
|
|
1687
|
-
i0.ɵɵelementStart(
|
|
1688
|
-
i0.ɵɵlistener("click", function
|
|
1689
|
-
i0.ɵɵelement(23, "i", 20);
|
|
1690
|
-
i0.ɵɵtext(24, " Re-Run ");
|
|
1691
|
-
i0.ɵɵelementEnd();
|
|
1692
|
-
i0.ɵɵelementStart(25, "button", 21);
|
|
1693
|
-
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Template_button_click_25_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.refreshData()); });
|
|
1773
|
+
i0.ɵɵelementStart(24, "div", 20)(25, "button", 21);
|
|
1774
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Template_button_click_25_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.reRunPrompt()); });
|
|
1694
1775
|
i0.ɵɵelement(26, "i", 22);
|
|
1776
|
+
i0.ɵɵtext(27, " Re-Run ");
|
|
1777
|
+
i0.ɵɵelementEnd();
|
|
1778
|
+
i0.ɵɵelementStart(28, "button", 23);
|
|
1779
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Template_button_click_28_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.refreshData()); });
|
|
1780
|
+
i0.ɵɵelement(29, "i", 24);
|
|
1695
1781
|
i0.ɵɵelementEnd()()();
|
|
1696
|
-
i0.ɵɵconditionalCreate(
|
|
1782
|
+
i0.ɵɵconditionalCreate(30, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_30_Template, 37, 10)(31, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_31_Template, 23, 4, "div", 25);
|
|
1697
1783
|
i0.ɵɵelementEnd();
|
|
1698
|
-
i0.ɵɵelementStart(
|
|
1699
|
-
i0.ɵɵlistener("stateChange", function
|
|
1700
|
-
i0.ɵɵtemplate(
|
|
1784
|
+
i0.ɵɵelementStart(32, "div", 26)(33, "kendo-panelbar", 27)(34, "kendo-panelbar-item", 28);
|
|
1785
|
+
i0.ɵɵlistener("stateChange", function MJAIPromptRunFormComponentExtended_Conditional_1_Template_kendo_panelbar_item_stateChange_34_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onInputPanelToggle($event)); });
|
|
1786
|
+
i0.ɵɵtemplate(35, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_35_Template, 4, 1, "ng-template", 29)(36, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_36_Template, 3, 1, "ng-template", 30);
|
|
1701
1787
|
i0.ɵɵelementEnd();
|
|
1702
|
-
i0.ɵɵelementStart(
|
|
1703
|
-
i0.ɵɵlistener("stateChange", function
|
|
1704
|
-
i0.ɵɵtemplate(
|
|
1788
|
+
i0.ɵɵelementStart(37, "kendo-panelbar-item", 28);
|
|
1789
|
+
i0.ɵɵlistener("stateChange", function MJAIPromptRunFormComponentExtended_Conditional_1_Template_kendo_panelbar_item_stateChange_37_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onResultPanelToggle($event)); });
|
|
1790
|
+
i0.ɵɵtemplate(38, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_38_Template, 5, 2, "ng-template", 29)(39, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_39_Template, 4, 2, "ng-template", 30);
|
|
1705
1791
|
i0.ɵɵelementEnd();
|
|
1706
|
-
i0.ɵɵelementStart(
|
|
1707
|
-
i0.ɵɵlistener("stateChange", function
|
|
1708
|
-
i0.ɵɵtemplate(
|
|
1792
|
+
i0.ɵɵelementStart(40, "kendo-panelbar-item", 28);
|
|
1793
|
+
i0.ɵɵlistener("stateChange", function MJAIPromptRunFormComponentExtended_Conditional_1_Template_kendo_panelbar_item_stateChange_40_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onMetricsPanelToggle($event)); });
|
|
1794
|
+
i0.ɵɵtemplate(41, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_41_Template, 3, 0, "ng-template", 29)(42, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_42_Template, 41, 14, "ng-template", 30);
|
|
1709
1795
|
i0.ɵɵelementEnd();
|
|
1710
|
-
i0.ɵɵconditionalCreate(
|
|
1711
|
-
i0.ɵɵconditionalCreate(
|
|
1712
|
-
i0.ɵɵelementStart(
|
|
1713
|
-
i0.ɵɵtemplate(
|
|
1796
|
+
i0.ɵɵconditionalCreate(43, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_43_Template, 3, 1, "kendo-panelbar-item", 31);
|
|
1797
|
+
i0.ɵɵconditionalCreate(44, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_44_Template, 3, 1, "kendo-panelbar-item", 31);
|
|
1798
|
+
i0.ɵɵelementStart(45, "kendo-panelbar-item", 31);
|
|
1799
|
+
i0.ɵɵtemplate(46, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_46_Template, 3, 0, "ng-template", 29)(47, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_47_Template, 61, 32, "ng-template", 30);
|
|
1714
1800
|
i0.ɵɵelementEnd();
|
|
1715
|
-
i0.ɵɵconditionalCreate(
|
|
1716
|
-
i0.ɵɵelementStart(
|
|
1717
|
-
i0.ɵɵlistener("stateChange", function
|
|
1718
|
-
i0.ɵɵtemplate(
|
|
1801
|
+
i0.ɵɵconditionalCreate(48, MJAIPromptRunFormComponentExtended_Conditional_1_Conditional_48_Template, 3, 1, "kendo-panelbar-item", 31);
|
|
1802
|
+
i0.ɵɵelementStart(49, "kendo-panelbar-item", 28);
|
|
1803
|
+
i0.ɵɵlistener("stateChange", function MJAIPromptRunFormComponentExtended_Conditional_1_Template_kendo_panelbar_item_stateChange_49_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onModelSelectionPanelToggle($event)); });
|
|
1804
|
+
i0.ɵɵtemplate(50, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_50_Template, 5, 2, "ng-template", 29)(51, MJAIPromptRunFormComponentExtended_Conditional_1_ng_template_51_Template, 45, 21, "ng-template", 30);
|
|
1719
1805
|
i0.ɵɵelementEnd()()()();
|
|
1720
1806
|
} if (rf & 2) {
|
|
1721
1807
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
@@ -1728,24 +1814,23 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_Template(rf, ctx) { if
|
|
|
1728
1814
|
i0.ɵɵstyleProp("color", ctx_r1.getStatusColor());
|
|
1729
1815
|
i0.ɵɵadvance(4);
|
|
1730
1816
|
i0.ɵɵconditional(ctx_r1.record.ID ? 11 : -1);
|
|
1731
|
-
i0.ɵɵadvance(
|
|
1817
|
+
i0.ɵɵadvance(6);
|
|
1732
1818
|
i0.ɵɵstyleProp("background-color", ctx_r1.getStatusColor());
|
|
1733
1819
|
i0.ɵɵadvance();
|
|
1734
1820
|
i0.ɵɵclassMap("fa-solid " + ctx_r1.getStatusIcon());
|
|
1821
|
+
i0.ɵɵstyleProp("color", ctx_r1.getStatusColor());
|
|
1735
1822
|
i0.ɵɵadvance();
|
|
1736
1823
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.getStatusText(), " ");
|
|
1737
1824
|
i0.ɵɵadvance();
|
|
1738
|
-
i0.ɵɵconditional(ctx_r1.record.RunType ?
|
|
1825
|
+
i0.ɵɵconditional(ctx_r1.record.RunType ? 20 : -1);
|
|
1739
1826
|
i0.ɵɵadvance();
|
|
1740
|
-
i0.ɵɵconditional(ctx_r1.prompt ?
|
|
1827
|
+
i0.ɵɵconditional(ctx_r1.prompt ? 21 : -1);
|
|
1741
1828
|
i0.ɵɵadvance();
|
|
1742
|
-
i0.ɵɵconditional(ctx_r1.model ?
|
|
1829
|
+
i0.ɵɵconditional(ctx_r1.model ? 22 : -1);
|
|
1743
1830
|
i0.ɵɵadvance();
|
|
1744
|
-
i0.ɵɵconditional(ctx_r1.record.
|
|
1745
|
-
i0.ɵɵadvance();
|
|
1746
|
-
i0.ɵɵconditional(ctx_r1.record.RerunFromPromptRunID ? 20 : -1);
|
|
1831
|
+
i0.ɵɵconditional(ctx_r1.record.RerunFromPromptRunID ? 23 : -1);
|
|
1747
1832
|
i0.ɵɵadvance(7);
|
|
1748
|
-
i0.ɵɵconditional(ctx_r1.record.ConfigurationID ?
|
|
1833
|
+
i0.ɵɵconditional(ctx_r1.record.ConfigurationID ? 30 : 31);
|
|
1749
1834
|
i0.ɵɵadvance(3);
|
|
1750
1835
|
i0.ɵɵproperty("keepItemContent", true);
|
|
1751
1836
|
i0.ɵɵadvance();
|
|
@@ -1755,16 +1840,46 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_Template(rf, ctx) { if
|
|
|
1755
1840
|
i0.ɵɵadvance(3);
|
|
1756
1841
|
i0.ɵɵproperty("expanded", ctx_r1.metricsExpanded);
|
|
1757
1842
|
i0.ɵɵadvance(3);
|
|
1758
|
-
i0.ɵɵconditional(ctx_r1.record && (ctx_r1.record.ValidationAttemptCount && ctx_r1.record.ValidationAttemptCount > 0 || ctx_r1.record.ValidationBehavior) ?
|
|
1843
|
+
i0.ɵɵconditional(ctx_r1.record && (ctx_r1.record.ValidationAttemptCount && ctx_r1.record.ValidationAttemptCount > 0 || ctx_r1.record.ValidationBehavior) ? 43 : -1);
|
|
1759
1844
|
i0.ɵɵadvance();
|
|
1760
|
-
i0.ɵɵconditional(ctx_r1.record.ParentID || ctx_r1.childRuns.length > 0 ?
|
|
1845
|
+
i0.ɵɵconditional(ctx_r1.record.ParentID || ctx_r1.childRuns.length > 0 ? 44 : -1);
|
|
1761
1846
|
i0.ɵɵadvance();
|
|
1762
1847
|
i0.ɵɵproperty("expanded", false);
|
|
1763
1848
|
i0.ɵɵadvance(3);
|
|
1764
|
-
i0.ɵɵconditional(ctx_r1.record.ModelSpecificResponseDetails ?
|
|
1849
|
+
i0.ɵɵconditional(ctx_r1.record.ModelSpecificResponseDetails ? 48 : -1);
|
|
1765
1850
|
i0.ɵɵadvance();
|
|
1766
1851
|
i0.ɵɵproperty("expanded", false);
|
|
1767
1852
|
} }
|
|
1853
|
+
function MJAIPromptRunFormComponentExtended_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
1854
|
+
const _r26 = i0.ɵɵgetCurrentView();
|
|
1855
|
+
i0.ɵɵelementStart(0, "div", 188);
|
|
1856
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_2_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r26); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeFullScreen()); });
|
|
1857
|
+
i0.ɵɵelementStart(1, "div", 189);
|
|
1858
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_2_Template_div_click_1_listener($event) { i0.ɵɵrestoreView(_r26); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
1859
|
+
i0.ɵɵelementStart(2, "div", 190)(3, "span", 191);
|
|
1860
|
+
i0.ɵɵelement(4, "i", 80);
|
|
1861
|
+
i0.ɵɵtext(5);
|
|
1862
|
+
i0.ɵɵelementEnd();
|
|
1863
|
+
i0.ɵɵelementStart(6, "div", 192)(7, "button", 193);
|
|
1864
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_2_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r26); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.copyToClipboard(ctx_r1.FullScreenContent, ctx_r1.FullScreenTitle)); });
|
|
1865
|
+
i0.ɵɵelement(8, "i", 78);
|
|
1866
|
+
i0.ɵɵtext(9, " Copy ");
|
|
1867
|
+
i0.ɵɵelementEnd();
|
|
1868
|
+
i0.ɵɵelementStart(10, "button", 194);
|
|
1869
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_2_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r26); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeFullScreen()); });
|
|
1870
|
+
i0.ɵɵelement(11, "i", 195);
|
|
1871
|
+
i0.ɵɵtext(12, " Close ");
|
|
1872
|
+
i0.ɵɵelementEnd()()();
|
|
1873
|
+
i0.ɵɵelementStart(13, "div", 196);
|
|
1874
|
+
i0.ɵɵelement(14, "mj-code-editor", 197);
|
|
1875
|
+
i0.ɵɵelementEnd()()();
|
|
1876
|
+
} if (rf & 2) {
|
|
1877
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
1878
|
+
i0.ɵɵadvance(5);
|
|
1879
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.FullScreenTitle, " ");
|
|
1880
|
+
i0.ɵɵadvance(9);
|
|
1881
|
+
i0.ɵɵproperty("value", ctx_r1.FullScreenContent)("readonly", true)("language", ctx_r1.FullScreenLanguage);
|
|
1882
|
+
} }
|
|
1768
1883
|
let MJAIPromptRunFormComponentExtended = class MJAIPromptRunFormComponentExtended extends MJAIPromptRunFormComponent {
|
|
1769
1884
|
constructor() {
|
|
1770
1885
|
super(...arguments);
|
|
@@ -1806,6 +1921,10 @@ let MJAIPromptRunFormComponentExtended = class MJAIPromptRunFormComponentExtende
|
|
|
1806
1921
|
// Validation data
|
|
1807
1922
|
this.validationAttempts = [];
|
|
1808
1923
|
this.validationSummary = null;
|
|
1924
|
+
// Full-screen overlay state
|
|
1925
|
+
this.FullScreenContent = null;
|
|
1926
|
+
this.FullScreenLanguage = 'json';
|
|
1927
|
+
this.FullScreenTitle = '';
|
|
1809
1928
|
// Field injections
|
|
1810
1929
|
this.testHarnessWindowService = inject(TestHarnessWindowService);
|
|
1811
1930
|
this.viewContainerRef = inject(ViewContainerRef);
|
|
@@ -2186,6 +2305,16 @@ let MJAIPromptRunFormComponentExtended = class MJAIPromptRunFormComponentExtende
|
|
|
2186
2305
|
this.cdr.detectChanges();
|
|
2187
2306
|
}
|
|
2188
2307
|
}
|
|
2308
|
+
openFullScreen(content, language, title) {
|
|
2309
|
+
this.FullScreenContent = content;
|
|
2310
|
+
this.FullScreenLanguage = language;
|
|
2311
|
+
this.FullScreenTitle = title;
|
|
2312
|
+
this.cdr.detectChanges();
|
|
2313
|
+
}
|
|
2314
|
+
closeFullScreen() {
|
|
2315
|
+
this.FullScreenContent = null;
|
|
2316
|
+
this.cdr.detectChanges();
|
|
2317
|
+
}
|
|
2189
2318
|
loadValidationData() {
|
|
2190
2319
|
const parseOptions = {
|
|
2191
2320
|
extractInlineJson: true,
|
|
@@ -2229,14 +2358,17 @@ let MJAIPromptRunFormComponentExtended = class MJAIPromptRunFormComponentExtende
|
|
|
2229
2358
|
// Don't auto-expand validation panel anymore - let user expand when needed
|
|
2230
2359
|
}
|
|
2231
2360
|
static { this.ɵfac = /*@__PURE__*/ (() => { let ɵMJAIPromptRunFormComponentExtended_BaseFactory; return function MJAIPromptRunFormComponentExtended_Factory(__ngFactoryType__) { return (ɵMJAIPromptRunFormComponentExtended_BaseFactory || (ɵMJAIPromptRunFormComponentExtended_BaseFactory = i0.ɵɵgetInheritedFactory(MJAIPromptRunFormComponentExtended)))(__ngFactoryType__ || MJAIPromptRunFormComponentExtended); }; })(); }
|
|
2232
|
-
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MJAIPromptRunFormComponentExtended, selectors: [["mj-ai-prompt-run-form"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls:
|
|
2361
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MJAIPromptRunFormComponentExtended, selectors: [["mj-ai-prompt-run-form"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 3, vars: 2, consts: [["form", "ngForm"], [1, "record-form-container", 2, "height", "100%", "display", "flex", "flex-direction", "column"], [1, "record-form", 2, "display", "flex", "flex-direction", "column", "height", "100%", "overflow", "hidden"], [1, "fullscreen-overlay"], [3, "Form"], [1, "prompt-run-header"], [1, "header-content"], [1, "run-overview"], [1, "run-icon-wrapper"], [1, "run-info"], [1, "run-title"], [1, "run-id"], [1, "run-meta"], [1, "meta-card", "status-card"], [1, "c3-card-label"], [1, "meta-card-body"], [1, "status-indicator"], [1, "meta-card", "execution-card"], [1, "model-card-c3"], ["title", "View Original Run", 1, "original-run"], [1, "run-actions"], ["kendoButton", "", "fillMode", "outline", "size", "small", "title", "Re-run this prompt", 3, "click"], [1, "fa-solid", "fa-play-circle"], ["kendoButton", "", "fillMode", "outline", "size", "small", "title", "Refresh data", 3, "click"], [1, "fa-solid", "fa-refresh"], [1, "metrics-bar"], [1, "form-content", 2, "display", "flex", "flex-direction", "column", "flex", "1", "min-height", "0", "overflow-y", "auto"], [3, "keepItemContent"], [3, "stateChange", "expanded"], ["kendoPanelBarItemTitle", ""], ["kendoPanelBarContent", ""], [3, "expanded"], [1, "prompt-card-c3"], [1, "meta-card", "prompt-single-card"], ["title", "View Agent Prompt", 1, "c3-child-section", 3, "click"], [1, "fa-solid", "fa-comment", "prompt-icon"], [1, "c3-divider"], [1, "c3-line"], [1, "c3-divider-label"], ["title", "View System Prompt", 1, "c3-parent-section", 3, "click"], [1, "fa-solid", "fa-cog"], [1, "fa-solid", "fa-arrow-up-right-from-square", "c3-link-icon"], ["title", "View Prompt", 1, "meta-card-body", "clickable", 3, "click"], [1, "fa-solid", "fa-comment-dots", 2, "color", "var(--mj-brand-primary)"], ["title", "View Model", 1, "c3-card-body", 3, "click"], [1, "c3-model-name"], [1, "fa-solid", "fa-microchip"], [1, "c3-vendor-name"], [1, "fa-solid", "fa-level-up-alt"], [1, "original-link", 3, "click"], [1, "metric-item"], [1, "metric-content"], [1, "metric-label"], [1, "metric-value"], ["href", "javascript:void(0)", 1, "config-link", 3, "click"], [1, "fa-solid", "fa-clock"], [1, "fa-solid", "fa-coins"], [1, "fa-solid", "fa-dollar-sign"], [1, "fa-solid", "fa-temperature-high"], [1, "fa-solid", "fa-percentage"], [1, "fa-solid", "fa-list-ol"], [1, "fa-solid", "fa-tachometer-alt"], [1, "fa-solid", "fa-code"], [1, "fa-solid", "fa-calendar"], [1, "panel-title"], [1, "fa-solid", "fa-comment-dots"], [1, "panel-badge"], [1, "panel-content"], [1, "nested-panels"], [1, "empty-state"], [1, "sub-expansion-panel", 3, "expanded", "animation"], ["kendoExpansionPanelTitleDirective", ""], [1, "sub-panel-content"], [1, "loading-state"], [3, "messages"], [1, "json-editor-container"], [1, "json-toolbar"], ["kendoButton", "", "fillMode", "flat", "size", "small", "title", "Copy JSON", 3, "click"], [1, "fa-solid", "fa-copy"], ["kendoButton", "", "fillMode", "flat", "size", "small", "title", "View full screen", 3, "click"], [1, "fa-solid", "fa-expand"], ["name", "formattedMessages", 2, "height", "400px", "width", "100%", 3, "ngModelChange", "ngModel", "readonly", "language", "lineWrapping"], [1, "sub-panel-title"], [1, "fa-solid", "fa-comments"], [1, "panel-count"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "fa-solid", "fa-comment-slash"], [1, "fa-solid", "fa-database"], ["name", "formattedData", 2, "height", "300px", "width", "100%", 3, "ngModelChange", "ngModel", "readonly", "language", "lineWrapping"], [1, "fa-solid", "fa-square-check"], [1, "panel-badge", "error"], [1, "error-message"], [1, "fa-solid", "fa-exclamation-triangle"], [1, "error-content"], ["name", "formattedResult", 2, "height", "400px", "width", "100%", 3, "ngModelChange", "ngModel", "readonly", "language", "lineWrapping"], [1, "fa-solid", "fa-inbox"], [1, "error-info"], [1, "finish-reason"], [1, "error-details"], [1, "error-hint"], [2, "margin", "0"], [2, "height", "200px", "width", "100%", 3, "ngModel", "disabled", "language", "lineWrapping"], [1, "fa-solid", "fa-chart-line"], [1, "metrics-grid"], [1, "metric-card"], [1, "metric-header"], [1, "fa-solid", "fa-message"], [1, "metric-value", "large"], [1, "metric-rollup"], [1, "fa-solid", "fa-reply"], [1, "metric-currency"], [1, "additional-metrics"], [1, "metric-row"], [1, "fa-solid", "fa-hourglass-start"], [1, "fa-solid", "fa-brain"], [1, "fa-solid", "fa-flag-checkered"], [1, "metric-value", "link", 3, "click"], [1, "fa-solid", "fa-external-link"], [1, "fa-solid", "fa-shield-check"], [1, "panel-badge", "success"], [1, "validation-summary"], [1, "summary-header"], [1, "validation-status"], [1, "validation-metrics"], [1, "metric-card", "small"], [1, "validation-error"], [1, "common-error"], [1, "retry-timeline"], [1, "validation-attempts"], [1, "validation-json"], [1, "error-count"], [1, "fa-solid", "fa-repeat"], [1, "timeline-info"], [1, "timeline-stat"], [1, "fa-solid", "fa-stopwatch"], [1, "attempts-list"], [1, "attempt-item", 3, "success", "failed"], [1, "attempt-item"], [1, "attempt-number"], [1, "attempt-details"], [1, "attempt-time"], [1, "output-length"], [1, "attempt-error"], [1, "json-viewer-container"], ["name", "formattedValidationSummary", 2, "height", "200px", "width", "100%", 3, "ngModelChange", "ngModel", "readonly", "language", "lineWrapping"], ["name", "formattedValidationAttempts", 2, "height", "300px", "width", "100%", 3, "ngModelChange", "ngModel", "readonly", "language", "lineWrapping"], [1, "fa-solid", "fa-sitemap"], [1, "parent-run-section"], [1, "child-runs-section"], [1, "run-item", "parent", 3, "click"], [1, "run-item-icon"], [1, "run-item-content"], [1, "run-item-title"], [1, "run-item-type"], [1, "run-item-meta"], [1, "fa-solid", "fa-level-down-alt"], [1, "runs-list"], [1, "run-item", "child"], [1, "run-item", "child", 3, "click"], [1, "execution-order"], [1, "fa-solid", "fa-info-circle"], [1, "detail-fields-grid"], [1, "detail-field"], [1, "detail-value"], [1, "fa-solid", "fa-filter"], [1, "fa-solid", "fa-plus-circle"], [1, "fa-solid", "fa-seedling"], [1, "fa-solid", "fa-stop-circle"], [1, "fa-solid", "fa-wand-magic-sparkles"], ["title", "View Agent", 1, "detail-value", "clickable", 3, "click"], [1, "fa-solid", "fa-robot"], [1, "fa-solid", "fa-check-circle"], ["name", "formattedModelSpecificResponseDetails", 2, "height", "400px", "width", "100%", 3, "ngModelChange", "ngModel", "readonly", "language", "lineWrapping"], [1, "fa-solid", "fa-strategy"], [1, "fa-solid", "fa-ranking-star"], [1, "detail-field", "full-width"], [1, "model-selection-json"], [1, "error-details-json"], [1, "fa-solid", "fa-key"], ["title", "View Judge Prompt", 1, "detail-value", "clickable", 3, "click"], [1, "fa-solid", "fa-gavel"], [1, "fa-solid", "fa-star"], [1, "fa-solid", "fa-bolt"], [1, "detail-value", "error"], [1, "fa-solid", "fa-ban"], [1, "fa-solid", "fa-exclamation-circle"], ["name", "formattedModelSelection", 2, "height", "300px", "width", "100%", 3, "ngModelChange", "ngModel", "readonly", "language", "lineWrapping"], ["name", "formattedErrorDetails", 2, "height", "200px", "width", "100%", 3, "ngModelChange", "ngModel", "readonly", "language", "lineWrapping"], [1, "fullscreen-overlay", 3, "click"], [1, "fullscreen-container", 3, "click"], [1, "fullscreen-header"], [1, "fullscreen-title"], [1, "fullscreen-actions"], ["kendoButton", "", "fillMode", "flat", "size", "small", "title", "Copy content", 3, "click"], ["kendoButton", "", "fillMode", "flat", "size", "small", "title", "Close", 3, "click"], [1, "fa-solid", "fa-times"], [1, "fullscreen-body"], [2, "height", "100%", "width", "100%", 3, "value", "readonly", "language"]], template: function MJAIPromptRunFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
|
|
2233
2362
|
i0.ɵɵelementStart(0, "div", 1);
|
|
2234
|
-
i0.ɵɵconditionalCreate(1, MJAIPromptRunFormComponentExtended_Conditional_1_Template,
|
|
2363
|
+
i0.ɵɵconditionalCreate(1, MJAIPromptRunFormComponentExtended_Conditional_1_Template, 52, 29, "form", 2);
|
|
2364
|
+
i0.ɵɵconditionalCreate(2, MJAIPromptRunFormComponentExtended_Conditional_2_Template, 15, 4, "div", 3);
|
|
2235
2365
|
i0.ɵɵelementEnd();
|
|
2236
2366
|
} if (rf & 2) {
|
|
2237
2367
|
i0.ɵɵadvance();
|
|
2238
2368
|
i0.ɵɵconditional(ctx.record ? 1 : -1);
|
|
2239
|
-
} }, dependencies: [i1.ɵNgNoValidate, i1.NgControlStatus, i1.NgControlStatusGroup, i1.NgModel, i1.NgForm, i2.ExpansionPanelComponent, i2.ExpansionPanelTitleDirective, i2.PanelBarComponent, i2.PanelBarItemComponent, i2.PanelBarContentDirective, i2.PanelBarItemTitleDirective, i3.ButtonComponent, i4.MjFormToolbarComponent, i5.CodeEditorComponent, i6.ChatMessageViewerComponent, i7.DatePipe], styles: ["\n\n[_nghost-%COMP%] {\n display: block;\n height: 100%;\n}\n\n.record-form-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n overflow: hidden;\n}\n\n.record-form[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0 !important;\n overflow: hidden;\n}\n\n.form-content[_ngcontent-%COMP%] {\n padding: 16px;\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n}\n\n\n\n.error-info[_ngcontent-%COMP%] {\n margin-top: 16px;\n padding: 16px;\n background-color: color-mix(in srgb, var(--mj-status-error) 5%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 20%, var(--mj-bg-surface));\n border-radius: 8px;\n}\n\n.finish-reason[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n color: var(--mj-status-error);\n font-size: 14px;\n}\n\n.error-details[_ngcontent-%COMP%] {\n margin-top: 12px;\n}\n\n.error-details[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n color: color-mix(in srgb, var(--mj-status-error) 80%, black);\n font-size: 14px;\n font-weight: 600;\n}\n\n.error-hint[_ngcontent-%COMP%] {\n margin: 0;\n color: color-mix(in srgb, var(--mj-status-error) 70%, black);\n font-size: 14px;\n font-style: italic;\n}\n\n\n\n.prompt-run-header[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n padding: 20px;\n margin-bottom: 0;\n}\n\n.header-content[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 20px;\n margin-bottom: 16px;\n}\n\n.run-overview[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 16px;\n flex: 1;\n}\n\n.run-icon-wrapper[_ngcontent-%COMP%] {\n width: 56px;\n height: 56px;\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.run-icon-wrapper[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 24px;\n}\n\n.run-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.run-title[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n font-size: 1.5em;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.run-id[_ngcontent-%COMP%] {\n font-size: 0.8em;\n color: var(--mj-text-muted);\n font-weight: 400;\n font-family: 'Courier New', monospace;\n}\n\n.run-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex-wrap: wrap;\n}\n\n.status-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n border-radius: 16px;\n color: white;\n font-size: 0.85em;\n font-weight: 500;\n}\n\n.status-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 0.9em;\n}\n\n.run-type-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n border-radius: 16px;\n background: var(--mj-bg-surface-sunken);\n font-size: 0.85em;\n font-weight: 500;\n}\n\n.prompt-name[_ngcontent-%COMP%], .model-name[_ngcontent-%COMP%], .vendor-name[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n border-radius: 16px;\n background: var(--mj-border-default);\n color: var(--mj-text-secondary);\n font-size: 0.85em;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.prompt-name[_ngcontent-%COMP%]:hover, .model-name[_ngcontent-%COMP%]:hover, .vendor-name[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-strong);\n color: var(--mj-brand-primary);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n}\n\n.original-run[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n border-radius: 16px;\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n font-size: 0.85em;\n}\n\n.original-link[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n text-decoration: none;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.original-link[_ngcontent-%COMP%]:hover {\n color: color-mix(in srgb, var(--mj-status-error) 85%, black);\n text-decoration: underline;\n}\n\n.run-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n\n\n.metrics-bar[_ngcontent-%COMP%] {\n display: flex;\n gap: 24px;\n padding-top: 16px;\n border-top: 1px solid var(--mj-border-default);\n flex-wrap: wrap;\n}\n\n.metric-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.metric-item[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n font-size: 1.2em;\n color: var(--mj-text-muted);\n width: 24px;\n text-align: center;\n}\n\n.metric-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n\n.metric-label[_ngcontent-%COMP%] {\n font-size: 0.75em;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.metric-value[_ngcontent-%COMP%] {\n font-size: 1.1em;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.config-link[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n text-decoration: none;\n cursor: pointer;\n transition: color 0.2s;\n}\n\n.config-link[_ngcontent-%COMP%]:hover {\n color: color-mix(in srgb, var(--mj-brand-primary) 75%, black);\n text-decoration: underline;\n}\n\n\n\n.form-content[_ngcontent-%COMP%] {\n padding: 16px;\n}\n\n.panel-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n}\n\n\n\n.sub-panel-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 500;\n font-size: 0.95em;\n}\n\n.sub-panel-content[_ngcontent-%COMP%] {\n padding: 0;\n}\n\n\n\n.k-panelbar[_ngcontent-%COMP%] .k-panelbar[_ngcontent-%COMP%] {\n border: none;\n background: transparent;\n}\n\n.k-panelbar[_ngcontent-%COMP%] .k-panelbar[_ngcontent-%COMP%] > .k-item[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n margin-bottom: 8px;\n border-radius: 6px;\n overflow: hidden;\n}\n\n.k-panelbar[_ngcontent-%COMP%] .k-panelbar[_ngcontent-%COMP%] > .k-item[_ngcontent-%COMP%] > .k-link[_ngcontent-%COMP%] {\n background-color: var(--mj-bg-surface-card);\n padding: 12px 16px;\n}\n\n.k-panelbar[_ngcontent-%COMP%] .k-panelbar[_ngcontent-%COMP%] > .k-item.k-expanded[_ngcontent-%COMP%] > .k-link[_ngcontent-%COMP%] {\n background-color: var(--mj-bg-surface-sunken);\n}\n\n.k-panelbar[_ngcontent-%COMP%] .k-panelbar[_ngcontent-%COMP%] .k-content[_ngcontent-%COMP%] {\n padding: 0;\n background: var(--mj-bg-surface);\n}\n\n\n\n.sub-panel-content[_ngcontent-%COMP%] mj-chat-message-viewer[_ngcontent-%COMP%] {\n display: block;\n min-height: 200px;\n max-height: 750px; \n\n height: auto;\n overflow: hidden;\n}\n\n\n\n.sub-expansion-panel[_ngcontent-%COMP%] {\n margin-bottom: 8px;\n}\n\n.sub-expansion-panel[_ngcontent-%COMP%] .k-expander {\n background-color: var(--mj-bg-surface-card);\n border-color: var(--mj-border-default);\n}\n\n.sub-expansion-panel[_ngcontent-%COMP%] .k-expander:hover {\n background-color: var(--mj-bg-surface-sunken);\n}\n\n.sub-expansion-panel[_ngcontent-%COMP%] .k-header {\n background-color: var(--mj-bg-surface-card);\n border-color: var(--mj-border-default);\n}\n\n.sub-expansion-panel[_ngcontent-%COMP%] .k-content {\n background-color: var(--mj-bg-surface);\n border-color: var(--mj-border-default);\n}\n\n.panel-badge[_ngcontent-%COMP%] {\n margin-left: auto;\n padding: 2px 8px;\n border-radius: 12px;\n background: var(--mj-border-default);\n color: var(--mj-text-secondary);\n font-size: 0.75em;\n font-weight: 500;\n}\n\n.panel-badge.error[_ngcontent-%COMP%] {\n background: var(--mj-status-error);\n color: white;\n}\n\n.panel-count[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-weight: 400;\n font-size: 0.9em;\n}\n\n.panel-content[_ngcontent-%COMP%] {\n padding: 20px;\n max-height: none !important;\n overflow: visible !important;\n}\n\n\n\n.json-editor-container[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\n}\n\n.json-toolbar[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n padding: 8px 12px;\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n justify-content: flex-end;\n}\n\n\n\n.error-message[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 6%, var(--mj-bg-surface));\n border: 1px solid var(--mj-status-error);\n border-radius: 6px;\n padding: 16px;\n display: flex;\n gap: 16px;\n margin-bottom: 16px;\n}\n\n.error-message[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 1.5em;\n color: var(--mj-status-error);\n flex-shrink: 0;\n}\n\n.error-content[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n color: var(--mj-status-error);\n font-size: 1em;\n}\n\n.error-content[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-text-secondary);\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 60px 40px;\n color: var(--mj-text-muted);\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 3em;\n margin-bottom: 16px;\n opacity: 0.3;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 1.1em;\n}\n\n\n\n.loading-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 60px 40px;\n color: var(--mj-text-muted);\n}\n\n.loading-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 3em;\n margin-bottom: 16px;\n opacity: 0.6;\n color: var(--mj-brand-primary);\n}\n\n.loading-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 1.1em;\n}\n\n\n\n.metrics-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 20px;\n margin-bottom: 24px;\n}\n\n.metric-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 20px;\n}\n\n.metric-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 12px;\n}\n\n.metric-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 1.2em;\n color: var(--mj-text-muted);\n}\n\n.metric-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 0.9em;\n color: var(--mj-text-muted);\n font-weight: 500;\n}\n\n.metric-value.large[_ngcontent-%COMP%] {\n font-size: 1.8em;\n font-weight: 700;\n color: var(--mj-text-primary);\n}\n\n.metric-rollup[_ngcontent-%COMP%] {\n margin-top: 8px;\n font-size: 0.85em;\n color: var(--mj-text-muted);\n}\n\n.metric-currency[_ngcontent-%COMP%] {\n margin-top: 4px;\n font-size: 0.85em;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n}\n\n\n\n.additional-metrics[_ngcontent-%COMP%] {\n padding-top: 16px;\n}\n\n.metric-row[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 8px 0;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n}\n\n.metric-row[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.metric-row[_ngcontent-%COMP%] .metric-label[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-muted);\n}\n\n.metric-row[_ngcontent-%COMP%] .metric-value[_ngcontent-%COMP%] {\n font-weight: 400;\n color: var(--mj-text-primary);\n}\n\n.metric-row[_ngcontent-%COMP%] .metric-value.link[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: color 0.2s;\n}\n\n.metric-row[_ngcontent-%COMP%] .metric-value.link[_ngcontent-%COMP%]:hover {\n color: color-mix(in srgb, var(--mj-brand-primary) 75%, black);\n}\n\n\n\n.parent-run-section[_ngcontent-%COMP%], \n.child-runs-section[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.parent-run-section[_ngcontent-%COMP%]:last-child, \n.child-runs-section[_ngcontent-%COMP%]:last-child {\n margin-bottom: 0;\n}\n\n.parent-run-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%], \n.child-runs-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n font-size: 0.95em;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.runs-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.run-item[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 12px 16px;\n display: flex;\n align-items: center;\n gap: 12px;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.run-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default);\n border-color: var(--mj-border-strong);\n}\n\n.run-item.parent[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-brand-primary) 30%, var(--mj-bg-surface));\n}\n\n.run-item.parent[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 20%, var(--mj-bg-surface));\n}\n\n.run-item-icon[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.run-item-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.run-item-title[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-primary);\n margin-bottom: 4px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.execution-order[_ngcontent-%COMP%] {\n background: var(--mj-text-muted);\n color: white;\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 0.75em;\n font-weight: 600;\n}\n\n.run-item-type[_ngcontent-%COMP%] {\n font-size: 0.85em;\n color: var(--mj-text-muted);\n font-weight: 400;\n}\n\n.run-item-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n font-size: 0.85em;\n color: var(--mj-text-muted);\n}\n\n.run-item-meta[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.status-indicator[_ngcontent-%COMP%] {\n font-weight: 500;\n}\n\n.run-item[_ngcontent-%COMP%] > i[_ngcontent-%COMP%]:last-child {\n color: var(--mj-text-muted);\n font-size: 0.85em;\n}\n\n\n\n.detail-fields-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n gap: 24px;\n width: 100%;\n min-height: auto;\n overflow: visible;\n}\n\n.detail-field[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.detail-field[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: 0.85em;\n color: var(--mj-text-muted);\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.detail-value[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 1em;\n color: var(--mj-text-primary);\n padding: 10px 14px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n transition: all 0.2s;\n}\n\n.detail-value[_ngcontent-%COMP%] i[_ngcontent-%COMP%]:first-child {\n color: var(--mj-text-muted);\n font-size: 1.1em;\n width: 20px;\n text-align: center;\n}\n\n.detail-value.clickable[_ngcontent-%COMP%] {\n cursor: pointer;\n}\n\n.detail-value.clickable[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default);\n border-color: var(--mj-border-strong);\n color: var(--mj-brand-primary);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n}\n\n.detail-value.clickable[_ngcontent-%COMP%] i[_ngcontent-%COMP%]:last-child {\n margin-left: auto;\n font-size: 0.85em;\n opacity: 0.6;\n}\n\n.detail-value.clickable[_ngcontent-%COMP%]:hover i[_ngcontent-%COMP%]:last-child {\n opacity: 1;\n}\n\n.detail-value.null-value[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n font-style: italic;\n}\n\n.detail-value.null-value[_ngcontent-%COMP%] i[_ngcontent-%COMP%]:first-child {\n opacity: 0.5;\n}\n\n\n\nkendo-panelbar[_ngcontent-%COMP%] {\n border: none !important;\n}\n\nkendo-panelbar-item[_ngcontent-%COMP%] {\n margin-bottom: 8px;\n border: 1px solid var(--mj-border-default) !important;\n border-radius: 8px !important;\n overflow: hidden;\n}\n\nkendo-panelbar-item[_ngcontent-%COMP%] .k-panelbar-header[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card) !important;\n border: none !important;\n padding: 12px 16px !important;\n}\n\nkendo-panelbar-item[_ngcontent-%COMP%] .k-panelbar-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default) !important;\n}\n\nkendo-panelbar-item[_ngcontent-%COMP%] .k-panelbar-content[_ngcontent-%COMP%] {\n border: none !important;\n padding: 0 !important;\n max-height: none !important;\n overflow: visible !important;\n}\n\n\n\n.validation-summary[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.summary-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 16px;\n}\n\n.summary-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 1.1em;\n color: var(--mj-text-primary);\n}\n\n.validation-status[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 6px 16px;\n border-radius: 20px;\n font-weight: 500;\n font-size: 0.9em;\n}\n\n.validation-status.success[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 12%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.validation-status.failed[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 12%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.validation-metrics[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));\n gap: 12px;\n margin-bottom: 20px;\n}\n\n.metric-card.small[_ngcontent-%COMP%] {\n padding: 16px;\n text-align: center;\n}\n\n.metric-card.small[_ngcontent-%COMP%] .metric-label[_ngcontent-%COMP%] {\n font-size: 0.8em;\n margin-bottom: 8px;\n font-weight: 600;\n}\n\n.metric-card.small[_ngcontent-%COMP%] .metric-value[_ngcontent-%COMP%] {\n font-size: 1.4em;\n font-weight: 700;\n}\n\n.validation-error[_ngcontent-%COMP%], \n.common-error[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 6%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 18%, var(--mj-bg-surface));\n border-radius: 8px;\n padding: 16px;\n margin-bottom: 16px;\n}\n\n.validation-error[_ngcontent-%COMP%] h5[_ngcontent-%COMP%], \n.common-error[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n color: var(--mj-status-error);\n font-size: 0.95em;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.validation-error[_ngcontent-%COMP%] p[_ngcontent-%COMP%], \n.common-error[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-text-secondary);\n font-size: 0.9em;\n}\n\n.error-count[_ngcontent-%COMP%] {\n display: inline-block;\n margin-top: 8px;\n padding: 2px 8px;\n background: var(--mj-status-error);\n color: white;\n border-radius: 12px;\n font-size: 0.75em;\n font-weight: 500;\n}\n\n\n\n.retry-timeline[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.retry-timeline[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n font-size: 1em;\n color: var(--mj-text-secondary);\n}\n\n.timeline-info[_ngcontent-%COMP%] {\n display: flex;\n gap: 24px;\n flex-wrap: wrap;\n}\n\n.timeline-stat[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n color: var(--mj-text-muted);\n font-size: 0.9em;\n}\n\n.timeline-stat[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 1.1em;\n}\n\n\n\n.validation-attempts[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.validation-attempts[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n font-size: 1em;\n color: var(--mj-text-secondary);\n}\n\n.attempts-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.attempt-item[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 12px 16px;\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 16px;\n}\n\n.attempt-item.success[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 6%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-status-success) 18%, var(--mj-bg-surface));\n}\n\n.attempt-item.failed[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 6%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-status-error) 18%, var(--mj-bg-surface));\n}\n\n.attempt-number[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.attempt-item.success[_ngcontent-%COMP%] .attempt-number[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.attempt-item.failed[_ngcontent-%COMP%] .attempt-number[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n.attempt-details[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n font-size: 0.85em;\n}\n\n.attempt-time[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n.attempt-error[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n flex: 1 0 100%;\n}\n\n.output-length[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-style: italic;\n}\n\n\n\n.validation-json[_ngcontent-%COMP%] {\n margin-top: 24px;\n}\n\n.validation-json[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n font-size: 1em;\n color: var(--mj-text-secondary);\n}\n\n.json-viewer-container[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n}\n\n\n\n.panel-badge.success[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n color: white;\n}"], changeDetection: 0 }); }
|
|
2369
|
+
i0.ɵɵadvance();
|
|
2370
|
+
i0.ɵɵconditional(ctx.FullScreenContent ? 2 : -1);
|
|
2371
|
+
} }, dependencies: [i1.ɵNgNoValidate, i1.NgControlStatus, i1.NgControlStatusGroup, i1.NgModel, i1.NgForm, i2.ExpansionPanelComponent, i2.ExpansionPanelTitleDirective, i2.PanelBarComponent, i2.PanelBarItemComponent, i2.PanelBarContentDirective, i2.PanelBarItemTitleDirective, i3.ButtonComponent, i4.MjFormToolbarComponent, i5.CodeEditorComponent, i6.ChatMessageViewerComponent, i7.DatePipe], styles: ["\n\n[_nghost-%COMP%] {\n display: block;\n height: 100%;\n}\n\n.record-form-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n overflow: hidden;\n}\n\n.record-form[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0 !important;\n overflow: hidden;\n}\n\n.form-content[_ngcontent-%COMP%] {\n padding: 16px;\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n}\n\n\n\n.error-info[_ngcontent-%COMP%] {\n margin-top: 16px;\n padding: 16px;\n background-color: color-mix(in srgb, var(--mj-status-error) 5%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 20%, var(--mj-bg-surface));\n border-radius: 8px;\n}\n\n.finish-reason[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n color: var(--mj-status-error);\n font-size: 14px;\n}\n\n.error-details[_ngcontent-%COMP%] {\n margin-top: 12px;\n}\n\n.error-details[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n color: color-mix(in srgb, var(--mj-status-error) 80%, black);\n font-size: 14px;\n font-weight: 600;\n}\n\n.error-hint[_ngcontent-%COMP%] {\n margin: 0;\n color: color-mix(in srgb, var(--mj-status-error) 70%, black);\n font-size: 14px;\n font-style: italic;\n}\n\n\n\n.prompt-run-header[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n padding: 20px;\n margin-bottom: 0;\n}\n\n.header-content[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 20px;\n margin-bottom: 16px;\n}\n\n.run-overview[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 16px;\n flex: 1;\n}\n\n.run-icon-wrapper[_ngcontent-%COMP%] {\n width: 56px;\n height: 56px;\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.run-icon-wrapper[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 24px;\n}\n\n.run-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.run-title[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n font-size: 1.5em;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.run-id[_ngcontent-%COMP%] {\n font-size: 0.8em;\n color: var(--mj-text-muted);\n font-weight: 400;\n font-family: 'Courier New', monospace;\n}\n\n.run-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: stretch;\n gap: 10px;\n flex-wrap: wrap;\n}\n\n\n\n.meta-card[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n border-radius: 8px;\n overflow: hidden;\n border: 1px solid var(--mj-border-default);\n}\n\n.meta-card-body[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 7px;\n padding: 8px 12px;\n background: var(--mj-bg-surface-card);\n font-size: 0.82em;\n font-weight: 500;\n color: var(--mj-text-primary);\n white-space: nowrap;\n}\n\n.meta-card-body.clickable[_ngcontent-%COMP%] {\n cursor: pointer;\n transition: color 0.15s;\n}\n\n.meta-card-body.clickable[_ngcontent-%COMP%]:hover {\n color: var(--mj-brand-primary-hover);\n}\n\n\n\n.status-indicator[_ngcontent-%COMP%] {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n\n\n.prompt-card-c3[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n border-radius: 10px;\n overflow: hidden;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n}\n\n.c3-child-section[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 14px;\n font-size: 0.92em;\n font-weight: 600;\n color: var(--mj-text-primary);\n cursor: pointer;\n transition: color 0.15s;\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.c3-child-section[_ngcontent-%COMP%]:hover {\n color: var(--mj-brand-primary-hover);\n}\n\n.c3-child-section[_ngcontent-%COMP%] i.prompt-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 1rem;\n}\n\n.c3-divider[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 0 14px;\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.c3-line[_ngcontent-%COMP%] {\n flex: 1;\n height: 1px;\n background: var(--mj-border-default);\n}\n\n.c3-divider-label[_ngcontent-%COMP%] {\n font-size: 0.55rem;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.1em;\n color: var(--mj-text-disabled);\n white-space: nowrap;\n}\n\n.c3-parent-section[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 7px 14px 9px 14px;\n font-size: 0.76em;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: color 0.15s;\n border-left: 3px solid color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.c3-parent-section[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-secondary);\n}\n\n.c3-parent-section[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 0.75rem;\n}\n\n.c3-link-icon[_ngcontent-%COMP%] {\n margin-left: auto;\n font-size: 0.6rem !important;\n opacity: 0.4;\n}\n\n.c3-parent-section[_ngcontent-%COMP%]:hover .c3-link-icon[_ngcontent-%COMP%] {\n opacity: 0.8;\n}\n\n\n\n.model-card-c3[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n border-radius: 8px;\n overflow: hidden;\n border: 1px solid var(--mj-border-default);\n cursor: pointer;\n transition: border-color 0.15s;\n}\n\n.model-card-c3[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-border-strong);\n}\n\n.c3-card-label[_ngcontent-%COMP%] {\n font-size: 0.6rem;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.08em;\n padding: 4px 10px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.c3-card-body[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n padding: 8px 12px;\n background: var(--mj-bg-surface-card);\n font-size: 0.82em;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.c3-model-name[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.c3-model-name[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 0.9rem;\n}\n\n.c3-vendor-name[_ngcontent-%COMP%] {\n font-size: 0.72em;\n color: var(--mj-text-muted);\n font-weight: 400;\n padding-left: 22px;\n}\n\n.original-run[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n border-radius: 16px;\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n font-size: 0.85em;\n}\n\n.original-link[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n text-decoration: none;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.original-link[_ngcontent-%COMP%]:hover {\n color: color-mix(in srgb, var(--mj-status-error) 85%, black);\n text-decoration: underline;\n}\n\n.run-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n\n\n.metrics-bar[_ngcontent-%COMP%] {\n display: flex;\n gap: 24px;\n padding-top: 16px;\n border-top: 1px solid var(--mj-border-default);\n flex-wrap: wrap;\n}\n\n.metric-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.metric-item[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n font-size: 1.2em;\n color: var(--mj-text-muted);\n width: 24px;\n text-align: center;\n}\n\n.metric-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n\n.metric-label[_ngcontent-%COMP%] {\n font-size: 0.75em;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.metric-value[_ngcontent-%COMP%] {\n font-size: 1.1em;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.config-link[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n text-decoration: none;\n cursor: pointer;\n transition: color 0.2s;\n}\n\n.config-link[_ngcontent-%COMP%]:hover {\n color: color-mix(in srgb, var(--mj-brand-primary) 75%, black);\n text-decoration: underline;\n}\n\n\n\n.form-content[_ngcontent-%COMP%] {\n padding: 16px;\n}\n\n.panel-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n}\n\n\n\n.sub-panel-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 500;\n font-size: 0.95em;\n}\n\n.sub-panel-content[_ngcontent-%COMP%] {\n padding: 0;\n}\n\n\n\n.k-panelbar[_ngcontent-%COMP%] .k-panelbar[_ngcontent-%COMP%] {\n border: none;\n background: transparent;\n}\n\n.k-panelbar[_ngcontent-%COMP%] .k-panelbar[_ngcontent-%COMP%] > .k-item[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n margin-bottom: 8px;\n border-radius: 6px;\n overflow: hidden;\n}\n\n.k-panelbar[_ngcontent-%COMP%] .k-panelbar[_ngcontent-%COMP%] > .k-item[_ngcontent-%COMP%] > .k-link[_ngcontent-%COMP%] {\n background-color: var(--mj-bg-surface-card);\n padding: 12px 16px;\n}\n\n.k-panelbar[_ngcontent-%COMP%] .k-panelbar[_ngcontent-%COMP%] > .k-item.k-expanded[_ngcontent-%COMP%] > .k-link[_ngcontent-%COMP%] {\n background-color: var(--mj-bg-surface-sunken);\n}\n\n.k-panelbar[_ngcontent-%COMP%] .k-panelbar[_ngcontent-%COMP%] .k-content[_ngcontent-%COMP%] {\n padding: 0;\n background: var(--mj-bg-surface);\n}\n\n\n\n.sub-panel-content[_ngcontent-%COMP%] mj-chat-message-viewer[_ngcontent-%COMP%] {\n display: block;\n min-height: 200px;\n max-height: 750px; \n\n height: auto;\n overflow: hidden;\n}\n\n\n\n.sub-expansion-panel[_ngcontent-%COMP%] {\n margin-bottom: 8px;\n}\n\n.sub-expansion-panel[_ngcontent-%COMP%] .k-expander {\n background-color: var(--mj-bg-surface-card);\n border-color: var(--mj-border-default);\n}\n\n.sub-expansion-panel[_ngcontent-%COMP%] .k-expander:hover {\n background-color: var(--mj-bg-surface-sunken);\n}\n\n.sub-expansion-panel[_ngcontent-%COMP%] .k-header {\n background-color: var(--mj-bg-surface-card);\n border-color: var(--mj-border-default);\n}\n\n.sub-expansion-panel[_ngcontent-%COMP%] .k-content {\n background-color: var(--mj-bg-surface);\n border-color: var(--mj-border-default);\n}\n\n.panel-badge[_ngcontent-%COMP%] {\n margin-left: auto;\n padding: 2px 8px;\n border-radius: 12px;\n background: var(--mj-border-default);\n color: var(--mj-text-secondary);\n font-size: 0.75em;\n font-weight: 500;\n}\n\n.panel-badge.error[_ngcontent-%COMP%] {\n background: var(--mj-status-error);\n color: white;\n}\n\n.panel-count[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-weight: 400;\n font-size: 0.9em;\n}\n\n.panel-content[_ngcontent-%COMP%] {\n padding: 20px;\n max-height: none !important;\n overflow: visible !important;\n}\n\n\n\n.json-editor-container[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\n}\n\n.json-toolbar[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n padding: 8px 12px;\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n justify-content: flex-end;\n}\n\n\n\n.error-message[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 6%, var(--mj-bg-surface));\n border: 1px solid var(--mj-status-error);\n border-radius: 6px;\n padding: 16px;\n display: flex;\n gap: 16px;\n margin-bottom: 16px;\n}\n\n.error-message[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 1.5em;\n color: var(--mj-status-error);\n flex-shrink: 0;\n}\n\n.error-content[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n color: var(--mj-status-error);\n font-size: 1em;\n}\n\n.error-content[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-text-secondary);\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 60px 40px;\n color: var(--mj-text-muted);\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 3em;\n margin-bottom: 16px;\n opacity: 0.3;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 1.1em;\n}\n\n\n\n.loading-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 60px 40px;\n color: var(--mj-text-muted);\n}\n\n.loading-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 3em;\n margin-bottom: 16px;\n opacity: 0.6;\n color: var(--mj-brand-primary);\n}\n\n.loading-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 1.1em;\n}\n\n\n\n.metrics-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 20px;\n margin-bottom: 24px;\n}\n\n.metric-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 20px;\n}\n\n.metric-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 12px;\n}\n\n.metric-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 1.2em;\n color: var(--mj-text-muted);\n}\n\n.metric-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 0.9em;\n color: var(--mj-text-muted);\n font-weight: 500;\n}\n\n.metric-value.large[_ngcontent-%COMP%] {\n font-size: 1.8em;\n font-weight: 700;\n color: var(--mj-text-primary);\n}\n\n.metric-rollup[_ngcontent-%COMP%] {\n margin-top: 8px;\n font-size: 0.85em;\n color: var(--mj-text-muted);\n}\n\n.metric-currency[_ngcontent-%COMP%] {\n margin-top: 4px;\n font-size: 0.85em;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n}\n\n\n\n.additional-metrics[_ngcontent-%COMP%] {\n padding-top: 16px;\n}\n\n.metric-row[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 8px 0;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n}\n\n.metric-row[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.metric-row[_ngcontent-%COMP%] .metric-label[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-muted);\n}\n\n.metric-row[_ngcontent-%COMP%] .metric-value[_ngcontent-%COMP%] {\n font-weight: 400;\n color: var(--mj-text-primary);\n}\n\n.metric-row[_ngcontent-%COMP%] .metric-value.link[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: color 0.2s;\n}\n\n.metric-row[_ngcontent-%COMP%] .metric-value.link[_ngcontent-%COMP%]:hover {\n color: color-mix(in srgb, var(--mj-brand-primary) 75%, black);\n}\n\n\n\n.parent-run-section[_ngcontent-%COMP%], \n.child-runs-section[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.parent-run-section[_ngcontent-%COMP%]:last-child, \n.child-runs-section[_ngcontent-%COMP%]:last-child {\n margin-bottom: 0;\n}\n\n.parent-run-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%], \n.child-runs-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n font-size: 0.95em;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.runs-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.run-item[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 12px 16px;\n display: flex;\n align-items: center;\n gap: 12px;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.run-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default);\n border-color: var(--mj-border-strong);\n}\n\n.run-item.parent[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-brand-primary) 30%, var(--mj-bg-surface));\n}\n\n.run-item.parent[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 20%, var(--mj-bg-surface));\n}\n\n.run-item-icon[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.run-item-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.run-item-title[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-primary);\n margin-bottom: 4px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.execution-order[_ngcontent-%COMP%] {\n background: var(--mj-text-muted);\n color: white;\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 0.75em;\n font-weight: 600;\n}\n\n.run-item-type[_ngcontent-%COMP%] {\n font-size: 0.85em;\n color: var(--mj-text-muted);\n font-weight: 400;\n}\n\n.run-item-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n font-size: 0.85em;\n color: var(--mj-text-muted);\n}\n\n.run-item-meta[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.status-indicator[_ngcontent-%COMP%] {\n font-weight: 500;\n}\n\n.run-item[_ngcontent-%COMP%] > i[_ngcontent-%COMP%]:last-child {\n color: var(--mj-text-muted);\n font-size: 0.85em;\n}\n\n\n\n.detail-fields-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n gap: 24px;\n width: 100%;\n min-height: auto;\n overflow: visible;\n}\n\n.detail-field[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.detail-field[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: 0.85em;\n color: var(--mj-text-muted);\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.detail-value[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 1em;\n color: var(--mj-text-primary);\n padding: 10px 14px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n transition: all 0.2s;\n}\n\n.detail-value[_ngcontent-%COMP%] i[_ngcontent-%COMP%]:first-child {\n color: var(--mj-text-muted);\n font-size: 1.1em;\n width: 20px;\n text-align: center;\n}\n\n.detail-value.clickable[_ngcontent-%COMP%] {\n cursor: pointer;\n}\n\n.detail-value.clickable[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default);\n border-color: var(--mj-border-strong);\n color: var(--mj-brand-primary);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n}\n\n.detail-value.clickable[_ngcontent-%COMP%] i[_ngcontent-%COMP%]:last-child {\n margin-left: auto;\n font-size: 0.85em;\n opacity: 0.6;\n}\n\n.detail-value.clickable[_ngcontent-%COMP%]:hover i[_ngcontent-%COMP%]:last-child {\n opacity: 1;\n}\n\n.detail-value.null-value[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n font-style: italic;\n}\n\n.detail-value.null-value[_ngcontent-%COMP%] i[_ngcontent-%COMP%]:first-child {\n opacity: 0.5;\n}\n\n\n\nkendo-panelbar[_ngcontent-%COMP%] {\n border: none !important;\n}\n\nkendo-panelbar-item[_ngcontent-%COMP%] {\n margin-bottom: 8px;\n border: 1px solid var(--mj-border-default) !important;\n border-radius: 8px !important;\n overflow: hidden;\n}\n\nkendo-panelbar-item[_ngcontent-%COMP%] .k-panelbar-header[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card) !important;\n border: none !important;\n padding: 12px 16px !important;\n}\n\nkendo-panelbar-item[_ngcontent-%COMP%] .k-panelbar-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default) !important;\n}\n\nkendo-panelbar-item[_ngcontent-%COMP%] .k-panelbar-content[_ngcontent-%COMP%] {\n border: none !important;\n padding: 0 !important;\n max-height: none !important;\n overflow: visible !important;\n}\n\n\n\n.validation-summary[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.summary-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 16px;\n}\n\n.summary-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 1.1em;\n color: var(--mj-text-primary);\n}\n\n.validation-status[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 6px 16px;\n border-radius: 20px;\n font-weight: 500;\n font-size: 0.9em;\n}\n\n.validation-status.success[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 12%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.validation-status.failed[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 12%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.validation-metrics[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));\n gap: 12px;\n margin-bottom: 20px;\n}\n\n.metric-card.small[_ngcontent-%COMP%] {\n padding: 16px;\n text-align: center;\n}\n\n.metric-card.small[_ngcontent-%COMP%] .metric-label[_ngcontent-%COMP%] {\n font-size: 0.8em;\n margin-bottom: 8px;\n font-weight: 600;\n}\n\n.metric-card.small[_ngcontent-%COMP%] .metric-value[_ngcontent-%COMP%] {\n font-size: 1.4em;\n font-weight: 700;\n}\n\n.validation-error[_ngcontent-%COMP%], \n.common-error[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 6%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 18%, var(--mj-bg-surface));\n border-radius: 8px;\n padding: 16px;\n margin-bottom: 16px;\n}\n\n.validation-error[_ngcontent-%COMP%] h5[_ngcontent-%COMP%], \n.common-error[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n color: var(--mj-status-error);\n font-size: 0.95em;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.validation-error[_ngcontent-%COMP%] p[_ngcontent-%COMP%], \n.common-error[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-text-secondary);\n font-size: 0.9em;\n}\n\n.error-count[_ngcontent-%COMP%] {\n display: inline-block;\n margin-top: 8px;\n padding: 2px 8px;\n background: var(--mj-status-error);\n color: white;\n border-radius: 12px;\n font-size: 0.75em;\n font-weight: 500;\n}\n\n\n\n.retry-timeline[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.retry-timeline[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n font-size: 1em;\n color: var(--mj-text-secondary);\n}\n\n.timeline-info[_ngcontent-%COMP%] {\n display: flex;\n gap: 24px;\n flex-wrap: wrap;\n}\n\n.timeline-stat[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n color: var(--mj-text-muted);\n font-size: 0.9em;\n}\n\n.timeline-stat[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 1.1em;\n}\n\n\n\n.validation-attempts[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.validation-attempts[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n font-size: 1em;\n color: var(--mj-text-secondary);\n}\n\n.attempts-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.attempt-item[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 12px 16px;\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 16px;\n}\n\n.attempt-item.success[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 6%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-status-success) 18%, var(--mj-bg-surface));\n}\n\n.attempt-item.failed[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 6%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-status-error) 18%, var(--mj-bg-surface));\n}\n\n.attempt-number[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.attempt-item.success[_ngcontent-%COMP%] .attempt-number[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.attempt-item.failed[_ngcontent-%COMP%] .attempt-number[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n.attempt-details[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n font-size: 0.85em;\n}\n\n.attempt-time[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n.attempt-error[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n flex: 1 0 100%;\n}\n\n.output-length[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-style: italic;\n}\n\n\n\n.validation-json[_ngcontent-%COMP%] {\n margin-top: 24px;\n}\n\n.validation-json[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n font-size: 1em;\n color: var(--mj-text-secondary);\n}\n\n.json-viewer-container[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n}\n\n\n\n.panel-badge.success[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n color: white;\n}\n\n\n\n.fullscreen-overlay[_ngcontent-%COMP%] {\n position: fixed;\n inset: 0;\n z-index: 10000;\n background: var(--mj-bg-overlay, rgba(0, 0, 0, 0.6));\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 1.5rem;\n}\n\n.fullscreen-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n max-width: 95vw;\n max-height: 95vh;\n background: var(--mj-bg-surface);\n border-radius: 10px;\n border: 1px solid var(--mj-border-default);\n box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);\n overflow: hidden;\n}\n\n.fullscreen-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0.75rem 1rem;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.fullscreen-title[_ngcontent-%COMP%] {\n font-weight: 600;\n font-size: 0.9rem;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.fullscreen-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n}\n\n.fullscreen-actions[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.fullscreen-body[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n overflow: hidden;\n}\n\n.fullscreen-body[_ngcontent-%COMP%] mj-code-editor[_ngcontent-%COMP%] {\n display: block;\n height: 100%;\n}"], changeDetection: 0 }); }
|
|
2240
2372
|
};
|
|
2241
2373
|
MJAIPromptRunFormComponentExtended = __decorate([
|
|
2242
2374
|
RegisterClass(BaseFormComponent, 'MJ: AI Prompt Runs')
|
|
@@ -2244,7 +2376,7 @@ MJAIPromptRunFormComponentExtended = __decorate([
|
|
|
2244
2376
|
export { MJAIPromptRunFormComponentExtended };
|
|
2245
2377
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MJAIPromptRunFormComponentExtended, [{
|
|
2246
2378
|
type: Component,
|
|
2247
|
-
args: [{ standalone: false, selector: 'mj-ai-prompt-run-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"record-form-container\" style=\"height: 100%; display: flex; flex-direction: column;\">\n @if (record) {\n <form class=\"record-form\" #form=\"ngForm\" style=\"display: flex; flex-direction: column; height: 100%; overflow: hidden;\">\n <mj-form-toolbar [Form]=\"this\"></mj-form-toolbar>\n\n <!-- Header Section -->\n <div class=\"prompt-run-header\">\n <div class=\"header-content\">\n <div class=\"run-overview\">\n <div class=\"run-icon-wrapper\" [style.background-color]=\"getStatusColor() + '20'\">\n <i [class]=\"'fa-solid ' + getStatusIcon()\" [style.color]=\"getStatusColor()\"></i>\n </div>\n <div class=\"run-info\">\n <h1 class=\"run-title\">\n Prompt Run\n @if (record.ID) {\n <span class=\"run-id\">#{{ record.ID.substring(0, 8) }}</span>\n }\n </h1>\n <div class=\"run-meta\">\n <span class=\"status-badge\" [style.background-color]=\"getStatusColor()\">\n <i [class]=\"'fa-solid ' + getStatusIcon()\"></i>\n {{ getStatusText() }}\n </span>\n @if (record.RunType) {\n <span class=\"run-type-badge\" [style.color]=\"getRunTypeColor(record.RunType)\">\n <i [class]=\"'fa-solid ' + getRunTypeIcon(record.RunType)\"></i>\n {{ record.RunType }}\n </span>\n }\n @if (prompt) {\n <span class=\"prompt-name\" (click)=\"navigateToEntity('MJ: AI Prompts', prompt.ID)\" title=\"View Prompt\">\n <i class=\"fa-solid fa-comment-dots\"></i>\n {{ prompt.Name }}\n </span>\n }\n @if (model) {\n <span class=\"model-name\" (click)=\"navigateToEntity('MJ: AI Models', model.ID)\" title=\"View Model\">\n <i class=\"fa-solid fa-microchip\"></i>\n {{ model.Name }}\n </span>\n }\n @if (record.Vendor) {\n <span class=\"vendor-name\" (click)=\"navigateToEntity('MJ: AI Vendors', record.VendorID)\" title=\"View Vendor\">\n <i class=\"fa-solid fa-building\"></i>\n {{ record.Vendor }}\n </span>\n }\n @if (record.RerunFromPromptRunID) {\n <span class=\"original-run\" title=\"View Original Run\">\n <i class=\"fa-solid fa-level-up-alt\"></i>\n <a (click)=\"navigateToOriginalRun()\" class=\"original-link\">Original Run</a>\n </span>\n }\n </div>\n </div>\n </div>\n \n <!-- Action Buttons -->\n <div class=\"run-actions\">\n <button kendoButton fillMode=\"outline\" size=\"small\" (click)=\"reRunPrompt()\" title=\"Re-run this prompt\">\n <i class=\"fa-solid fa-play-circle\"></i>\n Re-Run\n </button>\n <button kendoButton fillMode=\"outline\" size=\"small\" (click)=\"refreshData()\" title=\"Refresh data\">\n <i class=\"fa-solid fa-refresh\"></i>\n </button>\n </div>\n </div>\n \n <!-- Key Metrics Bar -->\n @if (record.ConfigurationID) {\n <!-- Configuration Bar -->\n <div class=\"metrics-bar\">\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-cog\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Configuration</div>\n <div class=\"metric-value\">\n <a href=\"javascript:void(0)\" class=\"config-link\" (click)=\"navigateToEntity('MJ: AI Configurations', record.ConfigurationID)\">\n {{ record.Configuration || 'Unknown' }}\n </a>\n </div>\n </div>\n </div>\n @if (record.Temperature !== null && record.Temperature !== undefined) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-temperature-high\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Temperature</div>\n <div class=\"metric-value\">{{ record.Temperature }}</div>\n </div>\n </div>\n }\n @if (record.TopP !== null && record.TopP !== undefined) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-percentage\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Top P</div>\n <div class=\"metric-value\">{{ record.TopP }}</div>\n </div>\n </div>\n }\n @if (record.TopK !== null && record.TopK !== undefined) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-list-ol\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Top K</div>\n <div class=\"metric-value\">{{ record.TopK }}</div>\n </div>\n </div>\n }\n @if (record.EffortLevel !== null && record.EffortLevel !== undefined) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-tachometer-alt\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Effort Level</div>\n <div class=\"metric-value\">{{ record.EffortLevel }}</div>\n </div>\n </div>\n }\n @if (record.ResponseFormat) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-code\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Response Format</div>\n <div class=\"metric-value\">{{ record.ResponseFormat }}</div>\n </div>\n </div>\n }\n </div>\n \n <!-- Execution Metrics Bar (always show when configuration exists) -->\n <div class=\"metrics-bar\">\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-clock\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Duration</div>\n <div class=\"metric-value\">{{ formatDuration(record.ExecutionTimeMS) }}</div>\n </div>\n </div>\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-coins\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Total Tokens</div>\n <div class=\"metric-value\">{{ formatTokens(record.TokensUsed) }}</div>\n </div>\n </div>\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-dollar-sign\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Cost</div>\n <div class=\"metric-value\">{{ formatCost(record.TotalCost || record.Cost) }}</div>\n </div>\n </div>\n @if (record.RunAt) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-calendar\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Started</div>\n <div class=\"metric-value\">{{ record.RunAt | date:'short' }}</div>\n </div>\n </div>\n }\n </div>\n } @else {\n <!-- Execution Metrics Bar (original behavior when no configuration) -->\n <div class=\"metrics-bar\">\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-clock\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Duration</div>\n <div class=\"metric-value\">{{ formatDuration(record.ExecutionTimeMS) }}</div>\n </div>\n </div>\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-coins\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Total Tokens</div>\n <div class=\"metric-value\">{{ formatTokens(record.TokensUsed) }}</div>\n </div>\n </div>\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-dollar-sign\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Cost</div>\n <div class=\"metric-value\">{{ formatCost(record.TotalCost || record.Cost) }}</div>\n </div>\n </div>\n @if (record.RunAt) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-calendar\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Started</div>\n <div class=\"metric-value\">{{ record.RunAt | date:'short' }}</div>\n </div>\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Main Content with Expansion Panels -->\n <div class=\"form-content\" style=\"display: flex; flex-direction: column; flex: 1; min-height: 0; overflow-y: auto;\">\n <kendo-panelbar [keepItemContent]=\"true\">\n \n <!-- Input Panel with nested sub-panels -->\n <kendo-panelbar-item [expanded]=\"inputExpanded\" (stateChange)=\"onInputPanelToggle($event)\">\n <ng-template kendoPanelBarItemTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-comment-dots\"></i>\n Input\n @if (record.Messages && record.Messages.trim() !== '') {\n <span class=\"panel-badge\">JSON</span>\n }\n </span>\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n @if (record.Messages && record.Messages.trim() !== '') {\n <!-- Nested expansion panels for sub-sections -->\n <div class=\"nested-panels\">\n <!-- Messages Sub-Panel -->\n <kendo-expansionpanel \n [expanded]=\"messagesExpanded\" \n class=\"sub-expansion-panel\"\n [animation]=\"false\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span class=\"sub-panel-title\">\n <i class=\"fa-solid fa-comments\"></i>\n Messages\n @if (chatMessages.length > 0) {\n <span class=\"panel-count\">({{ chatMessages.length }})</span>\n }\n </span>\n </ng-template>\n <div class=\"sub-panel-content\">\n @if (isParsingMessages || isLoadingRelatedData) {\n <div class=\"loading-state\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <p>Loading messages...</p>\n </div>\n } @else if (chatMessages.length > 0) {\n <mj-chat-message-viewer \n [messages]=\"chatMessages\">\n </mj-chat-message-viewer>\n } @else {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-comment-slash\"></i>\n <p>No chat messages found</p>\n </div>\n }\n </div>\n </kendo-expansionpanel>\n \n <!-- Data Sub-Panel -->\n <kendo-expansionpanel \n [expanded]=\"dataExpanded\" \n class=\"sub-expansion-panel\"\n [animation]=\"false\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span class=\"sub-panel-title\">\n <i class=\"fa-solid fa-database\"></i>\n Data\n @if (inputData) {\n <span class=\"panel-badge\">Object</span>\n }\n </span>\n </ng-template>\n <div class=\"sub-panel-content\">\n @if (inputData && formattedData) {\n <div class=\"json-editor-container\">\n <div class=\"json-toolbar\">\n <button kendoButton\n fillMode=\"flat\" \n size=\"small\"\n (click)=\"copyToClipboard(formattedData, 'Data')\"\n title=\"Copy JSON\">\n <i class=\"fa-solid fa-copy\"></i> Copy\n </button>\n </div>\n <mj-code-editor \n [(ngModel)]=\"formattedData\"\n name=\"formattedData\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n </div>\n } @else {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-database\"></i>\n <p>No data object found</p>\n </div>\n }\n </div>\n </kendo-expansionpanel>\n \n <!-- Raw Sub-Panel -->\n <kendo-expansionpanel \n [expanded]=\"rawExpanded\" \n class=\"sub-expansion-panel\"\n [animation]=\"false\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span class=\"sub-panel-title\">\n <i class=\"fa-solid fa-code\"></i>\n Raw\n </span>\n </ng-template>\n <div class=\"sub-panel-content\">\n <div class=\"json-editor-container\">\n <div class=\"json-toolbar\">\n <button kendoButton\n fillMode=\"flat\" \n size=\"small\"\n (click)=\"copyToClipboard(formattedMessages, 'Messages')\"\n title=\"Copy JSON\">\n <i class=\"fa-solid fa-copy\"></i> Copy\n </button>\n </div>\n <mj-code-editor \n [(ngModel)]=\"formattedMessages\"\n name=\"formattedMessages\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 400px; width: 100%;\">\n </mj-code-editor>\n </div>\n </div>\n </kendo-expansionpanel>\n </div>\n } @else {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-comment-slash\"></i>\n <p>No input messages recorded</p>\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n \n <!-- Result Panel -->\n <kendo-panelbar-item [expanded]=\"resultExpanded\" (stateChange)=\"onResultPanelToggle($event)\">\n <ng-template kendoPanelBarItemTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-square-check\"></i>\n Result\n @if (record.Result && record.Result.trim() !== '') {\n <span class=\"panel-badge\">JSON</span>\n }\n @if (record.ErrorMessage) {\n <span class=\"panel-badge error\">Error</span>\n }\n </span>\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n @if (record.ErrorMessage) {\n <div class=\"error-message\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n <div class=\"error-content\">\n <h4>Error Message</h4>\n <p>{{ record.ErrorMessage }}</p>\n </div>\n </div>\n }\n \n @if (record.Result && record.Result.trim() !== '') {\n <div class=\"json-editor-container\">\n <div class=\"json-toolbar\">\n <button kendoButton\n fillMode=\"flat\" \n size=\"small\"\n (click)=\"copyToClipboard(formattedResult, 'Result')\"\n title=\"Copy JSON\">\n <i class=\"fa-solid fa-copy\"></i> Copy\n </button>\n </div>\n <mj-code-editor \n [(ngModel)]=\"formattedResult\"\n name=\"formattedResult\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 400px; width: 100%;\">\n </mj-code-editor>\n </div>\n } @else if (!record.ErrorMessage) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-inbox\"></i>\n <p>No result data recorded</p>\n @if (record.Status === 'Failed' || record.Success === false) {\n <div class=\"error-info\">\n @if (record.Status) {\n <p class=\"finish-reason\">\n <strong>Status:</strong> {{ record.Status }}\n </p>\n }\n @if (formattedErrorDetails) {\n <div class=\"error-details\">\n <h4>Error Details</h4>\n <mj-code-editor\n [ngModel]=\"formattedErrorDetails\"\n [disabled]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 200px; width: 100%;\">\n </mj-code-editor>\n </div>\n }\n @if (!formattedErrorDetails) {\n <p class=\"error-hint\">\n The prompt execution failed but no additional error information is available.\n </p>\n }\n </div>\n }\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n \n <!-- Token Usage & Metrics Panel -->\n <kendo-panelbar-item [expanded]=\"metricsExpanded\" (stateChange)=\"onMetricsPanelToggle($event)\">\n <ng-template kendoPanelBarItemTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-chart-line\"></i>\n Token Usage & Metrics\n </span>\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n <div class=\"metrics-grid\">\n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <i class=\"fa-solid fa-message\"></i>\n <h4>Prompt Tokens</h4>\n </div>\n <div class=\"metric-value large\">{{ formatTokens(record.TokensPrompt) }}</div>\n @if (record.TokensPromptRollup && record.TokensPromptRollup !== record.TokensPrompt) {\n <div class=\"metric-rollup\">\n <span>Rollup: {{ formatTokens(record.TokensPromptRollup) }}</span>\n </div>\n }\n </div>\n \n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <i class=\"fa-solid fa-reply\"></i>\n <h4>Completion Tokens</h4>\n </div>\n <div class=\"metric-value large\">{{ formatTokens(record.TokensCompletion) }}</div>\n @if (record.TokensCompletionRollup && record.TokensCompletionRollup !== record.TokensCompletion) {\n <div class=\"metric-rollup\">\n <span>Rollup: {{ formatTokens(record.TokensCompletionRollup) }}</span>\n </div>\n }\n </div>\n \n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <i class=\"fa-solid fa-coins\"></i>\n <h4>Total Tokens</h4>\n </div>\n <div class=\"metric-value large\">{{ formatTokens(record.TokensUsed) }}</div>\n @if (record.TokensUsedRollup && record.TokensUsedRollup !== record.TokensUsed) {\n <div class=\"metric-rollup\">\n <span>Rollup: {{ formatTokens(record.TokensUsedRollup) }}</span>\n </div>\n }\n </div>\n \n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <i class=\"fa-solid fa-dollar-sign\"></i>\n <h4>Cost</h4>\n </div>\n <div class=\"metric-value large\">{{ formatCost(record.Cost) }}</div>\n @if (record.TotalCost && record.TotalCost !== record.Cost) {\n <div class=\"metric-rollup\">\n <span>Total: {{ formatCost(record.TotalCost) }}</span>\n </div>\n }\n @if (record.CostCurrency) {\n <div class=\"metric-currency\">{{ record.CostCurrency }}</div>\n }\n </div>\n \n <!-- Timing Metrics -->\n @if (record.QueueTime != null) {\n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <i class=\"fa-solid fa-hourglass-start\"></i>\n <h4>Queue Time</h4>\n </div>\n <div class=\"metric-value large\">{{ formatDuration(record.QueueTime) }}</div>\n </div>\n }\n \n @if (record.PromptTime != null) {\n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <i class=\"fa-solid fa-brain\"></i>\n <h4>Prompt Time</h4>\n </div>\n <div class=\"metric-value large\">{{ formatDuration(record.PromptTime) }}</div>\n </div>\n }\n \n @if (record.CompletionTime != null) {\n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <i class=\"fa-solid fa-flag-checkered\"></i>\n <h4>Completion Time</h4>\n </div>\n <div class=\"metric-value large\">{{ formatDuration(record.CompletionTime) }}</div>\n </div>\n }\n </div>\n \n <!-- Additional Metrics -->\n <div class=\"additional-metrics\">\n @if (record.ExecutionOrder !== null) {\n <div class=\"metric-row\">\n <span class=\"metric-label\">Execution Order:</span>\n <span class=\"metric-value\">{{ record.ExecutionOrder }}</span>\n </div>\n }\n @if (record.AgentID) {\n <div class=\"metric-row\">\n <span class=\"metric-label\">Agent:</span>\n <span class=\"metric-value link\" (click)=\"navigateToEntity('MJ: AI Agents', record.AgentID)\">\n {{ record.Agent }}\n <i class=\"fa-solid fa-external-link\"></i>\n </span>\n </div>\n }\n </div>\n </div>\n </ng-template>\n </kendo-panelbar-item>\n \n <!-- Validation & Retry Panel -->\n @if (record && ((record.ValidationAttemptCount && record.ValidationAttemptCount > 0) || record.ValidationBehavior)) {\n <kendo-panelbar-item [expanded]=\"validationExpanded\" (stateChange)=\"onValidationPanelToggle($event)\">\n <ng-template kendoPanelBarItemTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-shield-check\"></i>\n Validation & Retries\n @if (record && record.ValidationAttemptCount && record.ValidationAttemptCount > 1) {\n <span class=\"panel-count\">({{ record.ValidationAttemptCount }} attempts)</span>\n }\n @if (record.FinalValidationPassed) {\n <span class=\"panel-badge success\">Passed</span>\n } @else if (record.FinalValidationPassed === false) {\n <span class=\"panel-badge error\">Failed</span>\n }\n </span>\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n <!-- Validation Summary -->\n <div class=\"validation-summary\">\n <div class=\"summary-header\">\n <h4>Validation Summary</h4>\n <div class=\"validation-status\" [class.success]=\"record.FinalValidationPassed\" [class.failed]=\"!record.FinalValidationPassed\">\n <i [class]=\"record.FinalValidationPassed ? 'fa-solid fa-check-circle' : 'fa-solid fa-times-circle'\"></i>\n {{ record.FinalValidationPassed ? 'Validation Passed' : 'Validation Failed' }}\n </div>\n </div>\n \n <div class=\"validation-metrics\">\n <div class=\"metric-card small\">\n <div class=\"metric-label\">Total Attempts</div>\n <div class=\"metric-value\">{{ record.ValidationAttemptCount || 0 }}</div>\n </div>\n <div class=\"metric-card small\">\n <div class=\"metric-label\">Successful</div>\n <div class=\"metric-value\">{{ record.SuccessfulValidationCount || 0 }}</div>\n </div>\n <div class=\"metric-card small\">\n <div class=\"metric-label\">Behavior</div>\n <div class=\"metric-value\">{{ record.ValidationBehavior || 'Not set' }}</div>\n </div>\n <div class=\"metric-card small\">\n <div class=\"metric-label\">Retry Strategy</div>\n <div class=\"metric-value\">{{ record.RetryStrategy || 'Not set' }}</div>\n </div>\n </div>\n \n @if (record.FinalValidationError) {\n <div class=\"validation-error\">\n <h5><i class=\"fa-solid fa-exclamation-triangle\"></i> Final Validation Error</h5>\n <p>{{ record.FinalValidationError }}</p>\n @if (record && record.ValidationErrorCount && record.ValidationErrorCount > 0) {\n <span class=\"error-count\">{{ record.ValidationErrorCount }} validation errors</span>\n }\n </div>\n }\n \n @if (record.CommonValidationError && record.CommonValidationError !== record.FinalValidationError) {\n <div class=\"common-error\">\n <h5><i class=\"fa-solid fa-repeat\"></i> Most Common Error</h5>\n <p>{{ record.CommonValidationError }}</p>\n </div>\n }\n </div>\n \n <!-- Retry Timeline -->\n @if (record && record.ValidationAttemptCount && record.ValidationAttemptCount > 1) {\n <div class=\"retry-timeline\">\n <h4>Retry Timeline</h4>\n <div class=\"timeline-info\">\n <div class=\"timeline-stat\">\n <i class=\"fa-solid fa-clock\"></i>\n <span>First Attempt: {{ record.FirstAttemptAt | date:'short' }}</span>\n </div>\n <div class=\"timeline-stat\">\n <i class=\"fa-solid fa-flag-checkered\"></i>\n <span>Last Attempt: {{ record.LastAttemptAt | date:'short' }}</span>\n </div>\n <div class=\"timeline-stat\">\n <i class=\"fa-solid fa-stopwatch\"></i>\n <span>Total Retry Duration: {{ formatDuration(record.TotalRetryDurationMS) }}</span>\n </div>\n </div>\n </div>\n }\n \n <!-- Validation Attempts Details -->\n @if (validationAttempts && validationAttempts.length > 0) {\n <div class=\"validation-attempts\">\n <h4>Validation Attempts</h4>\n <div class=\"attempts-list\">\n @for (attempt of validationAttempts; track attempt.attemptNumber) {\n <div class=\"attempt-item\" [class.success]=\"attempt.success\" [class.failed]=\"!attempt.success\">\n <div class=\"attempt-number\">\n <i [class]=\"attempt.success ? 'fa-solid fa-check' : 'fa-solid fa-times'\"></i>\n Attempt #{{ attempt.attemptNumber }}\n </div>\n <div class=\"attempt-details\">\n <span class=\"attempt-time\">{{ attempt.timestamp }}</span>\n @if (!attempt.success) {\n <span class=\"attempt-error\">{{ attempt.errorMessage || 'Unknown error' }}</span>\n @if (attempt.validationErrorCount > 0) {\n <span class=\"error-count\">({{ attempt.validationErrorCount }} errors)</span>\n }\n }\n @if (attempt.outputLength) {\n <span class=\"output-length\">Output: {{ attempt.outputLength }} chars</span>\n }\n </div>\n </div>\n }\n </div>\n </div>\n }\n \n <!-- Validation Summary JSON -->\n @if (validationSummary) {\n <div class=\"validation-json\">\n <h4>Validation Summary Details</h4>\n <div class=\"json-viewer-container\">\n <mj-code-editor \n [(ngModel)]=\"formattedValidationSummary\"\n name=\"formattedValidationSummary\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 200px; width: 100%;\">\n </mj-code-editor>\n </div>\n </div>\n }\n \n <!-- Validation Attempts JSON -->\n @if (record.ValidationAttempts) {\n <div class=\"validation-json\">\n <h4>Validation Attempts (Raw JSON)</h4>\n <div class=\"json-viewer-container\">\n <mj-code-editor \n [(ngModel)]=\"formattedValidationAttempts\"\n name=\"formattedValidationAttempts\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n </div>\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n }\n \n <!-- Hierarchy Panel (for parent/child relationships) -->\n @if (record.ParentID || childRuns.length > 0) {\n <kendo-panelbar-item [expanded]=\"hierarchyExpanded\">\n <ng-template kendoPanelBarItemTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-sitemap\"></i>\n Run Hierarchy\n @if (childRuns.length > 0) {\n <span class=\"panel-count\">({{ childRuns.length }} children)</span>\n }\n </span>\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n @if (parentRun) {\n <div class=\"parent-run-section\">\n <h4><i class=\"fa-solid fa-level-up-alt\"></i> Parent Run</h4>\n <div class=\"run-item parent\" (click)=\"navigateToEntity('MJ: AI Prompt Runs', parentRun.ID)\">\n <div class=\"run-item-icon\" [style.background-color]=\"getStatusColor() + '20'\">\n <i [class]=\"'fa-solid ' + getRunTypeIcon(parentRun.RunType)\"></i>\n </div>\n <div class=\"run-item-content\">\n <div class=\"run-item-title\">\n Parent Run #{{ parentRun.ID.substring(0, 8) }}\n <span class=\"run-item-type\">{{ parentRun.RunType }}</span>\n </div>\n <div class=\"run-item-meta\">\n <span><i class=\"fa-solid fa-clock\"></i> {{ formatDuration(parentRun.ExecutionTimeMS) }}</span>\n <span><i class=\"fa-solid fa-coins\"></i> {{ formatTokens(parentRun.TokensUsed) }}</span>\n <span><i class=\"fa-solid fa-calendar\"></i> {{ parentRun.RunAt | date:'short' }}</span>\n </div>\n </div>\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n </div>\n }\n \n @if (childRuns.length > 0) {\n <div class=\"child-runs-section\">\n <h4><i class=\"fa-solid fa-level-down-alt\"></i> Child Runs</h4>\n <div class=\"runs-list\">\n @for (childRun of childRuns; track childRun.ID) {\n <div class=\"run-item child\" (click)=\"navigateToEntity('MJ: AI Prompt Runs', childRun.ID)\">\n <div class=\"run-item-icon\" [style.background-color]=\"getStatusColor() + '20'\">\n <i [class]=\"'fa-solid ' + getRunTypeIcon(childRun.RunType)\"></i>\n </div>\n <div class=\"run-item-content\">\n <div class=\"run-item-title\">\n Child Run #{{ childRun.ID.substring(0, 8) }}\n @if (childRun.ExecutionOrder !== null) {\n <span class=\"execution-order\">#{{ childRun.ExecutionOrder }}</span>\n }\n <span class=\"run-item-type\">{{ childRun.RunType }}</span>\n </div>\n <div class=\"run-item-meta\">\n <span class=\"status-indicator\" [style.color]=\"getStatusColor()\">\n <i [class]=\"'fa-solid ' + getStatusIcon()\"></i>\n {{ childRun.Success ? 'Success' : childRun.ErrorMessage ? 'Failed' : 'Running' }}\n </span>\n <span><i class=\"fa-solid fa-clock\"></i> {{ formatDuration(childRun.ExecutionTimeMS) }}</span>\n <span><i class=\"fa-solid fa-coins\"></i> {{ formatTokens(childRun.TokensUsed) }}</span>\n </div>\n </div>\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n }\n </div>\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n }\n \n <!-- Additional Details Panel -->\n <kendo-panelbar-item [expanded]=\"false\">\n <ng-template kendoPanelBarItemTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-info-circle\"></i>\n Additional Details\n </span>\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n <div class=\"detail-fields-grid\">\n @if (record.AgentID) {\n <div class=\"detail-field\">\n <label>Agent</label>\n <div class=\"detail-value clickable\" (click)=\"navigateToEntity('MJ: AI Agents', record.AgentID)\" title=\"View Agent\">\n <i class=\"fa-solid fa-robot\"></i>\n {{ record.Agent || 'Unknown' }}\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n </div>\n }\n \n \n @if (record.RunType) {\n <div class=\"detail-field\">\n <label>Run Type</label>\n <div class=\"detail-value\">\n <i [class]=\"'fa-solid ' + getRunTypeIcon(record.RunType)\"></i>\n {{ record.RunType }}\n </div>\n </div>\n }\n \n @if (record.ResponseFormat) {\n <div class=\"detail-field\">\n <label>Response Format</label>\n <div class=\"detail-value\">\n <i class=\"fa-solid fa-code\"></i>\n {{ record.ResponseFormat }}\n </div>\n </div>\n }\n \n <div class=\"detail-field\">\n <label>Temperature</label>\n <div class=\"detail-value\" [class.null-value]=\"record.Temperature === null || record.Temperature === undefined\">\n <i class=\"fa-solid fa-temperature-high\"></i>\n {{ record.Temperature !== null && record.Temperature !== undefined ? record.Temperature : '\u2014' }}\n </div>\n </div>\n \n <div class=\"detail-field\">\n <label>Top P</label>\n <div class=\"detail-value\" [class.null-value]=\"record.TopP === null || record.TopP === undefined\">\n <i class=\"fa-solid fa-percentage\"></i>\n {{ record.TopP !== null && record.TopP !== undefined ? record.TopP : '\u2014' }}\n </div>\n </div>\n \n <div class=\"detail-field\">\n <label>Top K</label>\n <div class=\"detail-value\" [class.null-value]=\"record.TopK === null || record.TopK === undefined\">\n <i class=\"fa-solid fa-list-ol\"></i>\n {{ record.TopK !== null && record.TopK !== undefined ? record.TopK : '\u2014' }}\n </div>\n </div>\n \n <div class=\"detail-field\">\n <label>Min P</label>\n <div class=\"detail-value\" [class.null-value]=\"record.MinP === null || record.MinP === undefined\">\n <i class=\"fa-solid fa-filter\"></i>\n {{ record.MinP !== null && record.MinP !== undefined ? record.MinP : '\u2014' }}\n </div>\n </div>\n \n <div class=\"detail-field\">\n <label>Frequency Penalty</label>\n <div class=\"detail-value\" [class.null-value]=\"record.FrequencyPenalty === null || record.FrequencyPenalty === undefined\">\n <i class=\"fa-solid fa-repeat\"></i>\n {{ record.FrequencyPenalty !== null && record.FrequencyPenalty !== undefined ? record.FrequencyPenalty : '\u2014' }}\n </div>\n </div>\n \n <div class=\"detail-field\">\n <label>Presence Penalty</label>\n <div class=\"detail-value\" [class.null-value]=\"record.PresencePenalty === null || record.PresencePenalty === undefined\">\n <i class=\"fa-solid fa-plus-circle\"></i>\n {{ record.PresencePenalty !== null && record.PresencePenalty !== undefined ? record.PresencePenalty : '\u2014' }}\n </div>\n </div>\n \n <div class=\"detail-field\">\n <label>Seed</label>\n <div class=\"detail-value\" [class.null-value]=\"record.Seed === null || record.Seed === undefined\">\n <i class=\"fa-solid fa-seedling\"></i>\n {{ record.Seed !== null && record.Seed !== undefined ? record.Seed : '\u2014' }}\n </div>\n </div>\n\n <div class=\"detail-field\">\n <label>Stop Sequences</label>\n <div class=\"detail-value\" [class.null-value]=\"!record.StopSequences\">\n <i class=\"fa-solid fa-stop-circle\"></i>\n {{ record.StopSequences || '\u2014' }}\n </div>\n </div>\n\n <div class=\"detail-field\">\n <label>Assistant Prefill</label>\n <div class=\"detail-value\" [class.null-value]=\"!record.AssistantPrefill\">\n <i class=\"fa-solid fa-wand-magic-sparkles\"></i>\n {{ record.AssistantPrefill || '\u2014' }}\n </div>\n </div>\n\n @if (record.RunAt) {\n <div class=\"detail-field\">\n <label>Started At</label>\n <div class=\"detail-value\">\n <i class=\"fa-solid fa-clock\"></i>\n {{ record.RunAt | date:'medium' }}\n </div>\n </div>\n }\n \n @if (record.CompletedAt) {\n <div class=\"detail-field\">\n <label>Completed At</label>\n <div class=\"detail-value\">\n <i class=\"fa-solid fa-check-circle\"></i>\n {{ record.CompletedAt | date:'medium' }}\n </div>\n </div>\n }\n </div>\n </div>\n </ng-template>\n </kendo-panelbar-item>\n \n <!-- Model Specific Response Details Panel -->\n @if (record.ModelSpecificResponseDetails) {\n <kendo-panelbar-item [expanded]=\"modelSpecificExpanded\" (stateChange)=\"onModelSpecificPanelToggle($event)\">\n <ng-template kendoPanelBarItemTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-microchip\"></i>\n Model Specific Response Details\n <span class=\"panel-badge\">JSON</span>\n </span>\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n <div class=\"json-editor-container\">\n <div class=\"json-toolbar\">\n <button kendoButton\n fillMode=\"flat\" \n size=\"small\"\n (click)=\"copyToClipboard(formattedModelSpecificResponseDetails, 'Model Specific Response Details')\"\n title=\"Copy JSON\">\n <i class=\"fa-solid fa-copy\"></i> Copy\n </button>\n </div>\n <mj-code-editor \n [(ngModel)]=\"formattedModelSpecificResponseDetails\"\n name=\"formattedModelSpecificResponseDetails\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 400px; width: 100%;\">\n </mj-code-editor>\n </div>\n </div>\n </ng-template>\n </kendo-panelbar-item>\n }\n \n <!-- Model Selection & Performance Panel (v2.78 fields) -->\n <kendo-panelbar-item [expanded]=\"false\" (stateChange)=\"onModelSelectionPanelToggle($event)\">\n <ng-template kendoPanelBarItemTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-microchip\"></i>\n Model Selection & Performance\n @if (record.CacheHit) {\n <span class=\"panel-badge success\">Cached</span>\n }\n @if (record.WasSelectedResult) {\n <span class=\"panel-badge success\">Selected</span>\n }\n </span>\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n <div class=\"detail-fields-grid\">\n <!-- Model Selection Details -->\n <div class=\"detail-field\">\n <label>Status</label>\n <div class=\"detail-value\">\n <i class=\"fa-solid fa-info-circle\"></i>\n {{ record.Status || 'Unknown' }}\n </div>\n </div>\n \n <div class=\"detail-field\">\n <label>Selection Strategy</label>\n <div class=\"detail-value\">\n <i class=\"fa-solid fa-strategy\"></i>\n {{ record.SelectionStrategy || '\u2014' }}\n </div>\n </div>\n \n <div class=\"detail-field\">\n <label>Model Power Rank</label>\n <div class=\"detail-value\" [class.null-value]=\"record.ModelPowerRank === null\">\n <i class=\"fa-solid fa-ranking-star\"></i>\n {{ record.ModelPowerRank !== null ? record.ModelPowerRank : '\u2014' }}\n </div>\n </div>\n \n <!-- Cache Information -->\n <div class=\"detail-field\">\n <label>Cache Hit</label>\n <div class=\"detail-value\">\n <i [class]=\"record.CacheHit ? 'fa-solid fa-check-circle' : 'fa-solid fa-times-circle'\"></i>\n {{ record.CacheHit ? 'Yes' : 'No' }}\n </div>\n </div>\n \n @if (record.CacheKey) {\n <div class=\"detail-field full-width\">\n <label>Cache Key</label>\n <div class=\"detail-value\">\n <i class=\"fa-solid fa-key\"></i>\n <code>{{ record.CacheKey }}</code>\n </div>\n </div>\n }\n \n <!-- Judge Information -->\n @if (record.JudgeID) {\n <div class=\"detail-field\">\n <label>Judge Prompt</label>\n <div class=\"detail-value clickable\" (click)=\"navigateToEntity('MJ: AI Prompts', record.JudgeID)\" title=\"View Judge Prompt\">\n <i class=\"fa-solid fa-gavel\"></i>\n {{ record.Judge || 'Unknown' }}\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n </div>\n }\n \n @if (record.JudgeScore !== null) {\n <div class=\"detail-field\">\n <label>Judge Score</label>\n <div class=\"detail-value\">\n <i class=\"fa-solid fa-star\"></i>\n {{ record.JudgeScore }}\n </div>\n </div>\n }\n \n <div class=\"detail-field\">\n <label>Was Selected Result</label>\n <div class=\"detail-value\">\n <i [class]=\"record.WasSelectedResult ? 'fa-solid fa-trophy' : 'fa-solid fa-times'\"></i>\n {{ record.WasSelectedResult ? 'Yes' : 'No' }}\n </div>\n </div>\n \n <!-- Performance Metrics -->\n <div class=\"detail-field\">\n <label>Streaming Enabled</label>\n <div class=\"detail-value\">\n <i [class]=\"record.StreamingEnabled ? 'fa-solid fa-stream' : 'fa-solid fa-ban'\"></i>\n {{ record.StreamingEnabled ? 'Yes' : 'No' }}\n </div>\n </div>\n \n @if (record.FirstTokenTime !== null) {\n <div class=\"detail-field\">\n <label>First Token Time</label>\n <div class=\"detail-value\">\n <i class=\"fa-solid fa-bolt\"></i>\n {{ record.FirstTokenTime }} ms\n </div>\n </div>\n }\n \n @if (record.Cancelled) {\n <div class=\"detail-field\">\n <label>Cancelled</label>\n <div class=\"detail-value error\">\n <i class=\"fa-solid fa-ban\"></i>\n Yes\n </div>\n </div>\n \n @if (record.CancellationReason) {\n <div class=\"detail-field full-width\">\n <label>Cancellation Reason</label>\n <div class=\"detail-value\">\n <i class=\"fa-solid fa-exclamation-circle\"></i>\n {{ record.CancellationReason }}\n </div>\n </div>\n }\n }\n </div>\n \n <!-- Model Selection JSON -->\n @if (record.ModelSelection) {\n <div class=\"model-selection-json\">\n <h4>Model Selection Details</h4>\n <div class=\"json-viewer-container\">\n <mj-code-editor \n [(ngModel)]=\"formattedModelSelection\"\n name=\"formattedModelSelection\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n </div>\n </div>\n }\n \n <!-- Error Details JSON -->\n @if (record.ErrorDetails) {\n <div class=\"error-details-json\">\n <h4>Error Details</h4>\n <div class=\"json-viewer-container\">\n <mj-code-editor \n [(ngModel)]=\"formattedErrorDetails\"\n name=\"formattedErrorDetails\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 200px; width: 100%;\">\n </mj-code-editor>\n </div>\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n \n </kendo-panelbar>\n </div>\n </form>\n }\n</div>", styles: ["/* Host and Container Layout */\n:host {\n display: block;\n height: 100%;\n}\n\n.record-form-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n overflow: hidden;\n}\n\n.record-form {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0 !important;\n overflow: hidden;\n}\n\n.form-content {\n padding: 16px;\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n}\n\n/* Error Info Styles */\n.error-info {\n margin-top: 16px;\n padding: 16px;\n background-color: color-mix(in srgb, var(--mj-status-error) 5%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 20%, var(--mj-bg-surface));\n border-radius: 8px;\n}\n\n.finish-reason {\n margin: 0 0 12px 0;\n color: var(--mj-status-error);\n font-size: 14px;\n}\n\n.error-details {\n margin-top: 12px;\n}\n\n.error-details h4 {\n margin: 0 0 8px 0;\n color: color-mix(in srgb, var(--mj-status-error) 80%, black);\n font-size: 14px;\n font-weight: 600;\n}\n\n.error-hint {\n margin: 0;\n color: color-mix(in srgb, var(--mj-status-error) 70%, black);\n font-size: 14px;\n font-style: italic;\n}\n\n/* Header Section */\n.prompt-run-header {\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n padding: 20px;\n margin-bottom: 0;\n}\n\n.header-content {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 20px;\n margin-bottom: 16px;\n}\n\n.run-overview {\n display: flex;\n align-items: flex-start;\n gap: 16px;\n flex: 1;\n}\n\n.run-icon-wrapper {\n width: 56px;\n height: 56px;\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.run-icon-wrapper i {\n font-size: 24px;\n}\n\n.run-info {\n flex: 1;\n min-width: 0;\n}\n\n.run-title {\n margin: 0 0 8px 0;\n font-size: 1.5em;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.run-id {\n font-size: 0.8em;\n color: var(--mj-text-muted);\n font-weight: 400;\n font-family: 'Courier New', monospace;\n}\n\n.run-meta {\n display: flex;\n align-items: center;\n gap: 12px;\n flex-wrap: wrap;\n}\n\n.status-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n border-radius: 16px;\n color: white;\n font-size: 0.85em;\n font-weight: 500;\n}\n\n.status-badge i {\n font-size: 0.9em;\n}\n\n.run-type-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n border-radius: 16px;\n background: var(--mj-bg-surface-sunken);\n font-size: 0.85em;\n font-weight: 500;\n}\n\n.prompt-name, .model-name, .vendor-name {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n border-radius: 16px;\n background: var(--mj-border-default);\n color: var(--mj-text-secondary);\n font-size: 0.85em;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.prompt-name:hover, .model-name:hover, .vendor-name:hover {\n background: var(--mj-border-strong);\n color: var(--mj-brand-primary);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n}\n\n.original-run {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n border-radius: 16px;\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n font-size: 0.85em;\n}\n\n.original-link {\n color: var(--mj-status-error);\n text-decoration: none;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.original-link:hover {\n color: color-mix(in srgb, var(--mj-status-error) 85%, black);\n text-decoration: underline;\n}\n\n.run-actions {\n display: flex;\n gap: 8px;\n}\n\n/* Metrics Bar */\n.metrics-bar {\n display: flex;\n gap: 24px;\n padding-top: 16px;\n border-top: 1px solid var(--mj-border-default);\n flex-wrap: wrap;\n}\n\n.metric-item {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.metric-item > i {\n font-size: 1.2em;\n color: var(--mj-text-muted);\n width: 24px;\n text-align: center;\n}\n\n.metric-content {\n display: flex;\n flex-direction: column;\n}\n\n.metric-label {\n font-size: 0.75em;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.metric-value {\n font-size: 1.1em;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.config-link {\n color: var(--mj-brand-primary);\n text-decoration: none;\n cursor: pointer;\n transition: color 0.2s;\n}\n\n.config-link:hover {\n color: color-mix(in srgb, var(--mj-brand-primary) 75%, black);\n text-decoration: underline;\n}\n\n/* Panels */\n.form-content {\n padding: 16px;\n}\n\n.panel-title {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n}\n\n/* Nested Sub-Panel Styles */\n.sub-panel-title {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 500;\n font-size: 0.95em;\n}\n\n.sub-panel-content {\n padding: 0;\n}\n\n/* Nested kendo-panelbar styles */\n.k-panelbar .k-panelbar {\n border: none;\n background: transparent;\n}\n\n.k-panelbar .k-panelbar > .k-item {\n border: 1px solid var(--mj-border-default);\n margin-bottom: 8px;\n border-radius: 6px;\n overflow: hidden;\n}\n\n.k-panelbar .k-panelbar > .k-item > .k-link {\n background-color: var(--mj-bg-surface-card);\n padding: 12px 16px;\n}\n\n.k-panelbar .k-panelbar > .k-item.k-expanded > .k-link {\n background-color: var(--mj-bg-surface-sunken);\n}\n\n.k-panelbar .k-panelbar .k-content {\n padding: 0;\n background: var(--mj-bg-surface);\n}\n\n/* Ensure chat message viewer takes appropriate height */\n.sub-panel-content mj-chat-message-viewer {\n display: block;\n min-height: 200px;\n max-height: 750px; /* Increased by 50% from 500px */\n height: auto;\n overflow: hidden;\n}\n\n/* Different colors for sub-expansion panels */\n.sub-expansion-panel {\n margin-bottom: 8px;\n}\n\n.sub-expansion-panel::ng-deep .k-expander {\n background-color: var(--mj-bg-surface-card);\n border-color: var(--mj-border-default);\n}\n\n.sub-expansion-panel::ng-deep .k-expander:hover {\n background-color: var(--mj-bg-surface-sunken);\n}\n\n.sub-expansion-panel::ng-deep .k-header {\n background-color: var(--mj-bg-surface-card);\n border-color: var(--mj-border-default);\n}\n\n.sub-expansion-panel::ng-deep .k-content {\n background-color: var(--mj-bg-surface);\n border-color: var(--mj-border-default);\n}\n\n.panel-badge {\n margin-left: auto;\n padding: 2px 8px;\n border-radius: 12px;\n background: var(--mj-border-default);\n color: var(--mj-text-secondary);\n font-size: 0.75em;\n font-weight: 500;\n}\n\n.panel-badge.error {\n background: var(--mj-status-error);\n color: white;\n}\n\n.panel-count {\n color: var(--mj-text-muted);\n font-weight: 400;\n font-size: 0.9em;\n}\n\n.panel-content {\n padding: 20px;\n max-height: none !important;\n overflow: visible !important;\n}\n\n/* JSON Editor Container */\n.json-editor-container {\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\n}\n\n.json-toolbar {\n background: var(--mj-bg-surface-card);\n padding: 8px 12px;\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n justify-content: flex-end;\n}\n\n/* Error Message */\n.error-message {\n background: color-mix(in srgb, var(--mj-status-error) 6%, var(--mj-bg-surface));\n border: 1px solid var(--mj-status-error);\n border-radius: 6px;\n padding: 16px;\n display: flex;\n gap: 16px;\n margin-bottom: 16px;\n}\n\n.error-message i {\n font-size: 1.5em;\n color: var(--mj-status-error);\n flex-shrink: 0;\n}\n\n.error-content h4 {\n margin: 0 0 8px 0;\n color: var(--mj-status-error);\n font-size: 1em;\n}\n\n.error-content p {\n margin: 0;\n color: var(--mj-text-secondary);\n}\n\n/* Empty State */\n.empty-state {\n text-align: center;\n padding: 60px 40px;\n color: var(--mj-text-muted);\n}\n\n.empty-state i {\n font-size: 3em;\n margin-bottom: 16px;\n opacity: 0.3;\n}\n\n.empty-state p {\n margin: 0;\n font-size: 1.1em;\n}\n\n/* Loading State */\n.loading-state {\n text-align: center;\n padding: 60px 40px;\n color: var(--mj-text-muted);\n}\n\n.loading-state i {\n font-size: 3em;\n margin-bottom: 16px;\n opacity: 0.6;\n color: var(--mj-brand-primary);\n}\n\n.loading-state p {\n margin: 0;\n font-size: 1.1em;\n}\n\n/* Metrics Grid */\n.metrics-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 20px;\n margin-bottom: 24px;\n}\n\n.metric-card {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 20px;\n}\n\n.metric-header {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 12px;\n}\n\n.metric-header i {\n font-size: 1.2em;\n color: var(--mj-text-muted);\n}\n\n.metric-header h4 {\n margin: 0;\n font-size: 0.9em;\n color: var(--mj-text-muted);\n font-weight: 500;\n}\n\n.metric-value.large {\n font-size: 1.8em;\n font-weight: 700;\n color: var(--mj-text-primary);\n}\n\n.metric-rollup {\n margin-top: 8px;\n font-size: 0.85em;\n color: var(--mj-text-muted);\n}\n\n.metric-currency {\n margin-top: 4px;\n font-size: 0.85em;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n}\n\n/* Additional Metrics */\n.additional-metrics {\n padding-top: 16px;\n}\n\n.metric-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 8px 0;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n}\n\n.metric-row:last-child {\n border-bottom: none;\n}\n\n.metric-row .metric-label {\n font-weight: 500;\n color: var(--mj-text-muted);\n}\n\n.metric-row .metric-value {\n font-weight: 400;\n color: var(--mj-text-primary);\n}\n\n.metric-row .metric-value.link {\n color: var(--mj-brand-primary);\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: color 0.2s;\n}\n\n.metric-row .metric-value.link:hover {\n color: color-mix(in srgb, var(--mj-brand-primary) 75%, black);\n}\n\n/* Hierarchy Section */\n.parent-run-section,\n.child-runs-section {\n margin-bottom: 24px;\n}\n\n.parent-run-section:last-child,\n.child-runs-section:last-child {\n margin-bottom: 0;\n}\n\n.parent-run-section h4,\n.child-runs-section h4 {\n margin: 0 0 12px 0;\n font-size: 0.95em;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.runs-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.run-item {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 12px 16px;\n display: flex;\n align-items: center;\n gap: 12px;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.run-item:hover {\n background: var(--mj-border-default);\n border-color: var(--mj-border-strong);\n}\n\n.run-item.parent {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-brand-primary) 30%, var(--mj-bg-surface));\n}\n\n.run-item.parent:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 20%, var(--mj-bg-surface));\n}\n\n.run-item-icon {\n width: 36px;\n height: 36px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.run-item-content {\n flex: 1;\n min-width: 0;\n}\n\n.run-item-title {\n font-weight: 500;\n color: var(--mj-text-primary);\n margin-bottom: 4px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.execution-order {\n background: var(--mj-text-muted);\n color: white;\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 0.75em;\n font-weight: 600;\n}\n\n.run-item-type {\n font-size: 0.85em;\n color: var(--mj-text-muted);\n font-weight: 400;\n}\n\n.run-item-meta {\n display: flex;\n align-items: center;\n gap: 16px;\n font-size: 0.85em;\n color: var(--mj-text-muted);\n}\n\n.run-item-meta span {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.status-indicator {\n font-weight: 500;\n}\n\n.run-item > i:last-child {\n color: var(--mj-text-muted);\n font-size: 0.85em;\n}\n\n/* Detail Fields Grid */\n.detail-fields-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n gap: 24px;\n width: 100%;\n min-height: auto;\n overflow: visible;\n}\n\n.detail-field {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.detail-field label {\n font-size: 0.85em;\n color: var(--mj-text-muted);\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.detail-value {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 1em;\n color: var(--mj-text-primary);\n padding: 10px 14px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n transition: all 0.2s;\n}\n\n.detail-value i:first-child {\n color: var(--mj-text-muted);\n font-size: 1.1em;\n width: 20px;\n text-align: center;\n}\n\n.detail-value.clickable {\n cursor: pointer;\n}\n\n.detail-value.clickable:hover {\n background: var(--mj-border-default);\n border-color: var(--mj-border-strong);\n color: var(--mj-brand-primary);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n}\n\n.detail-value.clickable i:last-child {\n margin-left: auto;\n font-size: 0.85em;\n opacity: 0.6;\n}\n\n.detail-value.clickable:hover i:last-child {\n opacity: 1;\n}\n\n.detail-value.null-value {\n color: var(--mj-text-disabled);\n font-style: italic;\n}\n\n.detail-value.null-value i:first-child {\n opacity: 0.5;\n}\n\n/* Kendo Overrides */\nkendo-panelbar {\n border: none !important;\n}\n\nkendo-panelbar-item {\n margin-bottom: 8px;\n border: 1px solid var(--mj-border-default) !important;\n border-radius: 8px !important;\n overflow: hidden;\n}\n\nkendo-panelbar-item .k-panelbar-header {\n background: var(--mj-bg-surface-card) !important;\n border: none !important;\n padding: 12px 16px !important;\n}\n\nkendo-panelbar-item .k-panelbar-header:hover {\n background: var(--mj-border-default) !important;\n}\n\nkendo-panelbar-item .k-panelbar-content {\n border: none !important;\n padding: 0 !important;\n max-height: none !important;\n overflow: visible !important;\n}\n\n/* Validation Panel Styles */\n.validation-summary {\n margin-bottom: 24px;\n}\n\n.summary-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 16px;\n}\n\n.summary-header h4 {\n margin: 0;\n font-size: 1.1em;\n color: var(--mj-text-primary);\n}\n\n.validation-status {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 6px 16px;\n border-radius: 20px;\n font-weight: 500;\n font-size: 0.9em;\n}\n\n.validation-status.success {\n background: color-mix(in srgb, var(--mj-status-success) 12%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.validation-status.failed {\n background: color-mix(in srgb, var(--mj-status-error) 12%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.validation-metrics {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));\n gap: 12px;\n margin-bottom: 20px;\n}\n\n.metric-card.small {\n padding: 16px;\n text-align: center;\n}\n\n.metric-card.small .metric-label {\n font-size: 0.8em;\n margin-bottom: 8px;\n font-weight: 600;\n}\n\n.metric-card.small .metric-value {\n font-size: 1.4em;\n font-weight: 700;\n}\n\n.validation-error,\n.common-error {\n background: color-mix(in srgb, var(--mj-status-error) 6%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 18%, var(--mj-bg-surface));\n border-radius: 8px;\n padding: 16px;\n margin-bottom: 16px;\n}\n\n.validation-error h5,\n.common-error h5 {\n margin: 0 0 8px 0;\n color: var(--mj-status-error);\n font-size: 0.95em;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.validation-error p,\n.common-error p {\n margin: 0;\n color: var(--mj-text-secondary);\n font-size: 0.9em;\n}\n\n.error-count {\n display: inline-block;\n margin-top: 8px;\n padding: 2px 8px;\n background: var(--mj-status-error);\n color: white;\n border-radius: 12px;\n font-size: 0.75em;\n font-weight: 500;\n}\n\n/* Retry Timeline */\n.retry-timeline {\n margin-bottom: 24px;\n}\n\n.retry-timeline h4 {\n margin: 0 0 12px 0;\n font-size: 1em;\n color: var(--mj-text-secondary);\n}\n\n.timeline-info {\n display: flex;\n gap: 24px;\n flex-wrap: wrap;\n}\n\n.timeline-stat {\n display: flex;\n align-items: center;\n gap: 8px;\n color: var(--mj-text-muted);\n font-size: 0.9em;\n}\n\n.timeline-stat i {\n font-size: 1.1em;\n}\n\n/* Validation Attempts */\n.validation-attempts {\n margin-bottom: 24px;\n}\n\n.validation-attempts h4 {\n margin: 0 0 12px 0;\n font-size: 1em;\n color: var(--mj-text-secondary);\n}\n\n.attempts-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.attempt-item {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 12px 16px;\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 16px;\n}\n\n.attempt-item.success {\n background: color-mix(in srgb, var(--mj-status-success) 6%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-status-success) 18%, var(--mj-bg-surface));\n}\n\n.attempt-item.failed {\n background: color-mix(in srgb, var(--mj-status-error) 6%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-status-error) 18%, var(--mj-bg-surface));\n}\n\n.attempt-number {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.attempt-item.success .attempt-number {\n color: var(--mj-status-success);\n}\n\n.attempt-item.failed .attempt-number {\n color: var(--mj-status-error);\n}\n\n.attempt-details {\n flex: 1;\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n font-size: 0.85em;\n}\n\n.attempt-time {\n color: var(--mj-text-muted);\n}\n\n.attempt-error {\n color: var(--mj-status-error);\n flex: 1 0 100%;\n}\n\n.output-length {\n color: var(--mj-text-muted);\n font-style: italic;\n}\n\n/* Validation JSON */\n.validation-json {\n margin-top: 24px;\n}\n\n.validation-json h4 {\n margin: 0 0 12px 0;\n font-size: 1em;\n color: var(--mj-text-secondary);\n}\n\n.json-viewer-container {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n}\n\n/* Panel badge styles */\n.panel-badge.success {\n background: var(--mj-status-success);\n color: white;\n}\n"] }]
|
|
2379
|
+
args: [{ standalone: false, selector: 'mj-ai-prompt-run-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"record-form-container\" style=\"height: 100%; display: flex; flex-direction: column;\">\n @if (record) {\n <form class=\"record-form\" #form=\"ngForm\" style=\"display: flex; flex-direction: column; height: 100%; overflow: hidden;\">\n <mj-form-toolbar [Form]=\"this\"></mj-form-toolbar>\n\n <!-- Header Section -->\n <div class=\"prompt-run-header\">\n <div class=\"header-content\">\n <div class=\"run-overview\">\n <div class=\"run-icon-wrapper\" [style.background-color]=\"getStatusColor() + '20'\">\n <i [class]=\"'fa-solid ' + getStatusIcon()\" [style.color]=\"getStatusColor()\"></i>\n </div>\n <div class=\"run-info\">\n <h1 class=\"run-title\">\n Prompt Run\n @if (record.ID) {\n <span class=\"run-id\">#{{ record.ID.substring(0, 8) }}</span>\n }\n </h1>\n <div class=\"run-meta\">\n <!-- Status Card -->\n <div class=\"meta-card status-card\">\n <div class=\"c3-card-label\">Status</div>\n <div class=\"meta-card-body\">\n <span class=\"status-indicator\" [style.background-color]=\"getStatusColor()\"></span>\n <i [class]=\"'fa-solid ' + getStatusIcon()\" [style.color]=\"getStatusColor()\"></i>\n {{ getStatusText() }}\n </div>\n </div>\n\n <!-- Execution Card -->\n @if (record.RunType) {\n <div class=\"meta-card execution-card\">\n <div class=\"c3-card-label\">Execution</div>\n <div class=\"meta-card-body\">\n <i [class]=\"'fa-solid ' + getRunTypeIcon(record.RunType)\" [style.color]=\"getRunTypeColor(record.RunType)\"></i>\n {{ record.RunType }}\n </div>\n </div>\n }\n\n <!-- Prompt Card -->\n @if (prompt) {\n @if (record.ChildPromptID) {\n <!-- C3 Stacked Connector: child prompt prominent, parent nested -->\n <div class=\"prompt-card-c3\">\n <div class=\"c3-card-label\">Prompt</div>\n <div class=\"c3-child-section\" (click)=\"navigateToEntity('MJ: AI Prompts', record.ChildPromptID)\" title=\"View Agent Prompt\">\n <i class=\"fa-solid fa-comment prompt-icon\"></i>\n {{ record.ChildPrompt }}\n </div>\n <div class=\"c3-divider\">\n <span class=\"c3-line\"></span>\n <span class=\"c3-divider-label\">wrapped by</span>\n <span class=\"c3-line\"></span>\n </div>\n <div class=\"c3-parent-section\" (click)=\"navigateToEntity('MJ: AI Prompts', prompt.ID)\" title=\"View System Prompt\">\n <i class=\"fa-solid fa-cog\"></i>\n {{ prompt.Name }}\n <i class=\"fa-solid fa-arrow-up-right-from-square c3-link-icon\"></i>\n </div>\n </div>\n } @else {\n <!-- Single prompt (no child) \u2014 same card style -->\n <div class=\"meta-card prompt-single-card\">\n <div class=\"c3-card-label\">Prompt</div>\n <div class=\"meta-card-body clickable\" (click)=\"navigateToEntity('MJ: AI Prompts', prompt.ID)\" title=\"View Prompt\">\n <i class=\"fa-solid fa-comment-dots\" style=\"color: var(--mj-brand-primary);\"></i>\n {{ prompt.Name }}\n </div>\n </div>\n }\n }\n\n <!-- Model Card -->\n @if (model) {\n <div class=\"model-card-c3\">\n <div class=\"c3-card-label\">Model</div>\n <div class=\"c3-card-body\" (click)=\"navigateToEntity('MJ: AI Models', model.ID)\" title=\"View Model\">\n <span class=\"c3-model-name\"><i class=\"fa-solid fa-microchip\"></i> {{ model.Name }}</span>\n @if (record.Vendor) {\n <span class=\"c3-vendor-name\">{{ record.Vendor }}</span>\n }\n </div>\n </div>\n }\n @if (record.RerunFromPromptRunID) {\n <span class=\"original-run\" title=\"View Original Run\">\n <i class=\"fa-solid fa-level-up-alt\"></i>\n <a (click)=\"navigateToOriginalRun()\" class=\"original-link\">Original Run</a>\n </span>\n }\n </div>\n </div>\n </div>\n \n <!-- Action Buttons -->\n <div class=\"run-actions\">\n <button kendoButton fillMode=\"outline\" size=\"small\" (click)=\"reRunPrompt()\" title=\"Re-run this prompt\">\n <i class=\"fa-solid fa-play-circle\"></i>\n Re-Run\n </button>\n <button kendoButton fillMode=\"outline\" size=\"small\" (click)=\"refreshData()\" title=\"Refresh data\">\n <i class=\"fa-solid fa-refresh\"></i>\n </button>\n </div>\n </div>\n \n <!-- Key Metrics Bar -->\n @if (record.ConfigurationID) {\n <!-- Configuration Bar -->\n <div class=\"metrics-bar\">\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-cog\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Configuration</div>\n <div class=\"metric-value\">\n <a href=\"javascript:void(0)\" class=\"config-link\" (click)=\"navigateToEntity('MJ: AI Configurations', record.ConfigurationID)\">\n {{ record.Configuration || 'Unknown' }}\n </a>\n </div>\n </div>\n </div>\n @if (record.Temperature !== null && record.Temperature !== undefined) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-temperature-high\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Temperature</div>\n <div class=\"metric-value\">{{ record.Temperature }}</div>\n </div>\n </div>\n }\n @if (record.TopP !== null && record.TopP !== undefined) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-percentage\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Top P</div>\n <div class=\"metric-value\">{{ record.TopP }}</div>\n </div>\n </div>\n }\n @if (record.TopK !== null && record.TopK !== undefined) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-list-ol\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Top K</div>\n <div class=\"metric-value\">{{ record.TopK }}</div>\n </div>\n </div>\n }\n @if (record.EffortLevel !== null && record.EffortLevel !== undefined) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-tachometer-alt\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Effort Level</div>\n <div class=\"metric-value\">{{ record.EffortLevel }}</div>\n </div>\n </div>\n }\n @if (record.ResponseFormat) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-code\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Response Format</div>\n <div class=\"metric-value\">{{ record.ResponseFormat }}</div>\n </div>\n </div>\n }\n </div>\n \n <!-- Execution Metrics Bar (always show when configuration exists) -->\n <div class=\"metrics-bar\">\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-clock\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Duration</div>\n <div class=\"metric-value\">{{ formatDuration(record.ExecutionTimeMS) }}</div>\n </div>\n </div>\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-coins\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Total Tokens</div>\n <div class=\"metric-value\">{{ formatTokens(record.TokensUsed) }}</div>\n </div>\n </div>\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-dollar-sign\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Cost</div>\n <div class=\"metric-value\">{{ formatCost(record.TotalCost || record.Cost) }}</div>\n </div>\n </div>\n @if (record.RunAt) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-calendar\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Started</div>\n <div class=\"metric-value\">{{ record.RunAt | date:'short' }}</div>\n </div>\n </div>\n }\n </div>\n } @else {\n <!-- Execution Metrics Bar (original behavior when no configuration) -->\n <div class=\"metrics-bar\">\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-clock\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Duration</div>\n <div class=\"metric-value\">{{ formatDuration(record.ExecutionTimeMS) }}</div>\n </div>\n </div>\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-coins\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Total Tokens</div>\n <div class=\"metric-value\">{{ formatTokens(record.TokensUsed) }}</div>\n </div>\n </div>\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-dollar-sign\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Cost</div>\n <div class=\"metric-value\">{{ formatCost(record.TotalCost || record.Cost) }}</div>\n </div>\n </div>\n @if (record.RunAt) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-calendar\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Started</div>\n <div class=\"metric-value\">{{ record.RunAt | date:'short' }}</div>\n </div>\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Main Content with Expansion Panels -->\n <div class=\"form-content\" style=\"display: flex; flex-direction: column; flex: 1; min-height: 0; overflow-y: auto;\">\n <kendo-panelbar [keepItemContent]=\"true\">\n \n <!-- Input Panel with nested sub-panels -->\n <kendo-panelbar-item [expanded]=\"inputExpanded\" (stateChange)=\"onInputPanelToggle($event)\">\n <ng-template kendoPanelBarItemTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-comment-dots\"></i>\n Input\n @if (record.Messages && record.Messages.trim() !== '') {\n <span class=\"panel-badge\">JSON</span>\n }\n </span>\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n @if (record.Messages && record.Messages.trim() !== '') {\n <!-- Nested expansion panels for sub-sections -->\n <div class=\"nested-panels\">\n <!-- Messages Sub-Panel -->\n <kendo-expansionpanel \n [expanded]=\"messagesExpanded\" \n class=\"sub-expansion-panel\"\n [animation]=\"false\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span class=\"sub-panel-title\">\n <i class=\"fa-solid fa-comments\"></i>\n Messages\n @if (chatMessages.length > 0) {\n <span class=\"panel-count\">({{ chatMessages.length }})</span>\n }\n </span>\n </ng-template>\n <div class=\"sub-panel-content\">\n @if (isParsingMessages || isLoadingRelatedData) {\n <div class=\"loading-state\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <p>Loading messages...</p>\n </div>\n } @else if (chatMessages.length > 0) {\n <mj-chat-message-viewer \n [messages]=\"chatMessages\">\n </mj-chat-message-viewer>\n } @else {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-comment-slash\"></i>\n <p>No chat messages found</p>\n </div>\n }\n </div>\n </kendo-expansionpanel>\n \n <!-- Data Sub-Panel -->\n <kendo-expansionpanel \n [expanded]=\"dataExpanded\" \n class=\"sub-expansion-panel\"\n [animation]=\"false\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span class=\"sub-panel-title\">\n <i class=\"fa-solid fa-database\"></i>\n Data\n @if (inputData) {\n <span class=\"panel-badge\">Object</span>\n }\n </span>\n </ng-template>\n <div class=\"sub-panel-content\">\n @if (inputData && formattedData) {\n <div class=\"json-editor-container\">\n <div class=\"json-toolbar\">\n <button kendoButton\n fillMode=\"flat\"\n size=\"small\"\n (click)=\"copyToClipboard(formattedData, 'Data')\"\n title=\"Copy JSON\">\n <i class=\"fa-solid fa-copy\"></i> Copy\n </button>\n <button kendoButton\n fillMode=\"flat\"\n size=\"small\"\n (click)=\"openFullScreen(formattedData, 'json', 'Data')\"\n title=\"View full screen\">\n <i class=\"fa-solid fa-expand\"></i>\n </button>\n </div>\n <mj-code-editor \n [(ngModel)]=\"formattedData\"\n name=\"formattedData\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n </div>\n } @else {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-database\"></i>\n <p>No data object found</p>\n </div>\n }\n </div>\n </kendo-expansionpanel>\n \n <!-- Raw Sub-Panel -->\n <kendo-expansionpanel \n [expanded]=\"rawExpanded\" \n class=\"sub-expansion-panel\"\n [animation]=\"false\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span class=\"sub-panel-title\">\n <i class=\"fa-solid fa-code\"></i>\n Raw\n </span>\n </ng-template>\n <div class=\"sub-panel-content\">\n <div class=\"json-editor-container\">\n <div class=\"json-toolbar\">\n <button kendoButton\n fillMode=\"flat\"\n size=\"small\"\n (click)=\"copyToClipboard(formattedMessages, 'Messages')\"\n title=\"Copy JSON\">\n <i class=\"fa-solid fa-copy\"></i> Copy\n </button>\n <button kendoButton\n fillMode=\"flat\"\n size=\"small\"\n (click)=\"openFullScreen(formattedMessages, 'json', 'Raw Messages')\"\n title=\"View full screen\">\n <i class=\"fa-solid fa-expand\"></i>\n </button>\n </div>\n <mj-code-editor \n [(ngModel)]=\"formattedMessages\"\n name=\"formattedMessages\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 400px; width: 100%;\">\n </mj-code-editor>\n </div>\n </div>\n </kendo-expansionpanel>\n </div>\n } @else {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-comment-slash\"></i>\n <p>No input messages recorded</p>\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n \n <!-- Result Panel -->\n <kendo-panelbar-item [expanded]=\"resultExpanded\" (stateChange)=\"onResultPanelToggle($event)\">\n <ng-template kendoPanelBarItemTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-square-check\"></i>\n Result\n @if (record.Result && record.Result.trim() !== '') {\n <span class=\"panel-badge\">JSON</span>\n }\n @if (record.ErrorMessage) {\n <span class=\"panel-badge error\">Error</span>\n }\n </span>\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n @if (record.ErrorMessage) {\n <div class=\"error-message\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n <div class=\"error-content\">\n <h4>Error Message</h4>\n <p>{{ record.ErrorMessage }}</p>\n </div>\n </div>\n }\n \n @if (record.Result && record.Result.trim() !== '') {\n <div class=\"json-editor-container\">\n <div class=\"json-toolbar\">\n <button kendoButton\n fillMode=\"flat\" \n size=\"small\"\n (click)=\"copyToClipboard(formattedResult, 'Result')\"\n title=\"Copy JSON\">\n <i class=\"fa-solid fa-copy\"></i> Copy\n </button>\n <button kendoButton\n fillMode=\"flat\"\n size=\"small\"\n (click)=\"openFullScreen(formattedResult, 'json', 'Result')\"\n title=\"View full screen\">\n <i class=\"fa-solid fa-expand\"></i>\n </button>\n </div>\n <mj-code-editor \n [(ngModel)]=\"formattedResult\"\n name=\"formattedResult\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 400px; width: 100%;\">\n </mj-code-editor>\n </div>\n } @else if (!record.ErrorMessage) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-inbox\"></i>\n <p>No result data recorded</p>\n @if (record.Status === 'Failed' || record.Success === false) {\n <div class=\"error-info\">\n @if (record.Status) {\n <p class=\"finish-reason\">\n <strong>Status:</strong> {{ record.Status }}\n </p>\n }\n @if (formattedErrorDetails) {\n <div class=\"error-details\">\n <div class=\"json-toolbar\">\n <h4 style=\"margin: 0;\">Error Details</h4>\n <button kendoButton\n fillMode=\"flat\"\n size=\"small\"\n (click)=\"openFullScreen(formattedErrorDetails, 'json', 'Error Details')\"\n title=\"View full screen\">\n <i class=\"fa-solid fa-expand\"></i>\n </button>\n </div>\n <mj-code-editor\n [ngModel]=\"formattedErrorDetails\"\n [disabled]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 200px; width: 100%;\">\n </mj-code-editor>\n </div>\n }\n @if (!formattedErrorDetails) {\n <p class=\"error-hint\">\n The prompt execution failed but no additional error information is available.\n </p>\n }\n </div>\n }\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n \n <!-- Token Usage & Metrics Panel -->\n <kendo-panelbar-item [expanded]=\"metricsExpanded\" (stateChange)=\"onMetricsPanelToggle($event)\">\n <ng-template kendoPanelBarItemTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-chart-line\"></i>\n Token Usage & Metrics\n </span>\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n <div class=\"metrics-grid\">\n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <i class=\"fa-solid fa-message\"></i>\n <h4>Prompt Tokens</h4>\n </div>\n <div class=\"metric-value large\">{{ formatTokens(record.TokensPrompt) }}</div>\n @if (record.TokensPromptRollup && record.TokensPromptRollup !== record.TokensPrompt) {\n <div class=\"metric-rollup\">\n <span>Rollup: {{ formatTokens(record.TokensPromptRollup) }}</span>\n </div>\n }\n </div>\n \n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <i class=\"fa-solid fa-reply\"></i>\n <h4>Completion Tokens</h4>\n </div>\n <div class=\"metric-value large\">{{ formatTokens(record.TokensCompletion) }}</div>\n @if (record.TokensCompletionRollup && record.TokensCompletionRollup !== record.TokensCompletion) {\n <div class=\"metric-rollup\">\n <span>Rollup: {{ formatTokens(record.TokensCompletionRollup) }}</span>\n </div>\n }\n </div>\n \n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <i class=\"fa-solid fa-coins\"></i>\n <h4>Total Tokens</h4>\n </div>\n <div class=\"metric-value large\">{{ formatTokens(record.TokensUsed) }}</div>\n @if (record.TokensUsedRollup && record.TokensUsedRollup !== record.TokensUsed) {\n <div class=\"metric-rollup\">\n <span>Rollup: {{ formatTokens(record.TokensUsedRollup) }}</span>\n </div>\n }\n </div>\n \n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <i class=\"fa-solid fa-dollar-sign\"></i>\n <h4>Cost</h4>\n </div>\n <div class=\"metric-value large\">{{ formatCost(record.Cost) }}</div>\n @if (record.TotalCost && record.TotalCost !== record.Cost) {\n <div class=\"metric-rollup\">\n <span>Total: {{ formatCost(record.TotalCost) }}</span>\n </div>\n }\n @if (record.CostCurrency) {\n <div class=\"metric-currency\">{{ record.CostCurrency }}</div>\n }\n </div>\n \n <!-- Timing Metrics -->\n @if (record.QueueTime != null) {\n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <i class=\"fa-solid fa-hourglass-start\"></i>\n <h4>Queue Time</h4>\n </div>\n <div class=\"metric-value large\">{{ formatDuration(record.QueueTime) }}</div>\n </div>\n }\n \n @if (record.PromptTime != null) {\n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <i class=\"fa-solid fa-brain\"></i>\n <h4>Prompt Time</h4>\n </div>\n <div class=\"metric-value large\">{{ formatDuration(record.PromptTime) }}</div>\n </div>\n }\n \n @if (record.CompletionTime != null) {\n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <i class=\"fa-solid fa-flag-checkered\"></i>\n <h4>Completion Time</h4>\n </div>\n <div class=\"metric-value large\">{{ formatDuration(record.CompletionTime) }}</div>\n </div>\n }\n </div>\n \n <!-- Additional Metrics -->\n <div class=\"additional-metrics\">\n @if (record.ExecutionOrder !== null) {\n <div class=\"metric-row\">\n <span class=\"metric-label\">Execution Order:</span>\n <span class=\"metric-value\">{{ record.ExecutionOrder }}</span>\n </div>\n }\n @if (record.AgentID) {\n <div class=\"metric-row\">\n <span class=\"metric-label\">Agent:</span>\n <span class=\"metric-value link\" (click)=\"navigateToEntity('MJ: AI Agents', record.AgentID)\">\n {{ record.Agent }}\n <i class=\"fa-solid fa-external-link\"></i>\n </span>\n </div>\n }\n </div>\n </div>\n </ng-template>\n </kendo-panelbar-item>\n \n <!-- Validation & Retry Panel -->\n @if (record && ((record.ValidationAttemptCount && record.ValidationAttemptCount > 0) || record.ValidationBehavior)) {\n <kendo-panelbar-item [expanded]=\"validationExpanded\" (stateChange)=\"onValidationPanelToggle($event)\">\n <ng-template kendoPanelBarItemTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-shield-check\"></i>\n Validation & Retries\n @if (record && record.ValidationAttemptCount && record.ValidationAttemptCount > 1) {\n <span class=\"panel-count\">({{ record.ValidationAttemptCount }} attempts)</span>\n }\n @if (record.FinalValidationPassed) {\n <span class=\"panel-badge success\">Passed</span>\n } @else if (record.FinalValidationPassed === false) {\n <span class=\"panel-badge error\">Failed</span>\n }\n </span>\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n <!-- Validation Summary -->\n <div class=\"validation-summary\">\n <div class=\"summary-header\">\n <h4>Validation Summary</h4>\n <div class=\"validation-status\" [class.success]=\"record.FinalValidationPassed\" [class.failed]=\"!record.FinalValidationPassed\">\n <i [class]=\"record.FinalValidationPassed ? 'fa-solid fa-check-circle' : 'fa-solid fa-times-circle'\"></i>\n {{ record.FinalValidationPassed ? 'Validation Passed' : 'Validation Failed' }}\n </div>\n </div>\n \n <div class=\"validation-metrics\">\n <div class=\"metric-card small\">\n <div class=\"metric-label\">Total Attempts</div>\n <div class=\"metric-value\">{{ record.ValidationAttemptCount || 0 }}</div>\n </div>\n <div class=\"metric-card small\">\n <div class=\"metric-label\">Successful</div>\n <div class=\"metric-value\">{{ record.SuccessfulValidationCount || 0 }}</div>\n </div>\n <div class=\"metric-card small\">\n <div class=\"metric-label\">Behavior</div>\n <div class=\"metric-value\">{{ record.ValidationBehavior || 'Not set' }}</div>\n </div>\n <div class=\"metric-card small\">\n <div class=\"metric-label\">Retry Strategy</div>\n <div class=\"metric-value\">{{ record.RetryStrategy || 'Not set' }}</div>\n </div>\n </div>\n \n @if (record.FinalValidationError) {\n <div class=\"validation-error\">\n <h5><i class=\"fa-solid fa-exclamation-triangle\"></i> Final Validation Error</h5>\n <p>{{ record.FinalValidationError }}</p>\n @if (record && record.ValidationErrorCount && record.ValidationErrorCount > 0) {\n <span class=\"error-count\">{{ record.ValidationErrorCount }} validation errors</span>\n }\n </div>\n }\n \n @if (record.CommonValidationError && record.CommonValidationError !== record.FinalValidationError) {\n <div class=\"common-error\">\n <h5><i class=\"fa-solid fa-repeat\"></i> Most Common Error</h5>\n <p>{{ record.CommonValidationError }}</p>\n </div>\n }\n </div>\n \n <!-- Retry Timeline -->\n @if (record && record.ValidationAttemptCount && record.ValidationAttemptCount > 1) {\n <div class=\"retry-timeline\">\n <h4>Retry Timeline</h4>\n <div class=\"timeline-info\">\n <div class=\"timeline-stat\">\n <i class=\"fa-solid fa-clock\"></i>\n <span>First Attempt: {{ record.FirstAttemptAt | date:'short' }}</span>\n </div>\n <div class=\"timeline-stat\">\n <i class=\"fa-solid fa-flag-checkered\"></i>\n <span>Last Attempt: {{ record.LastAttemptAt | date:'short' }}</span>\n </div>\n <div class=\"timeline-stat\">\n <i class=\"fa-solid fa-stopwatch\"></i>\n <span>Total Retry Duration: {{ formatDuration(record.TotalRetryDurationMS) }}</span>\n </div>\n </div>\n </div>\n }\n \n <!-- Validation Attempts Details -->\n @if (validationAttempts && validationAttempts.length > 0) {\n <div class=\"validation-attempts\">\n <h4>Validation Attempts</h4>\n <div class=\"attempts-list\">\n @for (attempt of validationAttempts; track attempt.attemptNumber) {\n <div class=\"attempt-item\" [class.success]=\"attempt.success\" [class.failed]=\"!attempt.success\">\n <div class=\"attempt-number\">\n <i [class]=\"attempt.success ? 'fa-solid fa-check' : 'fa-solid fa-times'\"></i>\n Attempt #{{ attempt.attemptNumber }}\n </div>\n <div class=\"attempt-details\">\n <span class=\"attempt-time\">{{ attempt.timestamp }}</span>\n @if (!attempt.success) {\n <span class=\"attempt-error\">{{ attempt.errorMessage || 'Unknown error' }}</span>\n @if (attempt.validationErrorCount > 0) {\n <span class=\"error-count\">({{ attempt.validationErrorCount }} errors)</span>\n }\n }\n @if (attempt.outputLength) {\n <span class=\"output-length\">Output: {{ attempt.outputLength }} chars</span>\n }\n </div>\n </div>\n }\n </div>\n </div>\n }\n \n <!-- Validation Summary JSON -->\n @if (validationSummary) {\n <div class=\"validation-json\">\n <div class=\"json-toolbar\">\n <h4 style=\"margin: 0;\">Validation Summary Details</h4>\n <button kendoButton\n fillMode=\"flat\"\n size=\"small\"\n (click)=\"openFullScreen(formattedValidationSummary, 'json', 'Validation Summary')\"\n title=\"View full screen\">\n <i class=\"fa-solid fa-expand\"></i>\n </button>\n </div>\n <div class=\"json-viewer-container\">\n <mj-code-editor\n [(ngModel)]=\"formattedValidationSummary\"\n name=\"formattedValidationSummary\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 200px; width: 100%;\">\n </mj-code-editor>\n </div>\n </div>\n }\n \n <!-- Validation Attempts JSON -->\n @if (record.ValidationAttempts) {\n <div class=\"validation-json\">\n <div class=\"json-toolbar\">\n <h4 style=\"margin: 0;\">Validation Attempts (Raw JSON)</h4>\n <button kendoButton\n fillMode=\"flat\"\n size=\"small\"\n (click)=\"openFullScreen(formattedValidationAttempts, 'json', 'Validation Attempts')\"\n title=\"View full screen\">\n <i class=\"fa-solid fa-expand\"></i>\n </button>\n </div>\n <div class=\"json-viewer-container\">\n <mj-code-editor\n [(ngModel)]=\"formattedValidationAttempts\"\n name=\"formattedValidationAttempts\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n </div>\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n }\n \n <!-- Hierarchy Panel (for parent/child relationships) -->\n @if (record.ParentID || childRuns.length > 0) {\n <kendo-panelbar-item [expanded]=\"hierarchyExpanded\">\n <ng-template kendoPanelBarItemTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-sitemap\"></i>\n Run Hierarchy\n @if (childRuns.length > 0) {\n <span class=\"panel-count\">({{ childRuns.length }} children)</span>\n }\n </span>\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n @if (parentRun) {\n <div class=\"parent-run-section\">\n <h4><i class=\"fa-solid fa-level-up-alt\"></i> Parent Run</h4>\n <div class=\"run-item parent\" (click)=\"navigateToEntity('MJ: AI Prompt Runs', parentRun.ID)\">\n <div class=\"run-item-icon\" [style.background-color]=\"getStatusColor() + '20'\">\n <i [class]=\"'fa-solid ' + getRunTypeIcon(parentRun.RunType)\"></i>\n </div>\n <div class=\"run-item-content\">\n <div class=\"run-item-title\">\n Parent Run #{{ parentRun.ID.substring(0, 8) }}\n <span class=\"run-item-type\">{{ parentRun.RunType }}</span>\n </div>\n <div class=\"run-item-meta\">\n <span><i class=\"fa-solid fa-clock\"></i> {{ formatDuration(parentRun.ExecutionTimeMS) }}</span>\n <span><i class=\"fa-solid fa-coins\"></i> {{ formatTokens(parentRun.TokensUsed) }}</span>\n <span><i class=\"fa-solid fa-calendar\"></i> {{ parentRun.RunAt | date:'short' }}</span>\n </div>\n </div>\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n </div>\n }\n \n @if (childRuns.length > 0) {\n <div class=\"child-runs-section\">\n <h4><i class=\"fa-solid fa-level-down-alt\"></i> Child Runs</h4>\n <div class=\"runs-list\">\n @for (childRun of childRuns; track childRun.ID) {\n <div class=\"run-item child\" (click)=\"navigateToEntity('MJ: AI Prompt Runs', childRun.ID)\">\n <div class=\"run-item-icon\" [style.background-color]=\"getStatusColor() + '20'\">\n <i [class]=\"'fa-solid ' + getRunTypeIcon(childRun.RunType)\"></i>\n </div>\n <div class=\"run-item-content\">\n <div class=\"run-item-title\">\n Child Run #{{ childRun.ID.substring(0, 8) }}\n @if (childRun.ExecutionOrder !== null) {\n <span class=\"execution-order\">#{{ childRun.ExecutionOrder }}</span>\n }\n <span class=\"run-item-type\">{{ childRun.RunType }}</span>\n </div>\n <div class=\"run-item-meta\">\n <span class=\"status-indicator\" [style.color]=\"getStatusColor()\">\n <i [class]=\"'fa-solid ' + getStatusIcon()\"></i>\n {{ childRun.Success ? 'Success' : childRun.ErrorMessage ? 'Failed' : 'Running' }}\n </span>\n <span><i class=\"fa-solid fa-clock\"></i> {{ formatDuration(childRun.ExecutionTimeMS) }}</span>\n <span><i class=\"fa-solid fa-coins\"></i> {{ formatTokens(childRun.TokensUsed) }}</span>\n </div>\n </div>\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n }\n </div>\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n }\n \n <!-- Additional Details Panel -->\n <kendo-panelbar-item [expanded]=\"false\">\n <ng-template kendoPanelBarItemTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-info-circle\"></i>\n Additional Details\n </span>\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n <div class=\"detail-fields-grid\">\n @if (record.AgentID) {\n <div class=\"detail-field\">\n <label>Agent</label>\n <div class=\"detail-value clickable\" (click)=\"navigateToEntity('MJ: AI Agents', record.AgentID)\" title=\"View Agent\">\n <i class=\"fa-solid fa-robot\"></i>\n {{ record.Agent || 'Unknown' }}\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n </div>\n }\n \n \n @if (record.RunType) {\n <div class=\"detail-field\">\n <label>Run Type</label>\n <div class=\"detail-value\">\n <i [class]=\"'fa-solid ' + getRunTypeIcon(record.RunType)\"></i>\n {{ record.RunType }}\n </div>\n </div>\n }\n \n @if (record.ResponseFormat) {\n <div class=\"detail-field\">\n <label>Response Format</label>\n <div class=\"detail-value\">\n <i class=\"fa-solid fa-code\"></i>\n {{ record.ResponseFormat }}\n </div>\n </div>\n }\n \n <div class=\"detail-field\">\n <label>Temperature</label>\n <div class=\"detail-value\" [class.null-value]=\"record.Temperature === null || record.Temperature === undefined\">\n <i class=\"fa-solid fa-temperature-high\"></i>\n {{ record.Temperature !== null && record.Temperature !== undefined ? record.Temperature : '\u2014' }}\n </div>\n </div>\n \n <div class=\"detail-field\">\n <label>Top P</label>\n <div class=\"detail-value\" [class.null-value]=\"record.TopP === null || record.TopP === undefined\">\n <i class=\"fa-solid fa-percentage\"></i>\n {{ record.TopP !== null && record.TopP !== undefined ? record.TopP : '\u2014' }}\n </div>\n </div>\n \n <div class=\"detail-field\">\n <label>Top K</label>\n <div class=\"detail-value\" [class.null-value]=\"record.TopK === null || record.TopK === undefined\">\n <i class=\"fa-solid fa-list-ol\"></i>\n {{ record.TopK !== null && record.TopK !== undefined ? record.TopK : '\u2014' }}\n </div>\n </div>\n \n <div class=\"detail-field\">\n <label>Min P</label>\n <div class=\"detail-value\" [class.null-value]=\"record.MinP === null || record.MinP === undefined\">\n <i class=\"fa-solid fa-filter\"></i>\n {{ record.MinP !== null && record.MinP !== undefined ? record.MinP : '\u2014' }}\n </div>\n </div>\n \n <div class=\"detail-field\">\n <label>Frequency Penalty</label>\n <div class=\"detail-value\" [class.null-value]=\"record.FrequencyPenalty === null || record.FrequencyPenalty === undefined\">\n <i class=\"fa-solid fa-repeat\"></i>\n {{ record.FrequencyPenalty !== null && record.FrequencyPenalty !== undefined ? record.FrequencyPenalty : '\u2014' }}\n </div>\n </div>\n \n <div class=\"detail-field\">\n <label>Presence Penalty</label>\n <div class=\"detail-value\" [class.null-value]=\"record.PresencePenalty === null || record.PresencePenalty === undefined\">\n <i class=\"fa-solid fa-plus-circle\"></i>\n {{ record.PresencePenalty !== null && record.PresencePenalty !== undefined ? record.PresencePenalty : '\u2014' }}\n </div>\n </div>\n \n <div class=\"detail-field\">\n <label>Seed</label>\n <div class=\"detail-value\" [class.null-value]=\"record.Seed === null || record.Seed === undefined\">\n <i class=\"fa-solid fa-seedling\"></i>\n {{ record.Seed !== null && record.Seed !== undefined ? record.Seed : '\u2014' }}\n </div>\n </div>\n\n <div class=\"detail-field\">\n <label>Stop Sequences</label>\n <div class=\"detail-value\" [class.null-value]=\"!record.StopSequences\">\n <i class=\"fa-solid fa-stop-circle\"></i>\n {{ record.StopSequences || '\u2014' }}\n </div>\n </div>\n\n <div class=\"detail-field\">\n <label>Assistant Prefill</label>\n <div class=\"detail-value\" [class.null-value]=\"!record.AssistantPrefill\">\n <i class=\"fa-solid fa-wand-magic-sparkles\"></i>\n {{ record.AssistantPrefill || '\u2014' }}\n </div>\n </div>\n\n @if (record.RunAt) {\n <div class=\"detail-field\">\n <label>Started At</label>\n <div class=\"detail-value\">\n <i class=\"fa-solid fa-clock\"></i>\n {{ record.RunAt | date:'medium' }}\n </div>\n </div>\n }\n \n @if (record.CompletedAt) {\n <div class=\"detail-field\">\n <label>Completed At</label>\n <div class=\"detail-value\">\n <i class=\"fa-solid fa-check-circle\"></i>\n {{ record.CompletedAt | date:'medium' }}\n </div>\n </div>\n }\n </div>\n </div>\n </ng-template>\n </kendo-panelbar-item>\n \n <!-- Model Specific Response Details Panel -->\n @if (record.ModelSpecificResponseDetails) {\n <kendo-panelbar-item [expanded]=\"modelSpecificExpanded\" (stateChange)=\"onModelSpecificPanelToggle($event)\">\n <ng-template kendoPanelBarItemTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-microchip\"></i>\n Model Specific Response Details\n <span class=\"panel-badge\">JSON</span>\n </span>\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n <div class=\"json-editor-container\">\n <div class=\"json-toolbar\">\n <button kendoButton\n fillMode=\"flat\" \n size=\"small\"\n (click)=\"copyToClipboard(formattedModelSpecificResponseDetails, 'Model Specific Response Details')\"\n title=\"Copy JSON\">\n <i class=\"fa-solid fa-copy\"></i> Copy\n </button>\n <button kendoButton\n fillMode=\"flat\"\n size=\"small\"\n (click)=\"openFullScreen(formattedModelSpecificResponseDetails, 'json', 'Model Specific Response Details')\"\n title=\"View full screen\">\n <i class=\"fa-solid fa-expand\"></i>\n </button>\n </div>\n <mj-code-editor \n [(ngModel)]=\"formattedModelSpecificResponseDetails\"\n name=\"formattedModelSpecificResponseDetails\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 400px; width: 100%;\">\n </mj-code-editor>\n </div>\n </div>\n </ng-template>\n </kendo-panelbar-item>\n }\n \n <!-- Model Selection & Performance Panel (v2.78 fields) -->\n <kendo-panelbar-item [expanded]=\"false\" (stateChange)=\"onModelSelectionPanelToggle($event)\">\n <ng-template kendoPanelBarItemTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-microchip\"></i>\n Model Selection & Performance\n @if (record.CacheHit) {\n <span class=\"panel-badge success\">Cached</span>\n }\n @if (record.WasSelectedResult) {\n <span class=\"panel-badge success\">Selected</span>\n }\n </span>\n </ng-template>\n <ng-template kendoPanelBarContent>\n <div class=\"panel-content\">\n <div class=\"detail-fields-grid\">\n <!-- Model Selection Details -->\n <div class=\"detail-field\">\n <label>Status</label>\n <div class=\"detail-value\">\n <i class=\"fa-solid fa-info-circle\"></i>\n {{ record.Status || 'Unknown' }}\n </div>\n </div>\n \n <div class=\"detail-field\">\n <label>Selection Strategy</label>\n <div class=\"detail-value\">\n <i class=\"fa-solid fa-strategy\"></i>\n {{ record.SelectionStrategy || '\u2014' }}\n </div>\n </div>\n \n <div class=\"detail-field\">\n <label>Model Power Rank</label>\n <div class=\"detail-value\" [class.null-value]=\"record.ModelPowerRank === null\">\n <i class=\"fa-solid fa-ranking-star\"></i>\n {{ record.ModelPowerRank !== null ? record.ModelPowerRank : '\u2014' }}\n </div>\n </div>\n \n <!-- Cache Information -->\n <div class=\"detail-field\">\n <label>Cache Hit</label>\n <div class=\"detail-value\">\n <i [class]=\"record.CacheHit ? 'fa-solid fa-check-circle' : 'fa-solid fa-times-circle'\"></i>\n {{ record.CacheHit ? 'Yes' : 'No' }}\n </div>\n </div>\n \n @if (record.CacheKey) {\n <div class=\"detail-field full-width\">\n <label>Cache Key</label>\n <div class=\"detail-value\">\n <i class=\"fa-solid fa-key\"></i>\n <code>{{ record.CacheKey }}</code>\n </div>\n </div>\n }\n \n <!-- Judge Information -->\n @if (record.JudgeID) {\n <div class=\"detail-field\">\n <label>Judge Prompt</label>\n <div class=\"detail-value clickable\" (click)=\"navigateToEntity('MJ: AI Prompts', record.JudgeID)\" title=\"View Judge Prompt\">\n <i class=\"fa-solid fa-gavel\"></i>\n {{ record.Judge || 'Unknown' }}\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n </div>\n }\n \n @if (record.JudgeScore !== null) {\n <div class=\"detail-field\">\n <label>Judge Score</label>\n <div class=\"detail-value\">\n <i class=\"fa-solid fa-star\"></i>\n {{ record.JudgeScore }}\n </div>\n </div>\n }\n \n <div class=\"detail-field\">\n <label>Was Selected Result</label>\n <div class=\"detail-value\">\n <i [class]=\"record.WasSelectedResult ? 'fa-solid fa-trophy' : 'fa-solid fa-times'\"></i>\n {{ record.WasSelectedResult ? 'Yes' : 'No' }}\n </div>\n </div>\n \n <!-- Performance Metrics -->\n <div class=\"detail-field\">\n <label>Streaming Enabled</label>\n <div class=\"detail-value\">\n <i [class]=\"record.StreamingEnabled ? 'fa-solid fa-stream' : 'fa-solid fa-ban'\"></i>\n {{ record.StreamingEnabled ? 'Yes' : 'No' }}\n </div>\n </div>\n \n @if (record.FirstTokenTime !== null) {\n <div class=\"detail-field\">\n <label>First Token Time</label>\n <div class=\"detail-value\">\n <i class=\"fa-solid fa-bolt\"></i>\n {{ record.FirstTokenTime }} ms\n </div>\n </div>\n }\n \n @if (record.Cancelled) {\n <div class=\"detail-field\">\n <label>Cancelled</label>\n <div class=\"detail-value error\">\n <i class=\"fa-solid fa-ban\"></i>\n Yes\n </div>\n </div>\n \n @if (record.CancellationReason) {\n <div class=\"detail-field full-width\">\n <label>Cancellation Reason</label>\n <div class=\"detail-value\">\n <i class=\"fa-solid fa-exclamation-circle\"></i>\n {{ record.CancellationReason }}\n </div>\n </div>\n }\n }\n </div>\n \n <!-- Model Selection JSON -->\n @if (record.ModelSelection) {\n <div class=\"model-selection-json\">\n <div class=\"json-toolbar\">\n <h4 style=\"margin: 0;\">Model Selection Details</h4>\n <button kendoButton\n fillMode=\"flat\"\n size=\"small\"\n (click)=\"openFullScreen(formattedModelSelection, 'json', 'Model Selection')\"\n title=\"View full screen\">\n <i class=\"fa-solid fa-expand\"></i>\n </button>\n </div>\n <div class=\"json-viewer-container\">\n <mj-code-editor\n [(ngModel)]=\"formattedModelSelection\"\n name=\"formattedModelSelection\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n </div>\n </div>\n }\n \n <!-- Error Details JSON -->\n @if (record.ErrorDetails) {\n <div class=\"error-details-json\">\n <div class=\"json-toolbar\">\n <h4 style=\"margin: 0;\">Error Details</h4>\n <button kendoButton\n fillMode=\"flat\"\n size=\"small\"\n (click)=\"openFullScreen(formattedErrorDetails, 'json', 'Error Details')\"\n title=\"View full screen\">\n <i class=\"fa-solid fa-expand\"></i>\n </button>\n </div>\n <div class=\"json-viewer-container\">\n <mj-code-editor\n [(ngModel)]=\"formattedErrorDetails\"\n name=\"formattedErrorDetails\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 200px; width: 100%;\">\n </mj-code-editor>\n </div>\n </div>\n }\n </div>\n </ng-template>\n </kendo-panelbar-item>\n \n </kendo-panelbar>\n </div>\n </form>\n }\n\n <!-- Full-screen overlay -->\n @if (FullScreenContent) {\n <div class=\"fullscreen-overlay\" (click)=\"closeFullScreen()\">\n <div class=\"fullscreen-container\" (click)=\"$event.stopPropagation()\">\n <div class=\"fullscreen-header\">\n <span class=\"fullscreen-title\">\n <i class=\"fa-solid fa-expand\"></i>\n {{ FullScreenTitle }}\n </span>\n <div class=\"fullscreen-actions\">\n <button kendoButton\n fillMode=\"flat\"\n size=\"small\"\n (click)=\"copyToClipboard(FullScreenContent, FullScreenTitle)\"\n title=\"Copy content\">\n <i class=\"fa-solid fa-copy\"></i> Copy\n </button>\n <button kendoButton\n fillMode=\"flat\"\n size=\"small\"\n (click)=\"closeFullScreen()\"\n title=\"Close\">\n <i class=\"fa-solid fa-times\"></i> Close\n </button>\n </div>\n </div>\n <div class=\"fullscreen-body\">\n <mj-code-editor\n [value]=\"FullScreenContent\"\n [readonly]=\"true\"\n [language]=\"FullScreenLanguage\"\n style=\"height: 100%; width: 100%;\">\n </mj-code-editor>\n </div>\n </div>\n </div>\n }\n</div>", styles: ["/* Host and Container Layout */\n:host {\n display: block;\n height: 100%;\n}\n\n.record-form-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n overflow: hidden;\n}\n\n.record-form {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0 !important;\n overflow: hidden;\n}\n\n.form-content {\n padding: 16px;\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n}\n\n/* Error Info Styles */\n.error-info {\n margin-top: 16px;\n padding: 16px;\n background-color: color-mix(in srgb, var(--mj-status-error) 5%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 20%, var(--mj-bg-surface));\n border-radius: 8px;\n}\n\n.finish-reason {\n margin: 0 0 12px 0;\n color: var(--mj-status-error);\n font-size: 14px;\n}\n\n.error-details {\n margin-top: 12px;\n}\n\n.error-details h4 {\n margin: 0 0 8px 0;\n color: color-mix(in srgb, var(--mj-status-error) 80%, black);\n font-size: 14px;\n font-weight: 600;\n}\n\n.error-hint {\n margin: 0;\n color: color-mix(in srgb, var(--mj-status-error) 70%, black);\n font-size: 14px;\n font-style: italic;\n}\n\n/* Header Section */\n.prompt-run-header {\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n padding: 20px;\n margin-bottom: 0;\n}\n\n.header-content {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 20px;\n margin-bottom: 16px;\n}\n\n.run-overview {\n display: flex;\n align-items: flex-start;\n gap: 16px;\n flex: 1;\n}\n\n.run-icon-wrapper {\n width: 56px;\n height: 56px;\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.run-icon-wrapper i {\n font-size: 24px;\n}\n\n.run-info {\n flex: 1;\n min-width: 0;\n}\n\n.run-title {\n margin: 0 0 8px 0;\n font-size: 1.5em;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.run-id {\n font-size: 0.8em;\n color: var(--mj-text-muted);\n font-weight: 400;\n font-family: 'Courier New', monospace;\n}\n\n.run-meta {\n display: flex;\n align-items: stretch;\n gap: 10px;\n flex-wrap: wrap;\n}\n\n/* Shared meta-card style (Status, Execution, single Prompt) */\n.meta-card {\n display: flex;\n flex-direction: column;\n border-radius: 8px;\n overflow: hidden;\n border: 1px solid var(--mj-border-default);\n}\n\n.meta-card-body {\n display: flex;\n align-items: center;\n gap: 7px;\n padding: 8px 12px;\n background: var(--mj-bg-surface-card);\n font-size: 0.82em;\n font-weight: 500;\n color: var(--mj-text-primary);\n white-space: nowrap;\n}\n\n.meta-card-body.clickable {\n cursor: pointer;\n transition: color 0.15s;\n}\n\n.meta-card-body.clickable:hover {\n color: var(--mj-brand-primary-hover);\n}\n\n/* Status indicator dot */\n.status-indicator {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n/* C3 Stacked Connector \u2014 Prompt Card */\n.prompt-card-c3 {\n display: flex;\n flex-direction: column;\n border-radius: 10px;\n overflow: hidden;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n}\n\n.c3-child-section {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 14px;\n font-size: 0.92em;\n font-weight: 600;\n color: var(--mj-text-primary);\n cursor: pointer;\n transition: color 0.15s;\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.c3-child-section:hover {\n color: var(--mj-brand-primary-hover);\n}\n\n.c3-child-section i.prompt-icon {\n color: var(--mj-brand-primary);\n font-size: 1rem;\n}\n\n.c3-divider {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 0 14px;\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.c3-line {\n flex: 1;\n height: 1px;\n background: var(--mj-border-default);\n}\n\n.c3-divider-label {\n font-size: 0.55rem;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.1em;\n color: var(--mj-text-disabled);\n white-space: nowrap;\n}\n\n.c3-parent-section {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 7px 14px 9px 14px;\n font-size: 0.76em;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: color 0.15s;\n border-left: 3px solid color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.c3-parent-section:hover {\n color: var(--mj-text-secondary);\n}\n\n.c3-parent-section i {\n font-size: 0.75rem;\n}\n\n.c3-link-icon {\n margin-left: auto;\n font-size: 0.6rem !important;\n opacity: 0.4;\n}\n\n.c3-parent-section:hover .c3-link-icon {\n opacity: 0.8;\n}\n\n/* C3 Model Card */\n.model-card-c3 {\n display: flex;\n flex-direction: column;\n border-radius: 8px;\n overflow: hidden;\n border: 1px solid var(--mj-border-default);\n cursor: pointer;\n transition: border-color 0.15s;\n}\n\n.model-card-c3:hover {\n border-color: var(--mj-border-strong);\n}\n\n.c3-card-label {\n font-size: 0.6rem;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.08em;\n padding: 4px 10px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.c3-card-body {\n display: flex;\n flex-direction: column;\n gap: 2px;\n padding: 8px 12px;\n background: var(--mj-bg-surface-card);\n font-size: 0.82em;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.c3-model-name {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.c3-model-name i {\n color: var(--mj-text-muted);\n font-size: 0.9rem;\n}\n\n.c3-vendor-name {\n font-size: 0.72em;\n color: var(--mj-text-muted);\n font-weight: 400;\n padding-left: 22px;\n}\n\n.original-run {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n border-radius: 16px;\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n font-size: 0.85em;\n}\n\n.original-link {\n color: var(--mj-status-error);\n text-decoration: none;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.original-link:hover {\n color: color-mix(in srgb, var(--mj-status-error) 85%, black);\n text-decoration: underline;\n}\n\n.run-actions {\n display: flex;\n gap: 8px;\n}\n\n/* Metrics Bar */\n.metrics-bar {\n display: flex;\n gap: 24px;\n padding-top: 16px;\n border-top: 1px solid var(--mj-border-default);\n flex-wrap: wrap;\n}\n\n.metric-item {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.metric-item > i {\n font-size: 1.2em;\n color: var(--mj-text-muted);\n width: 24px;\n text-align: center;\n}\n\n.metric-content {\n display: flex;\n flex-direction: column;\n}\n\n.metric-label {\n font-size: 0.75em;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.metric-value {\n font-size: 1.1em;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.config-link {\n color: var(--mj-brand-primary);\n text-decoration: none;\n cursor: pointer;\n transition: color 0.2s;\n}\n\n.config-link:hover {\n color: color-mix(in srgb, var(--mj-brand-primary) 75%, black);\n text-decoration: underline;\n}\n\n/* Panels */\n.form-content {\n padding: 16px;\n}\n\n.panel-title {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n}\n\n/* Nested Sub-Panel Styles */\n.sub-panel-title {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 500;\n font-size: 0.95em;\n}\n\n.sub-panel-content {\n padding: 0;\n}\n\n/* Nested kendo-panelbar styles */\n.k-panelbar .k-panelbar {\n border: none;\n background: transparent;\n}\n\n.k-panelbar .k-panelbar > .k-item {\n border: 1px solid var(--mj-border-default);\n margin-bottom: 8px;\n border-radius: 6px;\n overflow: hidden;\n}\n\n.k-panelbar .k-panelbar > .k-item > .k-link {\n background-color: var(--mj-bg-surface-card);\n padding: 12px 16px;\n}\n\n.k-panelbar .k-panelbar > .k-item.k-expanded > .k-link {\n background-color: var(--mj-bg-surface-sunken);\n}\n\n.k-panelbar .k-panelbar .k-content {\n padding: 0;\n background: var(--mj-bg-surface);\n}\n\n/* Ensure chat message viewer takes appropriate height */\n.sub-panel-content mj-chat-message-viewer {\n display: block;\n min-height: 200px;\n max-height: 750px; /* Increased by 50% from 500px */\n height: auto;\n overflow: hidden;\n}\n\n/* Different colors for sub-expansion panels */\n.sub-expansion-panel {\n margin-bottom: 8px;\n}\n\n.sub-expansion-panel::ng-deep .k-expander {\n background-color: var(--mj-bg-surface-card);\n border-color: var(--mj-border-default);\n}\n\n.sub-expansion-panel::ng-deep .k-expander:hover {\n background-color: var(--mj-bg-surface-sunken);\n}\n\n.sub-expansion-panel::ng-deep .k-header {\n background-color: var(--mj-bg-surface-card);\n border-color: var(--mj-border-default);\n}\n\n.sub-expansion-panel::ng-deep .k-content {\n background-color: var(--mj-bg-surface);\n border-color: var(--mj-border-default);\n}\n\n.panel-badge {\n margin-left: auto;\n padding: 2px 8px;\n border-radius: 12px;\n background: var(--mj-border-default);\n color: var(--mj-text-secondary);\n font-size: 0.75em;\n font-weight: 500;\n}\n\n.panel-badge.error {\n background: var(--mj-status-error);\n color: white;\n}\n\n.panel-count {\n color: var(--mj-text-muted);\n font-weight: 400;\n font-size: 0.9em;\n}\n\n.panel-content {\n padding: 20px;\n max-height: none !important;\n overflow: visible !important;\n}\n\n/* JSON Editor Container */\n.json-editor-container {\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\n}\n\n.json-toolbar {\n background: var(--mj-bg-surface-card);\n padding: 8px 12px;\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n justify-content: flex-end;\n}\n\n/* Error Message */\n.error-message {\n background: color-mix(in srgb, var(--mj-status-error) 6%, var(--mj-bg-surface));\n border: 1px solid var(--mj-status-error);\n border-radius: 6px;\n padding: 16px;\n display: flex;\n gap: 16px;\n margin-bottom: 16px;\n}\n\n.error-message i {\n font-size: 1.5em;\n color: var(--mj-status-error);\n flex-shrink: 0;\n}\n\n.error-content h4 {\n margin: 0 0 8px 0;\n color: var(--mj-status-error);\n font-size: 1em;\n}\n\n.error-content p {\n margin: 0;\n color: var(--mj-text-secondary);\n}\n\n/* Empty State */\n.empty-state {\n text-align: center;\n padding: 60px 40px;\n color: var(--mj-text-muted);\n}\n\n.empty-state i {\n font-size: 3em;\n margin-bottom: 16px;\n opacity: 0.3;\n}\n\n.empty-state p {\n margin: 0;\n font-size: 1.1em;\n}\n\n/* Loading State */\n.loading-state {\n text-align: center;\n padding: 60px 40px;\n color: var(--mj-text-muted);\n}\n\n.loading-state i {\n font-size: 3em;\n margin-bottom: 16px;\n opacity: 0.6;\n color: var(--mj-brand-primary);\n}\n\n.loading-state p {\n margin: 0;\n font-size: 1.1em;\n}\n\n/* Metrics Grid */\n.metrics-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 20px;\n margin-bottom: 24px;\n}\n\n.metric-card {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 20px;\n}\n\n.metric-header {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 12px;\n}\n\n.metric-header i {\n font-size: 1.2em;\n color: var(--mj-text-muted);\n}\n\n.metric-header h4 {\n margin: 0;\n font-size: 0.9em;\n color: var(--mj-text-muted);\n font-weight: 500;\n}\n\n.metric-value.large {\n font-size: 1.8em;\n font-weight: 700;\n color: var(--mj-text-primary);\n}\n\n.metric-rollup {\n margin-top: 8px;\n font-size: 0.85em;\n color: var(--mj-text-muted);\n}\n\n.metric-currency {\n margin-top: 4px;\n font-size: 0.85em;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n}\n\n/* Additional Metrics */\n.additional-metrics {\n padding-top: 16px;\n}\n\n.metric-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 8px 0;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n}\n\n.metric-row:last-child {\n border-bottom: none;\n}\n\n.metric-row .metric-label {\n font-weight: 500;\n color: var(--mj-text-muted);\n}\n\n.metric-row .metric-value {\n font-weight: 400;\n color: var(--mj-text-primary);\n}\n\n.metric-row .metric-value.link {\n color: var(--mj-brand-primary);\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: color 0.2s;\n}\n\n.metric-row .metric-value.link:hover {\n color: color-mix(in srgb, var(--mj-brand-primary) 75%, black);\n}\n\n/* Hierarchy Section */\n.parent-run-section,\n.child-runs-section {\n margin-bottom: 24px;\n}\n\n.parent-run-section:last-child,\n.child-runs-section:last-child {\n margin-bottom: 0;\n}\n\n.parent-run-section h4,\n.child-runs-section h4 {\n margin: 0 0 12px 0;\n font-size: 0.95em;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.runs-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.run-item {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 12px 16px;\n display: flex;\n align-items: center;\n gap: 12px;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.run-item:hover {\n background: var(--mj-border-default);\n border-color: var(--mj-border-strong);\n}\n\n.run-item.parent {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-brand-primary) 30%, var(--mj-bg-surface));\n}\n\n.run-item.parent:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 20%, var(--mj-bg-surface));\n}\n\n.run-item-icon {\n width: 36px;\n height: 36px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.run-item-content {\n flex: 1;\n min-width: 0;\n}\n\n.run-item-title {\n font-weight: 500;\n color: var(--mj-text-primary);\n margin-bottom: 4px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.execution-order {\n background: var(--mj-text-muted);\n color: white;\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 0.75em;\n font-weight: 600;\n}\n\n.run-item-type {\n font-size: 0.85em;\n color: var(--mj-text-muted);\n font-weight: 400;\n}\n\n.run-item-meta {\n display: flex;\n align-items: center;\n gap: 16px;\n font-size: 0.85em;\n color: var(--mj-text-muted);\n}\n\n.run-item-meta span {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.status-indicator {\n font-weight: 500;\n}\n\n.run-item > i:last-child {\n color: var(--mj-text-muted);\n font-size: 0.85em;\n}\n\n/* Detail Fields Grid */\n.detail-fields-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n gap: 24px;\n width: 100%;\n min-height: auto;\n overflow: visible;\n}\n\n.detail-field {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.detail-field label {\n font-size: 0.85em;\n color: var(--mj-text-muted);\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.detail-value {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 1em;\n color: var(--mj-text-primary);\n padding: 10px 14px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n transition: all 0.2s;\n}\n\n.detail-value i:first-child {\n color: var(--mj-text-muted);\n font-size: 1.1em;\n width: 20px;\n text-align: center;\n}\n\n.detail-value.clickable {\n cursor: pointer;\n}\n\n.detail-value.clickable:hover {\n background: var(--mj-border-default);\n border-color: var(--mj-border-strong);\n color: var(--mj-brand-primary);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n}\n\n.detail-value.clickable i:last-child {\n margin-left: auto;\n font-size: 0.85em;\n opacity: 0.6;\n}\n\n.detail-value.clickable:hover i:last-child {\n opacity: 1;\n}\n\n.detail-value.null-value {\n color: var(--mj-text-disabled);\n font-style: italic;\n}\n\n.detail-value.null-value i:first-child {\n opacity: 0.5;\n}\n\n/* Kendo Overrides */\nkendo-panelbar {\n border: none !important;\n}\n\nkendo-panelbar-item {\n margin-bottom: 8px;\n border: 1px solid var(--mj-border-default) !important;\n border-radius: 8px !important;\n overflow: hidden;\n}\n\nkendo-panelbar-item .k-panelbar-header {\n background: var(--mj-bg-surface-card) !important;\n border: none !important;\n padding: 12px 16px !important;\n}\n\nkendo-panelbar-item .k-panelbar-header:hover {\n background: var(--mj-border-default) !important;\n}\n\nkendo-panelbar-item .k-panelbar-content {\n border: none !important;\n padding: 0 !important;\n max-height: none !important;\n overflow: visible !important;\n}\n\n/* Validation Panel Styles */\n.validation-summary {\n margin-bottom: 24px;\n}\n\n.summary-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 16px;\n}\n\n.summary-header h4 {\n margin: 0;\n font-size: 1.1em;\n color: var(--mj-text-primary);\n}\n\n.validation-status {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 6px 16px;\n border-radius: 20px;\n font-weight: 500;\n font-size: 0.9em;\n}\n\n.validation-status.success {\n background: color-mix(in srgb, var(--mj-status-success) 12%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.validation-status.failed {\n background: color-mix(in srgb, var(--mj-status-error) 12%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.validation-metrics {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));\n gap: 12px;\n margin-bottom: 20px;\n}\n\n.metric-card.small {\n padding: 16px;\n text-align: center;\n}\n\n.metric-card.small .metric-label {\n font-size: 0.8em;\n margin-bottom: 8px;\n font-weight: 600;\n}\n\n.metric-card.small .metric-value {\n font-size: 1.4em;\n font-weight: 700;\n}\n\n.validation-error,\n.common-error {\n background: color-mix(in srgb, var(--mj-status-error) 6%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 18%, var(--mj-bg-surface));\n border-radius: 8px;\n padding: 16px;\n margin-bottom: 16px;\n}\n\n.validation-error h5,\n.common-error h5 {\n margin: 0 0 8px 0;\n color: var(--mj-status-error);\n font-size: 0.95em;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.validation-error p,\n.common-error p {\n margin: 0;\n color: var(--mj-text-secondary);\n font-size: 0.9em;\n}\n\n.error-count {\n display: inline-block;\n margin-top: 8px;\n padding: 2px 8px;\n background: var(--mj-status-error);\n color: white;\n border-radius: 12px;\n font-size: 0.75em;\n font-weight: 500;\n}\n\n/* Retry Timeline */\n.retry-timeline {\n margin-bottom: 24px;\n}\n\n.retry-timeline h4 {\n margin: 0 0 12px 0;\n font-size: 1em;\n color: var(--mj-text-secondary);\n}\n\n.timeline-info {\n display: flex;\n gap: 24px;\n flex-wrap: wrap;\n}\n\n.timeline-stat {\n display: flex;\n align-items: center;\n gap: 8px;\n color: var(--mj-text-muted);\n font-size: 0.9em;\n}\n\n.timeline-stat i {\n font-size: 1.1em;\n}\n\n/* Validation Attempts */\n.validation-attempts {\n margin-bottom: 24px;\n}\n\n.validation-attempts h4 {\n margin: 0 0 12px 0;\n font-size: 1em;\n color: var(--mj-text-secondary);\n}\n\n.attempts-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.attempt-item {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 12px 16px;\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 16px;\n}\n\n.attempt-item.success {\n background: color-mix(in srgb, var(--mj-status-success) 6%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-status-success) 18%, var(--mj-bg-surface));\n}\n\n.attempt-item.failed {\n background: color-mix(in srgb, var(--mj-status-error) 6%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-status-error) 18%, var(--mj-bg-surface));\n}\n\n.attempt-number {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.attempt-item.success .attempt-number {\n color: var(--mj-status-success);\n}\n\n.attempt-item.failed .attempt-number {\n color: var(--mj-status-error);\n}\n\n.attempt-details {\n flex: 1;\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n font-size: 0.85em;\n}\n\n.attempt-time {\n color: var(--mj-text-muted);\n}\n\n.attempt-error {\n color: var(--mj-status-error);\n flex: 1 0 100%;\n}\n\n.output-length {\n color: var(--mj-text-muted);\n font-style: italic;\n}\n\n/* Validation JSON */\n.validation-json {\n margin-top: 24px;\n}\n\n.validation-json h4 {\n margin: 0 0 12px 0;\n font-size: 1em;\n color: var(--mj-text-secondary);\n}\n\n.json-viewer-container {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n}\n\n/* Panel badge styles */\n.panel-badge.success {\n background: var(--mj-status-success);\n color: white;\n}\n\n/* Full-screen overlay */\n.fullscreen-overlay {\n position: fixed;\n inset: 0;\n z-index: 10000;\n background: var(--mj-bg-overlay, rgba(0, 0, 0, 0.6));\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 1.5rem;\n}\n\n.fullscreen-container {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n max-width: 95vw;\n max-height: 95vh;\n background: var(--mj-bg-surface);\n border-radius: 10px;\n border: 1px solid var(--mj-border-default);\n box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);\n overflow: hidden;\n}\n\n.fullscreen-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0.75rem 1rem;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.fullscreen-title {\n font-weight: 600;\n font-size: 0.9rem;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.fullscreen-title i {\n color: var(--mj-text-secondary);\n}\n\n.fullscreen-actions {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.fullscreen-body {\n flex: 1;\n min-height: 0;\n overflow: hidden;\n}\n\n.fullscreen-body mj-code-editor {\n display: block;\n height: 100%;\n}\n"] }]
|
|
2248
2380
|
}], null, null); })();
|
|
2249
2381
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MJAIPromptRunFormComponentExtended, { className: "MJAIPromptRunFormComponentExtended", filePath: "src/lib/custom/AIPromptRuns/ai-prompt-run-form.component.ts", lineNumber: 21 }); })();
|
|
2250
2382
|
//# sourceMappingURL=ai-prompt-run-form.component.js.map
|