@memberjunction/ng-core-entity-forms 5.39.0 → 5.40.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/AIAgents/ai-agent-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js +14 -7
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.d.ts +7 -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 +583 -559
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js.map +1 -1
- package/dist/lib/custom/Actions/action-execution-log-form.component.js +2 -2
- package/dist/lib/custom/Actions/action-form.component.js +2 -2
- package/dist/lib/custom/Entities/entity-form.component.js +4 -4
- package/dist/lib/custom/Entities/entity-form.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js +117 -97
- package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.js +2 -2
- package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js +59 -51
- package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.js +28 -10
- package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAPIKey/mjapikey.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAPIKey/mjapikey.form.component.js +29 -21
- package/dist/lib/generated/Entities/MJAPIKey/mjapikey.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJApplication/mjapplication.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJApplication/mjapplication.form.component.js +47 -11
- package/dist/lib/generated/Entities/MJApplication/mjapplication.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJArtifact/mjartifact.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJArtifact/mjartifact.form.component.js +24 -6
- package/dist/lib/generated/Entities/MJArtifact/mjartifact.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJArtifactVersion/mjartifactversion.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJArtifactVersion/mjartifactversion.form.component.js +27 -9
- package/dist/lib/generated/Entities/MJArtifactVersion/mjartifactversion.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJClusterAnalysis/mjclusteranalysis.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJClusterAnalysis/mjclusteranalysis.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJClusterAnalysis/mjclusteranalysis.form.component.js +93 -0
- package/dist/lib/generated/Entities/MJClusterAnalysis/mjclusteranalysis.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJClusterAnalysisCluster/mjclusteranalysiscluster.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJClusterAnalysisCluster/mjclusteranalysiscluster.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJClusterAnalysisCluster/mjclusteranalysiscluster.form.component.js +66 -0
- package/dist/lib/generated/Entities/MJClusterAnalysisCluster/mjclusteranalysiscluster.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJCompany/mjcompany.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJCompany/mjcompany.form.component.js +27 -9
- package/dist/lib/generated/Entities/MJCompany/mjcompany.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJContentItemTag/mjcontentitemtag.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJContentItemTag/mjcontentitemtag.form.component.js +13 -3
- package/dist/lib/generated/Entities/MJContentItemTag/mjcontentitemtag.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJCredential/mjcredential.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJCredential/mjcredential.form.component.js +29 -11
- package/dist/lib/generated/Entities/MJCredential/mjcredential.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js +100 -64
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJMagicLinkInvite/mjmagiclinkinvite.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJMagicLinkInvite/mjmagiclinkinvite.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJMagicLinkInvite/mjmagiclinkinvite.form.component.js +173 -0
- package/dist/lib/generated/Entities/MJMagicLinkInvite/mjmagiclinkinvite.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJMagicLinkInviteAllowedDomain/mjmagiclinkinvitealloweddomain.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJMagicLinkInviteAllowedDomain/mjmagiclinkinvitealloweddomain.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJMagicLinkInviteAllowedDomain/mjmagiclinkinvitealloweddomain.form.component.js +58 -0
- package/dist/lib/generated/Entities/MJMagicLinkInviteAllowedDomain/mjmagiclinkinvitealloweddomain.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJMagicLinkInviteAllowedPath/mjmagiclinkinviteallowedpath.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJMagicLinkInviteAllowedPath/mjmagiclinkinviteallowedpath.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJMagicLinkInviteAllowedPath/mjmagiclinkinviteallowedpath.form.component.js +58 -0
- package/dist/lib/generated/Entities/MJMagicLinkInviteAllowedPath/mjmagiclinkinviteallowedpath.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJMagicLinkInviteApplication/mjmagiclinkinviteapplication.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJMagicLinkInviteApplication/mjmagiclinkinviteapplication.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJMagicLinkInviteApplication/mjmagiclinkinviteapplication.form.component.js +58 -0
- package/dist/lib/generated/Entities/MJMagicLinkInviteApplication/mjmagiclinkinviteapplication.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJMagicLinkInviteRole/mjmagiclinkinviterole.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJMagicLinkInviteRole/mjmagiclinkinviterole.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJMagicLinkInviteRole/mjmagiclinkinviterole.form.component.js +58 -0
- package/dist/lib/generated/Entities/MJMagicLinkInviteRole/mjmagiclinkinviterole.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJMagicLinkRedemption/mjmagiclinkredemption.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJMagicLinkRedemption/mjmagiclinkredemption.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJMagicLinkRedemption/mjmagiclinkredemption.form.component.js +68 -0
- package/dist/lib/generated/Entities/MJMagicLinkRedemption/mjmagiclinkredemption.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJResourceType/mjresourcetype.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJResourceType/mjresourcetype.form.component.js +26 -8
- package/dist/lib/generated/Entities/MJResourceType/mjresourcetype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJRole/mjrole.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJRole/mjrole.form.component.js +52 -16
- package/dist/lib/generated/Entities/MJRole/mjrole.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJSignatureAccount/mjsignatureaccount.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJSignatureAccount/mjsignatureaccount.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJSignatureAccount/mjsignatureaccount.form.component.js +115 -0
- package/dist/lib/generated/Entities/MJSignatureAccount/mjsignatureaccount.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJSignatureProvider/mjsignatureprovider.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJSignatureProvider/mjsignatureprovider.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJSignatureProvider/mjsignatureprovider.form.component.js +101 -0
- package/dist/lib/generated/Entities/MJSignatureProvider/mjsignatureprovider.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJSignatureRequest/mjsignaturerequest.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJSignatureRequest/mjsignaturerequest.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJSignatureRequest/mjsignaturerequest.form.component.js +153 -0
- package/dist/lib/generated/Entities/MJSignatureRequest/mjsignaturerequest.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJSignatureRequestDocument/mjsignaturerequestdocument.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJSignatureRequestDocument/mjsignaturerequestdocument.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJSignatureRequestDocument/mjsignaturerequestdocument.form.component.js +78 -0
- package/dist/lib/generated/Entities/MJSignatureRequestDocument/mjsignaturerequestdocument.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJSignatureRequestLog/mjsignaturerequestlog.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJSignatureRequestLog/mjsignaturerequestlog.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJSignatureRequestLog/mjsignaturerequestlog.form.component.js +84 -0
- package/dist/lib/generated/Entities/MJSignatureRequestLog/mjsignaturerequestlog.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJSignatureRequestRecipient/mjsignaturerequestrecipient.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJSignatureRequestRecipient/mjsignaturerequestrecipient.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJSignatureRequestRecipient/mjsignaturerequestrecipient.form.component.js +88 -0
- package/dist/lib/generated/Entities/MJSignatureRequestRecipient/mjsignaturerequestrecipient.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js +156 -102
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJUserView/mjuserview.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJUserView/mjuserview.form.component.js +34 -26
- package/dist/lib/generated/Entities/MJUserView/mjuserview.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJViewType/mjviewtype.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJViewType/mjviewtype.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJViewType/mjviewtype.form.component.js +91 -0
- package/dist/lib/generated/Entities/MJViewType/mjviewtype.form.component.js.map +1 -0
- package/dist/lib/generated/generated-forms.module.d.ts +265 -250
- package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
- package/dist/lib/generated/generated-forms.module.js +224 -179
- package/dist/lib/generated/generated-forms.module.js.map +1 -1
- package/package.json +36 -36
|
@@ -48,26 +48,26 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_20_Templat
|
|
|
48
48
|
} }
|
|
49
49
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_21_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
50
50
|
const _r3 = i0.ɵɵgetCurrentView();
|
|
51
|
-
i0.ɵɵelementStart(0, "div",
|
|
51
|
+
i0.ɵɵelementStart(0, "div", 67)(1, "div", 14);
|
|
52
52
|
i0.ɵɵtext(2, "Prompt");
|
|
53
53
|
i0.ɵɵelementEnd();
|
|
54
|
-
i0.ɵɵelementStart(3, "div",
|
|
54
|
+
i0.ɵɵelementStart(3, "div", 69);
|
|
55
55
|
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_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)); });
|
|
56
|
-
i0.ɵɵelement(4, "i",
|
|
56
|
+
i0.ɵɵelement(4, "i", 70);
|
|
57
57
|
i0.ɵɵtext(5);
|
|
58
58
|
i0.ɵɵelementEnd();
|
|
59
|
-
i0.ɵɵelementStart(6, "div",
|
|
60
|
-
i0.ɵɵelement(7, "span",
|
|
61
|
-
i0.ɵɵelementStart(8, "span",
|
|
59
|
+
i0.ɵɵelementStart(6, "div", 71);
|
|
60
|
+
i0.ɵɵelement(7, "span", 72);
|
|
61
|
+
i0.ɵɵelementStart(8, "span", 73);
|
|
62
62
|
i0.ɵɵtext(9, "wrapped by");
|
|
63
63
|
i0.ɵɵelementEnd();
|
|
64
|
-
i0.ɵɵelement(10, "span",
|
|
64
|
+
i0.ɵɵelement(10, "span", 72);
|
|
65
65
|
i0.ɵɵelementEnd();
|
|
66
|
-
i0.ɵɵelementStart(11, "div",
|
|
66
|
+
i0.ɵɵelementStart(11, "div", 74);
|
|
67
67
|
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_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)); });
|
|
68
|
-
i0.ɵɵelement(12, "i",
|
|
68
|
+
i0.ɵɵelement(12, "i", 75);
|
|
69
69
|
i0.ɵɵtext(13);
|
|
70
|
-
i0.ɵɵelement(14, "i",
|
|
70
|
+
i0.ɵɵelement(14, "i", 76);
|
|
71
71
|
i0.ɵɵelementEnd()();
|
|
72
72
|
} if (rf & 2) {
|
|
73
73
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -78,12 +78,12 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_21_Conditi
|
|
|
78
78
|
} }
|
|
79
79
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_21_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
80
80
|
const _r4 = i0.ɵɵgetCurrentView();
|
|
81
|
-
i0.ɵɵelementStart(0, "div",
|
|
81
|
+
i0.ɵɵelementStart(0, "div", 68)(1, "div", 14);
|
|
82
82
|
i0.ɵɵtext(2, "Prompt");
|
|
83
83
|
i0.ɵɵelementEnd();
|
|
84
|
-
i0.ɵɵelementStart(3, "div",
|
|
84
|
+
i0.ɵɵelementStart(3, "div", 77);
|
|
85
85
|
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_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)); });
|
|
86
|
-
i0.ɵɵelement(4, "i",
|
|
86
|
+
i0.ɵɵelement(4, "i", 78);
|
|
87
87
|
i0.ɵɵtext(5);
|
|
88
88
|
i0.ɵɵelementEnd()();
|
|
89
89
|
} if (rf & 2) {
|
|
@@ -92,13 +92,13 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_21_Conditi
|
|
|
92
92
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.prompt.Name, " ");
|
|
93
93
|
} }
|
|
94
94
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_21_Template(rf, ctx) { if (rf & 1) {
|
|
95
|
-
i0.ɵɵconditionalCreate(0, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_21_Conditional_0_Template, 15, 2, "div",
|
|
95
|
+
i0.ɵɵconditionalCreate(0, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_21_Conditional_0_Template, 15, 2, "div", 67)(1, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_21_Conditional_1_Template, 6, 1, "div", 68);
|
|
96
96
|
} if (rf & 2) {
|
|
97
97
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
98
98
|
i0.ɵɵconditional(ctx_r1.record.ChildPromptID ? 0 : 1);
|
|
99
99
|
} }
|
|
100
100
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_22_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
101
|
-
i0.ɵɵelementStart(0, "span",
|
|
101
|
+
i0.ɵɵelementStart(0, "span", 82);
|
|
102
102
|
i0.ɵɵtext(1);
|
|
103
103
|
i0.ɵɵelementEnd();
|
|
104
104
|
} if (rf & 2) {
|
|
@@ -111,13 +111,13 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_22_Templat
|
|
|
111
111
|
i0.ɵɵelementStart(0, "div", 18)(1, "div", 14);
|
|
112
112
|
i0.ɵɵtext(2, "Model");
|
|
113
113
|
i0.ɵɵelementEnd();
|
|
114
|
-
i0.ɵɵelementStart(3, "div",
|
|
114
|
+
i0.ɵɵelementStart(3, "div", 79);
|
|
115
115
|
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_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)); });
|
|
116
|
-
i0.ɵɵelementStart(4, "span",
|
|
117
|
-
i0.ɵɵelement(5, "i",
|
|
116
|
+
i0.ɵɵelementStart(4, "span", 80);
|
|
117
|
+
i0.ɵɵelement(5, "i", 81);
|
|
118
118
|
i0.ɵɵtext(6);
|
|
119
119
|
i0.ɵɵelementEnd();
|
|
120
|
-
i0.ɵɵconditionalCreate(7, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_22_Conditional_7_Template, 2, 1, "span",
|
|
120
|
+
i0.ɵɵconditionalCreate(7, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_22_Conditional_7_Template, 2, 1, "span", 82);
|
|
121
121
|
i0.ɵɵelementEnd()();
|
|
122
122
|
} if (rf & 2) {
|
|
123
123
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -129,19 +129,19 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_22_Templat
|
|
|
129
129
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_23_Template(rf, ctx) { if (rf & 1) {
|
|
130
130
|
const _r6 = i0.ɵɵgetCurrentView();
|
|
131
131
|
i0.ɵɵelementStart(0, "span", 19);
|
|
132
|
-
i0.ɵɵelement(1, "i",
|
|
133
|
-
i0.ɵɵelementStart(2, "a",
|
|
132
|
+
i0.ɵɵelement(1, "i", 83);
|
|
133
|
+
i0.ɵɵelementStart(2, "a", 84);
|
|
134
134
|
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_23_Template_a_click_2_listener() { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.navigateToOriginalRun()); });
|
|
135
135
|
i0.ɵɵtext(3, "Original Run");
|
|
136
136
|
i0.ɵɵelementEnd()();
|
|
137
137
|
} }
|
|
138
138
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
139
|
-
i0.ɵɵelementStart(0, "div",
|
|
140
|
-
i0.ɵɵelement(1, "i",
|
|
141
|
-
i0.ɵɵelementStart(2, "div",
|
|
139
|
+
i0.ɵɵelementStart(0, "div", 85);
|
|
140
|
+
i0.ɵɵelement(1, "i", 52);
|
|
141
|
+
i0.ɵɵelementStart(2, "div", 86)(3, "div", 87);
|
|
142
142
|
i0.ɵɵtext(4, "Temperature");
|
|
143
143
|
i0.ɵɵelementEnd();
|
|
144
|
-
i0.ɵɵelementStart(5, "div",
|
|
144
|
+
i0.ɵɵelementStart(5, "div", 88);
|
|
145
145
|
i0.ɵɵtext(6);
|
|
146
146
|
i0.ɵɵelementEnd()()();
|
|
147
147
|
} if (rf & 2) {
|
|
@@ -150,12 +150,12 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditi
|
|
|
150
150
|
i0.ɵɵtextInterpolate(ctx_r1.record.Temperature);
|
|
151
151
|
} }
|
|
152
152
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
153
|
-
i0.ɵɵelementStart(0, "div",
|
|
154
|
-
i0.ɵɵelement(1, "i",
|
|
155
|
-
i0.ɵɵelementStart(2, "div",
|
|
153
|
+
i0.ɵɵelementStart(0, "div", 85);
|
|
154
|
+
i0.ɵɵelement(1, "i", 53);
|
|
155
|
+
i0.ɵɵelementStart(2, "div", 86)(3, "div", 87);
|
|
156
156
|
i0.ɵɵtext(4, "Top P");
|
|
157
157
|
i0.ɵɵelementEnd();
|
|
158
|
-
i0.ɵɵelementStart(5, "div",
|
|
158
|
+
i0.ɵɵelementStart(5, "div", 88);
|
|
159
159
|
i0.ɵɵtext(6);
|
|
160
160
|
i0.ɵɵelementEnd()()();
|
|
161
161
|
} if (rf & 2) {
|
|
@@ -164,12 +164,12 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditi
|
|
|
164
164
|
i0.ɵɵtextInterpolate(ctx_r1.record.TopP);
|
|
165
165
|
} }
|
|
166
166
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
167
|
-
i0.ɵɵelementStart(0, "div",
|
|
168
|
-
i0.ɵɵelement(1, "i",
|
|
169
|
-
i0.ɵɵelementStart(2, "div",
|
|
167
|
+
i0.ɵɵelementStart(0, "div", 85);
|
|
168
|
+
i0.ɵɵelement(1, "i", 54);
|
|
169
|
+
i0.ɵɵelementStart(2, "div", 86)(3, "div", 87);
|
|
170
170
|
i0.ɵɵtext(4, "Top K");
|
|
171
171
|
i0.ɵɵelementEnd();
|
|
172
|
-
i0.ɵɵelementStart(5, "div",
|
|
172
|
+
i0.ɵɵelementStart(5, "div", 88);
|
|
173
173
|
i0.ɵɵtext(6);
|
|
174
174
|
i0.ɵɵelementEnd()()();
|
|
175
175
|
} if (rf & 2) {
|
|
@@ -178,12 +178,12 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditi
|
|
|
178
178
|
i0.ɵɵtextInterpolate(ctx_r1.record.TopK);
|
|
179
179
|
} }
|
|
180
180
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
181
|
-
i0.ɵɵelementStart(0, "div",
|
|
182
|
-
i0.ɵɵelement(1, "i",
|
|
183
|
-
i0.ɵɵelementStart(2, "div",
|
|
181
|
+
i0.ɵɵelementStart(0, "div", 85);
|
|
182
|
+
i0.ɵɵelement(1, "i", 92);
|
|
183
|
+
i0.ɵɵelementStart(2, "div", 86)(3, "div", 87);
|
|
184
184
|
i0.ɵɵtext(4, "Effort Level");
|
|
185
185
|
i0.ɵɵelementEnd();
|
|
186
|
-
i0.ɵɵelementStart(5, "div",
|
|
186
|
+
i0.ɵɵelementStart(5, "div", 88);
|
|
187
187
|
i0.ɵɵtext(6);
|
|
188
188
|
i0.ɵɵelementEnd()()();
|
|
189
189
|
} if (rf & 2) {
|
|
@@ -192,12 +192,12 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditi
|
|
|
192
192
|
i0.ɵɵtextInterpolate(ctx_r1.record.EffortLevel);
|
|
193
193
|
} }
|
|
194
194
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
195
|
-
i0.ɵɵelementStart(0, "div",
|
|
196
|
-
i0.ɵɵelement(1, "i",
|
|
197
|
-
i0.ɵɵelementStart(2, "div",
|
|
195
|
+
i0.ɵɵelementStart(0, "div", 85);
|
|
196
|
+
i0.ɵɵelement(1, "i", 93);
|
|
197
|
+
i0.ɵɵelementStart(2, "div", 86)(3, "div", 87);
|
|
198
198
|
i0.ɵɵtext(4, "Response Format");
|
|
199
199
|
i0.ɵɵelementEnd();
|
|
200
|
-
i0.ɵɵelementStart(5, "div",
|
|
200
|
+
i0.ɵɵelementStart(5, "div", 88);
|
|
201
201
|
i0.ɵɵtext(6);
|
|
202
202
|
i0.ɵɵelementEnd()()();
|
|
203
203
|
} if (rf & 2) {
|
|
@@ -206,12 +206,12 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditi
|
|
|
206
206
|
i0.ɵɵtextInterpolate(ctx_r1.record.ResponseFormat);
|
|
207
207
|
} }
|
|
208
208
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditional_29_Template(rf, ctx) { if (rf & 1) {
|
|
209
|
-
i0.ɵɵelementStart(0, "div",
|
|
210
|
-
i0.ɵɵelement(1, "i",
|
|
211
|
-
i0.ɵɵelementStart(2, "div",
|
|
209
|
+
i0.ɵɵelementStart(0, "div", 85);
|
|
210
|
+
i0.ɵɵelement(1, "i", 94);
|
|
211
|
+
i0.ɵɵelementStart(2, "div", 86)(3, "div", 87);
|
|
212
212
|
i0.ɵɵtext(4, "Cached");
|
|
213
213
|
i0.ɵɵelementEnd();
|
|
214
|
-
i0.ɵɵelementStart(5, "div",
|
|
214
|
+
i0.ɵɵelementStart(5, "div", 88);
|
|
215
215
|
i0.ɵɵtext(6);
|
|
216
216
|
i0.ɵɵelementEnd()()();
|
|
217
217
|
} if (rf & 2) {
|
|
@@ -220,12 +220,12 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditi
|
|
|
220
220
|
i0.ɵɵtextInterpolate(ctx_r1.formatTokens(ctx_r1.record.TokensCacheRead));
|
|
221
221
|
} }
|
|
222
222
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditional_37_Template(rf, ctx) { if (rf & 1) {
|
|
223
|
-
i0.ɵɵelementStart(0, "div",
|
|
224
|
-
i0.ɵɵelement(1, "i",
|
|
225
|
-
i0.ɵɵelementStart(2, "div",
|
|
223
|
+
i0.ɵɵelementStart(0, "div", 85);
|
|
224
|
+
i0.ɵɵelement(1, "i", 95);
|
|
225
|
+
i0.ɵɵelementStart(2, "div", 86)(3, "div", 87);
|
|
226
226
|
i0.ɵɵtext(4, "Started");
|
|
227
227
|
i0.ɵɵelementEnd();
|
|
228
|
-
i0.ɵɵelementStart(5, "div",
|
|
228
|
+
i0.ɵɵelementStart(5, "div", 88);
|
|
229
229
|
i0.ɵɵtext(6);
|
|
230
230
|
i0.ɵɵpipe(7, "date");
|
|
231
231
|
i0.ɵɵelementEnd()()();
|
|
@@ -236,47 +236,47 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditi
|
|
|
236
236
|
} }
|
|
237
237
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Template(rf, ctx) { if (rf & 1) {
|
|
238
238
|
const _r7 = i0.ɵɵgetCurrentView();
|
|
239
|
-
i0.ɵɵelementStart(0, "div", 25)(1, "div",
|
|
240
|
-
i0.ɵɵelement(2, "i",
|
|
241
|
-
i0.ɵɵelementStart(3, "div",
|
|
239
|
+
i0.ɵɵelementStart(0, "div", 25)(1, "div", 85);
|
|
240
|
+
i0.ɵɵelement(2, "i", 75);
|
|
241
|
+
i0.ɵɵelementStart(3, "div", 86)(4, "div", 87);
|
|
242
242
|
i0.ɵɵtext(5, "Configuration");
|
|
243
243
|
i0.ɵɵelementEnd();
|
|
244
|
-
i0.ɵɵelementStart(6, "div",
|
|
244
|
+
i0.ɵɵelementStart(6, "div", 88)(7, "a", 89);
|
|
245
245
|
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_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)); });
|
|
246
246
|
i0.ɵɵtext(8);
|
|
247
247
|
i0.ɵɵelementEnd()()()();
|
|
248
|
-
i0.ɵɵconditionalCreate(9, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditional_9_Template, 7, 1, "div",
|
|
249
|
-
i0.ɵɵconditionalCreate(10, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditional_10_Template, 7, 1, "div",
|
|
250
|
-
i0.ɵɵconditionalCreate(11, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditional_11_Template, 7, 1, "div",
|
|
251
|
-
i0.ɵɵconditionalCreate(12, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditional_12_Template, 7, 1, "div",
|
|
252
|
-
i0.ɵɵconditionalCreate(13, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditional_13_Template, 7, 1, "div",
|
|
253
|
-
i0.ɵɵelementEnd();
|
|
254
|
-
i0.ɵɵelementStart(14, "div", 25)(15, "div",
|
|
255
|
-
i0.ɵɵelement(16, "i",
|
|
256
|
-
i0.ɵɵelementStart(17, "div",
|
|
248
|
+
i0.ɵɵconditionalCreate(9, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditional_9_Template, 7, 1, "div", 85);
|
|
249
|
+
i0.ɵɵconditionalCreate(10, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditional_10_Template, 7, 1, "div", 85);
|
|
250
|
+
i0.ɵɵconditionalCreate(11, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditional_11_Template, 7, 1, "div", 85);
|
|
251
|
+
i0.ɵɵconditionalCreate(12, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditional_12_Template, 7, 1, "div", 85);
|
|
252
|
+
i0.ɵɵconditionalCreate(13, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditional_13_Template, 7, 1, "div", 85);
|
|
253
|
+
i0.ɵɵelementEnd();
|
|
254
|
+
i0.ɵɵelementStart(14, "div", 25)(15, "div", 85);
|
|
255
|
+
i0.ɵɵelement(16, "i", 90);
|
|
256
|
+
i0.ɵɵelementStart(17, "div", 86)(18, "div", 87);
|
|
257
257
|
i0.ɵɵtext(19, "Duration");
|
|
258
258
|
i0.ɵɵelementEnd();
|
|
259
|
-
i0.ɵɵelementStart(20, "div",
|
|
259
|
+
i0.ɵɵelementStart(20, "div", 88);
|
|
260
260
|
i0.ɵɵtext(21);
|
|
261
261
|
i0.ɵɵelementEnd()()();
|
|
262
|
-
i0.ɵɵelementStart(22, "div",
|
|
263
|
-
i0.ɵɵelement(23, "i",
|
|
264
|
-
i0.ɵɵelementStart(24, "div",
|
|
262
|
+
i0.ɵɵelementStart(22, "div", 91);
|
|
263
|
+
i0.ɵɵelement(23, "i", 42);
|
|
264
|
+
i0.ɵɵelementStart(24, "div", 86)(25, "div", 87);
|
|
265
265
|
i0.ɵɵtext(26, "Total Tokens");
|
|
266
266
|
i0.ɵɵelementEnd();
|
|
267
|
-
i0.ɵɵelementStart(27, "div",
|
|
267
|
+
i0.ɵɵelementStart(27, "div", 88);
|
|
268
268
|
i0.ɵɵtext(28);
|
|
269
269
|
i0.ɵɵelementEnd()()();
|
|
270
|
-
i0.ɵɵconditionalCreate(29, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditional_29_Template, 7, 1, "div",
|
|
271
|
-
i0.ɵɵelementStart(30, "div",
|
|
272
|
-
i0.ɵɵelement(31, "i",
|
|
273
|
-
i0.ɵɵelementStart(32, "div",
|
|
270
|
+
i0.ɵɵconditionalCreate(29, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditional_29_Template, 7, 1, "div", 85);
|
|
271
|
+
i0.ɵɵelementStart(30, "div", 85);
|
|
272
|
+
i0.ɵɵelement(31, "i", 44);
|
|
273
|
+
i0.ɵɵelementStart(32, "div", 86)(33, "div", 87);
|
|
274
274
|
i0.ɵɵtext(34, "Cost");
|
|
275
275
|
i0.ɵɵelementEnd();
|
|
276
|
-
i0.ɵɵelementStart(35, "div",
|
|
276
|
+
i0.ɵɵelementStart(35, "div", 88);
|
|
277
277
|
i0.ɵɵtext(36);
|
|
278
278
|
i0.ɵɵelementEnd()()();
|
|
279
|
-
i0.ɵɵconditionalCreate(37, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditional_37_Template, 8, 4, "div",
|
|
279
|
+
i0.ɵɵconditionalCreate(37, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditional_37_Template, 8, 4, "div", 85);
|
|
280
280
|
i0.ɵɵelementEnd();
|
|
281
281
|
} if (rf & 2) {
|
|
282
282
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -304,12 +304,12 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Templat
|
|
|
304
304
|
i0.ɵɵconditional(ctx_r1.record.RunAt ? 37 : -1);
|
|
305
305
|
} }
|
|
306
306
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_31_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
307
|
-
i0.ɵɵelementStart(0, "div",
|
|
308
|
-
i0.ɵɵelement(1, "i",
|
|
309
|
-
i0.ɵɵelementStart(2, "div",
|
|
307
|
+
i0.ɵɵelementStart(0, "div", 85);
|
|
308
|
+
i0.ɵɵelement(1, "i", 94);
|
|
309
|
+
i0.ɵɵelementStart(2, "div", 86)(3, "div", 87);
|
|
310
310
|
i0.ɵɵtext(4, "Cached");
|
|
311
311
|
i0.ɵɵelementEnd();
|
|
312
|
-
i0.ɵɵelementStart(5, "div",
|
|
312
|
+
i0.ɵɵelementStart(5, "div", 88);
|
|
313
313
|
i0.ɵɵtext(6);
|
|
314
314
|
i0.ɵɵelementEnd()()();
|
|
315
315
|
} if (rf & 2) {
|
|
@@ -318,12 +318,12 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_31_Conditi
|
|
|
318
318
|
i0.ɵɵtextInterpolate(ctx_r1.formatTokens(ctx_r1.record.TokensCacheRead));
|
|
319
319
|
} }
|
|
320
320
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_31_Conditional_23_Template(rf, ctx) { if (rf & 1) {
|
|
321
|
-
i0.ɵɵelementStart(0, "div",
|
|
322
|
-
i0.ɵɵelement(1, "i",
|
|
323
|
-
i0.ɵɵelementStart(2, "div",
|
|
321
|
+
i0.ɵɵelementStart(0, "div", 85);
|
|
322
|
+
i0.ɵɵelement(1, "i", 95);
|
|
323
|
+
i0.ɵɵelementStart(2, "div", 86)(3, "div", 87);
|
|
324
324
|
i0.ɵɵtext(4, "Started");
|
|
325
325
|
i0.ɵɵelementEnd();
|
|
326
|
-
i0.ɵɵelementStart(5, "div",
|
|
326
|
+
i0.ɵɵelementStart(5, "div", 88);
|
|
327
327
|
i0.ɵɵtext(6);
|
|
328
328
|
i0.ɵɵpipe(7, "date");
|
|
329
329
|
i0.ɵɵelementEnd()()();
|
|
@@ -333,32 +333,32 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_31_Conditi
|
|
|
333
333
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(7, 1, ctx_r1.record.RunAt, "short"));
|
|
334
334
|
} }
|
|
335
335
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_31_Template(rf, ctx) { if (rf & 1) {
|
|
336
|
-
i0.ɵɵelementStart(0, "div", 25)(1, "div",
|
|
337
|
-
i0.ɵɵelement(2, "i",
|
|
338
|
-
i0.ɵɵelementStart(3, "div",
|
|
336
|
+
i0.ɵɵelementStart(0, "div", 25)(1, "div", 85);
|
|
337
|
+
i0.ɵɵelement(2, "i", 90);
|
|
338
|
+
i0.ɵɵelementStart(3, "div", 86)(4, "div", 87);
|
|
339
339
|
i0.ɵɵtext(5, "Duration");
|
|
340
340
|
i0.ɵɵelementEnd();
|
|
341
|
-
i0.ɵɵelementStart(6, "div",
|
|
341
|
+
i0.ɵɵelementStart(6, "div", 88);
|
|
342
342
|
i0.ɵɵtext(7);
|
|
343
343
|
i0.ɵɵelementEnd()()();
|
|
344
|
-
i0.ɵɵelementStart(8, "div",
|
|
345
|
-
i0.ɵɵelement(9, "i",
|
|
346
|
-
i0.ɵɵelementStart(10, "div",
|
|
344
|
+
i0.ɵɵelementStart(8, "div", 91);
|
|
345
|
+
i0.ɵɵelement(9, "i", 42);
|
|
346
|
+
i0.ɵɵelementStart(10, "div", 86)(11, "div", 87);
|
|
347
347
|
i0.ɵɵtext(12, "Total Tokens");
|
|
348
348
|
i0.ɵɵelementEnd();
|
|
349
|
-
i0.ɵɵelementStart(13, "div",
|
|
349
|
+
i0.ɵɵelementStart(13, "div", 88);
|
|
350
350
|
i0.ɵɵtext(14);
|
|
351
351
|
i0.ɵɵelementEnd()()();
|
|
352
|
-
i0.ɵɵconditionalCreate(15, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_31_Conditional_15_Template, 7, 1, "div",
|
|
353
|
-
i0.ɵɵelementStart(16, "div",
|
|
354
|
-
i0.ɵɵelement(17, "i",
|
|
355
|
-
i0.ɵɵelementStart(18, "div",
|
|
352
|
+
i0.ɵɵconditionalCreate(15, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_31_Conditional_15_Template, 7, 1, "div", 85);
|
|
353
|
+
i0.ɵɵelementStart(16, "div", 85);
|
|
354
|
+
i0.ɵɵelement(17, "i", 44);
|
|
355
|
+
i0.ɵɵelementStart(18, "div", 86)(19, "div", 87);
|
|
356
356
|
i0.ɵɵtext(20, "Cost");
|
|
357
357
|
i0.ɵɵelementEnd();
|
|
358
|
-
i0.ɵɵelementStart(21, "div",
|
|
358
|
+
i0.ɵɵelementStart(21, "div", 88);
|
|
359
359
|
i0.ɵɵtext(22);
|
|
360
360
|
i0.ɵɵelementEnd()()();
|
|
361
|
-
i0.ɵɵconditionalCreate(23, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_31_Conditional_23_Template, 8, 4, "div",
|
|
361
|
+
i0.ɵɵconditionalCreate(23, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_31_Conditional_23_Template, 8, 4, "div", 85);
|
|
362
362
|
i0.ɵɵelementEnd();
|
|
363
363
|
} if (rf & 2) {
|
|
364
364
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -374,15 +374,15 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_31_Templat
|
|
|
374
374
|
i0.ɵɵconditional(ctx_r1.record.RunAt ? 23 : -1);
|
|
375
375
|
} }
|
|
376
376
|
function MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_34_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
377
|
-
i0.ɵɵelementStart(0, "span",
|
|
377
|
+
i0.ɵɵelementStart(0, "span", 98);
|
|
378
378
|
i0.ɵɵtext(1, "JSON");
|
|
379
379
|
i0.ɵɵelementEnd();
|
|
380
380
|
} }
|
|
381
381
|
function MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_34_Template(rf, ctx) { if (rf & 1) {
|
|
382
|
-
i0.ɵɵelementStart(0, "span",
|
|
383
|
-
i0.ɵɵelement(1, "i",
|
|
382
|
+
i0.ɵɵelementStart(0, "span", 96);
|
|
383
|
+
i0.ɵɵelement(1, "i", 97);
|
|
384
384
|
i0.ɵɵtext(2, " Input ");
|
|
385
|
-
i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_34_Conditional_3_Template, 2, 0, "span",
|
|
385
|
+
i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_34_Conditional_3_Template, 2, 0, "span", 98);
|
|
386
386
|
i0.ɵɵelementEnd();
|
|
387
387
|
} if (rf & 2) {
|
|
388
388
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -390,7 +390,7 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_34_Templat
|
|
|
390
390
|
i0.ɵɵconditional(ctx_r1.record.Messages && ctx_r1.record.Messages.trim() !== "" ? 3 : -1);
|
|
391
391
|
} }
|
|
392
392
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_ng_template_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
393
|
-
i0.ɵɵelementStart(0, "span",
|
|
393
|
+
i0.ɵɵelementStart(0, "span", 111);
|
|
394
394
|
i0.ɵɵtext(1);
|
|
395
395
|
i0.ɵɵelementEnd();
|
|
396
396
|
} if (rf & 2) {
|
|
@@ -399,10 +399,10 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_ng_temp
|
|
|
399
399
|
i0.ɵɵtextInterpolate1("(", ctx_r1.chatMessages.length, ")");
|
|
400
400
|
} }
|
|
401
401
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
402
|
-
i0.ɵɵelementStart(0, "span",
|
|
403
|
-
i0.ɵɵelement(1, "i",
|
|
402
|
+
i0.ɵɵelementStart(0, "span", 109);
|
|
403
|
+
i0.ɵɵelement(1, "i", 110);
|
|
404
404
|
i0.ɵɵtext(2, " Messages ");
|
|
405
|
-
i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_ng_template_2_Conditional_3_Template, 2, 1, "span",
|
|
405
|
+
i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_ng_template_2_Conditional_3_Template, 2, 1, "span", 111);
|
|
406
406
|
i0.ɵɵelementEnd();
|
|
407
407
|
} if (rf & 2) {
|
|
408
408
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -410,35 +410,35 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_ng_temp
|
|
|
410
410
|
i0.ɵɵconditional(ctx_r1.chatMessages.length > 0 ? 3 : -1);
|
|
411
411
|
} }
|
|
412
412
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
413
|
-
i0.ɵɵelementStart(0, "div",
|
|
414
|
-
i0.ɵɵelement(1, "i",
|
|
413
|
+
i0.ɵɵelementStart(0, "div", 101);
|
|
414
|
+
i0.ɵɵelement(1, "i", 112);
|
|
415
415
|
i0.ɵɵelementStart(2, "p");
|
|
416
416
|
i0.ɵɵtext(3, "Loading messages...");
|
|
417
417
|
i0.ɵɵelementEnd()();
|
|
418
418
|
} }
|
|
419
419
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
420
|
-
i0.ɵɵelement(0, "mj-chat-message-viewer",
|
|
420
|
+
i0.ɵɵelement(0, "mj-chat-message-viewer", 102);
|
|
421
421
|
} if (rf & 2) {
|
|
422
422
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
423
423
|
i0.ɵɵproperty("messages", ctx_r1.chatMessages);
|
|
424
424
|
} }
|
|
425
425
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
426
426
|
i0.ɵɵelementStart(0, "div", 31);
|
|
427
|
-
i0.ɵɵelement(1, "i",
|
|
427
|
+
i0.ɵɵelement(1, "i", 113);
|
|
428
428
|
i0.ɵɵelementStart(2, "p");
|
|
429
429
|
i0.ɵɵtext(3, "No chat messages found");
|
|
430
430
|
i0.ɵɵelementEnd()();
|
|
431
431
|
} }
|
|
432
432
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_ng_template_8_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
433
|
-
i0.ɵɵelementStart(0, "span",
|
|
433
|
+
i0.ɵɵelementStart(0, "span", 98);
|
|
434
434
|
i0.ɵɵtext(1, "Object");
|
|
435
435
|
i0.ɵɵelementEnd();
|
|
436
436
|
} }
|
|
437
437
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_ng_template_8_Template(rf, ctx) { if (rf & 1) {
|
|
438
|
-
i0.ɵɵelementStart(0, "span",
|
|
439
|
-
i0.ɵɵelement(1, "i",
|
|
438
|
+
i0.ɵɵelementStart(0, "span", 109);
|
|
439
|
+
i0.ɵɵelement(1, "i", 114);
|
|
440
440
|
i0.ɵɵtext(2, " Data ");
|
|
441
|
-
i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_ng_template_8_Conditional_3_Template, 2, 0, "span",
|
|
441
|
+
i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_ng_template_8_Conditional_3_Template, 2, 0, "span", 98);
|
|
442
442
|
i0.ɵɵelementEnd();
|
|
443
443
|
} if (rf & 2) {
|
|
444
444
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -447,16 +447,16 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_ng_temp
|
|
|
447
447
|
} }
|
|
448
448
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
449
449
|
const _r9 = i0.ɵɵgetCurrentView();
|
|
450
|
-
i0.ɵɵelementStart(0, "div", 33)(1, "div",
|
|
450
|
+
i0.ɵɵelementStart(0, "div", 33)(1, "div", 103)(2, "button", 104);
|
|
451
451
|
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_Conditional_10_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.copyToClipboard(ctx_r1.formattedData, "Data")); });
|
|
452
|
-
i0.ɵɵelement(3, "i",
|
|
452
|
+
i0.ɵɵelement(3, "i", 105);
|
|
453
453
|
i0.ɵɵtext(4, " Copy ");
|
|
454
454
|
i0.ɵɵelementEnd();
|
|
455
|
-
i0.ɵɵelementStart(5, "button",
|
|
455
|
+
i0.ɵɵelementStart(5, "button", 106);
|
|
456
456
|
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_Conditional_10_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openFullScreen(ctx_r1.formattedData, "json", "Data")); });
|
|
457
|
-
i0.ɵɵelement(6, "i",
|
|
457
|
+
i0.ɵɵelement(6, "i", 107);
|
|
458
458
|
i0.ɵɵelementEnd()();
|
|
459
|
-
i0.ɵɵelementStart(7, "mj-code-editor",
|
|
459
|
+
i0.ɵɵelementStart(7, "mj-code-editor", 115);
|
|
460
460
|
i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_Conditional_10_Template_mj_code_editor_ngModelChange_7_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.formattedData, $event) || (ctx_r1.formattedData = $event); return i0.ɵɵresetView($event); });
|
|
461
461
|
i0.ɵɵelementEnd()();
|
|
462
462
|
} if (rf & 2) {
|
|
@@ -467,41 +467,41 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_Conditi
|
|
|
467
467
|
} }
|
|
468
468
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
469
469
|
i0.ɵɵelementStart(0, "div", 31);
|
|
470
|
-
i0.ɵɵelement(1, "i",
|
|
470
|
+
i0.ɵɵelement(1, "i", 114);
|
|
471
471
|
i0.ɵɵelementStart(2, "p");
|
|
472
472
|
i0.ɵɵtext(3, "No data object found");
|
|
473
473
|
i0.ɵɵelementEnd()();
|
|
474
474
|
} }
|
|
475
475
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_ng_template_13_Template(rf, ctx) { if (rf & 1) {
|
|
476
|
-
i0.ɵɵelementStart(0, "span",
|
|
477
|
-
i0.ɵɵelement(1, "i",
|
|
476
|
+
i0.ɵɵelementStart(0, "span", 109);
|
|
477
|
+
i0.ɵɵelement(1, "i", 93);
|
|
478
478
|
i0.ɵɵtext(2, " Raw ");
|
|
479
479
|
i0.ɵɵelementEnd();
|
|
480
480
|
} }
|
|
481
481
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_Template(rf, ctx) { if (rf & 1) {
|
|
482
482
|
const _r8 = i0.ɵɵgetCurrentView();
|
|
483
|
-
i0.ɵɵelementStart(0, "div", 30)(1, "mj-accordion-panel",
|
|
483
|
+
i0.ɵɵelementStart(0, "div", 30)(1, "mj-accordion-panel", 99);
|
|
484
484
|
i0.ɵɵtemplate(2, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_ng_template_2_Template, 4, 1, "ng-template", 28);
|
|
485
|
-
i0.ɵɵelementStart(3, "div",
|
|
486
|
-
i0.ɵɵconditionalCreate(4, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_Conditional_4_Template, 4, 0, "div",
|
|
485
|
+
i0.ɵɵelementStart(3, "div", 100);
|
|
486
|
+
i0.ɵɵconditionalCreate(4, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_Conditional_4_Template, 4, 0, "div", 101)(5, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_Conditional_5_Template, 1, 1, "mj-chat-message-viewer", 102)(6, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_Conditional_6_Template, 4, 0, "div", 31);
|
|
487
487
|
i0.ɵɵelementEnd()();
|
|
488
|
-
i0.ɵɵelementStart(7, "mj-accordion-panel",
|
|
488
|
+
i0.ɵɵelementStart(7, "mj-accordion-panel", 99);
|
|
489
489
|
i0.ɵɵtemplate(8, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_ng_template_8_Template, 4, 1, "ng-template", 28);
|
|
490
|
-
i0.ɵɵelementStart(9, "div",
|
|
490
|
+
i0.ɵɵelementStart(9, "div", 100);
|
|
491
491
|
i0.ɵɵconditionalCreate(10, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_Conditional_10_Template, 8, 4, "div", 33)(11, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_Conditional_11_Template, 4, 0, "div", 31);
|
|
492
492
|
i0.ɵɵelementEnd()();
|
|
493
|
-
i0.ɵɵelementStart(12, "mj-accordion-panel",
|
|
493
|
+
i0.ɵɵelementStart(12, "mj-accordion-panel", 99);
|
|
494
494
|
i0.ɵɵtemplate(13, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_ng_template_13_Template, 3, 0, "ng-template", 28);
|
|
495
|
-
i0.ɵɵelementStart(14, "div",
|
|
495
|
+
i0.ɵɵelementStart(14, "div", 100)(15, "div", 33)(16, "div", 103)(17, "button", 104);
|
|
496
496
|
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_Template_button_click_17_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.copyToClipboard(ctx_r1.formattedMessages, "Messages")); });
|
|
497
|
-
i0.ɵɵelement(18, "i",
|
|
497
|
+
i0.ɵɵelement(18, "i", 105);
|
|
498
498
|
i0.ɵɵtext(19, " Copy ");
|
|
499
499
|
i0.ɵɵelementEnd();
|
|
500
|
-
i0.ɵɵelementStart(20, "button",
|
|
500
|
+
i0.ɵɵelementStart(20, "button", 106);
|
|
501
501
|
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_Template_button_click_20_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openFullScreen(ctx_r1.formattedMessages, "json", "Raw Messages")); });
|
|
502
|
-
i0.ɵɵelement(21, "i",
|
|
502
|
+
i0.ɵɵelement(21, "i", 107);
|
|
503
503
|
i0.ɵɵelementEnd()();
|
|
504
|
-
i0.ɵɵelementStart(22, "mj-code-editor",
|
|
504
|
+
i0.ɵɵelementStart(22, "mj-code-editor", 108);
|
|
505
505
|
i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_Template_mj_code_editor_ngModelChange_22_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.formattedMessages, $event) || (ctx_r1.formattedMessages = $event); return i0.ɵɵresetView($event); });
|
|
506
506
|
i0.ɵɵelementEnd()()()()();
|
|
507
507
|
} if (rf & 2) {
|
|
@@ -522,27 +522,27 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_Templat
|
|
|
522
522
|
} }
|
|
523
523
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_37_Template(rf, ctx) { if (rf & 1) {
|
|
524
524
|
i0.ɵɵelementStart(0, "div", 31);
|
|
525
|
-
i0.ɵɵelement(1, "i",
|
|
525
|
+
i0.ɵɵelement(1, "i", 113);
|
|
526
526
|
i0.ɵɵelementStart(2, "p");
|
|
527
527
|
i0.ɵɵtext(3, "No input messages recorded");
|
|
528
528
|
i0.ɵɵelementEnd()();
|
|
529
529
|
} }
|
|
530
530
|
function MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_39_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
531
|
-
i0.ɵɵelementStart(0, "span",
|
|
531
|
+
i0.ɵɵelementStart(0, "span", 98);
|
|
532
532
|
i0.ɵɵtext(1, "JSON");
|
|
533
533
|
i0.ɵɵelementEnd();
|
|
534
534
|
} }
|
|
535
535
|
function MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_39_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
536
|
-
i0.ɵɵelementStart(0, "span",
|
|
536
|
+
i0.ɵɵelementStart(0, "span", 117);
|
|
537
537
|
i0.ɵɵtext(1, "Error");
|
|
538
538
|
i0.ɵɵelementEnd();
|
|
539
539
|
} }
|
|
540
540
|
function MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_39_Template(rf, ctx) { if (rf & 1) {
|
|
541
|
-
i0.ɵɵelementStart(0, "span",
|
|
542
|
-
i0.ɵɵelement(1, "i",
|
|
541
|
+
i0.ɵɵelementStart(0, "span", 96);
|
|
542
|
+
i0.ɵɵelement(1, "i", 116);
|
|
543
543
|
i0.ɵɵtext(2, " Result ");
|
|
544
|
-
i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_39_Conditional_3_Template, 2, 0, "span",
|
|
545
|
-
i0.ɵɵconditionalCreate(4, MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_39_Conditional_4_Template, 2, 0, "span",
|
|
544
|
+
i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_39_Conditional_3_Template, 2, 0, "span", 98);
|
|
545
|
+
i0.ɵɵconditionalCreate(4, MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_39_Conditional_4_Template, 2, 0, "span", 117);
|
|
546
546
|
i0.ɵɵelementEnd();
|
|
547
547
|
} if (rf & 2) {
|
|
548
548
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -553,8 +553,8 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_39_Templat
|
|
|
553
553
|
} }
|
|
554
554
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_41_Template(rf, ctx) { if (rf & 1) {
|
|
555
555
|
i0.ɵɵelementStart(0, "div", 32);
|
|
556
|
-
i0.ɵɵelement(1, "i",
|
|
557
|
-
i0.ɵɵelementStart(2, "div",
|
|
556
|
+
i0.ɵɵelement(1, "i", 118);
|
|
557
|
+
i0.ɵɵelementStart(2, "div", 119)(3, "h4");
|
|
558
558
|
i0.ɵɵtext(4, "Error Message");
|
|
559
559
|
i0.ɵɵelementEnd();
|
|
560
560
|
i0.ɵɵelementStart(5, "p");
|
|
@@ -567,16 +567,16 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_41_Templat
|
|
|
567
567
|
} }
|
|
568
568
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_42_Template(rf, ctx) { if (rf & 1) {
|
|
569
569
|
const _r10 = i0.ɵɵgetCurrentView();
|
|
570
|
-
i0.ɵɵelementStart(0, "div", 33)(1, "div",
|
|
570
|
+
i0.ɵɵelementStart(0, "div", 33)(1, "div", 103)(2, "button", 104);
|
|
571
571
|
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_42_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.copyToClipboard(ctx_r1.formattedResult, "Result")); });
|
|
572
|
-
i0.ɵɵelement(3, "i",
|
|
572
|
+
i0.ɵɵelement(3, "i", 105);
|
|
573
573
|
i0.ɵɵtext(4, " Copy ");
|
|
574
574
|
i0.ɵɵelementEnd();
|
|
575
|
-
i0.ɵɵelementStart(5, "button",
|
|
575
|
+
i0.ɵɵelementStart(5, "button", 106);
|
|
576
576
|
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_42_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openFullScreen(ctx_r1.formattedResult, "json", "Result")); });
|
|
577
|
-
i0.ɵɵelement(6, "i",
|
|
577
|
+
i0.ɵɵelement(6, "i", 107);
|
|
578
578
|
i0.ɵɵelementEnd()();
|
|
579
|
-
i0.ɵɵelementStart(7, "mj-code-editor",
|
|
579
|
+
i0.ɵɵelementStart(7, "mj-code-editor", 120);
|
|
580
580
|
i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_42_Template_mj_code_editor_ngModelChange_7_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.formattedResult, $event) || (ctx_r1.formattedResult = $event); return i0.ɵɵresetView($event); });
|
|
581
581
|
i0.ɵɵelementEnd()();
|
|
582
582
|
} if (rf & 2) {
|
|
@@ -586,7 +586,7 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_42_Templat
|
|
|
586
586
|
i0.ɵɵproperty("readonly", true)("language", "json")("lineWrapping", true);
|
|
587
587
|
} }
|
|
588
588
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_43_Conditional_4_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
589
|
-
i0.ɵɵelementStart(0, "p",
|
|
589
|
+
i0.ɵɵelementStart(0, "p", 123)(1, "strong");
|
|
590
590
|
i0.ɵɵtext(2, "Status:");
|
|
591
591
|
i0.ɵɵelementEnd();
|
|
592
592
|
i0.ɵɵtext(3);
|
|
@@ -598,14 +598,14 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_43_Conditi
|
|
|
598
598
|
} }
|
|
599
599
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_43_Conditional_4_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
600
600
|
const _r11 = i0.ɵɵgetCurrentView();
|
|
601
|
-
i0.ɵɵelementStart(0, "div",
|
|
601
|
+
i0.ɵɵelementStart(0, "div", 124)(1, "div", 103)(2, "h4", 126);
|
|
602
602
|
i0.ɵɵtext(3, "Error Details");
|
|
603
603
|
i0.ɵɵelementEnd();
|
|
604
|
-
i0.ɵɵelementStart(4, "button",
|
|
604
|
+
i0.ɵɵelementStart(4, "button", 106);
|
|
605
605
|
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_43_Conditional_4_Conditional_2_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.openFullScreen(ctx_r1.formattedErrorDetails, "json", "Error Details")); });
|
|
606
|
-
i0.ɵɵelement(5, "i",
|
|
606
|
+
i0.ɵɵelement(5, "i", 107);
|
|
607
607
|
i0.ɵɵelementEnd()();
|
|
608
|
-
i0.ɵɵelement(6, "mj-code-editor",
|
|
608
|
+
i0.ɵɵelement(6, "mj-code-editor", 127);
|
|
609
609
|
i0.ɵɵelementEnd();
|
|
610
610
|
} if (rf & 2) {
|
|
611
611
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
@@ -613,15 +613,15 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_43_Conditi
|
|
|
613
613
|
i0.ɵɵproperty("ngModel", ctx_r1.formattedErrorDetails)("disabled", true)("language", "json")("lineWrapping", true);
|
|
614
614
|
} }
|
|
615
615
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_43_Conditional_4_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
616
|
-
i0.ɵɵelementStart(0, "p",
|
|
616
|
+
i0.ɵɵelementStart(0, "p", 125);
|
|
617
617
|
i0.ɵɵtext(1, " The prompt execution failed but no additional error information is available. ");
|
|
618
618
|
i0.ɵɵelementEnd();
|
|
619
619
|
} }
|
|
620
620
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_43_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
621
|
-
i0.ɵɵelementStart(0, "div",
|
|
622
|
-
i0.ɵɵconditionalCreate(1, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_43_Conditional_4_Conditional_1_Template, 4, 1, "p",
|
|
623
|
-
i0.ɵɵconditionalCreate(2, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_43_Conditional_4_Conditional_2_Template, 7, 4, "div",
|
|
624
|
-
i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_43_Conditional_4_Conditional_3_Template, 2, 0, "p",
|
|
621
|
+
i0.ɵɵelementStart(0, "div", 122);
|
|
622
|
+
i0.ɵɵconditionalCreate(1, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_43_Conditional_4_Conditional_1_Template, 4, 1, "p", 123);
|
|
623
|
+
i0.ɵɵconditionalCreate(2, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_43_Conditional_4_Conditional_2_Template, 7, 4, "div", 124);
|
|
624
|
+
i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_43_Conditional_4_Conditional_3_Template, 2, 0, "p", 125);
|
|
625
625
|
i0.ɵɵelementEnd();
|
|
626
626
|
} if (rf & 2) {
|
|
627
627
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -634,11 +634,11 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_43_Conditi
|
|
|
634
634
|
} }
|
|
635
635
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_43_Template(rf, ctx) { if (rf & 1) {
|
|
636
636
|
i0.ɵɵelementStart(0, "div", 31);
|
|
637
|
-
i0.ɵɵelement(1, "i",
|
|
637
|
+
i0.ɵɵelement(1, "i", 121);
|
|
638
638
|
i0.ɵɵelementStart(2, "p");
|
|
639
639
|
i0.ɵɵtext(3, "No result data recorded");
|
|
640
640
|
i0.ɵɵelementEnd();
|
|
641
|
-
i0.ɵɵconditionalCreate(4, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_43_Conditional_4_Template, 4, 3, "div",
|
|
641
|
+
i0.ɵɵconditionalCreate(4, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_43_Conditional_4_Template, 4, 3, "div", 122);
|
|
642
642
|
i0.ɵɵelementEnd();
|
|
643
643
|
} if (rf & 2) {
|
|
644
644
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -646,8 +646,8 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_43_Templat
|
|
|
646
646
|
i0.ɵɵconditional(ctx_r1.record.CompletedAt && (ctx_r1.record.Status === "Failed" || ctx_r1.record.Success === false) ? 4 : -1);
|
|
647
647
|
} }
|
|
648
648
|
function MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_45_Template(rf, ctx) { if (rf & 1) {
|
|
649
|
-
i0.ɵɵelementStart(0, "span",
|
|
650
|
-
i0.ɵɵelement(1, "i",
|
|
649
|
+
i0.ɵɵelementStart(0, "span", 96);
|
|
650
|
+
i0.ɵɵelement(1, "i", 128);
|
|
651
651
|
i0.ɵɵtext(2, " Token Usage & Metrics ");
|
|
652
652
|
i0.ɵɵelementEnd();
|
|
653
653
|
} }
|
|
@@ -655,12 +655,21 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_55_Templat
|
|
|
655
655
|
i0.ɵɵelementStart(0, "div", 39)(1, "span");
|
|
656
656
|
i0.ɵɵtext(2);
|
|
657
657
|
i0.ɵɵelementEnd()();
|
|
658
|
+
} if (rf & 2) {
|
|
659
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
660
|
+
i0.ɵɵadvance(2);
|
|
661
|
+
i0.ɵɵtextInterpolate1("incl. ", ctx_r1.formatTokens(ctx_r1.CachedTokens), " cached");
|
|
662
|
+
} }
|
|
663
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_56_Template(rf, ctx) { if (rf & 1) {
|
|
664
|
+
i0.ɵɵelementStart(0, "div", 39)(1, "span");
|
|
665
|
+
i0.ɵɵtext(2);
|
|
666
|
+
i0.ɵɵelementEnd()();
|
|
658
667
|
} if (rf & 2) {
|
|
659
668
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
660
669
|
i0.ɵɵadvance(2);
|
|
661
670
|
i0.ɵɵtextInterpolate1("Rollup: ", ctx_r1.formatTokens(ctx_r1.record.TokensPromptRollup));
|
|
662
671
|
} }
|
|
663
|
-
function
|
|
672
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_64_Template(rf, ctx) { if (rf & 1) {
|
|
664
673
|
i0.ɵɵelementStart(0, "div", 39)(1, "span");
|
|
665
674
|
i0.ɵɵtext(2);
|
|
666
675
|
i0.ɵɵelementEnd()();
|
|
@@ -669,7 +678,7 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_63_Templat
|
|
|
669
678
|
i0.ɵɵadvance(2);
|
|
670
679
|
i0.ɵɵtextInterpolate1("Rollup: ", ctx_r1.formatTokens(ctx_r1.record.TokensCompletionRollup));
|
|
671
680
|
} }
|
|
672
|
-
function
|
|
681
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_72_Template(rf, ctx) { if (rf & 1) {
|
|
673
682
|
i0.ɵɵelementStart(0, "div", 39)(1, "span");
|
|
674
683
|
i0.ɵɵtext(2);
|
|
675
684
|
i0.ɵɵelementEnd()();
|
|
@@ -678,7 +687,7 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_71_Templat
|
|
|
678
687
|
i0.ɵɵadvance(2);
|
|
679
688
|
i0.ɵɵtextInterpolate1("incl. ", ctx_r1.formatTokens(ctx_r1.CachedTokens), " cached");
|
|
680
689
|
} }
|
|
681
|
-
function
|
|
690
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_73_Template(rf, ctx) { if (rf & 1) {
|
|
682
691
|
i0.ɵɵelementStart(0, "div", 39)(1, "span");
|
|
683
692
|
i0.ɵɵtext(2);
|
|
684
693
|
i0.ɵɵelementEnd()();
|
|
@@ -687,7 +696,7 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_72_Templat
|
|
|
687
696
|
i0.ɵɵadvance(2);
|
|
688
697
|
i0.ɵɵtextInterpolate1("Net rollup: ", ctx_r1.formatTokens(ctx_r1.record.TokensUsedRollup));
|
|
689
698
|
} }
|
|
690
|
-
function
|
|
699
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_74_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
691
700
|
i0.ɵɵelementStart(0, "div", 39)(1, "span");
|
|
692
701
|
i0.ɵɵtext(2);
|
|
693
702
|
i0.ɵɵelementEnd()();
|
|
@@ -696,7 +705,7 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_73_Conditi
|
|
|
696
705
|
i0.ɵɵadvance(2);
|
|
697
706
|
i0.ɵɵtextInterpolate1("Write: ", ctx_r1.formatTokens(ctx_r1.record.TokensCacheWrite));
|
|
698
707
|
} }
|
|
699
|
-
function
|
|
708
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_74_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
700
709
|
i0.ɵɵelementStart(0, "div", 39)(1, "span");
|
|
701
710
|
i0.ɵɵtext(2);
|
|
702
711
|
i0.ɵɵpipe(3, "number");
|
|
@@ -706,17 +715,17 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_73_Conditi
|
|
|
706
715
|
i0.ɵɵadvance(2);
|
|
707
716
|
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind2(3, 1, ctx_r1.CacheHitRatePct, "1.0-0"), "% hit rate");
|
|
708
717
|
} }
|
|
709
|
-
function
|
|
718
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_74_Template(rf, ctx) { if (rf & 1) {
|
|
710
719
|
i0.ɵɵelementStart(0, "div", 35)(1, "div", 36);
|
|
711
|
-
i0.ɵɵelement(2, "i",
|
|
720
|
+
i0.ɵɵelement(2, "i", 94);
|
|
712
721
|
i0.ɵɵelementStart(3, "h4");
|
|
713
722
|
i0.ɵɵtext(4, "Cache Read");
|
|
714
723
|
i0.ɵɵelementEnd()();
|
|
715
|
-
i0.ɵɵelementStart(5, "div",
|
|
724
|
+
i0.ɵɵelementStart(5, "div", 41);
|
|
716
725
|
i0.ɵɵtext(6);
|
|
717
726
|
i0.ɵɵelementEnd();
|
|
718
|
-
i0.ɵɵconditionalCreate(7,
|
|
719
|
-
i0.ɵɵconditionalCreate(8,
|
|
727
|
+
i0.ɵɵconditionalCreate(7, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_74_Conditional_7_Template, 3, 1, "div", 39);
|
|
728
|
+
i0.ɵɵconditionalCreate(8, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_74_Conditional_8_Template, 4, 4, "div", 39);
|
|
720
729
|
i0.ɵɵelementEnd();
|
|
721
730
|
} if (rf & 2) {
|
|
722
731
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -727,7 +736,7 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_73_Templat
|
|
|
727
736
|
i0.ɵɵadvance();
|
|
728
737
|
i0.ɵɵconditional(ctx_r1.record.TokensCacheRead || ctx_r1.record.TokensCacheWrite ? 8 : -1);
|
|
729
738
|
} }
|
|
730
|
-
function
|
|
739
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_82_Template(rf, ctx) { if (rf & 1) {
|
|
731
740
|
i0.ɵɵelementStart(0, "div", 39)(1, "span");
|
|
732
741
|
i0.ɵɵtext(2);
|
|
733
742
|
i0.ɵɵelementEnd()();
|
|
@@ -736,8 +745,8 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_81_Templat
|
|
|
736
745
|
i0.ɵɵadvance(2);
|
|
737
746
|
i0.ɵɵtextInterpolate1("Total: ", ctx_r1.formatCost(ctx_r1.record.TotalCost));
|
|
738
747
|
} }
|
|
739
|
-
function
|
|
740
|
-
i0.ɵɵelementStart(0, "div",
|
|
748
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_83_Template(rf, ctx) { if (rf & 1) {
|
|
749
|
+
i0.ɵɵelementStart(0, "div", 45);
|
|
741
750
|
i0.ɵɵtext(1);
|
|
742
751
|
i0.ɵɵelementEnd();
|
|
743
752
|
} if (rf & 2) {
|
|
@@ -745,13 +754,13 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_82_Templat
|
|
|
745
754
|
i0.ɵɵadvance();
|
|
746
755
|
i0.ɵɵtextInterpolate(ctx_r1.record.CostCurrency);
|
|
747
756
|
} }
|
|
748
|
-
function
|
|
757
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_84_Template(rf, ctx) { if (rf & 1) {
|
|
749
758
|
i0.ɵɵelementStart(0, "div", 35)(1, "div", 36);
|
|
750
|
-
i0.ɵɵelement(2, "i",
|
|
759
|
+
i0.ɵɵelement(2, "i", 129);
|
|
751
760
|
i0.ɵɵelementStart(3, "h4");
|
|
752
761
|
i0.ɵɵtext(4, "Queue Time");
|
|
753
762
|
i0.ɵɵelementEnd()();
|
|
754
|
-
i0.ɵɵelementStart(5, "div",
|
|
763
|
+
i0.ɵɵelementStart(5, "div", 41);
|
|
755
764
|
i0.ɵɵtext(6);
|
|
756
765
|
i0.ɵɵelementEnd()();
|
|
757
766
|
} if (rf & 2) {
|
|
@@ -759,13 +768,13 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_83_Templat
|
|
|
759
768
|
i0.ɵɵadvance(6);
|
|
760
769
|
i0.ɵɵtextInterpolate(ctx_r1.formatDuration(ctx_r1.record.QueueTime));
|
|
761
770
|
} }
|
|
762
|
-
function
|
|
771
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_85_Template(rf, ctx) { if (rf & 1) {
|
|
763
772
|
i0.ɵɵelementStart(0, "div", 35)(1, "div", 36);
|
|
764
|
-
i0.ɵɵelement(2, "i",
|
|
773
|
+
i0.ɵɵelement(2, "i", 130);
|
|
765
774
|
i0.ɵɵelementStart(3, "h4");
|
|
766
775
|
i0.ɵɵtext(4, "Prompt Time");
|
|
767
776
|
i0.ɵɵelementEnd()();
|
|
768
|
-
i0.ɵɵelementStart(5, "div",
|
|
777
|
+
i0.ɵɵelementStart(5, "div", 41);
|
|
769
778
|
i0.ɵɵtext(6);
|
|
770
779
|
i0.ɵɵelementEnd()();
|
|
771
780
|
} if (rf & 2) {
|
|
@@ -773,13 +782,13 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_84_Templat
|
|
|
773
782
|
i0.ɵɵadvance(6);
|
|
774
783
|
i0.ɵɵtextInterpolate(ctx_r1.formatDuration(ctx_r1.record.PromptTime));
|
|
775
784
|
} }
|
|
776
|
-
function
|
|
785
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_86_Template(rf, ctx) { if (rf & 1) {
|
|
777
786
|
i0.ɵɵelementStart(0, "div", 35)(1, "div", 36);
|
|
778
|
-
i0.ɵɵelement(2, "i",
|
|
787
|
+
i0.ɵɵelement(2, "i", 131);
|
|
779
788
|
i0.ɵɵelementStart(3, "h4");
|
|
780
789
|
i0.ɵɵtext(4, "Completion Time");
|
|
781
790
|
i0.ɵɵelementEnd()();
|
|
782
|
-
i0.ɵɵelementStart(5, "div",
|
|
791
|
+
i0.ɵɵelementStart(5, "div", 41);
|
|
783
792
|
i0.ɵɵtext(6);
|
|
784
793
|
i0.ɵɵelementEnd()();
|
|
785
794
|
} if (rf & 2) {
|
|
@@ -787,11 +796,11 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_85_Templat
|
|
|
787
796
|
i0.ɵɵadvance(6);
|
|
788
797
|
i0.ɵɵtextInterpolate(ctx_r1.formatDuration(ctx_r1.record.CompletionTime));
|
|
789
798
|
} }
|
|
790
|
-
function
|
|
791
|
-
i0.ɵɵelementStart(0, "div",
|
|
799
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_88_Template(rf, ctx) { if (rf & 1) {
|
|
800
|
+
i0.ɵɵelementStart(0, "div", 47)(1, "span", 87);
|
|
792
801
|
i0.ɵɵtext(2, "Execution Order:");
|
|
793
802
|
i0.ɵɵelementEnd();
|
|
794
|
-
i0.ɵɵelementStart(3, "span",
|
|
803
|
+
i0.ɵɵelementStart(3, "span", 88);
|
|
795
804
|
i0.ɵɵtext(4);
|
|
796
805
|
i0.ɵɵelementEnd()();
|
|
797
806
|
} if (rf & 2) {
|
|
@@ -799,23 +808,23 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_87_Templat
|
|
|
799
808
|
i0.ɵɵadvance(4);
|
|
800
809
|
i0.ɵɵtextInterpolate(ctx_r1.record.ExecutionOrder);
|
|
801
810
|
} }
|
|
802
|
-
function
|
|
811
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_89_Template(rf, ctx) { if (rf & 1) {
|
|
803
812
|
const _r12 = i0.ɵɵgetCurrentView();
|
|
804
|
-
i0.ɵɵelementStart(0, "div",
|
|
813
|
+
i0.ɵɵelementStart(0, "div", 47)(1, "span", 87);
|
|
805
814
|
i0.ɵɵtext(2, "Agent:");
|
|
806
815
|
i0.ɵɵelementEnd();
|
|
807
|
-
i0.ɵɵelementStart(3, "span",
|
|
808
|
-
i0.ɵɵlistener("click", function
|
|
816
|
+
i0.ɵɵelementStart(3, "span", 132);
|
|
817
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_89_Template_span_click_3_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Agents", ctx_r1.record.AgentID)); });
|
|
809
818
|
i0.ɵɵtext(4);
|
|
810
|
-
i0.ɵɵelement(5, "i",
|
|
819
|
+
i0.ɵɵelement(5, "i", 133);
|
|
811
820
|
i0.ɵɵelementEnd()();
|
|
812
821
|
} if (rf & 2) {
|
|
813
822
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
814
823
|
i0.ɵɵadvance(4);
|
|
815
824
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.Agent, " ");
|
|
816
825
|
} }
|
|
817
|
-
function
|
|
818
|
-
i0.ɵɵelementStart(0, "span",
|
|
826
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
827
|
+
i0.ɵɵelementStart(0, "span", 111);
|
|
819
828
|
i0.ɵɵtext(1);
|
|
820
829
|
i0.ɵɵelementEnd();
|
|
821
830
|
} if (rf & 2) {
|
|
@@ -823,22 +832,22 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_89_ng_temp
|
|
|
823
832
|
i0.ɵɵadvance();
|
|
824
833
|
i0.ɵɵtextInterpolate1("(", ctx_r1.record.ValidationAttemptCount, " attempts)");
|
|
825
834
|
} }
|
|
826
|
-
function
|
|
827
|
-
i0.ɵɵelementStart(0, "span",
|
|
835
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_ng_template_1_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
836
|
+
i0.ɵɵelementStart(0, "span", 145);
|
|
828
837
|
i0.ɵɵtext(1, "Passed");
|
|
829
838
|
i0.ɵɵelementEnd();
|
|
830
839
|
} }
|
|
831
|
-
function
|
|
832
|
-
i0.ɵɵelementStart(0, "span",
|
|
840
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_ng_template_1_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
841
|
+
i0.ɵɵelementStart(0, "span", 117);
|
|
833
842
|
i0.ɵɵtext(1, "Failed");
|
|
834
843
|
i0.ɵɵelementEnd();
|
|
835
844
|
} }
|
|
836
|
-
function
|
|
837
|
-
i0.ɵɵelementStart(0, "span",
|
|
838
|
-
i0.ɵɵelement(1, "i",
|
|
845
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
846
|
+
i0.ɵɵelementStart(0, "span", 96);
|
|
847
|
+
i0.ɵɵelement(1, "i", 144);
|
|
839
848
|
i0.ɵɵtext(2, " Validation & Retries ");
|
|
840
|
-
i0.ɵɵconditionalCreate(3,
|
|
841
|
-
i0.ɵɵconditionalCreate(4,
|
|
849
|
+
i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_ng_template_1_Conditional_3_Template, 2, 1, "span", 111);
|
|
850
|
+
i0.ɵɵconditionalCreate(4, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_ng_template_1_Conditional_4_Template, 2, 0, "span", 145)(5, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_ng_template_1_Conditional_5_Template, 2, 0, "span", 117);
|
|
842
851
|
i0.ɵɵelementEnd();
|
|
843
852
|
} if (rf & 2) {
|
|
844
853
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -847,8 +856,8 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_89_ng_temp
|
|
|
847
856
|
i0.ɵɵadvance();
|
|
848
857
|
i0.ɵɵconditional(ctx_r1.record.FinalValidationPassed ? 4 : ctx_r1.record.FinalValidationPassed === false ? 5 : -1);
|
|
849
858
|
} }
|
|
850
|
-
function
|
|
851
|
-
i0.ɵɵelementStart(0, "span",
|
|
859
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_31_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
860
|
+
i0.ɵɵelementStart(0, "span", 146);
|
|
852
861
|
i0.ɵɵtext(1);
|
|
853
862
|
i0.ɵɵelementEnd();
|
|
854
863
|
} if (rf & 2) {
|
|
@@ -856,15 +865,15 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_89_Conditi
|
|
|
856
865
|
i0.ɵɵadvance();
|
|
857
866
|
i0.ɵɵtextInterpolate1("", ctx_r1.record.ValidationErrorCount, " validation errors");
|
|
858
867
|
} }
|
|
859
|
-
function
|
|
860
|
-
i0.ɵɵelementStart(0, "div",
|
|
861
|
-
i0.ɵɵelement(2, "i",
|
|
868
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_31_Template(rf, ctx) { if (rf & 1) {
|
|
869
|
+
i0.ɵɵelementStart(0, "div", 139)(1, "h5");
|
|
870
|
+
i0.ɵɵelement(2, "i", 118);
|
|
862
871
|
i0.ɵɵtext(3, " Final Validation Error");
|
|
863
872
|
i0.ɵɵelementEnd();
|
|
864
873
|
i0.ɵɵelementStart(4, "p");
|
|
865
874
|
i0.ɵɵtext(5);
|
|
866
875
|
i0.ɵɵelementEnd();
|
|
867
|
-
i0.ɵɵconditionalCreate(6,
|
|
876
|
+
i0.ɵɵconditionalCreate(6, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_31_Conditional_6_Template, 2, 1, "span", 146);
|
|
868
877
|
i0.ɵɵelementEnd();
|
|
869
878
|
} if (rf & 2) {
|
|
870
879
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -873,9 +882,9 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_89_Conditi
|
|
|
873
882
|
i0.ɵɵadvance();
|
|
874
883
|
i0.ɵɵconditional(ctx_r1.record && ctx_r1.record.ValidationErrorCount && ctx_r1.record.ValidationErrorCount > 0 ? 6 : -1);
|
|
875
884
|
} }
|
|
876
|
-
function
|
|
877
|
-
i0.ɵɵelementStart(0, "div",
|
|
878
|
-
i0.ɵɵelement(2, "i",
|
|
885
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_32_Template(rf, ctx) { if (rf & 1) {
|
|
886
|
+
i0.ɵɵelementStart(0, "div", 140)(1, "h5");
|
|
887
|
+
i0.ɵɵelement(2, "i", 56);
|
|
879
888
|
i0.ɵɵtext(3, " Most Common Error");
|
|
880
889
|
i0.ɵɵelementEnd();
|
|
881
890
|
i0.ɵɵelementStart(4, "p");
|
|
@@ -886,24 +895,24 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_89_Conditi
|
|
|
886
895
|
i0.ɵɵadvance(5);
|
|
887
896
|
i0.ɵɵtextInterpolate(ctx_r1.record.CommonValidationError);
|
|
888
897
|
} }
|
|
889
|
-
function
|
|
890
|
-
i0.ɵɵelementStart(0, "div",
|
|
898
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_33_Template(rf, ctx) { if (rf & 1) {
|
|
899
|
+
i0.ɵɵelementStart(0, "div", 141)(1, "h4");
|
|
891
900
|
i0.ɵɵtext(2, "Retry Timeline");
|
|
892
901
|
i0.ɵɵelementEnd();
|
|
893
|
-
i0.ɵɵelementStart(3, "div",
|
|
894
|
-
i0.ɵɵelement(5, "i",
|
|
902
|
+
i0.ɵɵelementStart(3, "div", 147)(4, "div", 148);
|
|
903
|
+
i0.ɵɵelement(5, "i", 90);
|
|
895
904
|
i0.ɵɵelementStart(6, "span");
|
|
896
905
|
i0.ɵɵtext(7);
|
|
897
906
|
i0.ɵɵpipe(8, "date");
|
|
898
907
|
i0.ɵɵelementEnd()();
|
|
899
|
-
i0.ɵɵelementStart(9, "div",
|
|
900
|
-
i0.ɵɵelement(10, "i",
|
|
908
|
+
i0.ɵɵelementStart(9, "div", 148);
|
|
909
|
+
i0.ɵɵelement(10, "i", 131);
|
|
901
910
|
i0.ɵɵelementStart(11, "span");
|
|
902
911
|
i0.ɵɵtext(12);
|
|
903
912
|
i0.ɵɵpipe(13, "date");
|
|
904
913
|
i0.ɵɵelementEnd()();
|
|
905
|
-
i0.ɵɵelementStart(14, "div",
|
|
906
|
-
i0.ɵɵelement(15, "i",
|
|
914
|
+
i0.ɵɵelementStart(14, "div", 148);
|
|
915
|
+
i0.ɵɵelement(15, "i", 149);
|
|
907
916
|
i0.ɵɵelementStart(16, "span");
|
|
908
917
|
i0.ɵɵtext(17);
|
|
909
918
|
i0.ɵɵelementEnd()()()();
|
|
@@ -916,8 +925,8 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_89_Conditi
|
|
|
916
925
|
i0.ɵɵadvance(5);
|
|
917
926
|
i0.ɵɵtextInterpolate1("Total Retry Duration: ", ctx_r1.formatDuration(ctx_r1.record.TotalRetryDurationMS));
|
|
918
927
|
} }
|
|
919
|
-
function
|
|
920
|
-
i0.ɵɵelementStart(0, "span",
|
|
928
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_34_For_5_Conditional_7_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
929
|
+
i0.ɵɵelementStart(0, "span", 146);
|
|
921
930
|
i0.ɵɵtext(1);
|
|
922
931
|
i0.ɵɵelementEnd();
|
|
923
932
|
} if (rf & 2) {
|
|
@@ -925,11 +934,11 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_89_Conditi
|
|
|
925
934
|
i0.ɵɵadvance();
|
|
926
935
|
i0.ɵɵtextInterpolate1("(", attempt_r14.validationErrorCount, " errors)");
|
|
927
936
|
} }
|
|
928
|
-
function
|
|
929
|
-
i0.ɵɵelementStart(0, "span",
|
|
937
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_34_For_5_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
938
|
+
i0.ɵɵelementStart(0, "span", 157);
|
|
930
939
|
i0.ɵɵtext(1);
|
|
931
940
|
i0.ɵɵelementEnd();
|
|
932
|
-
i0.ɵɵconditionalCreate(2,
|
|
941
|
+
i0.ɵɵconditionalCreate(2, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_34_For_5_Conditional_7_Conditional_2_Template, 2, 1, "span", 146);
|
|
933
942
|
} if (rf & 2) {
|
|
934
943
|
const attempt_r14 = i0.ɵɵnextContext().$implicit;
|
|
935
944
|
i0.ɵɵadvance();
|
|
@@ -937,8 +946,8 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_89_Conditi
|
|
|
937
946
|
i0.ɵɵadvance();
|
|
938
947
|
i0.ɵɵconditional(attempt_r14.validationErrorCount > 0 ? 2 : -1);
|
|
939
948
|
} }
|
|
940
|
-
function
|
|
941
|
-
i0.ɵɵelementStart(0, "span",
|
|
949
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_34_For_5_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
950
|
+
i0.ɵɵelementStart(0, "span", 156);
|
|
942
951
|
i0.ɵɵtext(1);
|
|
943
952
|
i0.ɵɵelementEnd();
|
|
944
953
|
} if (rf & 2) {
|
|
@@ -946,16 +955,16 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_89_Conditi
|
|
|
946
955
|
i0.ɵɵadvance();
|
|
947
956
|
i0.ɵɵtextInterpolate1("Output: ", attempt_r14.outputLength, " chars");
|
|
948
957
|
} }
|
|
949
|
-
function
|
|
950
|
-
i0.ɵɵelementStart(0, "div",
|
|
958
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_34_For_5_Template(rf, ctx) { if (rf & 1) {
|
|
959
|
+
i0.ɵɵelementStart(0, "div", 152)(1, "div", 153);
|
|
951
960
|
i0.ɵɵelement(2, "i");
|
|
952
961
|
i0.ɵɵtext(3);
|
|
953
962
|
i0.ɵɵelementEnd();
|
|
954
|
-
i0.ɵɵelementStart(4, "div",
|
|
963
|
+
i0.ɵɵelementStart(4, "div", 154)(5, "span", 155);
|
|
955
964
|
i0.ɵɵtext(6);
|
|
956
965
|
i0.ɵɵelementEnd();
|
|
957
|
-
i0.ɵɵconditionalCreate(7,
|
|
958
|
-
i0.ɵɵconditionalCreate(8,
|
|
966
|
+
i0.ɵɵconditionalCreate(7, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_34_For_5_Conditional_7_Template, 3, 2);
|
|
967
|
+
i0.ɵɵconditionalCreate(8, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_34_For_5_Conditional_8_Template, 2, 1, "span", 156);
|
|
959
968
|
i0.ɵɵelementEnd()();
|
|
960
969
|
} if (rf & 2) {
|
|
961
970
|
const attempt_r14 = ctx.$implicit;
|
|
@@ -971,29 +980,29 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_89_Conditi
|
|
|
971
980
|
i0.ɵɵadvance();
|
|
972
981
|
i0.ɵɵconditional(attempt_r14.outputLength ? 8 : -1);
|
|
973
982
|
} }
|
|
974
|
-
function
|
|
975
|
-
i0.ɵɵelementStart(0, "div",
|
|
983
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_34_Template(rf, ctx) { if (rf & 1) {
|
|
984
|
+
i0.ɵɵelementStart(0, "div", 142)(1, "h4");
|
|
976
985
|
i0.ɵɵtext(2, "Validation Attempts");
|
|
977
986
|
i0.ɵɵelementEnd();
|
|
978
|
-
i0.ɵɵelementStart(3, "div",
|
|
979
|
-
i0.ɵɵrepeaterCreate(4,
|
|
987
|
+
i0.ɵɵelementStart(3, "div", 150);
|
|
988
|
+
i0.ɵɵrepeaterCreate(4, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_34_For_5_Template, 9, 10, "div", 151, _forTrack0);
|
|
980
989
|
i0.ɵɵelementEnd()();
|
|
981
990
|
} if (rf & 2) {
|
|
982
991
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
983
992
|
i0.ɵɵadvance(4);
|
|
984
993
|
i0.ɵɵrepeater(ctx_r1.validationAttempts);
|
|
985
994
|
} }
|
|
986
|
-
function
|
|
995
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_35_Template(rf, ctx) { if (rf & 1) {
|
|
987
996
|
const _r15 = i0.ɵɵgetCurrentView();
|
|
988
|
-
i0.ɵɵelementStart(0, "div",
|
|
997
|
+
i0.ɵɵelementStart(0, "div", 143)(1, "div", 103)(2, "h4", 126);
|
|
989
998
|
i0.ɵɵtext(3, "Validation Summary Details");
|
|
990
999
|
i0.ɵɵelementEnd();
|
|
991
|
-
i0.ɵɵelementStart(4, "button",
|
|
992
|
-
i0.ɵɵlistener("click", function
|
|
993
|
-
i0.ɵɵelement(5, "i",
|
|
1000
|
+
i0.ɵɵelementStart(4, "button", 106);
|
|
1001
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_35_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openFullScreen(ctx_r1.formattedValidationSummary, "json", "Validation Summary")); });
|
|
1002
|
+
i0.ɵɵelement(5, "i", 107);
|
|
994
1003
|
i0.ɵɵelementEnd()();
|
|
995
|
-
i0.ɵɵelementStart(6, "div",
|
|
996
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
1004
|
+
i0.ɵɵelementStart(6, "div", 158)(7, "mj-code-editor", 159);
|
|
1005
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_35_Template_mj_code_editor_ngModelChange_7_listener($event) { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.formattedValidationSummary, $event) || (ctx_r1.formattedValidationSummary = $event); return i0.ɵɵresetView($event); });
|
|
997
1006
|
i0.ɵɵelementEnd()()();
|
|
998
1007
|
} if (rf & 2) {
|
|
999
1008
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -1001,17 +1010,17 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_89_Conditi
|
|
|
1001
1010
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.formattedValidationSummary);
|
|
1002
1011
|
i0.ɵɵproperty("readonly", true)("language", "json")("lineWrapping", true);
|
|
1003
1012
|
} }
|
|
1004
|
-
function
|
|
1013
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_36_Template(rf, ctx) { if (rf & 1) {
|
|
1005
1014
|
const _r16 = i0.ɵɵgetCurrentView();
|
|
1006
|
-
i0.ɵɵelementStart(0, "div",
|
|
1015
|
+
i0.ɵɵelementStart(0, "div", 143)(1, "div", 103)(2, "h4", 126);
|
|
1007
1016
|
i0.ɵɵtext(3, "Validation Attempts (Raw JSON)");
|
|
1008
1017
|
i0.ɵɵelementEnd();
|
|
1009
|
-
i0.ɵɵelementStart(4, "button",
|
|
1010
|
-
i0.ɵɵlistener("click", function
|
|
1011
|
-
i0.ɵɵelement(5, "i",
|
|
1018
|
+
i0.ɵɵelementStart(4, "button", 106);
|
|
1019
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_36_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openFullScreen(ctx_r1.formattedValidationAttempts, "json", "Validation Attempts")); });
|
|
1020
|
+
i0.ɵɵelement(5, "i", 107);
|
|
1012
1021
|
i0.ɵɵelementEnd()();
|
|
1013
|
-
i0.ɵɵelementStart(6, "div",
|
|
1014
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
1022
|
+
i0.ɵɵelementStart(6, "div", 158)(7, "mj-code-editor", 160);
|
|
1023
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_36_Template_mj_code_editor_ngModelChange_7_listener($event) { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.formattedValidationAttempts, $event) || (ctx_r1.formattedValidationAttempts = $event); return i0.ɵɵresetView($event); });
|
|
1015
1024
|
i0.ɵɵelementEnd()()();
|
|
1016
1025
|
} if (rf & 2) {
|
|
1017
1026
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -1019,49 +1028,49 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_89_Conditi
|
|
|
1019
1028
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.formattedValidationAttempts);
|
|
1020
1029
|
i0.ɵɵproperty("readonly", true)("language", "json")("lineWrapping", true);
|
|
1021
1030
|
} }
|
|
1022
|
-
function
|
|
1031
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Template(rf, ctx) { if (rf & 1) {
|
|
1023
1032
|
const _r13 = i0.ɵɵgetCurrentView();
|
|
1024
1033
|
i0.ɵɵelementStart(0, "mj-accordion-panel", 27);
|
|
1025
|
-
i0.ɵɵlistener("ExpandedChange", function
|
|
1026
|
-
i0.ɵɵtemplate(1,
|
|
1027
|
-
i0.ɵɵelementStart(2, "div", 29)(3, "div",
|
|
1034
|
+
i0.ɵɵlistener("ExpandedChange", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Template_mj_accordion_panel_ExpandedChange_0_listener($event) { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onValidationPanelToggle($event)); });
|
|
1035
|
+
i0.ɵɵtemplate(1, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_ng_template_1_Template, 6, 2, "ng-template", 28);
|
|
1036
|
+
i0.ɵɵelementStart(2, "div", 29)(3, "div", 134)(4, "div", 135)(5, "h4");
|
|
1028
1037
|
i0.ɵɵtext(6, "Validation Summary");
|
|
1029
1038
|
i0.ɵɵelementEnd();
|
|
1030
|
-
i0.ɵɵelementStart(7, "div",
|
|
1039
|
+
i0.ɵɵelementStart(7, "div", 136);
|
|
1031
1040
|
i0.ɵɵelement(8, "i");
|
|
1032
1041
|
i0.ɵɵtext(9);
|
|
1033
1042
|
i0.ɵɵelementEnd()();
|
|
1034
|
-
i0.ɵɵelementStart(10, "div",
|
|
1043
|
+
i0.ɵɵelementStart(10, "div", 137)(11, "div", 138)(12, "div", 87);
|
|
1035
1044
|
i0.ɵɵtext(13, "Total Attempts");
|
|
1036
1045
|
i0.ɵɵelementEnd();
|
|
1037
|
-
i0.ɵɵelementStart(14, "div",
|
|
1046
|
+
i0.ɵɵelementStart(14, "div", 88);
|
|
1038
1047
|
i0.ɵɵtext(15);
|
|
1039
1048
|
i0.ɵɵelementEnd()();
|
|
1040
|
-
i0.ɵɵelementStart(16, "div",
|
|
1049
|
+
i0.ɵɵelementStart(16, "div", 138)(17, "div", 87);
|
|
1041
1050
|
i0.ɵɵtext(18, "Successful");
|
|
1042
1051
|
i0.ɵɵelementEnd();
|
|
1043
|
-
i0.ɵɵelementStart(19, "div",
|
|
1052
|
+
i0.ɵɵelementStart(19, "div", 88);
|
|
1044
1053
|
i0.ɵɵtext(20);
|
|
1045
1054
|
i0.ɵɵelementEnd()();
|
|
1046
|
-
i0.ɵɵelementStart(21, "div",
|
|
1055
|
+
i0.ɵɵelementStart(21, "div", 138)(22, "div", 87);
|
|
1047
1056
|
i0.ɵɵtext(23, "Behavior");
|
|
1048
1057
|
i0.ɵɵelementEnd();
|
|
1049
|
-
i0.ɵɵelementStart(24, "div",
|
|
1058
|
+
i0.ɵɵelementStart(24, "div", 88);
|
|
1050
1059
|
i0.ɵɵtext(25);
|
|
1051
1060
|
i0.ɵɵelementEnd()();
|
|
1052
|
-
i0.ɵɵelementStart(26, "div",
|
|
1061
|
+
i0.ɵɵelementStart(26, "div", 138)(27, "div", 87);
|
|
1053
1062
|
i0.ɵɵtext(28, "Retry Strategy");
|
|
1054
1063
|
i0.ɵɵelementEnd();
|
|
1055
|
-
i0.ɵɵelementStart(29, "div",
|
|
1064
|
+
i0.ɵɵelementStart(29, "div", 88);
|
|
1056
1065
|
i0.ɵɵtext(30);
|
|
1057
1066
|
i0.ɵɵelementEnd()()();
|
|
1058
|
-
i0.ɵɵconditionalCreate(31,
|
|
1059
|
-
i0.ɵɵconditionalCreate(32,
|
|
1067
|
+
i0.ɵɵconditionalCreate(31, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_31_Template, 7, 2, "div", 139);
|
|
1068
|
+
i0.ɵɵconditionalCreate(32, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_32_Template, 6, 1, "div", 140);
|
|
1060
1069
|
i0.ɵɵelementEnd();
|
|
1061
|
-
i0.ɵɵconditionalCreate(33,
|
|
1062
|
-
i0.ɵɵconditionalCreate(34,
|
|
1063
|
-
i0.ɵɵconditionalCreate(35,
|
|
1064
|
-
i0.ɵɵconditionalCreate(36,
|
|
1070
|
+
i0.ɵɵconditionalCreate(33, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_33_Template, 18, 9, "div", 141);
|
|
1071
|
+
i0.ɵɵconditionalCreate(34, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_34_Template, 6, 0, "div", 142);
|
|
1072
|
+
i0.ɵɵconditionalCreate(35, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_35_Template, 8, 4, "div", 143);
|
|
1073
|
+
i0.ɵɵconditionalCreate(36, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_36_Template, 8, 4, "div", 143);
|
|
1065
1074
|
i0.ɵɵelementEnd()();
|
|
1066
1075
|
} if (rf & 2) {
|
|
1067
1076
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -1093,8 +1102,8 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_89_Templat
|
|
|
1093
1102
|
i0.ɵɵadvance();
|
|
1094
1103
|
i0.ɵɵconditional(ctx_r1.record.ValidationAttempts ? 36 : -1);
|
|
1095
1104
|
} }
|
|
1096
|
-
function
|
|
1097
|
-
i0.ɵɵelementStart(0, "span",
|
|
1105
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_91_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
1106
|
+
i0.ɵɵelementStart(0, "span", 111);
|
|
1098
1107
|
i0.ɵɵtext(1);
|
|
1099
1108
|
i0.ɵɵelementEnd();
|
|
1100
1109
|
} if (rf & 2) {
|
|
@@ -1102,47 +1111,47 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_ng_temp
|
|
|
1102
1111
|
i0.ɵɵadvance();
|
|
1103
1112
|
i0.ɵɵtextInterpolate1("(", ctx_r1.childRuns.length, " children)");
|
|
1104
1113
|
} }
|
|
1105
|
-
function
|
|
1106
|
-
i0.ɵɵelementStart(0, "span",
|
|
1107
|
-
i0.ɵɵelement(1, "i",
|
|
1114
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_91_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
1115
|
+
i0.ɵɵelementStart(0, "span", 96);
|
|
1116
|
+
i0.ɵɵelement(1, "i", 163);
|
|
1108
1117
|
i0.ɵɵtext(2, " Run Hierarchy ");
|
|
1109
|
-
i0.ɵɵconditionalCreate(3,
|
|
1118
|
+
i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_91_ng_template_1_Conditional_3_Template, 2, 1, "span", 111);
|
|
1110
1119
|
i0.ɵɵelementEnd();
|
|
1111
1120
|
} if (rf & 2) {
|
|
1112
1121
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
1113
1122
|
i0.ɵɵadvance(3);
|
|
1114
1123
|
i0.ɵɵconditional(ctx_r1.childRuns.length > 0 ? 3 : -1);
|
|
1115
1124
|
} }
|
|
1116
|
-
function
|
|
1125
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_91_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
1117
1126
|
const _r17 = i0.ɵɵgetCurrentView();
|
|
1118
|
-
i0.ɵɵelementStart(0, "div",
|
|
1119
|
-
i0.ɵɵelement(2, "i",
|
|
1127
|
+
i0.ɵɵelementStart(0, "div", 161)(1, "h4");
|
|
1128
|
+
i0.ɵɵelement(2, "i", 83);
|
|
1120
1129
|
i0.ɵɵtext(3, " Parent Run");
|
|
1121
1130
|
i0.ɵɵelementEnd();
|
|
1122
|
-
i0.ɵɵelementStart(4, "div",
|
|
1123
|
-
i0.ɵɵlistener("click", function
|
|
1124
|
-
i0.ɵɵelementStart(5, "div",
|
|
1131
|
+
i0.ɵɵelementStart(4, "div", 164);
|
|
1132
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_91_Conditional_3_Template_div_click_4_listener() { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Prompt Runs", ctx_r1.parentRun.ID)); });
|
|
1133
|
+
i0.ɵɵelementStart(5, "div", 165);
|
|
1125
1134
|
i0.ɵɵelement(6, "i");
|
|
1126
1135
|
i0.ɵɵelementEnd();
|
|
1127
|
-
i0.ɵɵelementStart(7, "div",
|
|
1136
|
+
i0.ɵɵelementStart(7, "div", 166)(8, "div", 167);
|
|
1128
1137
|
i0.ɵɵtext(9);
|
|
1129
|
-
i0.ɵɵelementStart(10, "span",
|
|
1138
|
+
i0.ɵɵelementStart(10, "span", 168);
|
|
1130
1139
|
i0.ɵɵtext(11);
|
|
1131
1140
|
i0.ɵɵelementEnd()();
|
|
1132
|
-
i0.ɵɵelementStart(12, "div",
|
|
1133
|
-
i0.ɵɵelement(14, "i",
|
|
1141
|
+
i0.ɵɵelementStart(12, "div", 169)(13, "span");
|
|
1142
|
+
i0.ɵɵelement(14, "i", 90);
|
|
1134
1143
|
i0.ɵɵtext(15);
|
|
1135
1144
|
i0.ɵɵelementEnd();
|
|
1136
1145
|
i0.ɵɵelementStart(16, "span");
|
|
1137
|
-
i0.ɵɵelement(17, "i",
|
|
1146
|
+
i0.ɵɵelement(17, "i", 42);
|
|
1138
1147
|
i0.ɵɵtext(18);
|
|
1139
1148
|
i0.ɵɵelementEnd();
|
|
1140
1149
|
i0.ɵɵelementStart(19, "span");
|
|
1141
|
-
i0.ɵɵelement(20, "i",
|
|
1150
|
+
i0.ɵɵelement(20, "i", 95);
|
|
1142
1151
|
i0.ɵɵtext(21);
|
|
1143
1152
|
i0.ɵɵpipe(22, "date");
|
|
1144
1153
|
i0.ɵɵelementEnd()()();
|
|
1145
|
-
i0.ɵɵelement(23, "i",
|
|
1154
|
+
i0.ɵɵelement(23, "i", 133);
|
|
1146
1155
|
i0.ɵɵelementEnd()();
|
|
1147
1156
|
} if (rf & 2) {
|
|
1148
1157
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -1161,8 +1170,8 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditi
|
|
|
1161
1170
|
i0.ɵɵadvance(3);
|
|
1162
1171
|
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(22, 9, ctx_r1.parentRun.RunAt, "short"));
|
|
1163
1172
|
} }
|
|
1164
|
-
function
|
|
1165
|
-
i0.ɵɵelementStart(0, "span",
|
|
1173
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_91_Conditional_4_For_6_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
1174
|
+
i0.ɵɵelementStart(0, "span", 174);
|
|
1166
1175
|
i0.ɵɵtext(1);
|
|
1167
1176
|
i0.ɵɵelementEnd();
|
|
1168
1177
|
} if (rf & 2) {
|
|
@@ -1170,32 +1179,32 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditi
|
|
|
1170
1179
|
i0.ɵɵadvance();
|
|
1171
1180
|
i0.ɵɵtextInterpolate1("#", childRun_r19.ExecutionOrder);
|
|
1172
1181
|
} }
|
|
1173
|
-
function
|
|
1182
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_91_Conditional_4_For_6_Template(rf, ctx) { if (rf & 1) {
|
|
1174
1183
|
const _r18 = i0.ɵɵgetCurrentView();
|
|
1175
|
-
i0.ɵɵelementStart(0, "div",
|
|
1176
|
-
i0.ɵɵlistener("click", function
|
|
1177
|
-
i0.ɵɵelementStart(1, "div",
|
|
1184
|
+
i0.ɵɵelementStart(0, "div", 173);
|
|
1185
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_91_Conditional_4_For_6_Template_div_click_0_listener() { const childRun_r19 = i0.ɵɵrestoreView(_r18).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Prompt Runs", childRun_r19.ID)); });
|
|
1186
|
+
i0.ɵɵelementStart(1, "div", 165);
|
|
1178
1187
|
i0.ɵɵelement(2, "i");
|
|
1179
1188
|
i0.ɵɵelementEnd();
|
|
1180
|
-
i0.ɵɵelementStart(3, "div",
|
|
1189
|
+
i0.ɵɵelementStart(3, "div", 166)(4, "div", 167);
|
|
1181
1190
|
i0.ɵɵtext(5);
|
|
1182
|
-
i0.ɵɵconditionalCreate(6,
|
|
1183
|
-
i0.ɵɵelementStart(7, "span",
|
|
1191
|
+
i0.ɵɵconditionalCreate(6, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_91_Conditional_4_For_6_Conditional_6_Template, 2, 1, "span", 174);
|
|
1192
|
+
i0.ɵɵelementStart(7, "span", 168);
|
|
1184
1193
|
i0.ɵɵtext(8);
|
|
1185
1194
|
i0.ɵɵelementEnd()();
|
|
1186
|
-
i0.ɵɵelementStart(9, "div",
|
|
1195
|
+
i0.ɵɵelementStart(9, "div", 169)(10, "span", 16);
|
|
1187
1196
|
i0.ɵɵelement(11, "i");
|
|
1188
1197
|
i0.ɵɵtext(12);
|
|
1189
1198
|
i0.ɵɵelementEnd();
|
|
1190
1199
|
i0.ɵɵelementStart(13, "span");
|
|
1191
|
-
i0.ɵɵelement(14, "i",
|
|
1200
|
+
i0.ɵɵelement(14, "i", 90);
|
|
1192
1201
|
i0.ɵɵtext(15);
|
|
1193
1202
|
i0.ɵɵelementEnd();
|
|
1194
1203
|
i0.ɵɵelementStart(16, "span");
|
|
1195
|
-
i0.ɵɵelement(17, "i",
|
|
1204
|
+
i0.ɵɵelement(17, "i", 42);
|
|
1196
1205
|
i0.ɵɵtext(18);
|
|
1197
1206
|
i0.ɵɵelementEnd()()();
|
|
1198
|
-
i0.ɵɵelement(19, "i",
|
|
1207
|
+
i0.ɵɵelement(19, "i", 133);
|
|
1199
1208
|
i0.ɵɵelementEnd();
|
|
1200
1209
|
} if (rf & 2) {
|
|
1201
1210
|
const childRun_r19 = ctx.$implicit;
|
|
@@ -1221,25 +1230,25 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditi
|
|
|
1221
1230
|
i0.ɵɵadvance(3);
|
|
1222
1231
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.formatTokens(childRun_r19.TokensUsed));
|
|
1223
1232
|
} }
|
|
1224
|
-
function
|
|
1225
|
-
i0.ɵɵelementStart(0, "div",
|
|
1226
|
-
i0.ɵɵelement(2, "i",
|
|
1233
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_91_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
1234
|
+
i0.ɵɵelementStart(0, "div", 162)(1, "h4");
|
|
1235
|
+
i0.ɵɵelement(2, "i", 170);
|
|
1227
1236
|
i0.ɵɵtext(3, " Child Runs");
|
|
1228
1237
|
i0.ɵɵelementEnd();
|
|
1229
|
-
i0.ɵɵelementStart(4, "div",
|
|
1230
|
-
i0.ɵɵrepeaterCreate(5,
|
|
1238
|
+
i0.ɵɵelementStart(4, "div", 171);
|
|
1239
|
+
i0.ɵɵrepeaterCreate(5, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_91_Conditional_4_For_6_Template, 20, 14, "div", 172, _forTrack1);
|
|
1231
1240
|
i0.ɵɵelementEnd()();
|
|
1232
1241
|
} if (rf & 2) {
|
|
1233
1242
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
1234
1243
|
i0.ɵɵadvance(5);
|
|
1235
1244
|
i0.ɵɵrepeater(ctx_r1.childRuns);
|
|
1236
1245
|
} }
|
|
1237
|
-
function
|
|
1238
|
-
i0.ɵɵelementStart(0, "mj-accordion-panel",
|
|
1239
|
-
i0.ɵɵtemplate(1,
|
|
1246
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_91_Template(rf, ctx) { if (rf & 1) {
|
|
1247
|
+
i0.ɵɵelementStart(0, "mj-accordion-panel", 48);
|
|
1248
|
+
i0.ɵɵtemplate(1, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_91_ng_template_1_Template, 4, 1, "ng-template", 28);
|
|
1240
1249
|
i0.ɵɵelementStart(2, "div", 29);
|
|
1241
|
-
i0.ɵɵconditionalCreate(3,
|
|
1242
|
-
i0.ɵɵconditionalCreate(4,
|
|
1250
|
+
i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_91_Conditional_3_Template, 24, 12, "div", 161);
|
|
1251
|
+
i0.ɵɵconditionalCreate(4, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_91_Conditional_4_Template, 7, 0, "div", 162);
|
|
1243
1252
|
i0.ɵɵelementEnd()();
|
|
1244
1253
|
} if (rf & 2) {
|
|
1245
1254
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -1249,33 +1258,33 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Templat
|
|
|
1249
1258
|
i0.ɵɵadvance();
|
|
1250
1259
|
i0.ɵɵconditional(ctx_r1.childRuns.length > 0 ? 4 : -1);
|
|
1251
1260
|
} }
|
|
1252
|
-
function
|
|
1253
|
-
i0.ɵɵelementStart(0, "span",
|
|
1254
|
-
i0.ɵɵelement(1, "i",
|
|
1261
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_93_Template(rf, ctx) { if (rf & 1) {
|
|
1262
|
+
i0.ɵɵelementStart(0, "span", 96);
|
|
1263
|
+
i0.ɵɵelement(1, "i", 61);
|
|
1255
1264
|
i0.ɵɵtext(2, " Additional Details ");
|
|
1256
1265
|
i0.ɵɵelementEnd();
|
|
1257
1266
|
} }
|
|
1258
|
-
function
|
|
1267
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_96_Template(rf, ctx) { if (rf & 1) {
|
|
1259
1268
|
const _r20 = i0.ɵɵgetCurrentView();
|
|
1260
|
-
i0.ɵɵelementStart(0, "div",
|
|
1269
|
+
i0.ɵɵelementStart(0, "div", 50)(1, "label");
|
|
1261
1270
|
i0.ɵɵtext(2, "Agent");
|
|
1262
1271
|
i0.ɵɵelementEnd();
|
|
1263
|
-
i0.ɵɵelementStart(3, "div",
|
|
1264
|
-
i0.ɵɵlistener("click", function
|
|
1265
|
-
i0.ɵɵelement(4, "i",
|
|
1272
|
+
i0.ɵɵelementStart(3, "div", 175);
|
|
1273
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_96_Template_div_click_3_listener() { i0.ɵɵrestoreView(_r20); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Agents", ctx_r1.record.AgentID)); });
|
|
1274
|
+
i0.ɵɵelement(4, "i", 176);
|
|
1266
1275
|
i0.ɵɵtext(5);
|
|
1267
|
-
i0.ɵɵelement(6, "i",
|
|
1276
|
+
i0.ɵɵelement(6, "i", 133);
|
|
1268
1277
|
i0.ɵɵelementEnd()();
|
|
1269
1278
|
} if (rf & 2) {
|
|
1270
1279
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
1271
1280
|
i0.ɵɵadvance(5);
|
|
1272
1281
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.Agent || "Unknown", " ");
|
|
1273
1282
|
} }
|
|
1274
|
-
function
|
|
1275
|
-
i0.ɵɵelementStart(0, "div",
|
|
1283
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_97_Template(rf, ctx) { if (rf & 1) {
|
|
1284
|
+
i0.ɵɵelementStart(0, "div", 50)(1, "label");
|
|
1276
1285
|
i0.ɵɵtext(2, "Run Type");
|
|
1277
1286
|
i0.ɵɵelementEnd();
|
|
1278
|
-
i0.ɵɵelementStart(3, "div",
|
|
1287
|
+
i0.ɵɵelementStart(3, "div", 51);
|
|
1279
1288
|
i0.ɵɵelement(4, "i");
|
|
1280
1289
|
i0.ɵɵtext(5);
|
|
1281
1290
|
i0.ɵɵelementEnd()();
|
|
@@ -1286,12 +1295,12 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_96_Templat
|
|
|
1286
1295
|
i0.ɵɵadvance();
|
|
1287
1296
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.RunType, " ");
|
|
1288
1297
|
} }
|
|
1289
|
-
function
|
|
1290
|
-
i0.ɵɵelementStart(0, "div",
|
|
1298
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_98_Template(rf, ctx) { if (rf & 1) {
|
|
1299
|
+
i0.ɵɵelementStart(0, "div", 50)(1, "label");
|
|
1291
1300
|
i0.ɵɵtext(2, "Response Format");
|
|
1292
1301
|
i0.ɵɵelementEnd();
|
|
1293
|
-
i0.ɵɵelementStart(3, "div",
|
|
1294
|
-
i0.ɵɵelement(4, "i",
|
|
1302
|
+
i0.ɵɵelementStart(3, "div", 51);
|
|
1303
|
+
i0.ɵɵelement(4, "i", 93);
|
|
1295
1304
|
i0.ɵɵtext(5);
|
|
1296
1305
|
i0.ɵɵelementEnd()();
|
|
1297
1306
|
} if (rf & 2) {
|
|
@@ -1299,12 +1308,12 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_97_Templat
|
|
|
1299
1308
|
i0.ɵɵadvance(5);
|
|
1300
1309
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.ResponseFormat, " ");
|
|
1301
1310
|
} }
|
|
1302
|
-
function
|
|
1303
|
-
i0.ɵɵelementStart(0, "div",
|
|
1311
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_153_Template(rf, ctx) { if (rf & 1) {
|
|
1312
|
+
i0.ɵɵelementStart(0, "div", 50)(1, "label");
|
|
1304
1313
|
i0.ɵɵtext(2, "Started At");
|
|
1305
1314
|
i0.ɵɵelementEnd();
|
|
1306
|
-
i0.ɵɵelementStart(3, "div",
|
|
1307
|
-
i0.ɵɵelement(4, "i",
|
|
1315
|
+
i0.ɵɵelementStart(3, "div", 51);
|
|
1316
|
+
i0.ɵɵelement(4, "i", 90);
|
|
1308
1317
|
i0.ɵɵtext(5);
|
|
1309
1318
|
i0.ɵɵpipe(6, "date");
|
|
1310
1319
|
i0.ɵɵelementEnd()();
|
|
@@ -1313,12 +1322,12 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_152_Templa
|
|
|
1313
1322
|
i0.ɵɵadvance(5);
|
|
1314
1323
|
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(6, 1, ctx_r1.record.RunAt, "medium"), " ");
|
|
1315
1324
|
} }
|
|
1316
|
-
function
|
|
1317
|
-
i0.ɵɵelementStart(0, "div",
|
|
1325
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_154_Template(rf, ctx) { if (rf & 1) {
|
|
1326
|
+
i0.ɵɵelementStart(0, "div", 50)(1, "label");
|
|
1318
1327
|
i0.ɵɵtext(2, "Completed At");
|
|
1319
1328
|
i0.ɵɵelementEnd();
|
|
1320
|
-
i0.ɵɵelementStart(3, "div",
|
|
1321
|
-
i0.ɵɵelement(4, "i",
|
|
1329
|
+
i0.ɵɵelementStart(3, "div", 51);
|
|
1330
|
+
i0.ɵɵelement(4, "i", 177);
|
|
1322
1331
|
i0.ɵɵtext(5);
|
|
1323
1332
|
i0.ɵɵpipe(6, "date");
|
|
1324
1333
|
i0.ɵɵelementEnd()();
|
|
@@ -1327,30 +1336,30 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_153_Templa
|
|
|
1327
1336
|
i0.ɵɵadvance(5);
|
|
1328
1337
|
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(6, 1, ctx_r1.record.CompletedAt, "medium"), " ");
|
|
1329
1338
|
} }
|
|
1330
|
-
function
|
|
1331
|
-
i0.ɵɵelementStart(0, "span",
|
|
1332
|
-
i0.ɵɵelement(1, "i",
|
|
1339
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_155_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
1340
|
+
i0.ɵɵelementStart(0, "span", 96);
|
|
1341
|
+
i0.ɵɵelement(1, "i", 81);
|
|
1333
1342
|
i0.ɵɵtext(2, " Model Specific Response Details ");
|
|
1334
|
-
i0.ɵɵelementStart(3, "span",
|
|
1343
|
+
i0.ɵɵelementStart(3, "span", 98);
|
|
1335
1344
|
i0.ɵɵtext(4, "JSON");
|
|
1336
1345
|
i0.ɵɵelementEnd()();
|
|
1337
1346
|
} }
|
|
1338
|
-
function
|
|
1347
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_155_Template(rf, ctx) { if (rf & 1) {
|
|
1339
1348
|
const _r21 = i0.ɵɵgetCurrentView();
|
|
1340
1349
|
i0.ɵɵelementStart(0, "mj-accordion-panel", 27);
|
|
1341
|
-
i0.ɵɵlistener("ExpandedChange", function
|
|
1342
|
-
i0.ɵɵtemplate(1,
|
|
1343
|
-
i0.ɵɵelementStart(2, "div", 29)(3, "div", 33)(4, "div",
|
|
1344
|
-
i0.ɵɵlistener("click", function
|
|
1345
|
-
i0.ɵɵelement(6, "i",
|
|
1350
|
+
i0.ɵɵlistener("ExpandedChange", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_155_Template_mj_accordion_panel_ExpandedChange_0_listener($event) { i0.ɵɵrestoreView(_r21); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onModelSpecificPanelToggle($event)); });
|
|
1351
|
+
i0.ɵɵtemplate(1, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_155_ng_template_1_Template, 5, 0, "ng-template", 28);
|
|
1352
|
+
i0.ɵɵelementStart(2, "div", 29)(3, "div", 33)(4, "div", 103)(5, "button", 104);
|
|
1353
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_155_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r21); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.copyToClipboard(ctx_r1.formattedModelSpecificResponseDetails, "Model Specific Response Details")); });
|
|
1354
|
+
i0.ɵɵelement(6, "i", 105);
|
|
1346
1355
|
i0.ɵɵtext(7, " Copy ");
|
|
1347
1356
|
i0.ɵɵelementEnd();
|
|
1348
|
-
i0.ɵɵelementStart(8, "button",
|
|
1349
|
-
i0.ɵɵlistener("click", function
|
|
1350
|
-
i0.ɵɵelement(9, "i",
|
|
1357
|
+
i0.ɵɵelementStart(8, "button", 106);
|
|
1358
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_155_Template_button_click_8_listener() { i0.ɵɵrestoreView(_r21); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openFullScreen(ctx_r1.formattedModelSpecificResponseDetails, "json", "Model Specific Response Details")); });
|
|
1359
|
+
i0.ɵɵelement(9, "i", 107);
|
|
1351
1360
|
i0.ɵɵelementEnd()();
|
|
1352
|
-
i0.ɵɵelementStart(10, "mj-code-editor",
|
|
1353
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
1361
|
+
i0.ɵɵelementStart(10, "mj-code-editor", 178);
|
|
1362
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_155_Template_mj_code_editor_ngModelChange_10_listener($event) { i0.ɵɵrestoreView(_r21); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.formattedModelSpecificResponseDetails, $event) || (ctx_r1.formattedModelSpecificResponseDetails = $event); return i0.ɵɵresetView($event); });
|
|
1354
1363
|
i0.ɵɵelementEnd()()()();
|
|
1355
1364
|
} if (rf & 2) {
|
|
1356
1365
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -1359,22 +1368,22 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_154_Templa
|
|
|
1359
1368
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.formattedModelSpecificResponseDetails);
|
|
1360
1369
|
i0.ɵɵproperty("readonly", true)("language", "json")("lineWrapping", true);
|
|
1361
1370
|
} }
|
|
1362
|
-
function
|
|
1363
|
-
i0.ɵɵelementStart(0, "span",
|
|
1371
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_157_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
1372
|
+
i0.ɵɵelementStart(0, "span", 145);
|
|
1364
1373
|
i0.ɵɵtext(1, "Cached");
|
|
1365
1374
|
i0.ɵɵelementEnd();
|
|
1366
1375
|
} }
|
|
1367
|
-
function
|
|
1368
|
-
i0.ɵɵelementStart(0, "span",
|
|
1376
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_157_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
1377
|
+
i0.ɵɵelementStart(0, "span", 145);
|
|
1369
1378
|
i0.ɵɵtext(1, "Selected");
|
|
1370
1379
|
i0.ɵɵelementEnd();
|
|
1371
1380
|
} }
|
|
1372
|
-
function
|
|
1373
|
-
i0.ɵɵelementStart(0, "span",
|
|
1374
|
-
i0.ɵɵelement(1, "i",
|
|
1381
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_157_Template(rf, ctx) { if (rf & 1) {
|
|
1382
|
+
i0.ɵɵelementStart(0, "span", 96);
|
|
1383
|
+
i0.ɵɵelement(1, "i", 81);
|
|
1375
1384
|
i0.ɵɵtext(2, " Model Selection & Performance ");
|
|
1376
|
-
i0.ɵɵconditionalCreate(3,
|
|
1377
|
-
i0.ɵɵconditionalCreate(4,
|
|
1385
|
+
i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_157_Conditional_3_Template, 2, 0, "span", 145);
|
|
1386
|
+
i0.ɵɵconditionalCreate(4, MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_157_Conditional_4_Template, 2, 0, "span", 145);
|
|
1378
1387
|
i0.ɵɵelementEnd();
|
|
1379
1388
|
} if (rf & 2) {
|
|
1380
1389
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -1383,12 +1392,12 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_156_Templa
|
|
|
1383
1392
|
i0.ɵɵadvance();
|
|
1384
1393
|
i0.ɵɵconditional(ctx_r1.record.WasSelectedResult ? 4 : -1);
|
|
1385
1394
|
} }
|
|
1386
|
-
function
|
|
1387
|
-
i0.ɵɵelementStart(0, "div",
|
|
1395
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_184_Template(rf, ctx) { if (rf & 1) {
|
|
1396
|
+
i0.ɵɵelementStart(0, "div", 64)(1, "label");
|
|
1388
1397
|
i0.ɵɵtext(2, "Cache Key");
|
|
1389
1398
|
i0.ɵɵelementEnd();
|
|
1390
|
-
i0.ɵɵelementStart(3, "div",
|
|
1391
|
-
i0.ɵɵelement(4, "i",
|
|
1399
|
+
i0.ɵɵelementStart(3, "div", 51);
|
|
1400
|
+
i0.ɵɵelement(4, "i", 179);
|
|
1392
1401
|
i0.ɵɵelementStart(5, "code");
|
|
1393
1402
|
i0.ɵɵtext(6);
|
|
1394
1403
|
i0.ɵɵelementEnd()()();
|
|
@@ -1397,28 +1406,28 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_183_Templa
|
|
|
1397
1406
|
i0.ɵɵadvance(6);
|
|
1398
1407
|
i0.ɵɵtextInterpolate(ctx_r1.record.CacheKey);
|
|
1399
1408
|
} }
|
|
1400
|
-
function
|
|
1409
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_185_Template(rf, ctx) { if (rf & 1) {
|
|
1401
1410
|
const _r22 = i0.ɵɵgetCurrentView();
|
|
1402
|
-
i0.ɵɵelementStart(0, "div",
|
|
1411
|
+
i0.ɵɵelementStart(0, "div", 50)(1, "label");
|
|
1403
1412
|
i0.ɵɵtext(2, "Judge Prompt");
|
|
1404
1413
|
i0.ɵɵelementEnd();
|
|
1405
|
-
i0.ɵɵelementStart(3, "div",
|
|
1406
|
-
i0.ɵɵlistener("click", function
|
|
1407
|
-
i0.ɵɵelement(4, "i",
|
|
1414
|
+
i0.ɵɵelementStart(3, "div", 180);
|
|
1415
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_185_Template_div_click_3_listener() { i0.ɵɵrestoreView(_r22); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Prompts", ctx_r1.record.JudgeID)); });
|
|
1416
|
+
i0.ɵɵelement(4, "i", 181);
|
|
1408
1417
|
i0.ɵɵtext(5);
|
|
1409
|
-
i0.ɵɵelement(6, "i",
|
|
1418
|
+
i0.ɵɵelement(6, "i", 133);
|
|
1410
1419
|
i0.ɵɵelementEnd()();
|
|
1411
1420
|
} if (rf & 2) {
|
|
1412
1421
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
1413
1422
|
i0.ɵɵadvance(5);
|
|
1414
1423
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.Judge || "Unknown", " ");
|
|
1415
1424
|
} }
|
|
1416
|
-
function
|
|
1417
|
-
i0.ɵɵelementStart(0, "div",
|
|
1425
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_186_Template(rf, ctx) { if (rf & 1) {
|
|
1426
|
+
i0.ɵɵelementStart(0, "div", 50)(1, "label");
|
|
1418
1427
|
i0.ɵɵtext(2, "Judge Score");
|
|
1419
1428
|
i0.ɵɵelementEnd();
|
|
1420
|
-
i0.ɵɵelementStart(3, "div",
|
|
1421
|
-
i0.ɵɵelement(4, "i",
|
|
1429
|
+
i0.ɵɵelementStart(3, "div", 51);
|
|
1430
|
+
i0.ɵɵelement(4, "i", 182);
|
|
1422
1431
|
i0.ɵɵtext(5);
|
|
1423
1432
|
i0.ɵɵelementEnd()();
|
|
1424
1433
|
} if (rf & 2) {
|
|
@@ -1426,12 +1435,12 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_185_Templa
|
|
|
1426
1435
|
i0.ɵɵadvance(5);
|
|
1427
1436
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.JudgeScore, " ");
|
|
1428
1437
|
} }
|
|
1429
|
-
function
|
|
1430
|
-
i0.ɵɵelementStart(0, "div",
|
|
1438
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_199_Template(rf, ctx) { if (rf & 1) {
|
|
1439
|
+
i0.ɵɵelementStart(0, "div", 50)(1, "label");
|
|
1431
1440
|
i0.ɵɵtext(2, "First Token Time");
|
|
1432
1441
|
i0.ɵɵelementEnd();
|
|
1433
|
-
i0.ɵɵelementStart(3, "div",
|
|
1434
|
-
i0.ɵɵelement(4, "i",
|
|
1442
|
+
i0.ɵɵelementStart(3, "div", 51);
|
|
1443
|
+
i0.ɵɵelement(4, "i", 94);
|
|
1435
1444
|
i0.ɵɵtext(5);
|
|
1436
1445
|
i0.ɵɵelementEnd()();
|
|
1437
1446
|
} if (rf & 2) {
|
|
@@ -1439,12 +1448,12 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_198_Templa
|
|
|
1439
1448
|
i0.ɵɵadvance(5);
|
|
1440
1449
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.FirstTokenTime, " ms ");
|
|
1441
1450
|
} }
|
|
1442
|
-
function
|
|
1443
|
-
i0.ɵɵelementStart(0, "div",
|
|
1451
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_200_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
1452
|
+
i0.ɵɵelementStart(0, "div", 64)(1, "label");
|
|
1444
1453
|
i0.ɵɵtext(2, "Cancellation Reason");
|
|
1445
1454
|
i0.ɵɵelementEnd();
|
|
1446
|
-
i0.ɵɵelementStart(3, "div",
|
|
1447
|
-
i0.ɵɵelement(4, "i",
|
|
1455
|
+
i0.ɵɵelementStart(3, "div", 51);
|
|
1456
|
+
i0.ɵɵelement(4, "i", 185);
|
|
1448
1457
|
i0.ɵɵtext(5);
|
|
1449
1458
|
i0.ɵɵelementEnd()();
|
|
1450
1459
|
} if (rf & 2) {
|
|
@@ -1452,31 +1461,31 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_199_Condit
|
|
|
1452
1461
|
i0.ɵɵadvance(5);
|
|
1453
1462
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.CancellationReason, " ");
|
|
1454
1463
|
} }
|
|
1455
|
-
function
|
|
1456
|
-
i0.ɵɵelementStart(0, "div",
|
|
1464
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_200_Template(rf, ctx) { if (rf & 1) {
|
|
1465
|
+
i0.ɵɵelementStart(0, "div", 50)(1, "label");
|
|
1457
1466
|
i0.ɵɵtext(2, "Cancelled");
|
|
1458
1467
|
i0.ɵɵelementEnd();
|
|
1459
|
-
i0.ɵɵelementStart(3, "div",
|
|
1460
|
-
i0.ɵɵelement(4, "i",
|
|
1468
|
+
i0.ɵɵelementStart(3, "div", 183);
|
|
1469
|
+
i0.ɵɵelement(4, "i", 184);
|
|
1461
1470
|
i0.ɵɵtext(5, " Yes ");
|
|
1462
1471
|
i0.ɵɵelementEnd()();
|
|
1463
|
-
i0.ɵɵconditionalCreate(6,
|
|
1472
|
+
i0.ɵɵconditionalCreate(6, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_200_Conditional_6_Template, 6, 1, "div", 64);
|
|
1464
1473
|
} if (rf & 2) {
|
|
1465
1474
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
1466
1475
|
i0.ɵɵadvance(6);
|
|
1467
1476
|
i0.ɵɵconditional(ctx_r1.record.CancellationReason ? 6 : -1);
|
|
1468
1477
|
} }
|
|
1469
|
-
function
|
|
1478
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_201_Template(rf, ctx) { if (rf & 1) {
|
|
1470
1479
|
const _r23 = i0.ɵɵgetCurrentView();
|
|
1471
|
-
i0.ɵɵelementStart(0, "div",
|
|
1480
|
+
i0.ɵɵelementStart(0, "div", 65)(1, "div", 103)(2, "h4", 126);
|
|
1472
1481
|
i0.ɵɵtext(3, "Model Selection Details");
|
|
1473
1482
|
i0.ɵɵelementEnd();
|
|
1474
|
-
i0.ɵɵelementStart(4, "button",
|
|
1475
|
-
i0.ɵɵlistener("click", function
|
|
1476
|
-
i0.ɵɵelement(5, "i",
|
|
1483
|
+
i0.ɵɵelementStart(4, "button", 106);
|
|
1484
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_201_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r23); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openFullScreen(ctx_r1.formattedModelSelection, "json", "Model Selection")); });
|
|
1485
|
+
i0.ɵɵelement(5, "i", 107);
|
|
1477
1486
|
i0.ɵɵelementEnd()();
|
|
1478
|
-
i0.ɵɵelementStart(6, "div",
|
|
1479
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
1487
|
+
i0.ɵɵelementStart(6, "div", 158)(7, "mj-code-editor", 186);
|
|
1488
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_201_Template_mj_code_editor_ngModelChange_7_listener($event) { i0.ɵɵrestoreView(_r23); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.formattedModelSelection, $event) || (ctx_r1.formattedModelSelection = $event); return i0.ɵɵresetView($event); });
|
|
1480
1489
|
i0.ɵɵelementEnd()()();
|
|
1481
1490
|
} if (rf & 2) {
|
|
1482
1491
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -1484,17 +1493,17 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_200_Templa
|
|
|
1484
1493
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.formattedModelSelection);
|
|
1485
1494
|
i0.ɵɵproperty("readonly", true)("language", "json")("lineWrapping", true);
|
|
1486
1495
|
} }
|
|
1487
|
-
function
|
|
1496
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_202_Template(rf, ctx) { if (rf & 1) {
|
|
1488
1497
|
const _r24 = i0.ɵɵgetCurrentView();
|
|
1489
|
-
i0.ɵɵelementStart(0, "div",
|
|
1498
|
+
i0.ɵɵelementStart(0, "div", 66)(1, "div", 103)(2, "h4", 126);
|
|
1490
1499
|
i0.ɵɵtext(3, "Error Details");
|
|
1491
1500
|
i0.ɵɵelementEnd();
|
|
1492
|
-
i0.ɵɵelementStart(4, "button",
|
|
1493
|
-
i0.ɵɵlistener("click", function
|
|
1494
|
-
i0.ɵɵelement(5, "i",
|
|
1501
|
+
i0.ɵɵelementStart(4, "button", 106);
|
|
1502
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_202_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r24); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openFullScreen(ctx_r1.formattedErrorDetails, "json", "Error Details")); });
|
|
1503
|
+
i0.ɵɵelement(5, "i", 107);
|
|
1495
1504
|
i0.ɵɵelementEnd()();
|
|
1496
|
-
i0.ɵɵelementStart(6, "div",
|
|
1497
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
1505
|
+
i0.ɵɵelementStart(6, "div", 158)(7, "mj-code-editor", 187);
|
|
1506
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_202_Template_mj_code_editor_ngModelChange_7_listener($event) { i0.ɵɵrestoreView(_r24); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.formattedErrorDetails, $event) || (ctx_r1.formattedErrorDetails = $event); return i0.ɵɵresetView($event); });
|
|
1498
1507
|
i0.ɵɵelementEnd()()();
|
|
1499
1508
|
} if (rf & 2) {
|
|
1500
1509
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -1561,176 +1570,177 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Template(rf, ctx) { if
|
|
|
1561
1570
|
i0.ɵɵtext(54);
|
|
1562
1571
|
i0.ɵɵelementEnd();
|
|
1563
1572
|
i0.ɵɵconditionalCreate(55, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_55_Template, 3, 1, "div", 39);
|
|
1573
|
+
i0.ɵɵconditionalCreate(56, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_56_Template, 3, 1, "div", 39);
|
|
1564
1574
|
i0.ɵɵelementEnd();
|
|
1565
|
-
i0.ɵɵelementStart(
|
|
1566
|
-
i0.ɵɵelement(
|
|
1567
|
-
i0.ɵɵelementStart(
|
|
1568
|
-
i0.ɵɵtext(
|
|
1575
|
+
i0.ɵɵelementStart(57, "div", 35)(58, "div", 36);
|
|
1576
|
+
i0.ɵɵelement(59, "i", 40);
|
|
1577
|
+
i0.ɵɵelementStart(60, "h4");
|
|
1578
|
+
i0.ɵɵtext(61, "Completion Tokens");
|
|
1569
1579
|
i0.ɵɵelementEnd()();
|
|
1570
|
-
i0.ɵɵelementStart(
|
|
1571
|
-
i0.ɵɵtext(
|
|
1580
|
+
i0.ɵɵelementStart(62, "div", 41);
|
|
1581
|
+
i0.ɵɵtext(63);
|
|
1572
1582
|
i0.ɵɵelementEnd();
|
|
1573
|
-
i0.ɵɵconditionalCreate(
|
|
1583
|
+
i0.ɵɵconditionalCreate(64, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_64_Template, 3, 1, "div", 39);
|
|
1574
1584
|
i0.ɵɵelementEnd();
|
|
1575
|
-
i0.ɵɵelementStart(
|
|
1576
|
-
i0.ɵɵelement(
|
|
1577
|
-
i0.ɵɵelementStart(
|
|
1578
|
-
i0.ɵɵtext(
|
|
1585
|
+
i0.ɵɵelementStart(65, "div", 35)(66, "div", 36);
|
|
1586
|
+
i0.ɵɵelement(67, "i", 42);
|
|
1587
|
+
i0.ɵɵelementStart(68, "h4");
|
|
1588
|
+
i0.ɵɵtext(69, "Total Tokens");
|
|
1579
1589
|
i0.ɵɵelementEnd()();
|
|
1580
|
-
i0.ɵɵelementStart(
|
|
1581
|
-
i0.ɵɵtext(
|
|
1590
|
+
i0.ɵɵelementStart(70, "div", 43);
|
|
1591
|
+
i0.ɵɵtext(71);
|
|
1582
1592
|
i0.ɵɵelementEnd();
|
|
1583
|
-
i0.ɵɵconditionalCreate(71, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_71_Template, 3, 1, "div", 39);
|
|
1584
1593
|
i0.ɵɵconditionalCreate(72, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_72_Template, 3, 1, "div", 39);
|
|
1594
|
+
i0.ɵɵconditionalCreate(73, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_73_Template, 3, 1, "div", 39);
|
|
1585
1595
|
i0.ɵɵelementEnd();
|
|
1586
|
-
i0.ɵɵconditionalCreate(
|
|
1587
|
-
i0.ɵɵelementStart(
|
|
1588
|
-
i0.ɵɵelement(
|
|
1589
|
-
i0.ɵɵelementStart(
|
|
1590
|
-
i0.ɵɵtext(
|
|
1596
|
+
i0.ɵɵconditionalCreate(74, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_74_Template, 9, 3, "div", 35);
|
|
1597
|
+
i0.ɵɵelementStart(75, "div", 35)(76, "div", 36);
|
|
1598
|
+
i0.ɵɵelement(77, "i", 44);
|
|
1599
|
+
i0.ɵɵelementStart(78, "h4");
|
|
1600
|
+
i0.ɵɵtext(79, "Cost");
|
|
1591
1601
|
i0.ɵɵelementEnd()();
|
|
1592
|
-
i0.ɵɵelementStart(
|
|
1593
|
-
i0.ɵɵtext(
|
|
1602
|
+
i0.ɵɵelementStart(80, "div", 41);
|
|
1603
|
+
i0.ɵɵtext(81);
|
|
1594
1604
|
i0.ɵɵelementEnd();
|
|
1595
|
-
i0.ɵɵconditionalCreate(
|
|
1596
|
-
i0.ɵɵconditionalCreate(
|
|
1605
|
+
i0.ɵɵconditionalCreate(82, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_82_Template, 3, 1, "div", 39);
|
|
1606
|
+
i0.ɵɵconditionalCreate(83, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_83_Template, 2, 1, "div", 45);
|
|
1597
1607
|
i0.ɵɵelementEnd();
|
|
1598
|
-
i0.ɵɵconditionalCreate(83, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_83_Template, 7, 1, "div", 35);
|
|
1599
1608
|
i0.ɵɵconditionalCreate(84, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_84_Template, 7, 1, "div", 35);
|
|
1600
1609
|
i0.ɵɵconditionalCreate(85, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_85_Template, 7, 1, "div", 35);
|
|
1610
|
+
i0.ɵɵconditionalCreate(86, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_86_Template, 7, 1, "div", 35);
|
|
1601
1611
|
i0.ɵɵelementEnd();
|
|
1602
|
-
i0.ɵɵelementStart(
|
|
1603
|
-
i0.ɵɵconditionalCreate(
|
|
1604
|
-
i0.ɵɵconditionalCreate(
|
|
1612
|
+
i0.ɵɵelementStart(87, "div", 46);
|
|
1613
|
+
i0.ɵɵconditionalCreate(88, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_88_Template, 5, 1, "div", 47);
|
|
1614
|
+
i0.ɵɵconditionalCreate(89, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_89_Template, 6, 1, "div", 47);
|
|
1605
1615
|
i0.ɵɵelementEnd()()();
|
|
1606
|
-
i0.ɵɵconditionalCreate(
|
|
1607
|
-
i0.ɵɵconditionalCreate(
|
|
1608
|
-
i0.ɵɵelementStart(
|
|
1609
|
-
i0.ɵɵtemplate(
|
|
1610
|
-
i0.ɵɵelementStart(
|
|
1611
|
-
i0.ɵɵconditionalCreate(
|
|
1612
|
-
i0.ɵɵconditionalCreate(
|
|
1613
|
-
i0.ɵɵconditionalCreate(
|
|
1614
|
-
i0.ɵɵelementStart(
|
|
1615
|
-
i0.ɵɵtext(
|
|
1616
|
+
i0.ɵɵconditionalCreate(90, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Template, 37, 18, "mj-accordion-panel", 48);
|
|
1617
|
+
i0.ɵɵconditionalCreate(91, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_91_Template, 5, 3, "mj-accordion-panel", 48);
|
|
1618
|
+
i0.ɵɵelementStart(92, "mj-accordion-panel", 48);
|
|
1619
|
+
i0.ɵɵtemplate(93, MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_93_Template, 3, 0, "ng-template", 28);
|
|
1620
|
+
i0.ɵɵelementStart(94, "div", 29)(95, "div", 49);
|
|
1621
|
+
i0.ɵɵconditionalCreate(96, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_96_Template, 7, 1, "div", 50);
|
|
1622
|
+
i0.ɵɵconditionalCreate(97, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_97_Template, 6, 3, "div", 50);
|
|
1623
|
+
i0.ɵɵconditionalCreate(98, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_98_Template, 6, 1, "div", 50);
|
|
1624
|
+
i0.ɵɵelementStart(99, "div", 50)(100, "label");
|
|
1625
|
+
i0.ɵɵtext(101, "Temperature");
|
|
1616
1626
|
i0.ɵɵelementEnd();
|
|
1617
|
-
i0.ɵɵelementStart(
|
|
1618
|
-
i0.ɵɵelement(
|
|
1619
|
-
i0.ɵɵtext(
|
|
1627
|
+
i0.ɵɵelementStart(102, "div", 51);
|
|
1628
|
+
i0.ɵɵelement(103, "i", 52);
|
|
1629
|
+
i0.ɵɵtext(104);
|
|
1620
1630
|
i0.ɵɵelementEnd()();
|
|
1621
|
-
i0.ɵɵelementStart(
|
|
1622
|
-
i0.ɵɵtext(
|
|
1631
|
+
i0.ɵɵelementStart(105, "div", 50)(106, "label");
|
|
1632
|
+
i0.ɵɵtext(107, "Top P");
|
|
1623
1633
|
i0.ɵɵelementEnd();
|
|
1624
|
-
i0.ɵɵelementStart(
|
|
1625
|
-
i0.ɵɵelement(
|
|
1626
|
-
i0.ɵɵtext(
|
|
1634
|
+
i0.ɵɵelementStart(108, "div", 51);
|
|
1635
|
+
i0.ɵɵelement(109, "i", 53);
|
|
1636
|
+
i0.ɵɵtext(110);
|
|
1627
1637
|
i0.ɵɵelementEnd()();
|
|
1628
|
-
i0.ɵɵelementStart(
|
|
1629
|
-
i0.ɵɵtext(
|
|
1638
|
+
i0.ɵɵelementStart(111, "div", 50)(112, "label");
|
|
1639
|
+
i0.ɵɵtext(113, "Top K");
|
|
1630
1640
|
i0.ɵɵelementEnd();
|
|
1631
|
-
i0.ɵɵelementStart(
|
|
1632
|
-
i0.ɵɵelement(
|
|
1633
|
-
i0.ɵɵtext(
|
|
1641
|
+
i0.ɵɵelementStart(114, "div", 51);
|
|
1642
|
+
i0.ɵɵelement(115, "i", 54);
|
|
1643
|
+
i0.ɵɵtext(116);
|
|
1634
1644
|
i0.ɵɵelementEnd()();
|
|
1635
|
-
i0.ɵɵelementStart(
|
|
1636
|
-
i0.ɵɵtext(
|
|
1645
|
+
i0.ɵɵelementStart(117, "div", 50)(118, "label");
|
|
1646
|
+
i0.ɵɵtext(119, "Min P");
|
|
1637
1647
|
i0.ɵɵelementEnd();
|
|
1638
|
-
i0.ɵɵelementStart(
|
|
1639
|
-
i0.ɵɵelement(
|
|
1640
|
-
i0.ɵɵtext(
|
|
1648
|
+
i0.ɵɵelementStart(120, "div", 51);
|
|
1649
|
+
i0.ɵɵelement(121, "i", 55);
|
|
1650
|
+
i0.ɵɵtext(122);
|
|
1641
1651
|
i0.ɵɵelementEnd()();
|
|
1642
|
-
i0.ɵɵelementStart(
|
|
1643
|
-
i0.ɵɵtext(
|
|
1652
|
+
i0.ɵɵelementStart(123, "div", 50)(124, "label");
|
|
1653
|
+
i0.ɵɵtext(125, "Frequency Penalty");
|
|
1644
1654
|
i0.ɵɵelementEnd();
|
|
1645
|
-
i0.ɵɵelementStart(
|
|
1646
|
-
i0.ɵɵelement(
|
|
1647
|
-
i0.ɵɵtext(
|
|
1655
|
+
i0.ɵɵelementStart(126, "div", 51);
|
|
1656
|
+
i0.ɵɵelement(127, "i", 56);
|
|
1657
|
+
i0.ɵɵtext(128);
|
|
1648
1658
|
i0.ɵɵelementEnd()();
|
|
1649
|
-
i0.ɵɵelementStart(
|
|
1650
|
-
i0.ɵɵtext(
|
|
1659
|
+
i0.ɵɵelementStart(129, "div", 50)(130, "label");
|
|
1660
|
+
i0.ɵɵtext(131, "Presence Penalty");
|
|
1651
1661
|
i0.ɵɵelementEnd();
|
|
1652
|
-
i0.ɵɵelementStart(
|
|
1653
|
-
i0.ɵɵelement(
|
|
1654
|
-
i0.ɵɵtext(
|
|
1662
|
+
i0.ɵɵelementStart(132, "div", 51);
|
|
1663
|
+
i0.ɵɵelement(133, "i", 57);
|
|
1664
|
+
i0.ɵɵtext(134);
|
|
1655
1665
|
i0.ɵɵelementEnd()();
|
|
1656
|
-
i0.ɵɵelementStart(
|
|
1657
|
-
i0.ɵɵtext(
|
|
1666
|
+
i0.ɵɵelementStart(135, "div", 50)(136, "label");
|
|
1667
|
+
i0.ɵɵtext(137, "Seed");
|
|
1658
1668
|
i0.ɵɵelementEnd();
|
|
1659
|
-
i0.ɵɵelementStart(
|
|
1660
|
-
i0.ɵɵelement(
|
|
1661
|
-
i0.ɵɵtext(
|
|
1669
|
+
i0.ɵɵelementStart(138, "div", 51);
|
|
1670
|
+
i0.ɵɵelement(139, "i", 58);
|
|
1671
|
+
i0.ɵɵtext(140);
|
|
1662
1672
|
i0.ɵɵelementEnd()();
|
|
1663
|
-
i0.ɵɵelementStart(
|
|
1664
|
-
i0.ɵɵtext(
|
|
1673
|
+
i0.ɵɵelementStart(141, "div", 50)(142, "label");
|
|
1674
|
+
i0.ɵɵtext(143, "Stop Sequences");
|
|
1665
1675
|
i0.ɵɵelementEnd();
|
|
1666
|
-
i0.ɵɵelementStart(
|
|
1667
|
-
i0.ɵɵelement(
|
|
1668
|
-
i0.ɵɵtext(
|
|
1676
|
+
i0.ɵɵelementStart(144, "div", 51);
|
|
1677
|
+
i0.ɵɵelement(145, "i", 59);
|
|
1678
|
+
i0.ɵɵtext(146);
|
|
1669
1679
|
i0.ɵɵelementEnd()();
|
|
1670
|
-
i0.ɵɵelementStart(
|
|
1671
|
-
i0.ɵɵtext(
|
|
1680
|
+
i0.ɵɵelementStart(147, "div", 50)(148, "label");
|
|
1681
|
+
i0.ɵɵtext(149, "Assistant Prefill");
|
|
1672
1682
|
i0.ɵɵelementEnd();
|
|
1673
|
-
i0.ɵɵelementStart(
|
|
1674
|
-
i0.ɵɵelement(
|
|
1675
|
-
i0.ɵɵtext(
|
|
1683
|
+
i0.ɵɵelementStart(150, "div", 51);
|
|
1684
|
+
i0.ɵɵelement(151, "i", 60);
|
|
1685
|
+
i0.ɵɵtext(152);
|
|
1676
1686
|
i0.ɵɵelementEnd()();
|
|
1677
|
-
i0.ɵɵconditionalCreate(
|
|
1678
|
-
i0.ɵɵconditionalCreate(
|
|
1687
|
+
i0.ɵɵconditionalCreate(153, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_153_Template, 7, 4, "div", 50);
|
|
1688
|
+
i0.ɵɵconditionalCreate(154, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_154_Template, 7, 4, "div", 50);
|
|
1679
1689
|
i0.ɵɵelementEnd()()();
|
|
1680
|
-
i0.ɵɵconditionalCreate(
|
|
1681
|
-
i0.ɵɵelementStart(
|
|
1682
|
-
i0.ɵɵlistener("ExpandedChange", function
|
|
1683
|
-
i0.ɵɵtemplate(
|
|
1684
|
-
i0.ɵɵelementStart(
|
|
1685
|
-
i0.ɵɵtext(
|
|
1690
|
+
i0.ɵɵconditionalCreate(155, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_155_Template, 11, 5, "mj-accordion-panel", 48);
|
|
1691
|
+
i0.ɵɵelementStart(156, "mj-accordion-panel", 27);
|
|
1692
|
+
i0.ɵɵlistener("ExpandedChange", function MJAIPromptRunFormComponentExtended_Conditional_0_Template_mj_accordion_panel_ExpandedChange_156_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onModelSelectionPanelToggle($event)); });
|
|
1693
|
+
i0.ɵɵtemplate(157, MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_157_Template, 5, 2, "ng-template", 28);
|
|
1694
|
+
i0.ɵɵelementStart(158, "div", 29)(159, "div", 49)(160, "div", 50)(161, "label");
|
|
1695
|
+
i0.ɵɵtext(162, "Status");
|
|
1686
1696
|
i0.ɵɵelementEnd();
|
|
1687
|
-
i0.ɵɵelementStart(
|
|
1688
|
-
i0.ɵɵelement(
|
|
1689
|
-
i0.ɵɵtext(
|
|
1697
|
+
i0.ɵɵelementStart(163, "div", 51);
|
|
1698
|
+
i0.ɵɵelement(164, "i", 61);
|
|
1699
|
+
i0.ɵɵtext(165);
|
|
1690
1700
|
i0.ɵɵelementEnd()();
|
|
1691
|
-
i0.ɵɵelementStart(
|
|
1692
|
-
i0.ɵɵtext(
|
|
1701
|
+
i0.ɵɵelementStart(166, "div", 50)(167, "label");
|
|
1702
|
+
i0.ɵɵtext(168, "Selection Strategy");
|
|
1693
1703
|
i0.ɵɵelementEnd();
|
|
1694
|
-
i0.ɵɵelementStart(
|
|
1695
|
-
i0.ɵɵelement(
|
|
1696
|
-
i0.ɵɵtext(
|
|
1704
|
+
i0.ɵɵelementStart(169, "div", 51);
|
|
1705
|
+
i0.ɵɵelement(170, "i", 62);
|
|
1706
|
+
i0.ɵɵtext(171);
|
|
1697
1707
|
i0.ɵɵelementEnd()();
|
|
1698
|
-
i0.ɵɵelementStart(
|
|
1699
|
-
i0.ɵɵtext(
|
|
1708
|
+
i0.ɵɵelementStart(172, "div", 50)(173, "label");
|
|
1709
|
+
i0.ɵɵtext(174, "Model Power Rank");
|
|
1700
1710
|
i0.ɵɵelementEnd();
|
|
1701
|
-
i0.ɵɵelementStart(
|
|
1702
|
-
i0.ɵɵelement(
|
|
1703
|
-
i0.ɵɵtext(
|
|
1711
|
+
i0.ɵɵelementStart(175, "div", 51);
|
|
1712
|
+
i0.ɵɵelement(176, "i", 63);
|
|
1713
|
+
i0.ɵɵtext(177);
|
|
1704
1714
|
i0.ɵɵelementEnd()();
|
|
1705
|
-
i0.ɵɵelementStart(
|
|
1706
|
-
i0.ɵɵtext(
|
|
1715
|
+
i0.ɵɵelementStart(178, "div", 50)(179, "label");
|
|
1716
|
+
i0.ɵɵtext(180, "Cache Hit");
|
|
1707
1717
|
i0.ɵɵelementEnd();
|
|
1708
|
-
i0.ɵɵelementStart(
|
|
1709
|
-
i0.ɵɵelement(
|
|
1710
|
-
i0.ɵɵtext(
|
|
1718
|
+
i0.ɵɵelementStart(181, "div", 51);
|
|
1719
|
+
i0.ɵɵelement(182, "i");
|
|
1720
|
+
i0.ɵɵtext(183);
|
|
1711
1721
|
i0.ɵɵelementEnd()();
|
|
1712
|
-
i0.ɵɵconditionalCreate(
|
|
1713
|
-
i0.ɵɵconditionalCreate(
|
|
1714
|
-
i0.ɵɵconditionalCreate(
|
|
1715
|
-
i0.ɵɵelementStart(
|
|
1716
|
-
i0.ɵɵtext(
|
|
1722
|
+
i0.ɵɵconditionalCreate(184, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_184_Template, 7, 1, "div", 64);
|
|
1723
|
+
i0.ɵɵconditionalCreate(185, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_185_Template, 7, 1, "div", 50);
|
|
1724
|
+
i0.ɵɵconditionalCreate(186, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_186_Template, 6, 1, "div", 50);
|
|
1725
|
+
i0.ɵɵelementStart(187, "div", 50)(188, "label");
|
|
1726
|
+
i0.ɵɵtext(189, "Was Selected Result");
|
|
1717
1727
|
i0.ɵɵelementEnd();
|
|
1718
|
-
i0.ɵɵelementStart(
|
|
1719
|
-
i0.ɵɵelement(
|
|
1720
|
-
i0.ɵɵtext(
|
|
1728
|
+
i0.ɵɵelementStart(190, "div", 51);
|
|
1729
|
+
i0.ɵɵelement(191, "i");
|
|
1730
|
+
i0.ɵɵtext(192);
|
|
1721
1731
|
i0.ɵɵelementEnd()();
|
|
1722
|
-
i0.ɵɵelementStart(
|
|
1723
|
-
i0.ɵɵtext(
|
|
1732
|
+
i0.ɵɵelementStart(193, "div", 50)(194, "label");
|
|
1733
|
+
i0.ɵɵtext(195, "Streaming Enabled");
|
|
1724
1734
|
i0.ɵɵelementEnd();
|
|
1725
|
-
i0.ɵɵelementStart(
|
|
1726
|
-
i0.ɵɵelement(
|
|
1727
|
-
i0.ɵɵtext(
|
|
1735
|
+
i0.ɵɵelementStart(196, "div", 51);
|
|
1736
|
+
i0.ɵɵelement(197, "i");
|
|
1737
|
+
i0.ɵɵtext(198);
|
|
1728
1738
|
i0.ɵɵelementEnd()();
|
|
1729
|
-
i0.ɵɵconditionalCreate(
|
|
1730
|
-
i0.ɵɵconditionalCreate(
|
|
1739
|
+
i0.ɵɵconditionalCreate(199, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_199_Template, 6, 1, "div", 50);
|
|
1740
|
+
i0.ɵɵconditionalCreate(200, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_200_Template, 7, 1);
|
|
1731
1741
|
i0.ɵɵelementEnd();
|
|
1732
|
-
i0.ɵɵconditionalCreate(200, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_200_Template, 8, 4, "div", 64);
|
|
1733
1742
|
i0.ɵɵconditionalCreate(201, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_201_Template, 8, 4, "div", 65);
|
|
1743
|
+
i0.ɵɵconditionalCreate(202, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_202_Template, 8, 4, "div", 66);
|
|
1734
1744
|
i0.ɵɵelementEnd()()()()();
|
|
1735
1745
|
} if (rf & 2) {
|
|
1736
1746
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
@@ -1772,49 +1782,51 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Template(rf, ctx) { if
|
|
|
1772
1782
|
i0.ɵɵadvance(2);
|
|
1773
1783
|
i0.ɵɵproperty("Expanded", ctx_r1.metricsExpanded);
|
|
1774
1784
|
i0.ɵɵadvance(10);
|
|
1775
|
-
i0.ɵɵtextInterpolate(ctx_r1.formatTokens(ctx_r1.
|
|
1785
|
+
i0.ɵɵtextInterpolate(ctx_r1.formatTokens(ctx_r1.FullPromptTokens));
|
|
1786
|
+
i0.ɵɵadvance();
|
|
1787
|
+
i0.ɵɵconditional(ctx_r1.CachedTokens > 0 ? 55 : -1);
|
|
1776
1788
|
i0.ɵɵadvance();
|
|
1777
|
-
i0.ɵɵconditional(ctx_r1.record.TokensPromptRollup && ctx_r1.record.TokensPromptRollup !== ctx_r1.record.TokensPrompt ?
|
|
1789
|
+
i0.ɵɵconditional(ctx_r1.record.TokensPromptRollup && ctx_r1.record.TokensPromptRollup !== ctx_r1.record.TokensPrompt ? 56 : -1);
|
|
1778
1790
|
i0.ɵɵadvance(7);
|
|
1779
1791
|
i0.ɵɵtextInterpolate(ctx_r1.formatTokens(ctx_r1.record.TokensCompletion));
|
|
1780
1792
|
i0.ɵɵadvance();
|
|
1781
|
-
i0.ɵɵconditional(ctx_r1.record.TokensCompletionRollup && ctx_r1.record.TokensCompletionRollup !== ctx_r1.record.TokensCompletion ?
|
|
1793
|
+
i0.ɵɵconditional(ctx_r1.record.TokensCompletionRollup && ctx_r1.record.TokensCompletionRollup !== ctx_r1.record.TokensCompletion ? 64 : -1);
|
|
1782
1794
|
i0.ɵɵadvance(7);
|
|
1783
1795
|
i0.ɵɵtextInterpolate(ctx_r1.formatTokens(ctx_r1.TotalTokensProcessed));
|
|
1784
1796
|
i0.ɵɵadvance();
|
|
1785
|
-
i0.ɵɵconditional(ctx_r1.CachedTokens > 0 ?
|
|
1797
|
+
i0.ɵɵconditional(ctx_r1.CachedTokens > 0 ? 72 : -1);
|
|
1786
1798
|
i0.ɵɵadvance();
|
|
1787
|
-
i0.ɵɵconditional(ctx_r1.record.TokensUsedRollup && ctx_r1.record.TokensUsedRollup !== ctx_r1.record.TokensUsed ?
|
|
1799
|
+
i0.ɵɵconditional(ctx_r1.record.TokensUsedRollup && ctx_r1.record.TokensUsedRollup !== ctx_r1.record.TokensUsed ? 73 : -1);
|
|
1788
1800
|
i0.ɵɵadvance();
|
|
1789
|
-
i0.ɵɵconditional(ctx_r1.record.TokensCacheRead != null || ctx_r1.record.TokensCacheWrite != null ?
|
|
1801
|
+
i0.ɵɵconditional(ctx_r1.record.TokensCacheRead != null || ctx_r1.record.TokensCacheWrite != null ? 74 : -1);
|
|
1790
1802
|
i0.ɵɵadvance(7);
|
|
1791
1803
|
i0.ɵɵtextInterpolate(ctx_r1.formatCost(ctx_r1.record.Cost));
|
|
1792
1804
|
i0.ɵɵadvance();
|
|
1793
|
-
i0.ɵɵconditional(ctx_r1.record.TotalCost && ctx_r1.record.TotalCost !== ctx_r1.record.Cost ?
|
|
1805
|
+
i0.ɵɵconditional(ctx_r1.record.TotalCost && ctx_r1.record.TotalCost !== ctx_r1.record.Cost ? 82 : -1);
|
|
1794
1806
|
i0.ɵɵadvance();
|
|
1795
|
-
i0.ɵɵconditional(ctx_r1.record.CostCurrency ?
|
|
1807
|
+
i0.ɵɵconditional(ctx_r1.record.CostCurrency ? 83 : -1);
|
|
1796
1808
|
i0.ɵɵadvance();
|
|
1797
|
-
i0.ɵɵconditional(ctx_r1.record.QueueTime != null ?
|
|
1809
|
+
i0.ɵɵconditional(ctx_r1.record.QueueTime != null ? 84 : -1);
|
|
1798
1810
|
i0.ɵɵadvance();
|
|
1799
|
-
i0.ɵɵconditional(ctx_r1.record.PromptTime != null ?
|
|
1811
|
+
i0.ɵɵconditional(ctx_r1.record.PromptTime != null ? 85 : -1);
|
|
1800
1812
|
i0.ɵɵadvance();
|
|
1801
|
-
i0.ɵɵconditional(ctx_r1.record.CompletionTime != null ?
|
|
1813
|
+
i0.ɵɵconditional(ctx_r1.record.CompletionTime != null ? 86 : -1);
|
|
1802
1814
|
i0.ɵɵadvance(2);
|
|
1803
|
-
i0.ɵɵconditional(ctx_r1.record.ExecutionOrder !== null ?
|
|
1815
|
+
i0.ɵɵconditional(ctx_r1.record.ExecutionOrder !== null ? 88 : -1);
|
|
1804
1816
|
i0.ɵɵadvance();
|
|
1805
|
-
i0.ɵɵconditional(ctx_r1.record.AgentID ?
|
|
1817
|
+
i0.ɵɵconditional(ctx_r1.record.AgentID ? 89 : -1);
|
|
1806
1818
|
i0.ɵɵadvance();
|
|
1807
|
-
i0.ɵɵconditional(ctx_r1.record && (ctx_r1.record.ValidationAttemptCount && ctx_r1.record.ValidationAttemptCount > 0 || ctx_r1.record.ValidationBehavior) ?
|
|
1819
|
+
i0.ɵɵconditional(ctx_r1.record && (ctx_r1.record.ValidationAttemptCount && ctx_r1.record.ValidationAttemptCount > 0 || ctx_r1.record.ValidationBehavior) ? 90 : -1);
|
|
1808
1820
|
i0.ɵɵadvance();
|
|
1809
|
-
i0.ɵɵconditional(ctx_r1.record.ParentID || ctx_r1.childRuns.length > 0 ?
|
|
1821
|
+
i0.ɵɵconditional(ctx_r1.record.ParentID || ctx_r1.childRuns.length > 0 ? 91 : -1);
|
|
1810
1822
|
i0.ɵɵadvance();
|
|
1811
1823
|
i0.ɵɵproperty("Expanded", false);
|
|
1812
1824
|
i0.ɵɵadvance(4);
|
|
1813
|
-
i0.ɵɵconditional(ctx_r1.record.AgentID ?
|
|
1825
|
+
i0.ɵɵconditional(ctx_r1.record.AgentID ? 96 : -1);
|
|
1814
1826
|
i0.ɵɵadvance();
|
|
1815
|
-
i0.ɵɵconditional(ctx_r1.record.RunType ?
|
|
1827
|
+
i0.ɵɵconditional(ctx_r1.record.RunType ? 97 : -1);
|
|
1816
1828
|
i0.ɵɵadvance();
|
|
1817
|
-
i0.ɵɵconditional(ctx_r1.record.ResponseFormat ?
|
|
1829
|
+
i0.ɵɵconditional(ctx_r1.record.ResponseFormat ? 98 : -1);
|
|
1818
1830
|
i0.ɵɵadvance(4);
|
|
1819
1831
|
i0.ɵɵclassProp("null-value", ctx_r1.record.Temperature === null || ctx_r1.record.Temperature === undefined);
|
|
1820
1832
|
i0.ɵɵadvance(2);
|
|
@@ -1852,11 +1864,11 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Template(rf, ctx) { if
|
|
|
1852
1864
|
i0.ɵɵadvance(2);
|
|
1853
1865
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.AssistantPrefill || "\u2014", " ");
|
|
1854
1866
|
i0.ɵɵadvance();
|
|
1855
|
-
i0.ɵɵconditional(ctx_r1.record.RunAt ?
|
|
1867
|
+
i0.ɵɵconditional(ctx_r1.record.RunAt ? 153 : -1);
|
|
1856
1868
|
i0.ɵɵadvance();
|
|
1857
|
-
i0.ɵɵconditional(ctx_r1.record.CompletedAt ?
|
|
1869
|
+
i0.ɵɵconditional(ctx_r1.record.CompletedAt ? 154 : -1);
|
|
1858
1870
|
i0.ɵɵadvance();
|
|
1859
|
-
i0.ɵɵconditional(ctx_r1.record.ModelSpecificResponseDetails ?
|
|
1871
|
+
i0.ɵɵconditional(ctx_r1.record.ModelSpecificResponseDetails ? 155 : -1);
|
|
1860
1872
|
i0.ɵɵadvance();
|
|
1861
1873
|
i0.ɵɵproperty("Expanded", false);
|
|
1862
1874
|
i0.ɵɵadvance(9);
|
|
@@ -1872,11 +1884,11 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Template(rf, ctx) { if
|
|
|
1872
1884
|
i0.ɵɵadvance();
|
|
1873
1885
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.CacheHit ? "Yes" : "No", " ");
|
|
1874
1886
|
i0.ɵɵadvance();
|
|
1875
|
-
i0.ɵɵconditional(ctx_r1.record.CacheKey ?
|
|
1887
|
+
i0.ɵɵconditional(ctx_r1.record.CacheKey ? 184 : -1);
|
|
1876
1888
|
i0.ɵɵadvance();
|
|
1877
|
-
i0.ɵɵconditional(ctx_r1.record.JudgeID ?
|
|
1889
|
+
i0.ɵɵconditional(ctx_r1.record.JudgeID ? 185 : -1);
|
|
1878
1890
|
i0.ɵɵadvance();
|
|
1879
|
-
i0.ɵɵconditional(ctx_r1.record.JudgeScore !== null ?
|
|
1891
|
+
i0.ɵɵconditional(ctx_r1.record.JudgeScore !== null ? 186 : -1);
|
|
1880
1892
|
i0.ɵɵadvance(5);
|
|
1881
1893
|
i0.ɵɵclassMap(ctx_r1.record.WasSelectedResult ? "fa-solid fa-trophy" : "fa-solid fa-times");
|
|
1882
1894
|
i0.ɵɵadvance();
|
|
@@ -1886,36 +1898,36 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Template(rf, ctx) { if
|
|
|
1886
1898
|
i0.ɵɵadvance();
|
|
1887
1899
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.StreamingEnabled ? "Yes" : "No", " ");
|
|
1888
1900
|
i0.ɵɵadvance();
|
|
1889
|
-
i0.ɵɵconditional(ctx_r1.record.FirstTokenTime !== null ?
|
|
1901
|
+
i0.ɵɵconditional(ctx_r1.record.FirstTokenTime !== null ? 199 : -1);
|
|
1890
1902
|
i0.ɵɵadvance();
|
|
1891
|
-
i0.ɵɵconditional(ctx_r1.record.Cancelled ?
|
|
1903
|
+
i0.ɵɵconditional(ctx_r1.record.Cancelled ? 200 : -1);
|
|
1892
1904
|
i0.ɵɵadvance();
|
|
1893
|
-
i0.ɵɵconditional(ctx_r1.record.ModelSelection ?
|
|
1905
|
+
i0.ɵɵconditional(ctx_r1.record.ModelSelection ? 201 : -1);
|
|
1894
1906
|
i0.ɵɵadvance();
|
|
1895
|
-
i0.ɵɵconditional(ctx_r1.record.ErrorDetails ?
|
|
1907
|
+
i0.ɵɵconditional(ctx_r1.record.ErrorDetails ? 202 : -1);
|
|
1896
1908
|
} }
|
|
1897
1909
|
function MJAIPromptRunFormComponentExtended_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
1898
1910
|
const _r25 = i0.ɵɵgetCurrentView();
|
|
1899
|
-
i0.ɵɵelementStart(0, "div",
|
|
1911
|
+
i0.ɵɵelementStart(0, "div", 188);
|
|
1900
1912
|
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r25); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeFullScreen()); });
|
|
1901
|
-
i0.ɵɵelementStart(1, "div",
|
|
1913
|
+
i0.ɵɵelementStart(1, "div", 189);
|
|
1902
1914
|
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Template_div_click_1_listener($event) { i0.ɵɵrestoreView(_r25); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
1903
|
-
i0.ɵɵelementStart(2, "div",
|
|
1904
|
-
i0.ɵɵelement(4, "i",
|
|
1915
|
+
i0.ɵɵelementStart(2, "div", 190)(3, "span", 191);
|
|
1916
|
+
i0.ɵɵelement(4, "i", 107);
|
|
1905
1917
|
i0.ɵɵtext(5);
|
|
1906
1918
|
i0.ɵɵelementEnd();
|
|
1907
|
-
i0.ɵɵelementStart(6, "div",
|
|
1919
|
+
i0.ɵɵelementStart(6, "div", 192)(7, "button", 193);
|
|
1908
1920
|
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r25); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.copyToClipboard(ctx_r1.FullScreenContent, ctx_r1.FullScreenTitle)); });
|
|
1909
|
-
i0.ɵɵelement(8, "i",
|
|
1921
|
+
i0.ɵɵelement(8, "i", 105);
|
|
1910
1922
|
i0.ɵɵtext(9, " Copy ");
|
|
1911
1923
|
i0.ɵɵelementEnd();
|
|
1912
|
-
i0.ɵɵelementStart(10, "button",
|
|
1924
|
+
i0.ɵɵelementStart(10, "button", 194);
|
|
1913
1925
|
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r25); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeFullScreen()); });
|
|
1914
|
-
i0.ɵɵelement(11, "i",
|
|
1926
|
+
i0.ɵɵelement(11, "i", 195);
|
|
1915
1927
|
i0.ɵɵtext(12, " Close ");
|
|
1916
1928
|
i0.ɵɵelementEnd()()();
|
|
1917
|
-
i0.ɵɵelementStart(13, "div",
|
|
1918
|
-
i0.ɵɵelement(14, "mj-code-editor",
|
|
1929
|
+
i0.ɵɵelementStart(13, "div", 196);
|
|
1930
|
+
i0.ɵɵelement(14, "mj-code-editor", 197);
|
|
1919
1931
|
i0.ɵɵelementEnd()()();
|
|
1920
1932
|
} if (rf & 2) {
|
|
1921
1933
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
@@ -2281,6 +2293,18 @@ let MJAIPromptRunFormComponentExtended = class MJAIPromptRunFormComponentExtende
|
|
|
2281
2293
|
return 0;
|
|
2282
2294
|
return (r.TokensCacheRead ?? 0) + (r.TokensCacheWrite ?? 0);
|
|
2283
2295
|
}
|
|
2296
|
+
/**
|
|
2297
|
+
* Full prompt/input token count = uncached (net) prompt PLUS the cache buckets. TokensPrompt is
|
|
2298
|
+
* stored net (cache-read subtracted out by the provider-normalization layer), so on a cached run
|
|
2299
|
+
* the raw field understates the real input; this reconstructs the true input the headline should
|
|
2300
|
+
* show, with {@link CachedTokens} surfaced as the cached subset. Equals TokensPrompt when no cache.
|
|
2301
|
+
*/
|
|
2302
|
+
get FullPromptTokens() {
|
|
2303
|
+
const r = this.record;
|
|
2304
|
+
if (!r)
|
|
2305
|
+
return 0;
|
|
2306
|
+
return (r.TokensPrompt ?? 0) + (r.TokensCacheRead ?? 0) + (r.TokensCacheWrite ?? 0);
|
|
2307
|
+
}
|
|
2284
2308
|
/** Percentage of this run's input tokens served from the provider's prompt cache. */
|
|
2285
2309
|
get CacheHitRatePct() {
|
|
2286
2310
|
const read = this.record?.TokensCacheRead ?? 0;
|
|
@@ -2430,8 +2454,8 @@ let MJAIPromptRunFormComponentExtended = class MJAIPromptRunFormComponentExtende
|
|
|
2430
2454
|
// Don't auto-expand validation panel anymore - let user expand when needed
|
|
2431
2455
|
}
|
|
2432
2456
|
static { this.ɵfac = /*@__PURE__*/ (() => { let ɵMJAIPromptRunFormComponentExtended_BaseFactory; return function MJAIPromptRunFormComponentExtended_Factory(__ngFactoryType__) { return (ɵMJAIPromptRunFormComponentExtended_BaseFactory || (ɵMJAIPromptRunFormComponentExtended_BaseFactory = i0.ɵɵgetInheritedFactory(MJAIPromptRunFormComponentExtended)))(__ngFactoryType__ || MJAIPromptRunFormComponentExtended); }; })(); }
|
|
2433
|
-
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MJAIPromptRunFormComponentExtended, selectors: [["mj-ai-prompt-run-form"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 2, vars: 2, consts: [["form", "ngForm"], [3, "Record", "FormComponent", "ToolbarConfig", "WidthMode"], [1, "fullscreen-overlay"], [3, "Navigate", "DeleteRequested", "FavoriteToggled", "HistoryRequested", "ListManagementRequested", "Record", "FormComponent", "ToolbarConfig", "WidthMode"], [1, "record-form", 2, "display", "flex", "flex-direction", "column", "height", "100%", "overflow", "hidden"], [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"], ["mjButton", "", "variant", "outline", "size", "sm", "title", "Re-run this prompt", 3, "click"], [1, "fa-solid", "fa-play-circle"], ["mjButton", "", "variant", "outline", "size", "sm", "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"], [2, "margin-bottom", "8px", 3, "ExpandedChange", "Expanded"], ["mjAccordionTitle", ""], [1, "panel-content"], [1, "nested-panels"], [1, "empty-state"], [1, "error-message"], [1, "json-editor-container"], [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, "fa-solid", "fa-coins"], ["title", "Prompt + completion + cached tokens \u2014 the full amount the model processed", 1, "metric-value", "large"], [1, "fa-solid", "fa-dollar-sign"], [1, "metric-currency"], [1, "additional-metrics"], [1, "metric-row"], [2, "margin-bottom", "8px", 3, "Expanded"], [1, "detail-fields-grid"], [1, "detail-field"], [1, "detail-value"], [1, "fa-solid", "fa-temperature-high"], [1, "fa-solid", "fa-percentage"], [1, "fa-solid", "fa-list-ol"], [1, "fa-solid", "fa-filter"], [1, "fa-solid", "fa-repeat"], [1, "fa-solid", "fa-plus-circle"], [1, "fa-solid", "fa-seedling"], [1, "fa-solid", "fa-stop-circle"], [1, "fa-solid", "fa-wand-magic-sparkles"], [1, "fa-solid", "fa-info-circle"], [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, "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"], ["title", "Total tokens the model processed, including cached input", 1, "metric-item"], [1, "fa-solid", "fa-tachometer-alt"], [1, "fa-solid", "fa-code"], [1, "fa-solid", "fa-bolt"], [1, "fa-solid", "fa-calendar"], [1, "panel-title"], [1, "fa-solid", "fa-comment-dots"], [1, "panel-badge"], [1, "sub-expansion-panel", 2, "margin-bottom", "8px", 3, "Expanded"], [1, "sub-panel-content"], [1, "loading-state"], [3, "messages"], [1, "json-toolbar"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Copy JSON", 3, "click"], [1, "fa-solid", "fa-copy"], ["mjButton", "", "variant", "flat", "size", "sm", "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, "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, "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, "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, "fa-solid", "fa-shield-check"], [1, "panel-badge", "success"], [1, "error-count"], [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, "parent-run-section"], [1, "child-runs-section"], [1, "fa-solid", "fa-sitemap"], [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"], ["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-key"], ["title", "View Judge Prompt", 1, "detail-value", "clickable", 3, "click"], [1, "fa-solid", "fa-gavel"], [1, "fa-solid", "fa-star"], [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"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Copy content", 3, "click"], ["mjButton", "", "variant", "flat", "size", "sm", "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) {
|
|
2434
|
-
i0.ɵɵconditionalCreate(0, MJAIPromptRunFormComponentExtended_Conditional_0_Template,
|
|
2457
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MJAIPromptRunFormComponentExtended, selectors: [["mj-ai-prompt-run-form"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 2, vars: 2, consts: [["form", "ngForm"], [3, "Record", "FormComponent", "ToolbarConfig", "WidthMode"], [1, "fullscreen-overlay"], [3, "Navigate", "DeleteRequested", "FavoriteToggled", "HistoryRequested", "ListManagementRequested", "Record", "FormComponent", "ToolbarConfig", "WidthMode"], [1, "record-form", 2, "display", "flex", "flex-direction", "column", "height", "100%", "overflow", "hidden"], [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"], ["mjButton", "", "variant", "outline", "size", "sm", "title", "Re-run this prompt", 3, "click"], [1, "fa-solid", "fa-play-circle"], ["mjButton", "", "variant", "outline", "size", "sm", "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"], [2, "margin-bottom", "8px", 3, "ExpandedChange", "Expanded"], ["mjAccordionTitle", ""], [1, "panel-content"], [1, "nested-panels"], [1, "empty-state"], [1, "error-message"], [1, "json-editor-container"], [1, "metrics-grid"], [1, "metric-card"], [1, "metric-header"], [1, "fa-solid", "fa-message"], ["title", "Full input the model processed \u2014 uncached (new) prompt tokens plus any cached tokens", 1, "metric-value", "large"], [1, "metric-rollup"], [1, "fa-solid", "fa-reply"], [1, "metric-value", "large"], [1, "fa-solid", "fa-coins"], ["title", "Prompt + completion + cached tokens \u2014 the full amount the model processed", 1, "metric-value", "large"], [1, "fa-solid", "fa-dollar-sign"], [1, "metric-currency"], [1, "additional-metrics"], [1, "metric-row"], [2, "margin-bottom", "8px", 3, "Expanded"], [1, "detail-fields-grid"], [1, "detail-field"], [1, "detail-value"], [1, "fa-solid", "fa-temperature-high"], [1, "fa-solid", "fa-percentage"], [1, "fa-solid", "fa-list-ol"], [1, "fa-solid", "fa-filter"], [1, "fa-solid", "fa-repeat"], [1, "fa-solid", "fa-plus-circle"], [1, "fa-solid", "fa-seedling"], [1, "fa-solid", "fa-stop-circle"], [1, "fa-solid", "fa-wand-magic-sparkles"], [1, "fa-solid", "fa-info-circle"], [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, "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"], ["title", "Total tokens the model processed, including cached input", 1, "metric-item"], [1, "fa-solid", "fa-tachometer-alt"], [1, "fa-solid", "fa-code"], [1, "fa-solid", "fa-bolt"], [1, "fa-solid", "fa-calendar"], [1, "panel-title"], [1, "fa-solid", "fa-comment-dots"], [1, "panel-badge"], [1, "sub-expansion-panel", 2, "margin-bottom", "8px", 3, "Expanded"], [1, "sub-panel-content"], [1, "loading-state"], [3, "messages"], [1, "json-toolbar"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Copy JSON", 3, "click"], [1, "fa-solid", "fa-copy"], ["mjButton", "", "variant", "flat", "size", "sm", "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, "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, "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, "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, "fa-solid", "fa-shield-check"], [1, "panel-badge", "success"], [1, "error-count"], [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, "parent-run-section"], [1, "child-runs-section"], [1, "fa-solid", "fa-sitemap"], [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"], ["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-key"], ["title", "View Judge Prompt", 1, "detail-value", "clickable", 3, "click"], [1, "fa-solid", "fa-gavel"], [1, "fa-solid", "fa-star"], [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"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Copy content", 3, "click"], ["mjButton", "", "variant", "flat", "size", "sm", "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) {
|
|
2458
|
+
i0.ɵɵconditionalCreate(0, MJAIPromptRunFormComponentExtended_Conditional_0_Template, 203, 104, "mj-record-form-container", 1);
|
|
2435
2459
|
i0.ɵɵconditionalCreate(1, MJAIPromptRunFormComponentExtended_Conditional_1_Template, 15, 4, "div", 2);
|
|
2436
2460
|
} if (rf & 2) {
|
|
2437
2461
|
i0.ɵɵconditional(ctx.record ? 0 : -1);
|
|
@@ -2445,7 +2469,7 @@ MJAIPromptRunFormComponentExtended = __decorate([
|
|
|
2445
2469
|
export { MJAIPromptRunFormComponentExtended };
|
|
2446
2470
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MJAIPromptRunFormComponentExtended, [{
|
|
2447
2471
|
type: Component,
|
|
2448
|
-
args: [{ standalone: false, selector: 'mj-ai-prompt-run-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (record) {\n<mj-record-form-container [Record]=\"record\" [FormComponent]=\"this\"\n [ToolbarConfig]=\"toolbarConfig\"\n [WidthMode]=\"'full-width'\"\n (Navigate)=\"OnFormNavigate($event)\"\n (DeleteRequested)=\"OnDeleteRequested()\"\n (FavoriteToggled)=\"OnFavoriteToggled()\"\n (HistoryRequested)=\"OnHistoryRequested()\"\n (ListManagementRequested)=\"OnListManagementRequested()\">\n <form class=\"record-form\" #form=\"ngForm\" style=\"display: flex; flex-direction: column; height: 100%; overflow: hidden;\">\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 mjButton variant=\"outline\" size=\"sm\" (click)=\"reRunPrompt()\" title=\"Re-run this prompt\">\n <i class=\"fa-solid fa-play-circle\"></i>\n Re-Run\n </button>\n <button mjButton variant=\"outline\" size=\"sm\" (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\" title=\"Total tokens the model processed, including cached input\">\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(TotalTokensProcessed) }}</div>\n </div>\n </div>\n @if (record.TokensCacheRead) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-bolt\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Cached</div>\n <div class=\"metric-value\">{{ formatTokens(record.TokensCacheRead) }}</div>\n </div>\n </div>\n }\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\" title=\"Total tokens the model processed, including cached input\">\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(TotalTokensProcessed) }}</div>\n </div>\n </div>\n @if (record.TokensCacheRead) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-bolt\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Cached</div>\n <div class=\"metric-value\">{{ formatTokens(record.TokensCacheRead) }}</div>\n </div>\n </div>\n }\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\n <!-- Input Panel with nested sub-panels -->\n <mj-accordion-panel [Expanded]=\"inputExpanded\" (ExpandedChange)=\"onInputPanelToggle($event)\" style=\"margin-bottom: 8px;\">\n <ng-template mjAccordionTitle>\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 <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 <mj-accordion-panel\n [Expanded]=\"messagesExpanded\"\n class=\"sub-expansion-panel\"\n style=\"margin-bottom: 8px;\">\n <ng-template mjAccordionTitle>\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 </mj-accordion-panel>\n\n <!-- Data Sub-Panel -->\n <mj-accordion-panel\n [Expanded]=\"dataExpanded\"\n class=\"sub-expansion-panel\"\n style=\"margin-bottom: 8px;\">\n <ng-template mjAccordionTitle>\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 mjButton\n variant=\"flat\"\n size=\"sm\"\n (click)=\"copyToClipboard(formattedData, 'Data')\"\n title=\"Copy JSON\">\n <i class=\"fa-solid fa-copy\"></i> Copy\n </button>\n <button mjButton\n variant=\"flat\"\n size=\"sm\"\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 </mj-accordion-panel>\n\n <!-- Raw Sub-Panel -->\n <mj-accordion-panel\n [Expanded]=\"rawExpanded\"\n class=\"sub-expansion-panel\"\n style=\"margin-bottom: 8px;\">\n <ng-template mjAccordionTitle>\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 mjButton\n variant=\"flat\"\n size=\"sm\"\n (click)=\"copyToClipboard(formattedMessages, 'Messages')\"\n title=\"Copy JSON\">\n <i class=\"fa-solid fa-copy\"></i> Copy\n </button>\n <button mjButton\n variant=\"flat\"\n size=\"sm\"\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 </mj-accordion-panel>\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 </mj-accordion-panel>\n \n <!-- Result Panel -->\n <mj-accordion-panel [Expanded]=\"resultExpanded\" (ExpandedChange)=\"onResultPanelToggle($event)\" style=\"margin-bottom: 8px;\">\n <ng-template mjAccordionTitle>\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 <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 mjButton\n variant=\"flat\"\n size=\"sm\"\n (click)=\"copyToClipboard(formattedResult, 'Result')\"\n title=\"Copy JSON\">\n <i class=\"fa-solid fa-copy\"></i> Copy\n </button>\n <button mjButton\n variant=\"flat\"\n size=\"sm\"\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.CompletedAt && (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 mjButton\n variant=\"flat\"\n size=\"sm\"\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 </mj-accordion-panel>\n\n <!-- Token Usage & Metrics Panel -->\n <mj-accordion-panel [Expanded]=\"metricsExpanded\" (ExpandedChange)=\"onMetricsPanelToggle($event)\" style=\"margin-bottom: 8px;\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-chart-line\"></i>\n Token Usage & Metrics\n </span>\n </ng-template>\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\" title=\"Prompt + completion + cached tokens \u2014 the full amount the model processed\">{{ formatTokens(TotalTokensProcessed) }}</div>\n @if (CachedTokens > 0) {\n <div class=\"metric-rollup\">\n <span>incl. {{ formatTokens(CachedTokens) }} cached</span>\n </div>\n }\n @if (record.TokensUsedRollup && record.TokensUsedRollup !== record.TokensUsed) {\n <div class=\"metric-rollup\">\n <span>Net rollup: {{ formatTokens(record.TokensUsedRollup) }}</span>\n </div>\n }\n </div>\n\n <!-- Prompt-cache tokens (provider cache reads = hits, writes = cache creation).\n Only rendered when the provider reported cache usage. -->\n @if (record.TokensCacheRead != null || record.TokensCacheWrite != null) {\n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <i class=\"fa-solid fa-bolt\"></i>\n <h4>Cache Read</h4>\n </div>\n <div class=\"metric-value large\">{{ formatTokens(record.TokensCacheRead) }}</div>\n @if (record.TokensCacheWrite) {\n <div class=\"metric-rollup\">\n <span>Write: {{ formatTokens(record.TokensCacheWrite) }}</span>\n </div>\n }\n @if (record.TokensCacheRead || record.TokensCacheWrite) {\n <div class=\"metric-rollup\">\n <span>{{ CacheHitRatePct | number:'1.0-0' }}% hit rate</span>\n </div>\n }\n </div>\n }\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 </mj-accordion-panel>\n\n <!-- Validation & Retry Panel -->\n @if (record && ((record.ValidationAttemptCount && record.ValidationAttemptCount > 0) || record.ValidationBehavior)) {\n <mj-accordion-panel [Expanded]=\"validationExpanded\" (ExpandedChange)=\"onValidationPanelToggle($event)\" style=\"margin-bottom: 8px;\">\n <ng-template mjAccordionTitle>\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 <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 === true\" [class.failed]=\"record.FinalValidationPassed === false\">\n <i [class]=\"record.FinalValidationPassed === true ? 'fa-solid fa-check-circle' : (record.FinalValidationPassed === false ? 'fa-solid fa-times-circle' : 'fa-solid fa-hourglass-half')\"></i>\n {{ record.FinalValidationPassed === true ? 'Validation Passed' : (record.FinalValidationPassed === false ? 'Validation Failed' : 'Validation Pending') }}\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 mjButton\n variant=\"flat\"\n size=\"sm\"\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 mjButton\n variant=\"flat\"\n size=\"sm\"\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 </mj-accordion-panel>\n }\n\n <!-- Hierarchy Panel (for parent/child relationships) -->\n @if (record.ParentID || childRuns.length > 0) {\n <mj-accordion-panel [Expanded]=\"hierarchyExpanded\" style=\"margin-bottom: 8px;\">\n <ng-template mjAccordionTitle>\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 <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 </mj-accordion-panel>\n }\n\n <!-- Additional Details Panel -->\n <mj-accordion-panel [Expanded]=\"false\" style=\"margin-bottom: 8px;\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-info-circle\"></i>\n Additional Details\n </span>\n </ng-template>\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 </mj-accordion-panel>\n\n <!-- Model Specific Response Details Panel -->\n @if (record.ModelSpecificResponseDetails) {\n <mj-accordion-panel [Expanded]=\"modelSpecificExpanded\" (ExpandedChange)=\"onModelSpecificPanelToggle($event)\" style=\"margin-bottom: 8px;\">\n <ng-template mjAccordionTitle>\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 <div class=\"panel-content\">\n <div class=\"json-editor-container\">\n <div class=\"json-toolbar\">\n <button mjButton\n variant=\"flat\"\n size=\"sm\"\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 mjButton\n variant=\"flat\"\n size=\"sm\"\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 </mj-accordion-panel>\n }\n\n <!-- Model Selection & Performance Panel (v2.78 fields) -->\n <mj-accordion-panel [Expanded]=\"false\" (ExpandedChange)=\"onModelSelectionPanelToggle($event)\" style=\"margin-bottom: 8px;\">\n <ng-template mjAccordionTitle>\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 <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 mjButton\n variant=\"flat\"\n size=\"sm\"\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 mjButton\n variant=\"flat\"\n size=\"sm\"\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 </mj-accordion-panel>\n\n </div>\n </form>\n</mj-record-form-container>\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 mjButton\n variant=\"flat\"\n size=\"sm\"\n (click)=\"copyToClipboard(FullScreenContent, FullScreenTitle)\"\n title=\"Copy content\">\n <i class=\"fa-solid fa-copy\"></i> Copy\n </button>\n <button mjButton\n variant=\"flat\"\n size=\"sm\"\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 }", 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 accordion panel styles */\n.nested-panels mj-accordion-panel {\n margin-bottom: 8px;\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 styles */\n.sub-expansion-panel {\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\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/* Accordion Panel Overrides */\nmj-accordion-panel {\n display: block;\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"] }]
|
|
2472
|
+
args: [{ standalone: false, selector: 'mj-ai-prompt-run-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (record) {\n<mj-record-form-container [Record]=\"record\" [FormComponent]=\"this\"\n [ToolbarConfig]=\"toolbarConfig\"\n [WidthMode]=\"'full-width'\"\n (Navigate)=\"OnFormNavigate($event)\"\n (DeleteRequested)=\"OnDeleteRequested()\"\n (FavoriteToggled)=\"OnFavoriteToggled()\"\n (HistoryRequested)=\"OnHistoryRequested()\"\n (ListManagementRequested)=\"OnListManagementRequested()\">\n <form class=\"record-form\" #form=\"ngForm\" style=\"display: flex; flex-direction: column; height: 100%; overflow: hidden;\">\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 mjButton variant=\"outline\" size=\"sm\" (click)=\"reRunPrompt()\" title=\"Re-run this prompt\">\n <i class=\"fa-solid fa-play-circle\"></i>\n Re-Run\n </button>\n <button mjButton variant=\"outline\" size=\"sm\" (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\" title=\"Total tokens the model processed, including cached input\">\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(TotalTokensProcessed) }}</div>\n </div>\n </div>\n @if (record.TokensCacheRead) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-bolt\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Cached</div>\n <div class=\"metric-value\">{{ formatTokens(record.TokensCacheRead) }}</div>\n </div>\n </div>\n }\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\" title=\"Total tokens the model processed, including cached input\">\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(TotalTokensProcessed) }}</div>\n </div>\n </div>\n @if (record.TokensCacheRead) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-bolt\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Cached</div>\n <div class=\"metric-value\">{{ formatTokens(record.TokensCacheRead) }}</div>\n </div>\n </div>\n }\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\n <!-- Input Panel with nested sub-panels -->\n <mj-accordion-panel [Expanded]=\"inputExpanded\" (ExpandedChange)=\"onInputPanelToggle($event)\" style=\"margin-bottom: 8px;\">\n <ng-template mjAccordionTitle>\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 <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 <mj-accordion-panel\n [Expanded]=\"messagesExpanded\"\n class=\"sub-expansion-panel\"\n style=\"margin-bottom: 8px;\">\n <ng-template mjAccordionTitle>\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 </mj-accordion-panel>\n\n <!-- Data Sub-Panel -->\n <mj-accordion-panel\n [Expanded]=\"dataExpanded\"\n class=\"sub-expansion-panel\"\n style=\"margin-bottom: 8px;\">\n <ng-template mjAccordionTitle>\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 mjButton\n variant=\"flat\"\n size=\"sm\"\n (click)=\"copyToClipboard(formattedData, 'Data')\"\n title=\"Copy JSON\">\n <i class=\"fa-solid fa-copy\"></i> Copy\n </button>\n <button mjButton\n variant=\"flat\"\n size=\"sm\"\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 </mj-accordion-panel>\n\n <!-- Raw Sub-Panel -->\n <mj-accordion-panel\n [Expanded]=\"rawExpanded\"\n class=\"sub-expansion-panel\"\n style=\"margin-bottom: 8px;\">\n <ng-template mjAccordionTitle>\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 mjButton\n variant=\"flat\"\n size=\"sm\"\n (click)=\"copyToClipboard(formattedMessages, 'Messages')\"\n title=\"Copy JSON\">\n <i class=\"fa-solid fa-copy\"></i> Copy\n </button>\n <button mjButton\n variant=\"flat\"\n size=\"sm\"\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 </mj-accordion-panel>\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 </mj-accordion-panel>\n \n <!-- Result Panel -->\n <mj-accordion-panel [Expanded]=\"resultExpanded\" (ExpandedChange)=\"onResultPanelToggle($event)\" style=\"margin-bottom: 8px;\">\n <ng-template mjAccordionTitle>\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 <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 mjButton\n variant=\"flat\"\n size=\"sm\"\n (click)=\"copyToClipboard(formattedResult, 'Result')\"\n title=\"Copy JSON\">\n <i class=\"fa-solid fa-copy\"></i> Copy\n </button>\n <button mjButton\n variant=\"flat\"\n size=\"sm\"\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.CompletedAt && (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 mjButton\n variant=\"flat\"\n size=\"sm\"\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 </mj-accordion-panel>\n\n <!-- Token Usage & Metrics Panel -->\n <mj-accordion-panel [Expanded]=\"metricsExpanded\" (ExpandedChange)=\"onMetricsPanelToggle($event)\" style=\"margin-bottom: 8px;\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-chart-line\"></i>\n Token Usage & Metrics\n </span>\n </ng-template>\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\" title=\"Full input the model processed \u2014 uncached (new) prompt tokens plus any cached tokens\">{{ formatTokens(FullPromptTokens) }}</div>\n @if (CachedTokens > 0) {\n <div class=\"metric-rollup\">\n <span>incl. {{ formatTokens(CachedTokens) }} cached</span>\n </div>\n }\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\" title=\"Prompt + completion + cached tokens \u2014 the full amount the model processed\">{{ formatTokens(TotalTokensProcessed) }}</div>\n @if (CachedTokens > 0) {\n <div class=\"metric-rollup\">\n <span>incl. {{ formatTokens(CachedTokens) }} cached</span>\n </div>\n }\n @if (record.TokensUsedRollup && record.TokensUsedRollup !== record.TokensUsed) {\n <div class=\"metric-rollup\">\n <span>Net rollup: {{ formatTokens(record.TokensUsedRollup) }}</span>\n </div>\n }\n </div>\n\n <!-- Prompt-cache tokens (provider cache reads = hits, writes = cache creation).\n Only rendered when the provider reported cache usage. -->\n @if (record.TokensCacheRead != null || record.TokensCacheWrite != null) {\n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <i class=\"fa-solid fa-bolt\"></i>\n <h4>Cache Read</h4>\n </div>\n <div class=\"metric-value large\">{{ formatTokens(record.TokensCacheRead) }}</div>\n @if (record.TokensCacheWrite) {\n <div class=\"metric-rollup\">\n <span>Write: {{ formatTokens(record.TokensCacheWrite) }}</span>\n </div>\n }\n @if (record.TokensCacheRead || record.TokensCacheWrite) {\n <div class=\"metric-rollup\">\n <span>{{ CacheHitRatePct | number:'1.0-0' }}% hit rate</span>\n </div>\n }\n </div>\n }\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 </mj-accordion-panel>\n\n <!-- Validation & Retry Panel -->\n @if (record && ((record.ValidationAttemptCount && record.ValidationAttemptCount > 0) || record.ValidationBehavior)) {\n <mj-accordion-panel [Expanded]=\"validationExpanded\" (ExpandedChange)=\"onValidationPanelToggle($event)\" style=\"margin-bottom: 8px;\">\n <ng-template mjAccordionTitle>\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 <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 === true\" [class.failed]=\"record.FinalValidationPassed === false\">\n <i [class]=\"record.FinalValidationPassed === true ? 'fa-solid fa-check-circle' : (record.FinalValidationPassed === false ? 'fa-solid fa-times-circle' : 'fa-solid fa-hourglass-half')\"></i>\n {{ record.FinalValidationPassed === true ? 'Validation Passed' : (record.FinalValidationPassed === false ? 'Validation Failed' : 'Validation Pending') }}\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 mjButton\n variant=\"flat\"\n size=\"sm\"\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 mjButton\n variant=\"flat\"\n size=\"sm\"\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 </mj-accordion-panel>\n }\n\n <!-- Hierarchy Panel (for parent/child relationships) -->\n @if (record.ParentID || childRuns.length > 0) {\n <mj-accordion-panel [Expanded]=\"hierarchyExpanded\" style=\"margin-bottom: 8px;\">\n <ng-template mjAccordionTitle>\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 <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 </mj-accordion-panel>\n }\n\n <!-- Additional Details Panel -->\n <mj-accordion-panel [Expanded]=\"false\" style=\"margin-bottom: 8px;\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-info-circle\"></i>\n Additional Details\n </span>\n </ng-template>\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 </mj-accordion-panel>\n\n <!-- Model Specific Response Details Panel -->\n @if (record.ModelSpecificResponseDetails) {\n <mj-accordion-panel [Expanded]=\"modelSpecificExpanded\" (ExpandedChange)=\"onModelSpecificPanelToggle($event)\" style=\"margin-bottom: 8px;\">\n <ng-template mjAccordionTitle>\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 <div class=\"panel-content\">\n <div class=\"json-editor-container\">\n <div class=\"json-toolbar\">\n <button mjButton\n variant=\"flat\"\n size=\"sm\"\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 mjButton\n variant=\"flat\"\n size=\"sm\"\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 </mj-accordion-panel>\n }\n\n <!-- Model Selection & Performance Panel (v2.78 fields) -->\n <mj-accordion-panel [Expanded]=\"false\" (ExpandedChange)=\"onModelSelectionPanelToggle($event)\" style=\"margin-bottom: 8px;\">\n <ng-template mjAccordionTitle>\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 <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 mjButton\n variant=\"flat\"\n size=\"sm\"\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 mjButton\n variant=\"flat\"\n size=\"sm\"\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 </mj-accordion-panel>\n\n </div>\n </form>\n</mj-record-form-container>\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 mjButton\n variant=\"flat\"\n size=\"sm\"\n (click)=\"copyToClipboard(FullScreenContent, FullScreenTitle)\"\n title=\"Copy content\">\n <i class=\"fa-solid fa-copy\"></i> Copy\n </button>\n <button mjButton\n variant=\"flat\"\n size=\"sm\"\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 }", 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 accordion panel styles */\n.nested-panels mj-accordion-panel {\n margin-bottom: 8px;\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 styles */\n.sub-expansion-panel {\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\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/* Accordion Panel Overrides */\nmj-accordion-panel {\n display: block;\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"] }]
|
|
2449
2473
|
}], null, null); })();
|
|
2450
2474
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MJAIPromptRunFormComponentExtended, { className: "MJAIPromptRunFormComponentExtended", filePath: "src/lib/custom/AIPromptRuns/ai-prompt-run-form.component.ts", lineNumber: 21 }); })();
|
|
2451
2475
|
//# sourceMappingURL=ai-prompt-run-form.component.js.map
|