@memberjunction/ng-core-entity-forms 6.2.0 → 6.3.0-edge.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -6
- package/dist/lib/custom/AIAgentCategories/ai-agent-category-header.panel.d.ts.map +1 -1
- package/dist/lib/custom/AIAgentCategories/ai-agent-category-header.panel.js +3 -3
- package/dist/lib/custom/AIAgentCategories/ai-agent-category-header.panel.js.map +1 -1
- package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.d.ts +12 -0
- package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.js +293 -230
- package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/add-action-dialog.component.js +2 -2
- package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.js +2 -2
- package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts +11 -0
- package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js +862 -812
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/create-prompt-dialog.component.js +2 -2
- package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js +2 -2
- package/dist/lib/custom/AIAgents/new-agent-dialog.component.js +2 -2
- package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js +2 -2
- package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.js +2 -2
- package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js +2 -2
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.d.ts +12 -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 +821 -763
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js.map +1 -1
- package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.js +2 -2
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts +10 -0
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js +700 -605
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js.map +1 -1
- package/dist/lib/custom/Actions/action-execution-log-form.component.d.ts +10 -0
- package/dist/lib/custom/Actions/action-execution-log-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Actions/action-execution-log-form.component.js +223 -175
- package/dist/lib/custom/Actions/action-execution-log-form.component.js.map +1 -1
- package/dist/lib/custom/Actions/action-form.component.d.ts +10 -0
- package/dist/lib/custom/Actions/action-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Actions/action-form.component.js +502 -453
- package/dist/lib/custom/Actions/action-form.component.js.map +1 -1
- package/dist/lib/custom/Companies/company-header.panel.d.ts.map +1 -1
- package/dist/lib/custom/Companies/company-header.panel.js +3 -3
- package/dist/lib/custom/Companies/company-header.panel.js.map +1 -1
- package/dist/lib/custom/Conversations/conversation-header.panel.d.ts.map +1 -1
- package/dist/lib/custom/Conversations/conversation-header.panel.js +3 -3
- package/dist/lib/custom/Conversations/conversation-header.panel.js.map +1 -1
- package/dist/lib/custom/Employees/employee-header.panel.d.ts.map +1 -1
- package/dist/lib/custom/Employees/employee-header.panel.js +3 -3
- package/dist/lib/custom/Employees/employee-header.panel.js.map +1 -1
- package/dist/lib/custom/Entities/entity-form.component.d.ts +15 -0
- package/dist/lib/custom/Entities/entity-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Entities/entity-form.component.js +836 -801
- package/dist/lib/custom/Entities/entity-form.component.js.map +1 -1
- package/dist/lib/custom/EntityActions/entityaction.form.component.js +2 -2
- package/dist/lib/custom/Files/file-form.component.js +2 -2
- package/dist/lib/custom/Lists/list-form.component.d.ts +5 -0
- package/dist/lib/custom/Lists/list-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Lists/list-form.component.js +355 -338
- package/dist/lib/custom/Lists/list-form.component.js.map +1 -1
- package/dist/lib/custom/MLModels/ml-model-form.component.js +3 -3
- package/dist/lib/custom/MLModels/ml-model-form.component.js.map +1 -1
- package/dist/lib/custom/MLModels/ml-model-view-models.d.ts +17 -35
- package/dist/lib/custom/MLModels/ml-model-view-models.d.ts.map +1 -1
- package/dist/lib/custom/MLModels/ml-model-view-models.js +55 -54
- package/dist/lib/custom/MLModels/ml-model-view-models.js.map +1 -1
- package/dist/lib/custom/MLModels/ps-model-detail.component.d.ts +7 -99
- package/dist/lib/custom/MLModels/ps-model-detail.component.d.ts.map +1 -1
- package/dist/lib/custom/MLModels/ps-model-detail.component.js +124 -303
- package/dist/lib/custom/MLModels/ps-model-detail.component.js.map +1 -1
- package/dist/lib/custom/Queries/query-form.component.d.ts +9 -0
- package/dist/lib/custom/Queries/query-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Queries/query-form.component.js +493 -444
- package/dist/lib/custom/Queries/query-form.component.js.map +1 -1
- package/dist/lib/custom/Queries/query-run-dialog.component.js +2 -2
- package/dist/lib/custom/Templates/template-param-dialog.component.js +2 -2
- package/dist/lib/custom/Templates/templates-form.component.d.ts +9 -0
- package/dist/lib/custom/Templates/templates-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Templates/templates-form.component.js +118 -74
- package/dist/lib/custom/Templates/templates-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-form.component.d.ts +5 -0
- package/dist/lib/custom/Tests/test-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-form.component.js +471 -451
- package/dist/lib/custom/Tests/test-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-run-form.component.d.ts +5 -0
- package/dist/lib/custom/Tests/test-run-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-run-form.component.js +312 -289
- package/dist/lib/custom/Tests/test-run-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-suite-form.component.d.ts +5 -0
- package/dist/lib/custom/Tests/test-suite-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-suite-form.component.js +697 -677
- package/dist/lib/custom/Tests/test-suite-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-suite-run-form.component.d.ts +5 -0
- package/dist/lib/custom/Tests/test-suite-run-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-suite-run-form.component.js +453 -433
- package/dist/lib/custom/Tests/test-suite-run-form.component.js.map +1 -1
- package/dist/lib/custom/Users/user-header.panel.d.ts.map +1 -1
- package/dist/lib/custom/Users/user-header.panel.js +3 -3
- package/dist/lib/custom/Users/user-header.panel.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/agent-run-cost-split.d.ts +2 -2
- package/dist/lib/custom/ai-agent-run/agent-run-cost-split.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/agent-run-cost-split.js +30 -13
- package/dist/lib/custom/ai-agent-run/agent-run-cost-split.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts +23 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js +276 -216
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js.map +1 -1
- package/dist/lib/custom/custom-forms.module.d.ts +1 -1
- package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
- package/dist/lib/custom/custom-forms.module.js +7 -1
- package/dist/lib/custom/custom-forms.module.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 +32 -14
- package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAction/mjaction.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAction/mjaction.form.component.js +119 -95
- package/dist/lib/generated/Entities/MJAction/mjaction.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJComment/mjcomment.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJComment/mjcomment.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJComment/mjcomment.form.component.js +124 -0
- package/dist/lib/generated/Entities/MJComment/mjcomment.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJCommentType/mjcommenttype.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJCommentType/mjcommenttype.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJCommentType/mjcommenttype.form.component.js +99 -0
- package/dist/lib/generated/Entities/MJCommentType/mjcommenttype.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJConversationType/mjconversationtype.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJConversationType/mjconversationtype.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJConversationType/mjconversationtype.form.component.js +95 -0
- package/dist/lib/generated/Entities/MJConversationType/mjconversationtype.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJDocumentSequenceCounter/mjdocumentsequencecounter.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJDocumentSequenceCounter/mjdocumentsequencecounter.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJDocumentSequenceCounter/mjdocumentsequencecounter.form.component.js +60 -0
- package/dist/lib/generated/Entities/MJDocumentSequenceCounter/mjdocumentsequencecounter.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js +124 -106
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntityFieldValue/mjentityfieldvalue.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJEntityFieldValue/mjentityfieldvalue.form.component.js +12 -4
- package/dist/lib/generated/Entities/MJEntityFieldValue/mjentityfieldvalue.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntityOrganicKey/mjentityorganickey.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJEntityOrganicKey/mjentityorganickey.form.component.js +19 -11
- package/dist/lib/generated/Entities/MJEntityOrganicKey/mjentityorganickey.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntityUniqueKey/mjentityuniquekey.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJEntityUniqueKey/mjentityuniquekey.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJEntityUniqueKey/mjentityuniquekey.form.component.js +62 -0
- package/dist/lib/generated/Entities/MJEntityUniqueKey/mjentityuniquekey.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJFeatureValue/mjfeaturevalue.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJFeatureValue/mjfeaturevalue.form.component.js +26 -12
- package/dist/lib/generated/Entities/MJFeatureValue/mjfeaturevalue.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJFieldSuggestion/mjfieldsuggestion.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJFieldSuggestion/mjfieldsuggestion.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJFieldSuggestion/mjfieldsuggestion.form.component.js +140 -0
- package/dist/lib/generated/Entities/MJFieldSuggestion/mjfieldsuggestion.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJFile/mjfile.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJFile/mjfile.form.component.js +69 -15
- package/dist/lib/generated/Entities/MJFile/mjfile.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJFileStorageProvider/mjfilestorageprovider.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJFileStorageProvider/mjfilestorageprovider.form.component.js +31 -13
- package/dist/lib/generated/Entities/MJFileStorageProvider/mjfilestorageprovider.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJMLEvaluationProtocol/mjmlevaluationprotocol.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJMLEvaluationProtocol/mjmlevaluationprotocol.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJMLEvaluationProtocol/mjmlevaluationprotocol.form.component.js +205 -0
- package/dist/lib/generated/Entities/MJMLEvaluationProtocol/mjmlevaluationprotocol.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJMLModel/mjmlmodel.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJMLModel/mjmlmodel.form.component.js +24 -6
- package/dist/lib/generated/Entities/MJMLModel/mjmlmodel.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJMLPredictionUnit/mjmlpredictionunit.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJMLPredictionUnit/mjmlpredictionunit.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJMLPredictionUnit/mjmlpredictionunit.form.component.js +173 -0
- package/dist/lib/generated/Entities/MJMLPredictionUnit/mjmlpredictionunit.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJMLTrainingPipeline/mjmltrainingpipeline.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJMLTrainingPipeline/mjmltrainingpipeline.form.component.js +46 -24
- package/dist/lib/generated/Entities/MJMLTrainingPipeline/mjmltrainingpipeline.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJMLTrainingRun/mjmltrainingrun.form.component.js +22 -14
- package/dist/lib/generated/Entities/MJMLTrainingRun/mjmltrainingrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJMLTrainingSnapshot/mjmltrainingsnapshot.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJMLTrainingSnapshot/mjmltrainingsnapshot.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJMLTrainingSnapshot/mjmltrainingsnapshot.form.component.js +175 -0
- package/dist/lib/generated/Entities/MJMLTrainingSnapshot/mjmltrainingsnapshot.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJQueryField/mjqueryfield.form.component.js +8 -6
- package/dist/lib/generated/Entities/MJQueryField/mjqueryfield.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.js +44 -36
- package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJTask/mjtask.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJTask/mjtask.form.component.js +54 -32
- package/dist/lib/generated/Entities/MJTask/mjtask.form.component.js.map +1 -1
- package/dist/lib/generated/generated-forms.module.d.ts +452 -443
- package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
- package/dist/lib/generated/generated-forms.module.js +27 -0
- package/dist/lib/generated/generated-forms.module.js.map +1 -1
- package/dist/lib/panels/feature-values/feature-values.panel.js +1 -1
- package/dist/lib/panels/feature-values/feature-values.panel.js.map +1 -1
- package/dist/lib/panels/model-predictions/model-prediction.logic.d.ts +1 -1
- package/dist/lib/panels/model-predictions/model-prediction.logic.d.ts.map +1 -1
- package/dist/lib/panels/model-predictions/model-prediction.logic.js.map +1 -1
- package/dist/lib/shared/components/template-editor.component.js +2 -2
- package/dist/lib/shared/phone-hero.d.ts +17 -0
- package/dist/lib/shared/phone-hero.d.ts.map +1 -0
- package/dist/lib/shared/phone-hero.js +30 -0
- package/dist/lib/shared/phone-hero.js.map +1 -0
- package/dist/lib/shared/phone-sections-state.d.ts +28 -0
- package/dist/lib/shared/phone-sections-state.d.ts.map +1 -0
- package/dist/lib/shared/phone-sections-state.js +38 -0
- package/dist/lib/shared/phone-sections-state.js.map +1 -0
- package/package.json +50 -50
|
@@ -12,6 +12,8 @@ import { MJAIPromptRunFormComponent } from '../../generated/Entities/MJAIPromptR
|
|
|
12
12
|
import { SharedService } from '@memberjunction/ng-shared';
|
|
13
13
|
import { TestHarnessWindowManagerService } from '@memberjunction/ng-ai-test-harness';
|
|
14
14
|
import { ParseJSONRecursive } from '@memberjunction/global';
|
|
15
|
+
import { JoinHeroSummary, RunStatusKind } from '../../shared/phone-hero';
|
|
16
|
+
import { PhoneSectionsState } from '../../shared/phone-sections-state';
|
|
15
17
|
import * as i0 from "@angular/core";
|
|
16
18
|
import * as i1 from "@angular/forms";
|
|
17
19
|
import * as i2 from "@memberjunction/ng-ui-components";
|
|
@@ -31,11 +33,11 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_11_Templat
|
|
|
31
33
|
i0.ɵɵadvance();
|
|
32
34
|
i0.ɵɵtextInterpolate1("#", ctx_r1.record.ID.substring(0, 8));
|
|
33
35
|
} }
|
|
34
|
-
function
|
|
35
|
-
i0.ɵɵelementStart(0, "div",
|
|
36
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_23_Template(rf, ctx) { if (rf & 1) {
|
|
37
|
+
i0.ɵɵelementStart(0, "div", 19)(1, "div", 16);
|
|
36
38
|
i0.ɵɵtext(2, "Execution");
|
|
37
39
|
i0.ɵɵelementEnd();
|
|
38
|
-
i0.ɵɵelementStart(3, "div",
|
|
40
|
+
i0.ɵɵelementStart(3, "div", 17);
|
|
39
41
|
i0.ɵɵelement(4, "i");
|
|
40
42
|
i0.ɵɵtext(5);
|
|
41
43
|
i0.ɵɵelementEnd()();
|
|
@@ -47,28 +49,28 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_20_Templat
|
|
|
47
49
|
i0.ɵɵadvance();
|
|
48
50
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.RunType, " ");
|
|
49
51
|
} }
|
|
50
|
-
function
|
|
52
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_24_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
51
53
|
const _r3 = i0.ɵɵgetCurrentView();
|
|
52
|
-
i0.ɵɵelementStart(0, "div",
|
|
54
|
+
i0.ɵɵelementStart(0, "div", 78)(1, "div", 16);
|
|
53
55
|
i0.ɵɵtext(2, "Prompt");
|
|
54
56
|
i0.ɵɵelementEnd();
|
|
55
|
-
i0.ɵɵelementStart(3, "div",
|
|
56
|
-
i0.ɵɵlistener("click", function
|
|
57
|
-
i0.ɵɵelement(4, "i",
|
|
57
|
+
i0.ɵɵelementStart(3, "div", 80);
|
|
58
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_24_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)); });
|
|
59
|
+
i0.ɵɵelement(4, "i", 81);
|
|
58
60
|
i0.ɵɵtext(5);
|
|
59
61
|
i0.ɵɵelementEnd();
|
|
60
|
-
i0.ɵɵelementStart(6, "div",
|
|
61
|
-
i0.ɵɵelement(7, "span",
|
|
62
|
-
i0.ɵɵelementStart(8, "span",
|
|
62
|
+
i0.ɵɵelementStart(6, "div", 82);
|
|
63
|
+
i0.ɵɵelement(7, "span", 83);
|
|
64
|
+
i0.ɵɵelementStart(8, "span", 84);
|
|
63
65
|
i0.ɵɵtext(9, "wrapped by");
|
|
64
66
|
i0.ɵɵelementEnd();
|
|
65
|
-
i0.ɵɵelement(10, "span",
|
|
67
|
+
i0.ɵɵelement(10, "span", 83);
|
|
66
68
|
i0.ɵɵelementEnd();
|
|
67
|
-
i0.ɵɵelementStart(11, "div",
|
|
68
|
-
i0.ɵɵlistener("click", function
|
|
69
|
-
i0.ɵɵelement(12, "i",
|
|
69
|
+
i0.ɵɵelementStart(11, "div", 85);
|
|
70
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_24_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)); });
|
|
71
|
+
i0.ɵɵelement(12, "i", 86);
|
|
70
72
|
i0.ɵɵtext(13);
|
|
71
|
-
i0.ɵɵelement(14, "i",
|
|
73
|
+
i0.ɵɵelement(14, "i", 87);
|
|
72
74
|
i0.ɵɵelementEnd()();
|
|
73
75
|
} if (rf & 2) {
|
|
74
76
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -77,14 +79,14 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_21_Conditi
|
|
|
77
79
|
i0.ɵɵadvance(8);
|
|
78
80
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.prompt.Name, " ");
|
|
79
81
|
} }
|
|
80
|
-
function
|
|
82
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_24_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
81
83
|
const _r4 = i0.ɵɵgetCurrentView();
|
|
82
|
-
i0.ɵɵelementStart(0, "div",
|
|
84
|
+
i0.ɵɵelementStart(0, "div", 79)(1, "div", 16);
|
|
83
85
|
i0.ɵɵtext(2, "Prompt");
|
|
84
86
|
i0.ɵɵelementEnd();
|
|
85
|
-
i0.ɵɵelementStart(3, "div",
|
|
86
|
-
i0.ɵɵlistener("click", function
|
|
87
|
-
i0.ɵɵelement(4, "i",
|
|
87
|
+
i0.ɵɵelementStart(3, "div", 88);
|
|
88
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_24_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)); });
|
|
89
|
+
i0.ɵɵelement(4, "i", 89);
|
|
88
90
|
i0.ɵɵtext(5);
|
|
89
91
|
i0.ɵɵelementEnd()();
|
|
90
92
|
} if (rf & 2) {
|
|
@@ -92,14 +94,14 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_21_Conditi
|
|
|
92
94
|
i0.ɵɵadvance(5);
|
|
93
95
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.prompt.Name, " ");
|
|
94
96
|
} }
|
|
95
|
-
function
|
|
96
|
-
i0.ɵɵconditionalCreate(0,
|
|
97
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_24_Template(rf, ctx) { if (rf & 1) {
|
|
98
|
+
i0.ɵɵconditionalCreate(0, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_24_Conditional_0_Template, 15, 2, "div", 78)(1, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_24_Conditional_1_Template, 6, 1, "div", 79);
|
|
97
99
|
} if (rf & 2) {
|
|
98
100
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
99
101
|
i0.ɵɵconditional(ctx_r1.record.ChildPromptID ? 0 : 1);
|
|
100
102
|
} }
|
|
101
|
-
function
|
|
102
|
-
i0.ɵɵelementStart(0, "span",
|
|
103
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_25_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
104
|
+
i0.ɵɵelementStart(0, "span", 93);
|
|
103
105
|
i0.ɵɵtext(1);
|
|
104
106
|
i0.ɵɵelementEnd();
|
|
105
107
|
} if (rf & 2) {
|
|
@@ -107,18 +109,18 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_22_Conditi
|
|
|
107
109
|
i0.ɵɵadvance();
|
|
108
110
|
i0.ɵɵtextInterpolate(ctx_r1.record.Vendor);
|
|
109
111
|
} }
|
|
110
|
-
function
|
|
112
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_25_Template(rf, ctx) { if (rf & 1) {
|
|
111
113
|
const _r5 = i0.ɵɵgetCurrentView();
|
|
112
|
-
i0.ɵɵelementStart(0, "div",
|
|
114
|
+
i0.ɵɵelementStart(0, "div", 20)(1, "div", 16);
|
|
113
115
|
i0.ɵɵtext(2, "Model");
|
|
114
116
|
i0.ɵɵelementEnd();
|
|
115
|
-
i0.ɵɵelementStart(3, "div",
|
|
116
|
-
i0.ɵɵlistener("click", function
|
|
117
|
-
i0.ɵɵelementStart(4, "span",
|
|
118
|
-
i0.ɵɵelement(5, "i",
|
|
117
|
+
i0.ɵɵelementStart(3, "div", 90);
|
|
118
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_25_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)); });
|
|
119
|
+
i0.ɵɵelementStart(4, "span", 91);
|
|
120
|
+
i0.ɵɵelement(5, "i", 92);
|
|
119
121
|
i0.ɵɵtext(6);
|
|
120
122
|
i0.ɵɵelementEnd();
|
|
121
|
-
i0.ɵɵconditionalCreate(7,
|
|
123
|
+
i0.ɵɵconditionalCreate(7, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_25_Conditional_7_Template, 2, 1, "span", 93);
|
|
122
124
|
i0.ɵɵelementEnd()();
|
|
123
125
|
} if (rf & 2) {
|
|
124
126
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -127,22 +129,22 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_22_Templat
|
|
|
127
129
|
i0.ɵɵadvance();
|
|
128
130
|
i0.ɵɵconditional(ctx_r1.record.Vendor ? 7 : -1);
|
|
129
131
|
} }
|
|
130
|
-
function
|
|
132
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_26_Template(rf, ctx) { if (rf & 1) {
|
|
131
133
|
const _r6 = i0.ɵɵgetCurrentView();
|
|
132
|
-
i0.ɵɵelementStart(0, "span",
|
|
133
|
-
i0.ɵɵelement(1, "i",
|
|
134
|
-
i0.ɵɵelementStart(2, "a",
|
|
135
|
-
i0.ɵɵlistener("click", function
|
|
134
|
+
i0.ɵɵelementStart(0, "span", 21);
|
|
135
|
+
i0.ɵɵelement(1, "i", 94);
|
|
136
|
+
i0.ɵɵelementStart(2, "a", 95);
|
|
137
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_26_Template_a_click_2_listener() { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.navigateToOriginalRun()); });
|
|
136
138
|
i0.ɵɵtext(3, "Original Run");
|
|
137
139
|
i0.ɵɵelementEnd()();
|
|
138
140
|
} }
|
|
139
|
-
function
|
|
140
|
-
i0.ɵɵelementStart(0, "div",
|
|
141
|
-
i0.ɵɵelement(1, "i",
|
|
142
|
-
i0.ɵɵelementStart(2, "div",
|
|
141
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_33_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
142
|
+
i0.ɵɵelementStart(0, "div", 96);
|
|
143
|
+
i0.ɵɵelement(1, "i", 61);
|
|
144
|
+
i0.ɵɵelementStart(2, "div", 97)(3, "div", 98);
|
|
143
145
|
i0.ɵɵtext(4, "Temperature");
|
|
144
146
|
i0.ɵɵelementEnd();
|
|
145
|
-
i0.ɵɵelementStart(5, "div",
|
|
147
|
+
i0.ɵɵelementStart(5, "div", 99);
|
|
146
148
|
i0.ɵɵtext(6);
|
|
147
149
|
i0.ɵɵelementEnd()()();
|
|
148
150
|
} if (rf & 2) {
|
|
@@ -150,13 +152,13 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditi
|
|
|
150
152
|
i0.ɵɵadvance(6);
|
|
151
153
|
i0.ɵɵtextInterpolate(ctx_r1.record.Temperature);
|
|
152
154
|
} }
|
|
153
|
-
function
|
|
154
|
-
i0.ɵɵelementStart(0, "div",
|
|
155
|
-
i0.ɵɵelement(1, "i",
|
|
156
|
-
i0.ɵɵelementStart(2, "div",
|
|
155
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_33_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
156
|
+
i0.ɵɵelementStart(0, "div", 96);
|
|
157
|
+
i0.ɵɵelement(1, "i", 62);
|
|
158
|
+
i0.ɵɵelementStart(2, "div", 97)(3, "div", 98);
|
|
157
159
|
i0.ɵɵtext(4, "Top P");
|
|
158
160
|
i0.ɵɵelementEnd();
|
|
159
|
-
i0.ɵɵelementStart(5, "div",
|
|
161
|
+
i0.ɵɵelementStart(5, "div", 99);
|
|
160
162
|
i0.ɵɵtext(6);
|
|
161
163
|
i0.ɵɵelementEnd()()();
|
|
162
164
|
} if (rf & 2) {
|
|
@@ -164,13 +166,13 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditi
|
|
|
164
166
|
i0.ɵɵadvance(6);
|
|
165
167
|
i0.ɵɵtextInterpolate(ctx_r1.record.TopP);
|
|
166
168
|
} }
|
|
167
|
-
function
|
|
168
|
-
i0.ɵɵelementStart(0, "div",
|
|
169
|
-
i0.ɵɵelement(1, "i",
|
|
170
|
-
i0.ɵɵelementStart(2, "div",
|
|
169
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_33_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
170
|
+
i0.ɵɵelementStart(0, "div", 96);
|
|
171
|
+
i0.ɵɵelement(1, "i", 63);
|
|
172
|
+
i0.ɵɵelementStart(2, "div", 97)(3, "div", 98);
|
|
171
173
|
i0.ɵɵtext(4, "Top K");
|
|
172
174
|
i0.ɵɵelementEnd();
|
|
173
|
-
i0.ɵɵelementStart(5, "div",
|
|
175
|
+
i0.ɵɵelementStart(5, "div", 99);
|
|
174
176
|
i0.ɵɵtext(6);
|
|
175
177
|
i0.ɵɵelementEnd()()();
|
|
176
178
|
} if (rf & 2) {
|
|
@@ -178,13 +180,13 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditi
|
|
|
178
180
|
i0.ɵɵadvance(6);
|
|
179
181
|
i0.ɵɵtextInterpolate(ctx_r1.record.TopK);
|
|
180
182
|
} }
|
|
181
|
-
function
|
|
182
|
-
i0.ɵɵelementStart(0, "div",
|
|
183
|
-
i0.ɵɵelement(1, "i",
|
|
184
|
-
i0.ɵɵelementStart(2, "div",
|
|
183
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_33_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
184
|
+
i0.ɵɵelementStart(0, "div", 96);
|
|
185
|
+
i0.ɵɵelement(1, "i", 103);
|
|
186
|
+
i0.ɵɵelementStart(2, "div", 97)(3, "div", 98);
|
|
185
187
|
i0.ɵɵtext(4, "Effort Level");
|
|
186
188
|
i0.ɵɵelementEnd();
|
|
187
|
-
i0.ɵɵelementStart(5, "div",
|
|
189
|
+
i0.ɵɵelementStart(5, "div", 99);
|
|
188
190
|
i0.ɵɵtext(6);
|
|
189
191
|
i0.ɵɵelementEnd()()();
|
|
190
192
|
} if (rf & 2) {
|
|
@@ -192,13 +194,13 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditi
|
|
|
192
194
|
i0.ɵɵadvance(6);
|
|
193
195
|
i0.ɵɵtextInterpolate(ctx_r1.record.EffortLevel);
|
|
194
196
|
} }
|
|
195
|
-
function
|
|
196
|
-
i0.ɵɵelementStart(0, "div",
|
|
197
|
-
i0.ɵɵelement(1, "i",
|
|
198
|
-
i0.ɵɵelementStart(2, "div",
|
|
197
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_33_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
198
|
+
i0.ɵɵelementStart(0, "div", 96);
|
|
199
|
+
i0.ɵɵelement(1, "i", 104);
|
|
200
|
+
i0.ɵɵelementStart(2, "div", 97)(3, "div", 98);
|
|
199
201
|
i0.ɵɵtext(4, "Response Format");
|
|
200
202
|
i0.ɵɵelementEnd();
|
|
201
|
-
i0.ɵɵelementStart(5, "div",
|
|
203
|
+
i0.ɵɵelementStart(5, "div", 99);
|
|
202
204
|
i0.ɵɵtext(6);
|
|
203
205
|
i0.ɵɵelementEnd()()();
|
|
204
206
|
} if (rf & 2) {
|
|
@@ -206,13 +208,13 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditi
|
|
|
206
208
|
i0.ɵɵadvance(6);
|
|
207
209
|
i0.ɵɵtextInterpolate(ctx_r1.record.ResponseFormat);
|
|
208
210
|
} }
|
|
209
|
-
function
|
|
210
|
-
i0.ɵɵelementStart(0, "div",
|
|
211
|
-
i0.ɵɵelement(1, "i",
|
|
212
|
-
i0.ɵɵelementStart(2, "div",
|
|
211
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_33_Conditional_29_Template(rf, ctx) { if (rf & 1) {
|
|
212
|
+
i0.ɵɵelementStart(0, "div", 96);
|
|
213
|
+
i0.ɵɵelement(1, "i", 105);
|
|
214
|
+
i0.ɵɵelementStart(2, "div", 97)(3, "div", 98);
|
|
213
215
|
i0.ɵɵtext(4, "Cached");
|
|
214
216
|
i0.ɵɵelementEnd();
|
|
215
|
-
i0.ɵɵelementStart(5, "div",
|
|
217
|
+
i0.ɵɵelementStart(5, "div", 99);
|
|
216
218
|
i0.ɵɵtext(6);
|
|
217
219
|
i0.ɵɵelementEnd()()();
|
|
218
220
|
} if (rf & 2) {
|
|
@@ -220,13 +222,13 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditi
|
|
|
220
222
|
i0.ɵɵadvance(6);
|
|
221
223
|
i0.ɵɵtextInterpolate(ctx_r1.formatTokens(ctx_r1.record.TokensCacheRead));
|
|
222
224
|
} }
|
|
223
|
-
function
|
|
224
|
-
i0.ɵɵelementStart(0, "div",
|
|
225
|
-
i0.ɵɵelement(1, "i",
|
|
226
|
-
i0.ɵɵelementStart(2, "div",
|
|
225
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_33_Conditional_37_Template(rf, ctx) { if (rf & 1) {
|
|
226
|
+
i0.ɵɵelementStart(0, "div", 96);
|
|
227
|
+
i0.ɵɵelement(1, "i", 106);
|
|
228
|
+
i0.ɵɵelementStart(2, "div", 97)(3, "div", 98);
|
|
227
229
|
i0.ɵɵtext(4, "Started");
|
|
228
230
|
i0.ɵɵelementEnd();
|
|
229
|
-
i0.ɵɵelementStart(5, "div",
|
|
231
|
+
i0.ɵɵelementStart(5, "div", 99);
|
|
230
232
|
i0.ɵɵtext(6);
|
|
231
233
|
i0.ɵɵpipe(7, "date");
|
|
232
234
|
i0.ɵɵelementEnd()()();
|
|
@@ -235,49 +237,49 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditi
|
|
|
235
237
|
i0.ɵɵadvance(6);
|
|
236
238
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(7, 1, ctx_r1.record.RunAt, "short"));
|
|
237
239
|
} }
|
|
238
|
-
function
|
|
240
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_33_Template(rf, ctx) { if (rf & 1) {
|
|
239
241
|
const _r7 = i0.ɵɵgetCurrentView();
|
|
240
|
-
i0.ɵɵelementStart(0, "div",
|
|
241
|
-
i0.ɵɵelement(2, "i",
|
|
242
|
-
i0.ɵɵelementStart(3, "div",
|
|
242
|
+
i0.ɵɵelementStart(0, "div", 27)(1, "div", 96);
|
|
243
|
+
i0.ɵɵelement(2, "i", 86);
|
|
244
|
+
i0.ɵɵelementStart(3, "div", 97)(4, "div", 98);
|
|
243
245
|
i0.ɵɵtext(5, "Configuration");
|
|
244
246
|
i0.ɵɵelementEnd();
|
|
245
|
-
i0.ɵɵelementStart(6, "div",
|
|
246
|
-
i0.ɵɵlistener("click", function
|
|
247
|
+
i0.ɵɵelementStart(6, "div", 99)(7, "a", 100);
|
|
248
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_33_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)); });
|
|
247
249
|
i0.ɵɵtext(8);
|
|
248
250
|
i0.ɵɵelementEnd()()()();
|
|
249
|
-
i0.ɵɵconditionalCreate(9,
|
|
250
|
-
i0.ɵɵconditionalCreate(10,
|
|
251
|
-
i0.ɵɵconditionalCreate(11,
|
|
252
|
-
i0.ɵɵconditionalCreate(12,
|
|
253
|
-
i0.ɵɵconditionalCreate(13,
|
|
254
|
-
i0.ɵɵelementEnd();
|
|
255
|
-
i0.ɵɵelementStart(14, "div",
|
|
256
|
-
i0.ɵɵelement(16, "i",
|
|
257
|
-
i0.ɵɵelementStart(17, "div",
|
|
251
|
+
i0.ɵɵconditionalCreate(9, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_33_Conditional_9_Template, 7, 1, "div", 96);
|
|
252
|
+
i0.ɵɵconditionalCreate(10, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_33_Conditional_10_Template, 7, 1, "div", 96);
|
|
253
|
+
i0.ɵɵconditionalCreate(11, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_33_Conditional_11_Template, 7, 1, "div", 96);
|
|
254
|
+
i0.ɵɵconditionalCreate(12, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_33_Conditional_12_Template, 7, 1, "div", 96);
|
|
255
|
+
i0.ɵɵconditionalCreate(13, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_33_Conditional_13_Template, 7, 1, "div", 96);
|
|
256
|
+
i0.ɵɵelementEnd();
|
|
257
|
+
i0.ɵɵelementStart(14, "div", 27)(15, "div", 96);
|
|
258
|
+
i0.ɵɵelement(16, "i", 101);
|
|
259
|
+
i0.ɵɵelementStart(17, "div", 97)(18, "div", 98);
|
|
258
260
|
i0.ɵɵtext(19, "Duration");
|
|
259
261
|
i0.ɵɵelementEnd();
|
|
260
|
-
i0.ɵɵelementStart(20, "div",
|
|
262
|
+
i0.ɵɵelementStart(20, "div", 99);
|
|
261
263
|
i0.ɵɵtext(21);
|
|
262
264
|
i0.ɵɵelementEnd()()();
|
|
263
|
-
i0.ɵɵelementStart(22, "div",
|
|
264
|
-
i0.ɵɵelement(23, "i",
|
|
265
|
-
i0.ɵɵelementStart(24, "div",
|
|
265
|
+
i0.ɵɵelementStart(22, "div", 102);
|
|
266
|
+
i0.ɵɵelement(23, "i", 49);
|
|
267
|
+
i0.ɵɵelementStart(24, "div", 97)(25, "div", 98);
|
|
266
268
|
i0.ɵɵtext(26, "Total Tokens");
|
|
267
269
|
i0.ɵɵelementEnd();
|
|
268
|
-
i0.ɵɵelementStart(27, "div",
|
|
270
|
+
i0.ɵɵelementStart(27, "div", 99);
|
|
269
271
|
i0.ɵɵtext(28);
|
|
270
272
|
i0.ɵɵelementEnd()()();
|
|
271
|
-
i0.ɵɵconditionalCreate(29,
|
|
272
|
-
i0.ɵɵelementStart(30, "div",
|
|
273
|
-
i0.ɵɵelement(31, "i",
|
|
274
|
-
i0.ɵɵelementStart(32, "div",
|
|
273
|
+
i0.ɵɵconditionalCreate(29, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_33_Conditional_29_Template, 7, 1, "div", 96);
|
|
274
|
+
i0.ɵɵelementStart(30, "div", 96);
|
|
275
|
+
i0.ɵɵelement(31, "i", 51);
|
|
276
|
+
i0.ɵɵelementStart(32, "div", 97)(33, "div", 98);
|
|
275
277
|
i0.ɵɵtext(34, "Cost");
|
|
276
278
|
i0.ɵɵelementEnd();
|
|
277
|
-
i0.ɵɵelementStart(35, "div",
|
|
279
|
+
i0.ɵɵelementStart(35, "div", 99);
|
|
278
280
|
i0.ɵɵtext(36);
|
|
279
281
|
i0.ɵɵelementEnd()()();
|
|
280
|
-
i0.ɵɵconditionalCreate(37,
|
|
282
|
+
i0.ɵɵconditionalCreate(37, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_33_Conditional_37_Template, 8, 4, "div", 96);
|
|
281
283
|
i0.ɵɵelementEnd();
|
|
282
284
|
} if (rf & 2) {
|
|
283
285
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -304,13 +306,13 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Templat
|
|
|
304
306
|
i0.ɵɵadvance();
|
|
305
307
|
i0.ɵɵconditional(ctx_r1.record.RunAt ? 37 : -1);
|
|
306
308
|
} }
|
|
307
|
-
function
|
|
308
|
-
i0.ɵɵelementStart(0, "div",
|
|
309
|
-
i0.ɵɵelement(1, "i",
|
|
310
|
-
i0.ɵɵelementStart(2, "div",
|
|
309
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_34_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
310
|
+
i0.ɵɵelementStart(0, "div", 96);
|
|
311
|
+
i0.ɵɵelement(1, "i", 105);
|
|
312
|
+
i0.ɵɵelementStart(2, "div", 97)(3, "div", 98);
|
|
311
313
|
i0.ɵɵtext(4, "Cached");
|
|
312
314
|
i0.ɵɵelementEnd();
|
|
313
|
-
i0.ɵɵelementStart(5, "div",
|
|
315
|
+
i0.ɵɵelementStart(5, "div", 99);
|
|
314
316
|
i0.ɵɵtext(6);
|
|
315
317
|
i0.ɵɵelementEnd()()();
|
|
316
318
|
} if (rf & 2) {
|
|
@@ -318,13 +320,13 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_31_Conditi
|
|
|
318
320
|
i0.ɵɵadvance(6);
|
|
319
321
|
i0.ɵɵtextInterpolate(ctx_r1.formatTokens(ctx_r1.record.TokensCacheRead));
|
|
320
322
|
} }
|
|
321
|
-
function
|
|
322
|
-
i0.ɵɵelementStart(0, "div",
|
|
323
|
-
i0.ɵɵelement(1, "i",
|
|
324
|
-
i0.ɵɵelementStart(2, "div",
|
|
323
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_34_Conditional_23_Template(rf, ctx) { if (rf & 1) {
|
|
324
|
+
i0.ɵɵelementStart(0, "div", 96);
|
|
325
|
+
i0.ɵɵelement(1, "i", 106);
|
|
326
|
+
i0.ɵɵelementStart(2, "div", 97)(3, "div", 98);
|
|
325
327
|
i0.ɵɵtext(4, "Started");
|
|
326
328
|
i0.ɵɵelementEnd();
|
|
327
|
-
i0.ɵɵelementStart(5, "div",
|
|
329
|
+
i0.ɵɵelementStart(5, "div", 99);
|
|
328
330
|
i0.ɵɵtext(6);
|
|
329
331
|
i0.ɵɵpipe(7, "date");
|
|
330
332
|
i0.ɵɵelementEnd()()();
|
|
@@ -333,33 +335,33 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_31_Conditi
|
|
|
333
335
|
i0.ɵɵadvance(6);
|
|
334
336
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(7, 1, ctx_r1.record.RunAt, "short"));
|
|
335
337
|
} }
|
|
336
|
-
function
|
|
337
|
-
i0.ɵɵelementStart(0, "div",
|
|
338
|
-
i0.ɵɵelement(2, "i",
|
|
339
|
-
i0.ɵɵelementStart(3, "div",
|
|
338
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_34_Template(rf, ctx) { if (rf & 1) {
|
|
339
|
+
i0.ɵɵelementStart(0, "div", 27)(1, "div", 96);
|
|
340
|
+
i0.ɵɵelement(2, "i", 101);
|
|
341
|
+
i0.ɵɵelementStart(3, "div", 97)(4, "div", 98);
|
|
340
342
|
i0.ɵɵtext(5, "Duration");
|
|
341
343
|
i0.ɵɵelementEnd();
|
|
342
|
-
i0.ɵɵelementStart(6, "div",
|
|
344
|
+
i0.ɵɵelementStart(6, "div", 99);
|
|
343
345
|
i0.ɵɵtext(7);
|
|
344
346
|
i0.ɵɵelementEnd()()();
|
|
345
|
-
i0.ɵɵelementStart(8, "div",
|
|
346
|
-
i0.ɵɵelement(9, "i",
|
|
347
|
-
i0.ɵɵelementStart(10, "div",
|
|
347
|
+
i0.ɵɵelementStart(8, "div", 102);
|
|
348
|
+
i0.ɵɵelement(9, "i", 49);
|
|
349
|
+
i0.ɵɵelementStart(10, "div", 97)(11, "div", 98);
|
|
348
350
|
i0.ɵɵtext(12, "Total Tokens");
|
|
349
351
|
i0.ɵɵelementEnd();
|
|
350
|
-
i0.ɵɵelementStart(13, "div",
|
|
352
|
+
i0.ɵɵelementStart(13, "div", 99);
|
|
351
353
|
i0.ɵɵtext(14);
|
|
352
354
|
i0.ɵɵelementEnd()()();
|
|
353
|
-
i0.ɵɵconditionalCreate(15,
|
|
354
|
-
i0.ɵɵelementStart(16, "div",
|
|
355
|
-
i0.ɵɵelement(17, "i",
|
|
356
|
-
i0.ɵɵelementStart(18, "div",
|
|
355
|
+
i0.ɵɵconditionalCreate(15, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_34_Conditional_15_Template, 7, 1, "div", 96);
|
|
356
|
+
i0.ɵɵelementStart(16, "div", 96);
|
|
357
|
+
i0.ɵɵelement(17, "i", 51);
|
|
358
|
+
i0.ɵɵelementStart(18, "div", 97)(19, "div", 98);
|
|
357
359
|
i0.ɵɵtext(20, "Cost");
|
|
358
360
|
i0.ɵɵelementEnd();
|
|
359
|
-
i0.ɵɵelementStart(21, "div",
|
|
361
|
+
i0.ɵɵelementStart(21, "div", 99);
|
|
360
362
|
i0.ɵɵtext(22);
|
|
361
363
|
i0.ɵɵelementEnd()()();
|
|
362
|
-
i0.ɵɵconditionalCreate(23,
|
|
364
|
+
i0.ɵɵconditionalCreate(23, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_34_Conditional_23_Template, 8, 4, "div", 96);
|
|
363
365
|
i0.ɵɵelementEnd();
|
|
364
366
|
} if (rf & 2) {
|
|
365
367
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -374,24 +376,39 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_31_Templat
|
|
|
374
376
|
i0.ɵɵadvance();
|
|
375
377
|
i0.ɵɵconditional(ctx_r1.record.RunAt ? 23 : -1);
|
|
376
378
|
} }
|
|
377
|
-
function
|
|
378
|
-
i0.ɵɵ
|
|
379
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_35_Template(rf, ctx) { if (rf & 1) {
|
|
380
|
+
const _r8 = i0.ɵɵgetCurrentView();
|
|
381
|
+
i0.ɵɵelementStart(0, "button", 107);
|
|
382
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_35_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.ToggleHeroDetails()); });
|
|
383
|
+
i0.ɵɵelementStart(1, "span", 108);
|
|
384
|
+
i0.ɵɵtext(2);
|
|
385
|
+
i0.ɵɵelementEnd();
|
|
386
|
+
i0.ɵɵelement(3, "i", 109);
|
|
387
|
+
i0.ɵɵelementEnd();
|
|
388
|
+
} if (rf & 2) {
|
|
389
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
390
|
+
i0.ɵɵattribute("aria-expanded", ctx_r1.HeroDetailsOpen);
|
|
391
|
+
i0.ɵɵadvance(2);
|
|
392
|
+
i0.ɵɵtextInterpolate(ctx_r1.HeroSummary);
|
|
393
|
+
} }
|
|
394
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_39_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
395
|
+
i0.ɵɵelementStart(0, "span", 112);
|
|
379
396
|
i0.ɵɵtext(1, "JSON");
|
|
380
397
|
i0.ɵɵelementEnd();
|
|
381
398
|
} }
|
|
382
|
-
function
|
|
383
|
-
i0.ɵɵelementStart(0, "span",
|
|
384
|
-
i0.ɵɵelement(1, "i",
|
|
399
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_39_Template(rf, ctx) { if (rf & 1) {
|
|
400
|
+
i0.ɵɵelementStart(0, "span", 110);
|
|
401
|
+
i0.ɵɵelement(1, "i", 111);
|
|
385
402
|
i0.ɵɵtext(2, " Input ");
|
|
386
|
-
i0.ɵɵconditionalCreate(3,
|
|
403
|
+
i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_39_Conditional_3_Template, 2, 0, "span", 112);
|
|
387
404
|
i0.ɵɵelementEnd();
|
|
388
405
|
} if (rf & 2) {
|
|
389
406
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
390
407
|
i0.ɵɵadvance(3);
|
|
391
408
|
i0.ɵɵconditional(ctx_r1.record.Messages && ctx_r1.record.Messages.trim() !== "" ? 3 : -1);
|
|
392
409
|
} }
|
|
393
|
-
function
|
|
394
|
-
i0.ɵɵelementStart(0, "span",
|
|
410
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_41_ng_template_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
411
|
+
i0.ɵɵelementStart(0, "span", 128);
|
|
395
412
|
i0.ɵɵtext(1);
|
|
396
413
|
i0.ɵɵelementEnd();
|
|
397
414
|
} if (rf & 2) {
|
|
@@ -399,62 +416,62 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_ng_temp
|
|
|
399
416
|
i0.ɵɵadvance();
|
|
400
417
|
i0.ɵɵtextInterpolate1("(", ctx_r1.chatMessages.length, ")");
|
|
401
418
|
} }
|
|
402
|
-
function
|
|
403
|
-
i0.ɵɵelementStart(0, "span",
|
|
404
|
-
i0.ɵɵelement(1, "i",
|
|
419
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_41_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
420
|
+
i0.ɵɵelementStart(0, "span", 126);
|
|
421
|
+
i0.ɵɵelement(1, "i", 127);
|
|
405
422
|
i0.ɵɵtext(2, " Messages ");
|
|
406
|
-
i0.ɵɵconditionalCreate(3,
|
|
423
|
+
i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_41_ng_template_2_Conditional_3_Template, 2, 1, "span", 128);
|
|
407
424
|
i0.ɵɵelementEnd();
|
|
408
425
|
} if (rf & 2) {
|
|
409
426
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
410
427
|
i0.ɵɵadvance(3);
|
|
411
428
|
i0.ɵɵconditional(ctx_r1.chatMessages.length > 0 ? 3 : -1);
|
|
412
429
|
} }
|
|
413
|
-
function
|
|
414
|
-
i0.ɵɵelementStart(0, "div",
|
|
415
|
-
i0.ɵɵelement(1, "i",
|
|
430
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_41_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
431
|
+
i0.ɵɵelementStart(0, "div", 115);
|
|
432
|
+
i0.ɵɵelement(1, "i", 129);
|
|
416
433
|
i0.ɵɵelementStart(2, "p");
|
|
417
434
|
i0.ɵɵtext(3, "Loading messages...");
|
|
418
435
|
i0.ɵɵelementEnd()();
|
|
419
436
|
} }
|
|
420
|
-
function
|
|
421
|
-
i0.ɵɵelement(0, "mj-chat-message-viewer",
|
|
437
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_41_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
438
|
+
i0.ɵɵelement(0, "mj-chat-message-viewer", 116);
|
|
422
439
|
} if (rf & 2) {
|
|
423
440
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
424
441
|
i0.ɵɵproperty("messages", ctx_r1.chatMessages);
|
|
425
442
|
} }
|
|
426
|
-
function
|
|
427
|
-
i0.ɵɵelement(0, "mj-empty-state",
|
|
443
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_41_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
444
|
+
i0.ɵɵelement(0, "mj-empty-state", 117);
|
|
428
445
|
} }
|
|
429
|
-
function
|
|
430
|
-
i0.ɵɵelementStart(0, "span",
|
|
446
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_41_ng_template_8_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
447
|
+
i0.ɵɵelementStart(0, "span", 112);
|
|
431
448
|
i0.ɵɵtext(1, "Object");
|
|
432
449
|
i0.ɵɵelementEnd();
|
|
433
450
|
} }
|
|
434
|
-
function
|
|
435
|
-
i0.ɵɵelementStart(0, "span",
|
|
436
|
-
i0.ɵɵelement(1, "i",
|
|
451
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_41_ng_template_8_Template(rf, ctx) { if (rf & 1) {
|
|
452
|
+
i0.ɵɵelementStart(0, "span", 126);
|
|
453
|
+
i0.ɵɵelement(1, "i", 130);
|
|
437
454
|
i0.ɵɵtext(2, " Data ");
|
|
438
|
-
i0.ɵɵconditionalCreate(3,
|
|
455
|
+
i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_41_ng_template_8_Conditional_3_Template, 2, 0, "span", 112);
|
|
439
456
|
i0.ɵɵelementEnd();
|
|
440
457
|
} if (rf & 2) {
|
|
441
458
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
442
459
|
i0.ɵɵadvance(3);
|
|
443
460
|
i0.ɵɵconditional(ctx_r1.inputData ? 3 : -1);
|
|
444
461
|
} }
|
|
445
|
-
function
|
|
446
|
-
const
|
|
447
|
-
i0.ɵɵelementStart(0, "div",
|
|
448
|
-
i0.ɵɵlistener("click", function
|
|
449
|
-
i0.ɵɵelement(3, "i",
|
|
462
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_41_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
463
|
+
const _r10 = i0.ɵɵgetCurrentView();
|
|
464
|
+
i0.ɵɵelementStart(0, "div", 38)(1, "div", 120)(2, "button", 121);
|
|
465
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_41_Conditional_11_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.copyToClipboard(ctx_r1.formattedData, "Data")); });
|
|
466
|
+
i0.ɵɵelement(3, "i", 122);
|
|
450
467
|
i0.ɵɵtext(4, " Copy ");
|
|
451
468
|
i0.ɵɵelementEnd();
|
|
452
|
-
i0.ɵɵelementStart(5, "button",
|
|
453
|
-
i0.ɵɵlistener("click", function
|
|
454
|
-
i0.ɵɵelement(6, "i",
|
|
469
|
+
i0.ɵɵelementStart(5, "button", 123);
|
|
470
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_41_Conditional_11_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openFullScreen(ctx_r1.formattedData, "json", "Data")); });
|
|
471
|
+
i0.ɵɵelement(6, "i", 124);
|
|
455
472
|
i0.ɵɵelementEnd()();
|
|
456
|
-
i0.ɵɵelementStart(7, "mj-code-editor",
|
|
457
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
473
|
+
i0.ɵɵelementStart(7, "mj-code-editor", 131);
|
|
474
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_41_Conditional_11_Template_mj_code_editor_ngModelChange_7_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.formattedData, $event) || (ctx_r1.formattedData = $event); return i0.ɵɵresetView($event); });
|
|
458
475
|
i0.ɵɵelementEnd()();
|
|
459
476
|
} if (rf & 2) {
|
|
460
477
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -462,41 +479,41 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_Conditi
|
|
|
462
479
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.formattedData);
|
|
463
480
|
i0.ɵɵproperty("readonly", true)("language", "json")("lineWrapping", true);
|
|
464
481
|
} }
|
|
465
|
-
function
|
|
466
|
-
i0.ɵɵelement(0, "mj-empty-state",
|
|
482
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_41_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
483
|
+
i0.ɵɵelement(0, "mj-empty-state", 119);
|
|
467
484
|
} }
|
|
468
|
-
function
|
|
469
|
-
i0.ɵɵelementStart(0, "span",
|
|
470
|
-
i0.ɵɵelement(1, "i",
|
|
485
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_41_ng_template_14_Template(rf, ctx) { if (rf & 1) {
|
|
486
|
+
i0.ɵɵelementStart(0, "span", 126);
|
|
487
|
+
i0.ɵɵelement(1, "i", 104);
|
|
471
488
|
i0.ɵɵtext(2, " Raw ");
|
|
472
489
|
i0.ɵɵelementEnd();
|
|
473
490
|
} }
|
|
474
|
-
function
|
|
475
|
-
const
|
|
476
|
-
i0.ɵɵelementStart(0, "div",
|
|
477
|
-
i0.ɵɵtemplate(2,
|
|
478
|
-
i0.ɵɵelementStart(3, "div",
|
|
479
|
-
i0.ɵɵconditionalCreate(4,
|
|
480
|
-
i0.ɵɵelementEnd()();
|
|
481
|
-
i0.ɵɵelementStart(7, "mj-accordion-panel",
|
|
482
|
-
i0.ɵɵtemplate(8,
|
|
483
|
-
i0.ɵɵelementStart(9, "div",
|
|
484
|
-
i0.ɵɵelement(10, "mj-prompt-run-data-capture-note",
|
|
485
|
-
i0.ɵɵconditionalCreate(11,
|
|
486
|
-
i0.ɵɵelementEnd()();
|
|
487
|
-
i0.ɵɵelementStart(13, "mj-accordion-panel",
|
|
488
|
-
i0.ɵɵtemplate(14,
|
|
489
|
-
i0.ɵɵelementStart(15, "div",
|
|
490
|
-
i0.ɵɵlistener("click", function
|
|
491
|
-
i0.ɵɵelement(19, "i",
|
|
491
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_41_Template(rf, ctx) { if (rf & 1) {
|
|
492
|
+
const _r9 = i0.ɵɵgetCurrentView();
|
|
493
|
+
i0.ɵɵelementStart(0, "div", 34)(1, "mj-accordion-panel", 113);
|
|
494
|
+
i0.ɵɵtemplate(2, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_41_ng_template_2_Template, 4, 1, "ng-template", 32);
|
|
495
|
+
i0.ɵɵelementStart(3, "div", 114);
|
|
496
|
+
i0.ɵɵconditionalCreate(4, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_41_Conditional_4_Template, 4, 0, "div", 115)(5, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_41_Conditional_5_Template, 1, 1, "mj-chat-message-viewer", 116)(6, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_41_Conditional_6_Template, 1, 0, "mj-empty-state", 117);
|
|
497
|
+
i0.ɵɵelementEnd()();
|
|
498
|
+
i0.ɵɵelementStart(7, "mj-accordion-panel", 113);
|
|
499
|
+
i0.ɵɵtemplate(8, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_41_ng_template_8_Template, 4, 1, "ng-template", 32);
|
|
500
|
+
i0.ɵɵelementStart(9, "div", 114);
|
|
501
|
+
i0.ɵɵelement(10, "mj-prompt-run-data-capture-note", 118);
|
|
502
|
+
i0.ɵɵconditionalCreate(11, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_41_Conditional_11_Template, 8, 4, "div", 38)(12, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_41_Conditional_12_Template, 1, 0, "mj-empty-state", 119);
|
|
503
|
+
i0.ɵɵelementEnd()();
|
|
504
|
+
i0.ɵɵelementStart(13, "mj-accordion-panel", 113);
|
|
505
|
+
i0.ɵɵtemplate(14, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_41_ng_template_14_Template, 3, 0, "ng-template", 32);
|
|
506
|
+
i0.ɵɵelementStart(15, "div", 114)(16, "div", 38)(17, "div", 120)(18, "button", 121);
|
|
507
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_41_Template_button_click_18_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.copyToClipboard(ctx_r1.formattedMessages, "Messages")); });
|
|
508
|
+
i0.ɵɵelement(19, "i", 122);
|
|
492
509
|
i0.ɵɵtext(20, " Copy ");
|
|
493
510
|
i0.ɵɵelementEnd();
|
|
494
|
-
i0.ɵɵelementStart(21, "button",
|
|
495
|
-
i0.ɵɵlistener("click", function
|
|
496
|
-
i0.ɵɵelement(22, "i",
|
|
511
|
+
i0.ɵɵelementStart(21, "button", 123);
|
|
512
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_41_Template_button_click_21_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openFullScreen(ctx_r1.formattedMessages, "json", "Raw Messages")); });
|
|
513
|
+
i0.ɵɵelement(22, "i", 124);
|
|
497
514
|
i0.ɵɵelementEnd()();
|
|
498
|
-
i0.ɵɵelementStart(23, "mj-code-editor",
|
|
499
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
515
|
+
i0.ɵɵelementStart(23, "mj-code-editor", 125);
|
|
516
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_41_Template_mj_code_editor_ngModelChange_23_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.formattedMessages, $event) || (ctx_r1.formattedMessages = $event); return i0.ɵɵresetView($event); });
|
|
500
517
|
i0.ɵɵelementEnd()()()()();
|
|
501
518
|
} if (rf & 2) {
|
|
502
519
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -516,25 +533,25 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_Templat
|
|
|
516
533
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.formattedMessages);
|
|
517
534
|
i0.ɵɵproperty("readonly", true)("language", "json")("lineWrapping", true);
|
|
518
535
|
} }
|
|
519
|
-
function
|
|
520
|
-
i0.ɵɵelement(0, "mj-empty-state",
|
|
536
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_42_Template(rf, ctx) { if (rf & 1) {
|
|
537
|
+
i0.ɵɵelement(0, "mj-empty-state", 35);
|
|
521
538
|
} }
|
|
522
|
-
function
|
|
523
|
-
i0.ɵɵelementStart(0, "span",
|
|
539
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_44_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
540
|
+
i0.ɵɵelementStart(0, "span", 112);
|
|
524
541
|
i0.ɵɵtext(1, "JSON");
|
|
525
542
|
i0.ɵɵelementEnd();
|
|
526
543
|
} }
|
|
527
|
-
function
|
|
528
|
-
i0.ɵɵelementStart(0, "span",
|
|
544
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_44_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
545
|
+
i0.ɵɵelementStart(0, "span", 133);
|
|
529
546
|
i0.ɵɵtext(1, "Error");
|
|
530
547
|
i0.ɵɵelementEnd();
|
|
531
548
|
} }
|
|
532
|
-
function
|
|
533
|
-
i0.ɵɵelementStart(0, "span",
|
|
534
|
-
i0.ɵɵelement(1, "i",
|
|
549
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_44_Template(rf, ctx) { if (rf & 1) {
|
|
550
|
+
i0.ɵɵelementStart(0, "span", 110);
|
|
551
|
+
i0.ɵɵelement(1, "i", 132);
|
|
535
552
|
i0.ɵɵtext(2, " Result ");
|
|
536
|
-
i0.ɵɵconditionalCreate(3,
|
|
537
|
-
i0.ɵɵconditionalCreate(4,
|
|
553
|
+
i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_44_Conditional_3_Template, 2, 0, "span", 112);
|
|
554
|
+
i0.ɵɵconditionalCreate(4, MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_44_Conditional_4_Template, 2, 0, "span", 133);
|
|
538
555
|
i0.ɵɵelementEnd();
|
|
539
556
|
} if (rf & 2) {
|
|
540
557
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -543,10 +560,10 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_39_Templat
|
|
|
543
560
|
i0.ɵɵadvance();
|
|
544
561
|
i0.ɵɵconditional(ctx_r1.record.ErrorMessage ? 4 : -1);
|
|
545
562
|
} }
|
|
546
|
-
function
|
|
547
|
-
i0.ɵɵelementStart(0, "div",
|
|
548
|
-
i0.ɵɵelement(1, "i",
|
|
549
|
-
i0.ɵɵelementStart(2, "div",
|
|
563
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_46_Template(rf, ctx) { if (rf & 1) {
|
|
564
|
+
i0.ɵɵelementStart(0, "div", 37);
|
|
565
|
+
i0.ɵɵelement(1, "i", 134);
|
|
566
|
+
i0.ɵɵelementStart(2, "div", 135)(3, "h4");
|
|
550
567
|
i0.ɵɵtext(4, "Error Message");
|
|
551
568
|
i0.ɵɵelementEnd();
|
|
552
569
|
i0.ɵɵelementStart(5, "p");
|
|
@@ -557,19 +574,19 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_41_Templat
|
|
|
557
574
|
i0.ɵɵadvance(6);
|
|
558
575
|
i0.ɵɵtextInterpolate(ctx_r1.record.ErrorMessage);
|
|
559
576
|
} }
|
|
560
|
-
function
|
|
561
|
-
const
|
|
562
|
-
i0.ɵɵelementStart(0, "div",
|
|
563
|
-
i0.ɵɵlistener("click", function
|
|
564
|
-
i0.ɵɵelement(3, "i",
|
|
577
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_47_Template(rf, ctx) { if (rf & 1) {
|
|
578
|
+
const _r11 = i0.ɵɵgetCurrentView();
|
|
579
|
+
i0.ɵɵelementStart(0, "div", 38)(1, "div", 120)(2, "button", 121);
|
|
580
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_47_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.copyToClipboard(ctx_r1.formattedResult, "Result")); });
|
|
581
|
+
i0.ɵɵelement(3, "i", 122);
|
|
565
582
|
i0.ɵɵtext(4, " Copy ");
|
|
566
583
|
i0.ɵɵelementEnd();
|
|
567
|
-
i0.ɵɵelementStart(5, "button",
|
|
568
|
-
i0.ɵɵlistener("click", function
|
|
569
|
-
i0.ɵɵelement(6, "i",
|
|
584
|
+
i0.ɵɵelementStart(5, "button", 123);
|
|
585
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_47_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openFullScreen(ctx_r1.formattedResult, "json", "Result")); });
|
|
586
|
+
i0.ɵɵelement(6, "i", 124);
|
|
570
587
|
i0.ɵɵelementEnd()();
|
|
571
|
-
i0.ɵɵelementStart(7, "mj-code-editor",
|
|
572
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
588
|
+
i0.ɵɵelementStart(7, "mj-code-editor", 136);
|
|
589
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_47_Template_mj_code_editor_ngModelChange_7_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.formattedResult, $event) || (ctx_r1.formattedResult = $event); return i0.ɵɵresetView($event); });
|
|
573
590
|
i0.ɵɵelementEnd()();
|
|
574
591
|
} if (rf & 2) {
|
|
575
592
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -577,8 +594,8 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_42_Templat
|
|
|
577
594
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.formattedResult);
|
|
578
595
|
i0.ɵɵproperty("readonly", true)("language", "json")("lineWrapping", true);
|
|
579
596
|
} }
|
|
580
|
-
function
|
|
581
|
-
i0.ɵɵelementStart(0, "p",
|
|
597
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_48_Conditional_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
598
|
+
i0.ɵɵelementStart(0, "p", 138)(1, "strong");
|
|
582
599
|
i0.ɵɵtext(2, "Status:");
|
|
583
600
|
i0.ɵɵelementEnd();
|
|
584
601
|
i0.ɵɵtext(3);
|
|
@@ -588,32 +605,32 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_43_Conditi
|
|
|
588
605
|
i0.ɵɵadvance(3);
|
|
589
606
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.Status, " ");
|
|
590
607
|
} }
|
|
591
|
-
function
|
|
592
|
-
const
|
|
593
|
-
i0.ɵɵelementStart(0, "div",
|
|
608
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_48_Conditional_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
609
|
+
const _r12 = i0.ɵɵgetCurrentView();
|
|
610
|
+
i0.ɵɵelementStart(0, "div", 139)(1, "div", 120)(2, "h4", 141);
|
|
594
611
|
i0.ɵɵtext(3, "Error Details");
|
|
595
612
|
i0.ɵɵelementEnd();
|
|
596
|
-
i0.ɵɵelementStart(4, "button",
|
|
597
|
-
i0.ɵɵlistener("click", function
|
|
598
|
-
i0.ɵɵelement(5, "i",
|
|
613
|
+
i0.ɵɵelementStart(4, "button", 123);
|
|
614
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_48_Conditional_1_Conditional_2_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.openFullScreen(ctx_r1.formattedErrorDetails, "json", "Error Details")); });
|
|
615
|
+
i0.ɵɵelement(5, "i", 124);
|
|
599
616
|
i0.ɵɵelementEnd()();
|
|
600
|
-
i0.ɵɵelement(6, "mj-code-editor",
|
|
617
|
+
i0.ɵɵelement(6, "mj-code-editor", 142);
|
|
601
618
|
i0.ɵɵelementEnd();
|
|
602
619
|
} if (rf & 2) {
|
|
603
620
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
604
621
|
i0.ɵɵadvance(6);
|
|
605
622
|
i0.ɵɵproperty("ngModel", ctx_r1.formattedErrorDetails)("disabled", true)("language", "json")("lineWrapping", true);
|
|
606
623
|
} }
|
|
607
|
-
function
|
|
608
|
-
i0.ɵɵelementStart(0, "p",
|
|
624
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_48_Conditional_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
625
|
+
i0.ɵɵelementStart(0, "p", 140);
|
|
609
626
|
i0.ɵɵtext(1, " The prompt execution failed but no additional error information is available. ");
|
|
610
627
|
i0.ɵɵelementEnd();
|
|
611
628
|
} }
|
|
612
|
-
function
|
|
613
|
-
i0.ɵɵelementStart(0, "div",
|
|
614
|
-
i0.ɵɵconditionalCreate(1,
|
|
615
|
-
i0.ɵɵconditionalCreate(2,
|
|
616
|
-
i0.ɵɵconditionalCreate(3,
|
|
629
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_48_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
630
|
+
i0.ɵɵelementStart(0, "div", 137);
|
|
631
|
+
i0.ɵɵconditionalCreate(1, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_48_Conditional_1_Conditional_1_Template, 4, 1, "p", 138);
|
|
632
|
+
i0.ɵɵconditionalCreate(2, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_48_Conditional_1_Conditional_2_Template, 7, 4, "div", 139);
|
|
633
|
+
i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_48_Conditional_1_Conditional_3_Template, 2, 0, "p", 140);
|
|
617
634
|
i0.ɵɵelementEnd();
|
|
618
635
|
} if (rf & 2) {
|
|
619
636
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -624,23 +641,23 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_43_Conditi
|
|
|
624
641
|
i0.ɵɵadvance();
|
|
625
642
|
i0.ɵɵconditional(!ctx_r1.formattedErrorDetails ? 3 : -1);
|
|
626
643
|
} }
|
|
627
|
-
function
|
|
628
|
-
i0.ɵɵelementStart(0, "mj-empty-state",
|
|
629
|
-
i0.ɵɵconditionalCreate(1,
|
|
644
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_48_Template(rf, ctx) { if (rf & 1) {
|
|
645
|
+
i0.ɵɵelementStart(0, "mj-empty-state", 39);
|
|
646
|
+
i0.ɵɵconditionalCreate(1, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_48_Conditional_1_Template, 4, 3, "div", 137);
|
|
630
647
|
i0.ɵɵelementEnd();
|
|
631
648
|
} if (rf & 2) {
|
|
632
649
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
633
650
|
i0.ɵɵadvance();
|
|
634
651
|
i0.ɵɵconditional(ctx_r1.record.CompletedAt && (ctx_r1.record.Status === "Failed" || ctx_r1.record.Success === false) ? 1 : -1);
|
|
635
652
|
} }
|
|
636
|
-
function
|
|
637
|
-
i0.ɵɵelementStart(0, "span",
|
|
638
|
-
i0.ɵɵelement(1, "i",
|
|
653
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_50_Template(rf, ctx) { if (rf & 1) {
|
|
654
|
+
i0.ɵɵelementStart(0, "span", 110);
|
|
655
|
+
i0.ɵɵelement(1, "i", 143);
|
|
639
656
|
i0.ɵɵtext(2, " Token Usage & Metrics ");
|
|
640
657
|
i0.ɵɵelementEnd();
|
|
641
658
|
} }
|
|
642
|
-
function
|
|
643
|
-
i0.ɵɵelementStart(0, "div",
|
|
659
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_60_Template(rf, ctx) { if (rf & 1) {
|
|
660
|
+
i0.ɵɵelementStart(0, "div", 46)(1, "span");
|
|
644
661
|
i0.ɵɵtext(2);
|
|
645
662
|
i0.ɵɵelementEnd()();
|
|
646
663
|
} if (rf & 2) {
|
|
@@ -648,8 +665,8 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_55_Templat
|
|
|
648
665
|
i0.ɵɵadvance(2);
|
|
649
666
|
i0.ɵɵtextInterpolate1("incl. ", ctx_r1.formatTokens(ctx_r1.CachedTokens), " cached");
|
|
650
667
|
} }
|
|
651
|
-
function
|
|
652
|
-
i0.ɵɵelementStart(0, "div",
|
|
668
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_61_Template(rf, ctx) { if (rf & 1) {
|
|
669
|
+
i0.ɵɵelementStart(0, "div", 46)(1, "span");
|
|
653
670
|
i0.ɵɵtext(2);
|
|
654
671
|
i0.ɵɵelementEnd()();
|
|
655
672
|
} if (rf & 2) {
|
|
@@ -657,8 +674,8 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_56_Templat
|
|
|
657
674
|
i0.ɵɵadvance(2);
|
|
658
675
|
i0.ɵɵtextInterpolate1("Rollup: ", ctx_r1.formatTokens(ctx_r1.record.TokensPromptRollup));
|
|
659
676
|
} }
|
|
660
|
-
function
|
|
661
|
-
i0.ɵɵelementStart(0, "div",
|
|
677
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_69_Template(rf, ctx) { if (rf & 1) {
|
|
678
|
+
i0.ɵɵelementStart(0, "div", 46)(1, "span");
|
|
662
679
|
i0.ɵɵtext(2);
|
|
663
680
|
i0.ɵɵelementEnd()();
|
|
664
681
|
} if (rf & 2) {
|
|
@@ -666,8 +683,8 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_64_Templat
|
|
|
666
683
|
i0.ɵɵadvance(2);
|
|
667
684
|
i0.ɵɵtextInterpolate1("Rollup: ", ctx_r1.formatTokens(ctx_r1.record.TokensCompletionRollup));
|
|
668
685
|
} }
|
|
669
|
-
function
|
|
670
|
-
i0.ɵɵelementStart(0, "div",
|
|
686
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_77_Template(rf, ctx) { if (rf & 1) {
|
|
687
|
+
i0.ɵɵelementStart(0, "div", 46)(1, "span");
|
|
671
688
|
i0.ɵɵtext(2);
|
|
672
689
|
i0.ɵɵelementEnd()();
|
|
673
690
|
} if (rf & 2) {
|
|
@@ -675,8 +692,8 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_72_Templat
|
|
|
675
692
|
i0.ɵɵadvance(2);
|
|
676
693
|
i0.ɵɵtextInterpolate1("incl. ", ctx_r1.formatTokens(ctx_r1.CachedTokens), " cached");
|
|
677
694
|
} }
|
|
678
|
-
function
|
|
679
|
-
i0.ɵɵelementStart(0, "div",
|
|
695
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_78_Template(rf, ctx) { if (rf & 1) {
|
|
696
|
+
i0.ɵɵelementStart(0, "div", 46)(1, "span");
|
|
680
697
|
i0.ɵɵtext(2);
|
|
681
698
|
i0.ɵɵelementEnd()();
|
|
682
699
|
} if (rf & 2) {
|
|
@@ -684,8 +701,8 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_73_Templat
|
|
|
684
701
|
i0.ɵɵadvance(2);
|
|
685
702
|
i0.ɵɵtextInterpolate1("Net rollup: ", ctx_r1.formatTokens(ctx_r1.record.TokensUsedRollup));
|
|
686
703
|
} }
|
|
687
|
-
function
|
|
688
|
-
i0.ɵɵelementStart(0, "div",
|
|
704
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_79_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
705
|
+
i0.ɵɵelementStart(0, "div", 46)(1, "span");
|
|
689
706
|
i0.ɵɵtext(2);
|
|
690
707
|
i0.ɵɵelementEnd()();
|
|
691
708
|
} if (rf & 2) {
|
|
@@ -693,8 +710,8 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_74_Conditi
|
|
|
693
710
|
i0.ɵɵadvance(2);
|
|
694
711
|
i0.ɵɵtextInterpolate1("Write: ", ctx_r1.formatTokens(ctx_r1.record.TokensCacheWrite));
|
|
695
712
|
} }
|
|
696
|
-
function
|
|
697
|
-
i0.ɵɵelementStart(0, "div",
|
|
713
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_79_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
714
|
+
i0.ɵɵelementStart(0, "div", 46)(1, "span");
|
|
698
715
|
i0.ɵɵtext(2);
|
|
699
716
|
i0.ɵɵpipe(3, "number");
|
|
700
717
|
i0.ɵɵelementEnd()();
|
|
@@ -703,17 +720,17 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_74_Conditi
|
|
|
703
720
|
i0.ɵɵadvance(2);
|
|
704
721
|
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind2(3, 1, ctx_r1.CacheHitRatePct, "1.0-0"), "% hit rate");
|
|
705
722
|
} }
|
|
706
|
-
function
|
|
707
|
-
i0.ɵɵelementStart(0, "div",
|
|
708
|
-
i0.ɵɵelement(2, "i",
|
|
723
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_79_Template(rf, ctx) { if (rf & 1) {
|
|
724
|
+
i0.ɵɵelementStart(0, "div", 42)(1, "div", 43);
|
|
725
|
+
i0.ɵɵelement(2, "i", 105);
|
|
709
726
|
i0.ɵɵelementStart(3, "h4");
|
|
710
727
|
i0.ɵɵtext(4, "Cache Read");
|
|
711
728
|
i0.ɵɵelementEnd()();
|
|
712
|
-
i0.ɵɵelementStart(5, "div",
|
|
729
|
+
i0.ɵɵelementStart(5, "div", 48);
|
|
713
730
|
i0.ɵɵtext(6);
|
|
714
731
|
i0.ɵɵelementEnd();
|
|
715
|
-
i0.ɵɵconditionalCreate(7,
|
|
716
|
-
i0.ɵɵconditionalCreate(8,
|
|
732
|
+
i0.ɵɵconditionalCreate(7, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_79_Conditional_7_Template, 3, 1, "div", 46);
|
|
733
|
+
i0.ɵɵconditionalCreate(8, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_79_Conditional_8_Template, 4, 4, "div", 46);
|
|
717
734
|
i0.ɵɵelementEnd();
|
|
718
735
|
} if (rf & 2) {
|
|
719
736
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -724,8 +741,8 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_74_Templat
|
|
|
724
741
|
i0.ɵɵadvance();
|
|
725
742
|
i0.ɵɵconditional(ctx_r1.record.TokensCacheRead || ctx_r1.record.TokensCacheWrite ? 8 : -1);
|
|
726
743
|
} }
|
|
727
|
-
function
|
|
728
|
-
i0.ɵɵelementStart(0, "div",
|
|
744
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_87_Template(rf, ctx) { if (rf & 1) {
|
|
745
|
+
i0.ɵɵelementStart(0, "div", 46)(1, "span");
|
|
729
746
|
i0.ɵɵtext(2);
|
|
730
747
|
i0.ɵɵelementEnd()();
|
|
731
748
|
} if (rf & 2) {
|
|
@@ -733,8 +750,8 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_82_Templat
|
|
|
733
750
|
i0.ɵɵadvance(2);
|
|
734
751
|
i0.ɵɵtextInterpolate1("Total: ", ctx_r1.formatCost(ctx_r1.record.TotalCost));
|
|
735
752
|
} }
|
|
736
|
-
function
|
|
737
|
-
i0.ɵɵelementStart(0, "div",
|
|
753
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_88_Template(rf, ctx) { if (rf & 1) {
|
|
754
|
+
i0.ɵɵelementStart(0, "div", 52);
|
|
738
755
|
i0.ɵɵtext(1);
|
|
739
756
|
i0.ɵɵelementEnd();
|
|
740
757
|
} if (rf & 2) {
|
|
@@ -742,13 +759,13 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_83_Templat
|
|
|
742
759
|
i0.ɵɵadvance();
|
|
743
760
|
i0.ɵɵtextInterpolate(ctx_r1.record.CostCurrency);
|
|
744
761
|
} }
|
|
745
|
-
function
|
|
746
|
-
i0.ɵɵelementStart(0, "div",
|
|
747
|
-
i0.ɵɵelement(2, "i",
|
|
762
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_89_Template(rf, ctx) { if (rf & 1) {
|
|
763
|
+
i0.ɵɵelementStart(0, "div", 42)(1, "div", 43);
|
|
764
|
+
i0.ɵɵelement(2, "i", 144);
|
|
748
765
|
i0.ɵɵelementStart(3, "h4");
|
|
749
766
|
i0.ɵɵtext(4, "Queue Time");
|
|
750
767
|
i0.ɵɵelementEnd()();
|
|
751
|
-
i0.ɵɵelementStart(5, "div",
|
|
768
|
+
i0.ɵɵelementStart(5, "div", 48);
|
|
752
769
|
i0.ɵɵtext(6);
|
|
753
770
|
i0.ɵɵelementEnd()();
|
|
754
771
|
} if (rf & 2) {
|
|
@@ -756,13 +773,13 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_84_Templat
|
|
|
756
773
|
i0.ɵɵadvance(6);
|
|
757
774
|
i0.ɵɵtextInterpolate(ctx_r1.formatDuration(ctx_r1.record.QueueTime));
|
|
758
775
|
} }
|
|
759
|
-
function
|
|
760
|
-
i0.ɵɵelementStart(0, "div",
|
|
761
|
-
i0.ɵɵelement(2, "i",
|
|
776
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Template(rf, ctx) { if (rf & 1) {
|
|
777
|
+
i0.ɵɵelementStart(0, "div", 42)(1, "div", 43);
|
|
778
|
+
i0.ɵɵelement(2, "i", 145);
|
|
762
779
|
i0.ɵɵelementStart(3, "h4");
|
|
763
780
|
i0.ɵɵtext(4, "Prompt Time");
|
|
764
781
|
i0.ɵɵelementEnd()();
|
|
765
|
-
i0.ɵɵelementStart(5, "div",
|
|
782
|
+
i0.ɵɵelementStart(5, "div", 48);
|
|
766
783
|
i0.ɵɵtext(6);
|
|
767
784
|
i0.ɵɵelementEnd()();
|
|
768
785
|
} if (rf & 2) {
|
|
@@ -770,13 +787,13 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_85_Templat
|
|
|
770
787
|
i0.ɵɵadvance(6);
|
|
771
788
|
i0.ɵɵtextInterpolate(ctx_r1.formatDuration(ctx_r1.record.PromptTime));
|
|
772
789
|
} }
|
|
773
|
-
function
|
|
774
|
-
i0.ɵɵelementStart(0, "div",
|
|
775
|
-
i0.ɵɵelement(2, "i",
|
|
790
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_91_Template(rf, ctx) { if (rf & 1) {
|
|
791
|
+
i0.ɵɵelementStart(0, "div", 42)(1, "div", 43);
|
|
792
|
+
i0.ɵɵelement(2, "i", 146);
|
|
776
793
|
i0.ɵɵelementStart(3, "h4");
|
|
777
794
|
i0.ɵɵtext(4, "Completion Time");
|
|
778
795
|
i0.ɵɵelementEnd()();
|
|
779
|
-
i0.ɵɵelementStart(5, "div",
|
|
796
|
+
i0.ɵɵelementStart(5, "div", 48);
|
|
780
797
|
i0.ɵɵtext(6);
|
|
781
798
|
i0.ɵɵelementEnd()();
|
|
782
799
|
} if (rf & 2) {
|
|
@@ -784,11 +801,11 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_86_Templat
|
|
|
784
801
|
i0.ɵɵadvance(6);
|
|
785
802
|
i0.ɵɵtextInterpolate(ctx_r1.formatDuration(ctx_r1.record.CompletionTime));
|
|
786
803
|
} }
|
|
787
|
-
function
|
|
788
|
-
i0.ɵɵelementStart(0, "div",
|
|
804
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_93_Template(rf, ctx) { if (rf & 1) {
|
|
805
|
+
i0.ɵɵelementStart(0, "div", 54)(1, "span", 98);
|
|
789
806
|
i0.ɵɵtext(2, "Execution Order:");
|
|
790
807
|
i0.ɵɵelementEnd();
|
|
791
|
-
i0.ɵɵelementStart(3, "span",
|
|
808
|
+
i0.ɵɵelementStart(3, "span", 99);
|
|
792
809
|
i0.ɵɵtext(4);
|
|
793
810
|
i0.ɵɵelementEnd()();
|
|
794
811
|
} if (rf & 2) {
|
|
@@ -796,23 +813,23 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_88_Templat
|
|
|
796
813
|
i0.ɵɵadvance(4);
|
|
797
814
|
i0.ɵɵtextInterpolate(ctx_r1.record.ExecutionOrder);
|
|
798
815
|
} }
|
|
799
|
-
function
|
|
800
|
-
const
|
|
801
|
-
i0.ɵɵelementStart(0, "div",
|
|
816
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_94_Template(rf, ctx) { if (rf & 1) {
|
|
817
|
+
const _r13 = i0.ɵɵgetCurrentView();
|
|
818
|
+
i0.ɵɵelementStart(0, "div", 54)(1, "span", 98);
|
|
802
819
|
i0.ɵɵtext(2, "Agent:");
|
|
803
820
|
i0.ɵɵelementEnd();
|
|
804
|
-
i0.ɵɵelementStart(3, "span",
|
|
805
|
-
i0.ɵɵlistener("click", function
|
|
821
|
+
i0.ɵɵelementStart(3, "span", 147);
|
|
822
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_94_Template_span_click_3_listener() { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Agents", ctx_r1.record.AgentID)); });
|
|
806
823
|
i0.ɵɵtext(4);
|
|
807
|
-
i0.ɵɵelement(5, "i",
|
|
824
|
+
i0.ɵɵelement(5, "i", 148);
|
|
808
825
|
i0.ɵɵelementEnd()();
|
|
809
826
|
} if (rf & 2) {
|
|
810
827
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
811
828
|
i0.ɵɵadvance(4);
|
|
812
829
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.Agent, " ");
|
|
813
830
|
} }
|
|
814
|
-
function
|
|
815
|
-
i0.ɵɵelementStart(0, "span",
|
|
831
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_95_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
832
|
+
i0.ɵɵelementStart(0, "span", 128);
|
|
816
833
|
i0.ɵɵtext(1);
|
|
817
834
|
i0.ɵɵelementEnd();
|
|
818
835
|
} if (rf & 2) {
|
|
@@ -820,22 +837,22 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_ng_temp
|
|
|
820
837
|
i0.ɵɵadvance();
|
|
821
838
|
i0.ɵɵtextInterpolate1("(", ctx_r1.record.ValidationAttemptCount, " attempts)");
|
|
822
839
|
} }
|
|
823
|
-
function
|
|
824
|
-
i0.ɵɵelementStart(0, "span",
|
|
840
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_95_ng_template_1_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
841
|
+
i0.ɵɵelementStart(0, "span", 161);
|
|
825
842
|
i0.ɵɵtext(1, "Passed");
|
|
826
843
|
i0.ɵɵelementEnd();
|
|
827
844
|
} }
|
|
828
|
-
function
|
|
829
|
-
i0.ɵɵelementStart(0, "span",
|
|
845
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_95_ng_template_1_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
846
|
+
i0.ɵɵelementStart(0, "span", 133);
|
|
830
847
|
i0.ɵɵtext(1, "Failed");
|
|
831
848
|
i0.ɵɵelementEnd();
|
|
832
849
|
} }
|
|
833
|
-
function
|
|
834
|
-
i0.ɵɵelementStart(0, "span",
|
|
835
|
-
i0.ɵɵelement(1, "i",
|
|
850
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_95_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
851
|
+
i0.ɵɵelementStart(0, "span", 110);
|
|
852
|
+
i0.ɵɵelement(1, "i", 160);
|
|
836
853
|
i0.ɵɵtext(2, " Validation & Retries ");
|
|
837
|
-
i0.ɵɵconditionalCreate(3,
|
|
838
|
-
i0.ɵɵconditionalCreate(4,
|
|
854
|
+
i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_95_ng_template_1_Conditional_3_Template, 2, 1, "span", 128);
|
|
855
|
+
i0.ɵɵconditionalCreate(4, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_95_ng_template_1_Conditional_4_Template, 2, 0, "span", 161)(5, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_95_ng_template_1_Conditional_5_Template, 2, 0, "span", 133);
|
|
839
856
|
i0.ɵɵelementEnd();
|
|
840
857
|
} if (rf & 2) {
|
|
841
858
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -844,8 +861,8 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_ng_temp
|
|
|
844
861
|
i0.ɵɵadvance();
|
|
845
862
|
i0.ɵɵconditional(ctx_r1.record.FinalValidationPassed ? 4 : ctx_r1.record.FinalValidationPassed === false ? 5 : -1);
|
|
846
863
|
} }
|
|
847
|
-
function
|
|
848
|
-
i0.ɵɵelementStart(0, "span",
|
|
864
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_95_Conditional_31_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
865
|
+
i0.ɵɵelementStart(0, "span", 162);
|
|
849
866
|
i0.ɵɵtext(1);
|
|
850
867
|
i0.ɵɵelementEnd();
|
|
851
868
|
} if (rf & 2) {
|
|
@@ -853,15 +870,15 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditi
|
|
|
853
870
|
i0.ɵɵadvance();
|
|
854
871
|
i0.ɵɵtextInterpolate1("", ctx_r1.record.ValidationErrorCount, " validation errors");
|
|
855
872
|
} }
|
|
856
|
-
function
|
|
857
|
-
i0.ɵɵelementStart(0, "div",
|
|
858
|
-
i0.ɵɵelement(2, "i",
|
|
873
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_95_Conditional_31_Template(rf, ctx) { if (rf & 1) {
|
|
874
|
+
i0.ɵɵelementStart(0, "div", 155)(1, "h5");
|
|
875
|
+
i0.ɵɵelement(2, "i", 134);
|
|
859
876
|
i0.ɵɵtext(3, " Final Validation Error");
|
|
860
877
|
i0.ɵɵelementEnd();
|
|
861
878
|
i0.ɵɵelementStart(4, "p");
|
|
862
879
|
i0.ɵɵtext(5);
|
|
863
880
|
i0.ɵɵelementEnd();
|
|
864
|
-
i0.ɵɵconditionalCreate(6,
|
|
881
|
+
i0.ɵɵconditionalCreate(6, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_95_Conditional_31_Conditional_6_Template, 2, 1, "span", 162);
|
|
865
882
|
i0.ɵɵelementEnd();
|
|
866
883
|
} if (rf & 2) {
|
|
867
884
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -870,9 +887,9 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditi
|
|
|
870
887
|
i0.ɵɵadvance();
|
|
871
888
|
i0.ɵɵconditional(ctx_r1.record && ctx_r1.record.ValidationErrorCount && ctx_r1.record.ValidationErrorCount > 0 ? 6 : -1);
|
|
872
889
|
} }
|
|
873
|
-
function
|
|
874
|
-
i0.ɵɵelementStart(0, "div",
|
|
875
|
-
i0.ɵɵelement(2, "i",
|
|
890
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_95_Conditional_32_Template(rf, ctx) { if (rf & 1) {
|
|
891
|
+
i0.ɵɵelementStart(0, "div", 156)(1, "h5");
|
|
892
|
+
i0.ɵɵelement(2, "i", 65);
|
|
876
893
|
i0.ɵɵtext(3, " Most Common Error");
|
|
877
894
|
i0.ɵɵelementEnd();
|
|
878
895
|
i0.ɵɵelementStart(4, "p");
|
|
@@ -883,24 +900,24 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditi
|
|
|
883
900
|
i0.ɵɵadvance(5);
|
|
884
901
|
i0.ɵɵtextInterpolate(ctx_r1.record.CommonValidationError);
|
|
885
902
|
} }
|
|
886
|
-
function
|
|
887
|
-
i0.ɵɵelementStart(0, "div",
|
|
903
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_95_Conditional_33_Template(rf, ctx) { if (rf & 1) {
|
|
904
|
+
i0.ɵɵelementStart(0, "div", 157)(1, "h4");
|
|
888
905
|
i0.ɵɵtext(2, "Retry Timeline");
|
|
889
906
|
i0.ɵɵelementEnd();
|
|
890
|
-
i0.ɵɵelementStart(3, "div",
|
|
891
|
-
i0.ɵɵelement(5, "i",
|
|
907
|
+
i0.ɵɵelementStart(3, "div", 163)(4, "div", 164);
|
|
908
|
+
i0.ɵɵelement(5, "i", 101);
|
|
892
909
|
i0.ɵɵelementStart(6, "span");
|
|
893
910
|
i0.ɵɵtext(7);
|
|
894
911
|
i0.ɵɵpipe(8, "date");
|
|
895
912
|
i0.ɵɵelementEnd()();
|
|
896
|
-
i0.ɵɵelementStart(9, "div",
|
|
897
|
-
i0.ɵɵelement(10, "i",
|
|
913
|
+
i0.ɵɵelementStart(9, "div", 164);
|
|
914
|
+
i0.ɵɵelement(10, "i", 146);
|
|
898
915
|
i0.ɵɵelementStart(11, "span");
|
|
899
916
|
i0.ɵɵtext(12);
|
|
900
917
|
i0.ɵɵpipe(13, "date");
|
|
901
918
|
i0.ɵɵelementEnd()();
|
|
902
|
-
i0.ɵɵelementStart(14, "div",
|
|
903
|
-
i0.ɵɵelement(15, "i",
|
|
919
|
+
i0.ɵɵelementStart(14, "div", 164);
|
|
920
|
+
i0.ɵɵelement(15, "i", 165);
|
|
904
921
|
i0.ɵɵelementStart(16, "span");
|
|
905
922
|
i0.ɵɵtext(17);
|
|
906
923
|
i0.ɵɵelementEnd()()()();
|
|
@@ -913,84 +930,84 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditi
|
|
|
913
930
|
i0.ɵɵadvance(5);
|
|
914
931
|
i0.ɵɵtextInterpolate1("Total Retry Duration: ", ctx_r1.formatDuration(ctx_r1.record.TotalRetryDurationMS));
|
|
915
932
|
} }
|
|
916
|
-
function
|
|
917
|
-
i0.ɵɵelementStart(0, "span",
|
|
933
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_95_Conditional_34_For_5_Conditional_7_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
934
|
+
i0.ɵɵelementStart(0, "span", 162);
|
|
918
935
|
i0.ɵɵtext(1);
|
|
919
936
|
i0.ɵɵelementEnd();
|
|
920
937
|
} if (rf & 2) {
|
|
921
|
-
const
|
|
938
|
+
const attempt_r15 = i0.ɵɵnextContext(2).$implicit;
|
|
922
939
|
i0.ɵɵadvance();
|
|
923
|
-
i0.ɵɵtextInterpolate1("(",
|
|
940
|
+
i0.ɵɵtextInterpolate1("(", attempt_r15.validationErrorCount, " errors)");
|
|
924
941
|
} }
|
|
925
|
-
function
|
|
926
|
-
i0.ɵɵelementStart(0, "span",
|
|
942
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_95_Conditional_34_For_5_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
943
|
+
i0.ɵɵelementStart(0, "span", 173);
|
|
927
944
|
i0.ɵɵtext(1);
|
|
928
945
|
i0.ɵɵelementEnd();
|
|
929
|
-
i0.ɵɵconditionalCreate(2,
|
|
946
|
+
i0.ɵɵconditionalCreate(2, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_95_Conditional_34_For_5_Conditional_7_Conditional_2_Template, 2, 1, "span", 162);
|
|
930
947
|
} if (rf & 2) {
|
|
931
|
-
const
|
|
948
|
+
const attempt_r15 = i0.ɵɵnextContext().$implicit;
|
|
932
949
|
i0.ɵɵadvance();
|
|
933
|
-
i0.ɵɵtextInterpolate(
|
|
950
|
+
i0.ɵɵtextInterpolate(attempt_r15.errorMessage || "Unknown error");
|
|
934
951
|
i0.ɵɵadvance();
|
|
935
|
-
i0.ɵɵconditional(
|
|
952
|
+
i0.ɵɵconditional(attempt_r15.validationErrorCount > 0 ? 2 : -1);
|
|
936
953
|
} }
|
|
937
|
-
function
|
|
938
|
-
i0.ɵɵelementStart(0, "span",
|
|
954
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_95_Conditional_34_For_5_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
955
|
+
i0.ɵɵelementStart(0, "span", 172);
|
|
939
956
|
i0.ɵɵtext(1);
|
|
940
957
|
i0.ɵɵelementEnd();
|
|
941
958
|
} if (rf & 2) {
|
|
942
|
-
const
|
|
959
|
+
const attempt_r15 = i0.ɵɵnextContext().$implicit;
|
|
943
960
|
i0.ɵɵadvance();
|
|
944
|
-
i0.ɵɵtextInterpolate1("Output: ",
|
|
961
|
+
i0.ɵɵtextInterpolate1("Output: ", attempt_r15.outputLength, " chars");
|
|
945
962
|
} }
|
|
946
|
-
function
|
|
947
|
-
i0.ɵɵelementStart(0, "div",
|
|
963
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_95_Conditional_34_For_5_Template(rf, ctx) { if (rf & 1) {
|
|
964
|
+
i0.ɵɵelementStart(0, "div", 168)(1, "div", 169);
|
|
948
965
|
i0.ɵɵelement(2, "i");
|
|
949
966
|
i0.ɵɵtext(3);
|
|
950
967
|
i0.ɵɵelementEnd();
|
|
951
|
-
i0.ɵɵelementStart(4, "div",
|
|
968
|
+
i0.ɵɵelementStart(4, "div", 170)(5, "span", 171);
|
|
952
969
|
i0.ɵɵtext(6);
|
|
953
970
|
i0.ɵɵelementEnd();
|
|
954
|
-
i0.ɵɵconditionalCreate(7,
|
|
955
|
-
i0.ɵɵconditionalCreate(8,
|
|
971
|
+
i0.ɵɵconditionalCreate(7, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_95_Conditional_34_For_5_Conditional_7_Template, 3, 2);
|
|
972
|
+
i0.ɵɵconditionalCreate(8, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_95_Conditional_34_For_5_Conditional_8_Template, 2, 1, "span", 172);
|
|
956
973
|
i0.ɵɵelementEnd()();
|
|
957
974
|
} if (rf & 2) {
|
|
958
|
-
const
|
|
959
|
-
i0.ɵɵclassProp("success",
|
|
975
|
+
const attempt_r15 = ctx.$implicit;
|
|
976
|
+
i0.ɵɵclassProp("success", attempt_r15.success)("failed", !attempt_r15.success);
|
|
960
977
|
i0.ɵɵadvance(2);
|
|
961
|
-
i0.ɵɵclassMap(
|
|
978
|
+
i0.ɵɵclassMap(attempt_r15.success ? "fa-solid fa-check" : "fa-solid fa-times");
|
|
962
979
|
i0.ɵɵadvance();
|
|
963
|
-
i0.ɵɵtextInterpolate1(" Attempt #",
|
|
980
|
+
i0.ɵɵtextInterpolate1(" Attempt #", attempt_r15.attemptNumber, " ");
|
|
964
981
|
i0.ɵɵadvance(3);
|
|
965
|
-
i0.ɵɵtextInterpolate(
|
|
982
|
+
i0.ɵɵtextInterpolate(attempt_r15.timestamp);
|
|
966
983
|
i0.ɵɵadvance();
|
|
967
|
-
i0.ɵɵconditional(!
|
|
984
|
+
i0.ɵɵconditional(!attempt_r15.success ? 7 : -1);
|
|
968
985
|
i0.ɵɵadvance();
|
|
969
|
-
i0.ɵɵconditional(
|
|
986
|
+
i0.ɵɵconditional(attempt_r15.outputLength ? 8 : -1);
|
|
970
987
|
} }
|
|
971
|
-
function
|
|
972
|
-
i0.ɵɵelementStart(0, "div",
|
|
988
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_95_Conditional_34_Template(rf, ctx) { if (rf & 1) {
|
|
989
|
+
i0.ɵɵelementStart(0, "div", 158)(1, "h4");
|
|
973
990
|
i0.ɵɵtext(2, "Validation Attempts");
|
|
974
991
|
i0.ɵɵelementEnd();
|
|
975
|
-
i0.ɵɵelementStart(3, "div",
|
|
976
|
-
i0.ɵɵrepeaterCreate(4,
|
|
992
|
+
i0.ɵɵelementStart(3, "div", 166);
|
|
993
|
+
i0.ɵɵrepeaterCreate(4, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_95_Conditional_34_For_5_Template, 9, 10, "div", 167, _forTrack0);
|
|
977
994
|
i0.ɵɵelementEnd()();
|
|
978
995
|
} if (rf & 2) {
|
|
979
996
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
980
997
|
i0.ɵɵadvance(4);
|
|
981
998
|
i0.ɵɵrepeater(ctx_r1.validationAttempts);
|
|
982
999
|
} }
|
|
983
|
-
function
|
|
984
|
-
const
|
|
985
|
-
i0.ɵɵelementStart(0, "div",
|
|
1000
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_95_Conditional_35_Template(rf, ctx) { if (rf & 1) {
|
|
1001
|
+
const _r16 = i0.ɵɵgetCurrentView();
|
|
1002
|
+
i0.ɵɵelementStart(0, "div", 159)(1, "div", 120)(2, "h4", 141);
|
|
986
1003
|
i0.ɵɵtext(3, "Validation Summary Details");
|
|
987
1004
|
i0.ɵɵelementEnd();
|
|
988
|
-
i0.ɵɵelementStart(4, "button",
|
|
989
|
-
i0.ɵɵlistener("click", function
|
|
990
|
-
i0.ɵɵelement(5, "i",
|
|
1005
|
+
i0.ɵɵelementStart(4, "button", 123);
|
|
1006
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_95_Conditional_35_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openFullScreen(ctx_r1.formattedValidationSummary, "json", "Validation Summary")); });
|
|
1007
|
+
i0.ɵɵelement(5, "i", 124);
|
|
991
1008
|
i0.ɵɵelementEnd()();
|
|
992
|
-
i0.ɵɵelementStart(6, "div",
|
|
993
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
1009
|
+
i0.ɵɵelementStart(6, "div", 174)(7, "mj-code-editor", 175);
|
|
1010
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_95_Conditional_35_Template_mj_code_editor_ngModelChange_7_listener($event) { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.formattedValidationSummary, $event) || (ctx_r1.formattedValidationSummary = $event); return i0.ɵɵresetView($event); });
|
|
994
1011
|
i0.ɵɵelementEnd()()();
|
|
995
1012
|
} if (rf & 2) {
|
|
996
1013
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -998,17 +1015,17 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditi
|
|
|
998
1015
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.formattedValidationSummary);
|
|
999
1016
|
i0.ɵɵproperty("readonly", true)("language", "json")("lineWrapping", true);
|
|
1000
1017
|
} }
|
|
1001
|
-
function
|
|
1002
|
-
const
|
|
1003
|
-
i0.ɵɵelementStart(0, "div",
|
|
1018
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_95_Conditional_36_Template(rf, ctx) { if (rf & 1) {
|
|
1019
|
+
const _r17 = i0.ɵɵgetCurrentView();
|
|
1020
|
+
i0.ɵɵelementStart(0, "div", 159)(1, "div", 120)(2, "h4", 141);
|
|
1004
1021
|
i0.ɵɵtext(3, "Validation Attempts (Raw JSON)");
|
|
1005
1022
|
i0.ɵɵelementEnd();
|
|
1006
|
-
i0.ɵɵelementStart(4, "button",
|
|
1007
|
-
i0.ɵɵlistener("click", function
|
|
1008
|
-
i0.ɵɵelement(5, "i",
|
|
1023
|
+
i0.ɵɵelementStart(4, "button", 123);
|
|
1024
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_95_Conditional_36_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openFullScreen(ctx_r1.formattedValidationAttempts, "json", "Validation Attempts")); });
|
|
1025
|
+
i0.ɵɵelement(5, "i", 124);
|
|
1009
1026
|
i0.ɵɵelementEnd()();
|
|
1010
|
-
i0.ɵɵelementStart(6, "div",
|
|
1011
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
1027
|
+
i0.ɵɵelementStart(6, "div", 174)(7, "mj-code-editor", 176);
|
|
1028
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_95_Conditional_36_Template_mj_code_editor_ngModelChange_7_listener($event) { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.formattedValidationAttempts, $event) || (ctx_r1.formattedValidationAttempts = $event); return i0.ɵɵresetView($event); });
|
|
1012
1029
|
i0.ɵɵelementEnd()()();
|
|
1013
1030
|
} if (rf & 2) {
|
|
1014
1031
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -1016,49 +1033,49 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditi
|
|
|
1016
1033
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.formattedValidationAttempts);
|
|
1017
1034
|
i0.ɵɵproperty("readonly", true)("language", "json")("lineWrapping", true);
|
|
1018
1035
|
} }
|
|
1019
|
-
function
|
|
1020
|
-
const
|
|
1021
|
-
i0.ɵɵelementStart(0, "mj-accordion-panel",
|
|
1022
|
-
i0.ɵɵlistener("ExpandedChange", function
|
|
1023
|
-
i0.ɵɵtemplate(1,
|
|
1024
|
-
i0.ɵɵelementStart(2, "div",
|
|
1036
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_95_Template(rf, ctx) { if (rf & 1) {
|
|
1037
|
+
const _r14 = i0.ɵɵgetCurrentView();
|
|
1038
|
+
i0.ɵɵelementStart(0, "mj-accordion-panel", 149);
|
|
1039
|
+
i0.ɵɵlistener("ExpandedChange", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_95_Template_mj_accordion_panel_ExpandedChange_0_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onValidationPanelToggle($event)); });
|
|
1040
|
+
i0.ɵɵtemplate(1, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_95_ng_template_1_Template, 6, 2, "ng-template", 32);
|
|
1041
|
+
i0.ɵɵelementStart(2, "div", 33)(3, "div", 150)(4, "div", 151)(5, "h4");
|
|
1025
1042
|
i0.ɵɵtext(6, "Validation Summary");
|
|
1026
1043
|
i0.ɵɵelementEnd();
|
|
1027
|
-
i0.ɵɵelementStart(7, "div",
|
|
1044
|
+
i0.ɵɵelementStart(7, "div", 152);
|
|
1028
1045
|
i0.ɵɵelement(8, "i");
|
|
1029
1046
|
i0.ɵɵtext(9);
|
|
1030
1047
|
i0.ɵɵelementEnd()();
|
|
1031
|
-
i0.ɵɵelementStart(10, "div",
|
|
1048
|
+
i0.ɵɵelementStart(10, "div", 153)(11, "div", 154)(12, "div", 98);
|
|
1032
1049
|
i0.ɵɵtext(13, "Total Attempts");
|
|
1033
1050
|
i0.ɵɵelementEnd();
|
|
1034
|
-
i0.ɵɵelementStart(14, "div",
|
|
1051
|
+
i0.ɵɵelementStart(14, "div", 99);
|
|
1035
1052
|
i0.ɵɵtext(15);
|
|
1036
1053
|
i0.ɵɵelementEnd()();
|
|
1037
|
-
i0.ɵɵelementStart(16, "div",
|
|
1054
|
+
i0.ɵɵelementStart(16, "div", 154)(17, "div", 98);
|
|
1038
1055
|
i0.ɵɵtext(18, "Successful");
|
|
1039
1056
|
i0.ɵɵelementEnd();
|
|
1040
|
-
i0.ɵɵelementStart(19, "div",
|
|
1057
|
+
i0.ɵɵelementStart(19, "div", 99);
|
|
1041
1058
|
i0.ɵɵtext(20);
|
|
1042
1059
|
i0.ɵɵelementEnd()();
|
|
1043
|
-
i0.ɵɵelementStart(21, "div",
|
|
1060
|
+
i0.ɵɵelementStart(21, "div", 154)(22, "div", 98);
|
|
1044
1061
|
i0.ɵɵtext(23, "Behavior");
|
|
1045
1062
|
i0.ɵɵelementEnd();
|
|
1046
|
-
i0.ɵɵelementStart(24, "div",
|
|
1063
|
+
i0.ɵɵelementStart(24, "div", 99);
|
|
1047
1064
|
i0.ɵɵtext(25);
|
|
1048
1065
|
i0.ɵɵelementEnd()();
|
|
1049
|
-
i0.ɵɵelementStart(26, "div",
|
|
1066
|
+
i0.ɵɵelementStart(26, "div", 154)(27, "div", 98);
|
|
1050
1067
|
i0.ɵɵtext(28, "Retry Strategy");
|
|
1051
1068
|
i0.ɵɵelementEnd();
|
|
1052
|
-
i0.ɵɵelementStart(29, "div",
|
|
1069
|
+
i0.ɵɵelementStart(29, "div", 99);
|
|
1053
1070
|
i0.ɵɵtext(30);
|
|
1054
1071
|
i0.ɵɵelementEnd()()();
|
|
1055
|
-
i0.ɵɵconditionalCreate(31,
|
|
1056
|
-
i0.ɵɵconditionalCreate(32,
|
|
1072
|
+
i0.ɵɵconditionalCreate(31, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_95_Conditional_31_Template, 7, 2, "div", 155);
|
|
1073
|
+
i0.ɵɵconditionalCreate(32, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_95_Conditional_32_Template, 6, 1, "div", 156);
|
|
1057
1074
|
i0.ɵɵelementEnd();
|
|
1058
|
-
i0.ɵɵconditionalCreate(33,
|
|
1059
|
-
i0.ɵɵconditionalCreate(34,
|
|
1060
|
-
i0.ɵɵconditionalCreate(35,
|
|
1061
|
-
i0.ɵɵconditionalCreate(36,
|
|
1075
|
+
i0.ɵɵconditionalCreate(33, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_95_Conditional_33_Template, 18, 9, "div", 157);
|
|
1076
|
+
i0.ɵɵconditionalCreate(34, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_95_Conditional_34_Template, 6, 0, "div", 158);
|
|
1077
|
+
i0.ɵɵconditionalCreate(35, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_95_Conditional_35_Template, 8, 4, "div", 159);
|
|
1078
|
+
i0.ɵɵconditionalCreate(36, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_95_Conditional_36_Template, 8, 4, "div", 159);
|
|
1062
1079
|
i0.ɵɵelementEnd()();
|
|
1063
1080
|
} if (rf & 2) {
|
|
1064
1081
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -1090,8 +1107,8 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Templat
|
|
|
1090
1107
|
i0.ɵɵadvance();
|
|
1091
1108
|
i0.ɵɵconditional(ctx_r1.record.ValidationAttempts ? 36 : -1);
|
|
1092
1109
|
} }
|
|
1093
|
-
function
|
|
1094
|
-
i0.ɵɵelementStart(0, "span",
|
|
1110
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_96_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
1111
|
+
i0.ɵɵelementStart(0, "span", 128);
|
|
1095
1112
|
i0.ɵɵtext(1);
|
|
1096
1113
|
i0.ɵɵelementEnd();
|
|
1097
1114
|
} if (rf & 2) {
|
|
@@ -1099,47 +1116,47 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_91_ng_temp
|
|
|
1099
1116
|
i0.ɵɵadvance();
|
|
1100
1117
|
i0.ɵɵtextInterpolate1("(", ctx_r1.childRuns.length, " children)");
|
|
1101
1118
|
} }
|
|
1102
|
-
function
|
|
1103
|
-
i0.ɵɵelementStart(0, "span",
|
|
1104
|
-
i0.ɵɵelement(1, "i",
|
|
1119
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_96_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
1120
|
+
i0.ɵɵelementStart(0, "span", 110);
|
|
1121
|
+
i0.ɵɵelement(1, "i", 179);
|
|
1105
1122
|
i0.ɵɵtext(2, " Run Hierarchy ");
|
|
1106
|
-
i0.ɵɵconditionalCreate(3,
|
|
1123
|
+
i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_96_ng_template_1_Conditional_3_Template, 2, 1, "span", 128);
|
|
1107
1124
|
i0.ɵɵelementEnd();
|
|
1108
1125
|
} if (rf & 2) {
|
|
1109
1126
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
1110
1127
|
i0.ɵɵadvance(3);
|
|
1111
1128
|
i0.ɵɵconditional(ctx_r1.childRuns.length > 0 ? 3 : -1);
|
|
1112
1129
|
} }
|
|
1113
|
-
function
|
|
1114
|
-
const
|
|
1115
|
-
i0.ɵɵelementStart(0, "div",
|
|
1116
|
-
i0.ɵɵelement(2, "i",
|
|
1130
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_96_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
1131
|
+
const _r18 = i0.ɵɵgetCurrentView();
|
|
1132
|
+
i0.ɵɵelementStart(0, "div", 177)(1, "h4");
|
|
1133
|
+
i0.ɵɵelement(2, "i", 94);
|
|
1117
1134
|
i0.ɵɵtext(3, " Parent Run");
|
|
1118
1135
|
i0.ɵɵelementEnd();
|
|
1119
|
-
i0.ɵɵelementStart(4, "div",
|
|
1120
|
-
i0.ɵɵlistener("click", function
|
|
1121
|
-
i0.ɵɵelementStart(5, "div",
|
|
1136
|
+
i0.ɵɵelementStart(4, "div", 180);
|
|
1137
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_96_Conditional_3_Template_div_click_4_listener() { i0.ɵɵrestoreView(_r18); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Prompt Runs", ctx_r1.parentRun.ID)); });
|
|
1138
|
+
i0.ɵɵelementStart(5, "div", 181);
|
|
1122
1139
|
i0.ɵɵelement(6, "i");
|
|
1123
1140
|
i0.ɵɵelementEnd();
|
|
1124
|
-
i0.ɵɵelementStart(7, "div",
|
|
1141
|
+
i0.ɵɵelementStart(7, "div", 182)(8, "div", 183);
|
|
1125
1142
|
i0.ɵɵtext(9);
|
|
1126
|
-
i0.ɵɵelementStart(10, "span",
|
|
1143
|
+
i0.ɵɵelementStart(10, "span", 184);
|
|
1127
1144
|
i0.ɵɵtext(11);
|
|
1128
1145
|
i0.ɵɵelementEnd()();
|
|
1129
|
-
i0.ɵɵelementStart(12, "div",
|
|
1130
|
-
i0.ɵɵelement(14, "i",
|
|
1146
|
+
i0.ɵɵelementStart(12, "div", 185)(13, "span");
|
|
1147
|
+
i0.ɵɵelement(14, "i", 101);
|
|
1131
1148
|
i0.ɵɵtext(15);
|
|
1132
1149
|
i0.ɵɵelementEnd();
|
|
1133
1150
|
i0.ɵɵelementStart(16, "span");
|
|
1134
|
-
i0.ɵɵelement(17, "i",
|
|
1151
|
+
i0.ɵɵelement(17, "i", 49);
|
|
1135
1152
|
i0.ɵɵtext(18);
|
|
1136
1153
|
i0.ɵɵelementEnd();
|
|
1137
1154
|
i0.ɵɵelementStart(19, "span");
|
|
1138
|
-
i0.ɵɵelement(20, "i",
|
|
1155
|
+
i0.ɵɵelement(20, "i", 106);
|
|
1139
1156
|
i0.ɵɵtext(21);
|
|
1140
1157
|
i0.ɵɵpipe(22, "date");
|
|
1141
1158
|
i0.ɵɵelementEnd()()();
|
|
1142
|
-
i0.ɵɵelement(23, "i",
|
|
1159
|
+
i0.ɵɵelement(23, "i", 148);
|
|
1143
1160
|
i0.ɵɵelementEnd()();
|
|
1144
1161
|
} if (rf & 2) {
|
|
1145
1162
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -1158,85 +1175,85 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_91_Conditi
|
|
|
1158
1175
|
i0.ɵɵadvance(3);
|
|
1159
1176
|
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(22, 9, ctx_r1.parentRun.RunAt, "short"));
|
|
1160
1177
|
} }
|
|
1161
|
-
function
|
|
1162
|
-
i0.ɵɵelementStart(0, "span",
|
|
1178
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_96_Conditional_4_For_6_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
1179
|
+
i0.ɵɵelementStart(0, "span", 190);
|
|
1163
1180
|
i0.ɵɵtext(1);
|
|
1164
1181
|
i0.ɵɵelementEnd();
|
|
1165
1182
|
} if (rf & 2) {
|
|
1166
|
-
const
|
|
1183
|
+
const childRun_r20 = i0.ɵɵnextContext().$implicit;
|
|
1167
1184
|
i0.ɵɵadvance();
|
|
1168
|
-
i0.ɵɵtextInterpolate1("#",
|
|
1185
|
+
i0.ɵɵtextInterpolate1("#", childRun_r20.ExecutionOrder);
|
|
1169
1186
|
} }
|
|
1170
|
-
function
|
|
1171
|
-
const
|
|
1172
|
-
i0.ɵɵelementStart(0, "div",
|
|
1173
|
-
i0.ɵɵlistener("click", function
|
|
1174
|
-
i0.ɵɵelementStart(1, "div",
|
|
1187
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_96_Conditional_4_For_6_Template(rf, ctx) { if (rf & 1) {
|
|
1188
|
+
const _r19 = i0.ɵɵgetCurrentView();
|
|
1189
|
+
i0.ɵɵelementStart(0, "div", 189);
|
|
1190
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_96_Conditional_4_For_6_Template_div_click_0_listener() { const childRun_r20 = i0.ɵɵrestoreView(_r19).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Prompt Runs", childRun_r20.ID)); });
|
|
1191
|
+
i0.ɵɵelementStart(1, "div", 181);
|
|
1175
1192
|
i0.ɵɵelement(2, "i");
|
|
1176
1193
|
i0.ɵɵelementEnd();
|
|
1177
|
-
i0.ɵɵelementStart(3, "div",
|
|
1194
|
+
i0.ɵɵelementStart(3, "div", 182)(4, "div", 183);
|
|
1178
1195
|
i0.ɵɵtext(5);
|
|
1179
|
-
i0.ɵɵconditionalCreate(6,
|
|
1180
|
-
i0.ɵɵelementStart(7, "span",
|
|
1196
|
+
i0.ɵɵconditionalCreate(6, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_96_Conditional_4_For_6_Conditional_6_Template, 2, 1, "span", 190);
|
|
1197
|
+
i0.ɵɵelementStart(7, "span", 184);
|
|
1181
1198
|
i0.ɵɵtext(8);
|
|
1182
1199
|
i0.ɵɵelementEnd()();
|
|
1183
|
-
i0.ɵɵelementStart(9, "div",
|
|
1200
|
+
i0.ɵɵelementStart(9, "div", 185)(10, "span", 18);
|
|
1184
1201
|
i0.ɵɵelement(11, "i");
|
|
1185
1202
|
i0.ɵɵtext(12);
|
|
1186
1203
|
i0.ɵɵelementEnd();
|
|
1187
1204
|
i0.ɵɵelementStart(13, "span");
|
|
1188
|
-
i0.ɵɵelement(14, "i",
|
|
1205
|
+
i0.ɵɵelement(14, "i", 101);
|
|
1189
1206
|
i0.ɵɵtext(15);
|
|
1190
1207
|
i0.ɵɵelementEnd();
|
|
1191
1208
|
i0.ɵɵelementStart(16, "span");
|
|
1192
|
-
i0.ɵɵelement(17, "i",
|
|
1209
|
+
i0.ɵɵelement(17, "i", 49);
|
|
1193
1210
|
i0.ɵɵtext(18);
|
|
1194
1211
|
i0.ɵɵelementEnd()()();
|
|
1195
|
-
i0.ɵɵelement(19, "i",
|
|
1212
|
+
i0.ɵɵelement(19, "i", 148);
|
|
1196
1213
|
i0.ɵɵelementEnd();
|
|
1197
1214
|
} if (rf & 2) {
|
|
1198
|
-
const
|
|
1215
|
+
const childRun_r20 = ctx.$implicit;
|
|
1199
1216
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
1200
1217
|
i0.ɵɵadvance();
|
|
1201
1218
|
i0.ɵɵstyleProp("background-color", ctx_r1.getStatusColor() + "20");
|
|
1202
1219
|
i0.ɵɵadvance();
|
|
1203
|
-
i0.ɵɵclassMap("fa-solid " + ctx_r1.getRunTypeIcon(
|
|
1220
|
+
i0.ɵɵclassMap("fa-solid " + ctx_r1.getRunTypeIcon(childRun_r20.RunType));
|
|
1204
1221
|
i0.ɵɵadvance(3);
|
|
1205
|
-
i0.ɵɵtextInterpolate1(" Child Run #",
|
|
1222
|
+
i0.ɵɵtextInterpolate1(" Child Run #", childRun_r20.ID.substring(0, 8), " ");
|
|
1206
1223
|
i0.ɵɵadvance();
|
|
1207
|
-
i0.ɵɵconditional(
|
|
1224
|
+
i0.ɵɵconditional(childRun_r20.ExecutionOrder !== null ? 6 : -1);
|
|
1208
1225
|
i0.ɵɵadvance(2);
|
|
1209
|
-
i0.ɵɵtextInterpolate(
|
|
1226
|
+
i0.ɵɵtextInterpolate(childRun_r20.RunType);
|
|
1210
1227
|
i0.ɵɵadvance(2);
|
|
1211
1228
|
i0.ɵɵstyleProp("color", ctx_r1.getStatusColor());
|
|
1212
1229
|
i0.ɵɵadvance();
|
|
1213
1230
|
i0.ɵɵclassMap("fa-solid " + ctx_r1.getStatusIcon());
|
|
1214
1231
|
i0.ɵɵadvance();
|
|
1215
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
1232
|
+
i0.ɵɵtextInterpolate1(" ", childRun_r20.Success ? "Success" : childRun_r20.ErrorMessage ? "Failed" : "Running", " ");
|
|
1216
1233
|
i0.ɵɵadvance(3);
|
|
1217
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r1.formatDuration(
|
|
1234
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.formatDuration(childRun_r20.ExecutionTimeMS));
|
|
1218
1235
|
i0.ɵɵadvance(3);
|
|
1219
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r1.formatTokens(
|
|
1236
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.formatTokens(childRun_r20.TokensUsed));
|
|
1220
1237
|
} }
|
|
1221
|
-
function
|
|
1222
|
-
i0.ɵɵelementStart(0, "div",
|
|
1223
|
-
i0.ɵɵelement(2, "i",
|
|
1238
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_96_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
1239
|
+
i0.ɵɵelementStart(0, "div", 178)(1, "h4");
|
|
1240
|
+
i0.ɵɵelement(2, "i", 186);
|
|
1224
1241
|
i0.ɵɵtext(3, " Child Runs");
|
|
1225
1242
|
i0.ɵɵelementEnd();
|
|
1226
|
-
i0.ɵɵelementStart(4, "div",
|
|
1227
|
-
i0.ɵɵrepeaterCreate(5,
|
|
1243
|
+
i0.ɵɵelementStart(4, "div", 187);
|
|
1244
|
+
i0.ɵɵrepeaterCreate(5, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_96_Conditional_4_For_6_Template, 20, 14, "div", 188, _forTrack1);
|
|
1228
1245
|
i0.ɵɵelementEnd()();
|
|
1229
1246
|
} if (rf & 2) {
|
|
1230
1247
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
1231
1248
|
i0.ɵɵadvance(5);
|
|
1232
1249
|
i0.ɵɵrepeater(ctx_r1.childRuns);
|
|
1233
1250
|
} }
|
|
1234
|
-
function
|
|
1235
|
-
i0.ɵɵelementStart(0, "mj-accordion-panel",
|
|
1236
|
-
i0.ɵɵtemplate(1,
|
|
1237
|
-
i0.ɵɵelementStart(2, "div",
|
|
1238
|
-
i0.ɵɵconditionalCreate(3,
|
|
1239
|
-
i0.ɵɵconditionalCreate(4,
|
|
1251
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_96_Template(rf, ctx) { if (rf & 1) {
|
|
1252
|
+
i0.ɵɵelementStart(0, "mj-accordion-panel", 56);
|
|
1253
|
+
i0.ɵɵtemplate(1, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_96_ng_template_1_Template, 4, 1, "ng-template", 32);
|
|
1254
|
+
i0.ɵɵelementStart(2, "div", 33);
|
|
1255
|
+
i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_96_Conditional_3_Template, 24, 12, "div", 177);
|
|
1256
|
+
i0.ɵɵconditionalCreate(4, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_96_Conditional_4_Template, 7, 0, "div", 178);
|
|
1240
1257
|
i0.ɵɵelementEnd()();
|
|
1241
1258
|
} if (rf & 2) {
|
|
1242
1259
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -1246,33 +1263,33 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_91_Templat
|
|
|
1246
1263
|
i0.ɵɵadvance();
|
|
1247
1264
|
i0.ɵɵconditional(ctx_r1.childRuns.length > 0 ? 4 : -1);
|
|
1248
1265
|
} }
|
|
1249
|
-
function
|
|
1250
|
-
i0.ɵɵelementStart(0, "span",
|
|
1251
|
-
i0.ɵɵelement(1, "i",
|
|
1266
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_98_Template(rf, ctx) { if (rf & 1) {
|
|
1267
|
+
i0.ɵɵelementStart(0, "span", 110);
|
|
1268
|
+
i0.ɵɵelement(1, "i", 72);
|
|
1252
1269
|
i0.ɵɵtext(2, " Additional Details ");
|
|
1253
1270
|
i0.ɵɵelementEnd();
|
|
1254
1271
|
} }
|
|
1255
|
-
function
|
|
1256
|
-
const
|
|
1257
|
-
i0.ɵɵelementStart(0, "div",
|
|
1272
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_101_Template(rf, ctx) { if (rf & 1) {
|
|
1273
|
+
const _r21 = i0.ɵɵgetCurrentView();
|
|
1274
|
+
i0.ɵɵelementStart(0, "div", 59)(1, "label");
|
|
1258
1275
|
i0.ɵɵtext(2, "Agent");
|
|
1259
1276
|
i0.ɵɵelementEnd();
|
|
1260
|
-
i0.ɵɵelementStart(3, "div",
|
|
1261
|
-
i0.ɵɵlistener("click", function
|
|
1262
|
-
i0.ɵɵelement(4, "i",
|
|
1277
|
+
i0.ɵɵelementStart(3, "div", 191);
|
|
1278
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_101_Template_div_click_3_listener() { i0.ɵɵrestoreView(_r21); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Agents", ctx_r1.record.AgentID)); });
|
|
1279
|
+
i0.ɵɵelement(4, "i", 192);
|
|
1263
1280
|
i0.ɵɵtext(5);
|
|
1264
|
-
i0.ɵɵelement(6, "i",
|
|
1281
|
+
i0.ɵɵelement(6, "i", 148);
|
|
1265
1282
|
i0.ɵɵelementEnd()();
|
|
1266
1283
|
} if (rf & 2) {
|
|
1267
1284
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
1268
1285
|
i0.ɵɵadvance(5);
|
|
1269
1286
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.Agent || "Unknown", " ");
|
|
1270
1287
|
} }
|
|
1271
|
-
function
|
|
1272
|
-
i0.ɵɵelementStart(0, "div",
|
|
1288
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_102_Template(rf, ctx) { if (rf & 1) {
|
|
1289
|
+
i0.ɵɵelementStart(0, "div", 59)(1, "label");
|
|
1273
1290
|
i0.ɵɵtext(2, "Run Type");
|
|
1274
1291
|
i0.ɵɵelementEnd();
|
|
1275
|
-
i0.ɵɵelementStart(3, "div",
|
|
1292
|
+
i0.ɵɵelementStart(3, "div", 60);
|
|
1276
1293
|
i0.ɵɵelement(4, "i");
|
|
1277
1294
|
i0.ɵɵtext(5);
|
|
1278
1295
|
i0.ɵɵelementEnd()();
|
|
@@ -1283,12 +1300,12 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_97_Templat
|
|
|
1283
1300
|
i0.ɵɵadvance();
|
|
1284
1301
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.RunType, " ");
|
|
1285
1302
|
} }
|
|
1286
|
-
function
|
|
1287
|
-
i0.ɵɵelementStart(0, "div",
|
|
1303
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_103_Template(rf, ctx) { if (rf & 1) {
|
|
1304
|
+
i0.ɵɵelementStart(0, "div", 59)(1, "label");
|
|
1288
1305
|
i0.ɵɵtext(2, "Response Format");
|
|
1289
1306
|
i0.ɵɵelementEnd();
|
|
1290
|
-
i0.ɵɵelementStart(3, "div",
|
|
1291
|
-
i0.ɵɵelement(4, "i",
|
|
1307
|
+
i0.ɵɵelementStart(3, "div", 60);
|
|
1308
|
+
i0.ɵɵelement(4, "i", 104);
|
|
1292
1309
|
i0.ɵɵtext(5);
|
|
1293
1310
|
i0.ɵɵelementEnd()();
|
|
1294
1311
|
} if (rf & 2) {
|
|
@@ -1296,12 +1313,12 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_98_Templat
|
|
|
1296
1313
|
i0.ɵɵadvance(5);
|
|
1297
1314
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.ResponseFormat, " ");
|
|
1298
1315
|
} }
|
|
1299
|
-
function
|
|
1300
|
-
i0.ɵɵelementStart(0, "div",
|
|
1316
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_158_Template(rf, ctx) { if (rf & 1) {
|
|
1317
|
+
i0.ɵɵelementStart(0, "div", 59)(1, "label");
|
|
1301
1318
|
i0.ɵɵtext(2, "Started At");
|
|
1302
1319
|
i0.ɵɵelementEnd();
|
|
1303
|
-
i0.ɵɵelementStart(3, "div",
|
|
1304
|
-
i0.ɵɵelement(4, "i",
|
|
1320
|
+
i0.ɵɵelementStart(3, "div", 60);
|
|
1321
|
+
i0.ɵɵelement(4, "i", 101);
|
|
1305
1322
|
i0.ɵɵtext(5);
|
|
1306
1323
|
i0.ɵɵpipe(6, "date");
|
|
1307
1324
|
i0.ɵɵelementEnd()();
|
|
@@ -1310,12 +1327,12 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_153_Templa
|
|
|
1310
1327
|
i0.ɵɵadvance(5);
|
|
1311
1328
|
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(6, 1, ctx_r1.record.RunAt, "medium"), " ");
|
|
1312
1329
|
} }
|
|
1313
|
-
function
|
|
1314
|
-
i0.ɵɵelementStart(0, "div",
|
|
1330
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_159_Template(rf, ctx) { if (rf & 1) {
|
|
1331
|
+
i0.ɵɵelementStart(0, "div", 59)(1, "label");
|
|
1315
1332
|
i0.ɵɵtext(2, "Completed At");
|
|
1316
1333
|
i0.ɵɵelementEnd();
|
|
1317
|
-
i0.ɵɵelementStart(3, "div",
|
|
1318
|
-
i0.ɵɵelement(4, "i",
|
|
1334
|
+
i0.ɵɵelementStart(3, "div", 60);
|
|
1335
|
+
i0.ɵɵelement(4, "i", 193);
|
|
1319
1336
|
i0.ɵɵtext(5);
|
|
1320
1337
|
i0.ɵɵpipe(6, "date");
|
|
1321
1338
|
i0.ɵɵelementEnd()();
|
|
@@ -1324,30 +1341,30 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_154_Templa
|
|
|
1324
1341
|
i0.ɵɵadvance(5);
|
|
1325
1342
|
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(6, 1, ctx_r1.record.CompletedAt, "medium"), " ");
|
|
1326
1343
|
} }
|
|
1327
|
-
function
|
|
1328
|
-
i0.ɵɵelementStart(0, "span",
|
|
1329
|
-
i0.ɵɵelement(1, "i",
|
|
1344
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_160_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
1345
|
+
i0.ɵɵelementStart(0, "span", 110);
|
|
1346
|
+
i0.ɵɵelement(1, "i", 92);
|
|
1330
1347
|
i0.ɵɵtext(2, " Model Specific Response Details ");
|
|
1331
|
-
i0.ɵɵelementStart(3, "span",
|
|
1348
|
+
i0.ɵɵelementStart(3, "span", 112);
|
|
1332
1349
|
i0.ɵɵtext(4, "JSON");
|
|
1333
1350
|
i0.ɵɵelementEnd()();
|
|
1334
1351
|
} }
|
|
1335
|
-
function
|
|
1336
|
-
const
|
|
1337
|
-
i0.ɵɵelementStart(0, "mj-accordion-panel",
|
|
1338
|
-
i0.ɵɵlistener("ExpandedChange", function
|
|
1339
|
-
i0.ɵɵtemplate(1,
|
|
1340
|
-
i0.ɵɵelementStart(2, "div",
|
|
1341
|
-
i0.ɵɵlistener("click", function
|
|
1342
|
-
i0.ɵɵelement(6, "i",
|
|
1352
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_160_Template(rf, ctx) { if (rf & 1) {
|
|
1353
|
+
const _r22 = i0.ɵɵgetCurrentView();
|
|
1354
|
+
i0.ɵɵelementStart(0, "mj-accordion-panel", 194);
|
|
1355
|
+
i0.ɵɵlistener("ExpandedChange", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_160_Template_mj_accordion_panel_ExpandedChange_0_listener($event) { i0.ɵɵrestoreView(_r22); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onModelSpecificPanelToggle($event)); });
|
|
1356
|
+
i0.ɵɵtemplate(1, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_160_ng_template_1_Template, 5, 0, "ng-template", 32);
|
|
1357
|
+
i0.ɵɵelementStart(2, "div", 33)(3, "div", 38)(4, "div", 120)(5, "button", 121);
|
|
1358
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_160_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r22); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.copyToClipboard(ctx_r1.formattedModelSpecificResponseDetails, "Model Specific Response Details")); });
|
|
1359
|
+
i0.ɵɵelement(6, "i", 122);
|
|
1343
1360
|
i0.ɵɵtext(7, " Copy ");
|
|
1344
1361
|
i0.ɵɵelementEnd();
|
|
1345
|
-
i0.ɵɵelementStart(8, "button",
|
|
1346
|
-
i0.ɵɵlistener("click", function
|
|
1347
|
-
i0.ɵɵelement(9, "i",
|
|
1362
|
+
i0.ɵɵelementStart(8, "button", 123);
|
|
1363
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_160_Template_button_click_8_listener() { i0.ɵɵrestoreView(_r22); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openFullScreen(ctx_r1.formattedModelSpecificResponseDetails, "json", "Model Specific Response Details")); });
|
|
1364
|
+
i0.ɵɵelement(9, "i", 124);
|
|
1348
1365
|
i0.ɵɵelementEnd()();
|
|
1349
|
-
i0.ɵɵelementStart(10, "mj-code-editor",
|
|
1350
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
1366
|
+
i0.ɵɵelementStart(10, "mj-code-editor", 195);
|
|
1367
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_160_Template_mj_code_editor_ngModelChange_10_listener($event) { i0.ɵɵrestoreView(_r22); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.formattedModelSpecificResponseDetails, $event) || (ctx_r1.formattedModelSpecificResponseDetails = $event); return i0.ɵɵresetView($event); });
|
|
1351
1368
|
i0.ɵɵelementEnd()()()();
|
|
1352
1369
|
} if (rf & 2) {
|
|
1353
1370
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -1356,22 +1373,22 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_155_Templa
|
|
|
1356
1373
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.formattedModelSpecificResponseDetails);
|
|
1357
1374
|
i0.ɵɵproperty("readonly", true)("language", "json")("lineWrapping", true);
|
|
1358
1375
|
} }
|
|
1359
|
-
function
|
|
1360
|
-
i0.ɵɵelementStart(0, "span",
|
|
1376
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_162_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
1377
|
+
i0.ɵɵelementStart(0, "span", 161);
|
|
1361
1378
|
i0.ɵɵtext(1, "Cached");
|
|
1362
1379
|
i0.ɵɵelementEnd();
|
|
1363
1380
|
} }
|
|
1364
|
-
function
|
|
1365
|
-
i0.ɵɵelementStart(0, "span",
|
|
1381
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_162_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
1382
|
+
i0.ɵɵelementStart(0, "span", 161);
|
|
1366
1383
|
i0.ɵɵtext(1, "Selected");
|
|
1367
1384
|
i0.ɵɵelementEnd();
|
|
1368
1385
|
} }
|
|
1369
|
-
function
|
|
1370
|
-
i0.ɵɵelementStart(0, "span",
|
|
1371
|
-
i0.ɵɵelement(1, "i",
|
|
1386
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_162_Template(rf, ctx) { if (rf & 1) {
|
|
1387
|
+
i0.ɵɵelementStart(0, "span", 110);
|
|
1388
|
+
i0.ɵɵelement(1, "i", 92);
|
|
1372
1389
|
i0.ɵɵtext(2, " Model Selection & Performance ");
|
|
1373
|
-
i0.ɵɵconditionalCreate(3,
|
|
1374
|
-
i0.ɵɵconditionalCreate(4,
|
|
1390
|
+
i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_162_Conditional_3_Template, 2, 0, "span", 161);
|
|
1391
|
+
i0.ɵɵconditionalCreate(4, MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_162_Conditional_4_Template, 2, 0, "span", 161);
|
|
1375
1392
|
i0.ɵɵelementEnd();
|
|
1376
1393
|
} if (rf & 2) {
|
|
1377
1394
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -1380,12 +1397,12 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_157_Templa
|
|
|
1380
1397
|
i0.ɵɵadvance();
|
|
1381
1398
|
i0.ɵɵconditional(ctx_r1.record.WasSelectedResult ? 4 : -1);
|
|
1382
1399
|
} }
|
|
1383
|
-
function
|
|
1384
|
-
i0.ɵɵelementStart(0, "div",
|
|
1400
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_189_Template(rf, ctx) { if (rf & 1) {
|
|
1401
|
+
i0.ɵɵelementStart(0, "div", 75)(1, "label");
|
|
1385
1402
|
i0.ɵɵtext(2, "Cache Key");
|
|
1386
1403
|
i0.ɵɵelementEnd();
|
|
1387
|
-
i0.ɵɵelementStart(3, "div",
|
|
1388
|
-
i0.ɵɵelement(4, "i",
|
|
1404
|
+
i0.ɵɵelementStart(3, "div", 60);
|
|
1405
|
+
i0.ɵɵelement(4, "i", 196);
|
|
1389
1406
|
i0.ɵɵelementStart(5, "code");
|
|
1390
1407
|
i0.ɵɵtext(6);
|
|
1391
1408
|
i0.ɵɵelementEnd()()();
|
|
@@ -1394,28 +1411,28 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_184_Templa
|
|
|
1394
1411
|
i0.ɵɵadvance(6);
|
|
1395
1412
|
i0.ɵɵtextInterpolate(ctx_r1.record.CacheKey);
|
|
1396
1413
|
} }
|
|
1397
|
-
function
|
|
1398
|
-
const
|
|
1399
|
-
i0.ɵɵelementStart(0, "div",
|
|
1414
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_190_Template(rf, ctx) { if (rf & 1) {
|
|
1415
|
+
const _r23 = i0.ɵɵgetCurrentView();
|
|
1416
|
+
i0.ɵɵelementStart(0, "div", 59)(1, "label");
|
|
1400
1417
|
i0.ɵɵtext(2, "Judge Prompt");
|
|
1401
1418
|
i0.ɵɵelementEnd();
|
|
1402
|
-
i0.ɵɵelementStart(3, "div",
|
|
1403
|
-
i0.ɵɵlistener("click", function
|
|
1404
|
-
i0.ɵɵelement(4, "i",
|
|
1419
|
+
i0.ɵɵelementStart(3, "div", 197);
|
|
1420
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_190_Template_div_click_3_listener() { i0.ɵɵrestoreView(_r23); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Prompts", ctx_r1.record.JudgeID)); });
|
|
1421
|
+
i0.ɵɵelement(4, "i", 198);
|
|
1405
1422
|
i0.ɵɵtext(5);
|
|
1406
|
-
i0.ɵɵelement(6, "i",
|
|
1423
|
+
i0.ɵɵelement(6, "i", 148);
|
|
1407
1424
|
i0.ɵɵelementEnd()();
|
|
1408
1425
|
} if (rf & 2) {
|
|
1409
1426
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
1410
1427
|
i0.ɵɵadvance(5);
|
|
1411
1428
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.Judge || "Unknown", " ");
|
|
1412
1429
|
} }
|
|
1413
|
-
function
|
|
1414
|
-
i0.ɵɵelementStart(0, "div",
|
|
1430
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_191_Template(rf, ctx) { if (rf & 1) {
|
|
1431
|
+
i0.ɵɵelementStart(0, "div", 59)(1, "label");
|
|
1415
1432
|
i0.ɵɵtext(2, "Judge Score");
|
|
1416
1433
|
i0.ɵɵelementEnd();
|
|
1417
|
-
i0.ɵɵelementStart(3, "div",
|
|
1418
|
-
i0.ɵɵelement(4, "i",
|
|
1434
|
+
i0.ɵɵelementStart(3, "div", 60);
|
|
1435
|
+
i0.ɵɵelement(4, "i", 199);
|
|
1419
1436
|
i0.ɵɵtext(5);
|
|
1420
1437
|
i0.ɵɵelementEnd()();
|
|
1421
1438
|
} if (rf & 2) {
|
|
@@ -1423,12 +1440,12 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_186_Templa
|
|
|
1423
1440
|
i0.ɵɵadvance(5);
|
|
1424
1441
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.JudgeScore, " ");
|
|
1425
1442
|
} }
|
|
1426
|
-
function
|
|
1427
|
-
i0.ɵɵelementStart(0, "div",
|
|
1443
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_204_Template(rf, ctx) { if (rf & 1) {
|
|
1444
|
+
i0.ɵɵelementStart(0, "div", 59)(1, "label");
|
|
1428
1445
|
i0.ɵɵtext(2, "First Token Time");
|
|
1429
1446
|
i0.ɵɵelementEnd();
|
|
1430
|
-
i0.ɵɵelementStart(3, "div",
|
|
1431
|
-
i0.ɵɵelement(4, "i",
|
|
1447
|
+
i0.ɵɵelementStart(3, "div", 60);
|
|
1448
|
+
i0.ɵɵelement(4, "i", 105);
|
|
1432
1449
|
i0.ɵɵtext(5);
|
|
1433
1450
|
i0.ɵɵelementEnd()();
|
|
1434
1451
|
} if (rf & 2) {
|
|
@@ -1436,12 +1453,12 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_199_Templa
|
|
|
1436
1453
|
i0.ɵɵadvance(5);
|
|
1437
1454
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.FirstTokenTime, " ms ");
|
|
1438
1455
|
} }
|
|
1439
|
-
function
|
|
1440
|
-
i0.ɵɵelementStart(0, "div",
|
|
1456
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_205_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
1457
|
+
i0.ɵɵelementStart(0, "div", 75)(1, "label");
|
|
1441
1458
|
i0.ɵɵtext(2, "Cancellation Reason");
|
|
1442
1459
|
i0.ɵɵelementEnd();
|
|
1443
|
-
i0.ɵɵelementStart(3, "div",
|
|
1444
|
-
i0.ɵɵelement(4, "i",
|
|
1460
|
+
i0.ɵɵelementStart(3, "div", 60);
|
|
1461
|
+
i0.ɵɵelement(4, "i", 202);
|
|
1445
1462
|
i0.ɵɵtext(5);
|
|
1446
1463
|
i0.ɵɵelementEnd()();
|
|
1447
1464
|
} if (rf & 2) {
|
|
@@ -1449,31 +1466,31 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_200_Condit
|
|
|
1449
1466
|
i0.ɵɵadvance(5);
|
|
1450
1467
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.CancellationReason, " ");
|
|
1451
1468
|
} }
|
|
1452
|
-
function
|
|
1453
|
-
i0.ɵɵelementStart(0, "div",
|
|
1469
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_205_Template(rf, ctx) { if (rf & 1) {
|
|
1470
|
+
i0.ɵɵelementStart(0, "div", 59)(1, "label");
|
|
1454
1471
|
i0.ɵɵtext(2, "Cancelled");
|
|
1455
1472
|
i0.ɵɵelementEnd();
|
|
1456
|
-
i0.ɵɵelementStart(3, "div",
|
|
1457
|
-
i0.ɵɵelement(4, "i",
|
|
1473
|
+
i0.ɵɵelementStart(3, "div", 200);
|
|
1474
|
+
i0.ɵɵelement(4, "i", 201);
|
|
1458
1475
|
i0.ɵɵtext(5, " Yes ");
|
|
1459
1476
|
i0.ɵɵelementEnd()();
|
|
1460
|
-
i0.ɵɵconditionalCreate(6,
|
|
1477
|
+
i0.ɵɵconditionalCreate(6, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_205_Conditional_6_Template, 6, 1, "div", 75);
|
|
1461
1478
|
} if (rf & 2) {
|
|
1462
1479
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
1463
1480
|
i0.ɵɵadvance(6);
|
|
1464
1481
|
i0.ɵɵconditional(ctx_r1.record.CancellationReason ? 6 : -1);
|
|
1465
1482
|
} }
|
|
1466
|
-
function
|
|
1467
|
-
const
|
|
1468
|
-
i0.ɵɵelementStart(0, "div",
|
|
1483
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_206_Template(rf, ctx) { if (rf & 1) {
|
|
1484
|
+
const _r24 = i0.ɵɵgetCurrentView();
|
|
1485
|
+
i0.ɵɵelementStart(0, "div", 76)(1, "div", 120)(2, "h4", 141);
|
|
1469
1486
|
i0.ɵɵtext(3, "Model Selection Details");
|
|
1470
1487
|
i0.ɵɵelementEnd();
|
|
1471
|
-
i0.ɵɵelementStart(4, "button",
|
|
1472
|
-
i0.ɵɵlistener("click", function
|
|
1473
|
-
i0.ɵɵelement(5, "i",
|
|
1488
|
+
i0.ɵɵelementStart(4, "button", 123);
|
|
1489
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_206_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r24); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openFullScreen(ctx_r1.formattedModelSelection, "json", "Model Selection")); });
|
|
1490
|
+
i0.ɵɵelement(5, "i", 124);
|
|
1474
1491
|
i0.ɵɵelementEnd()();
|
|
1475
|
-
i0.ɵɵelementStart(6, "div",
|
|
1476
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
1492
|
+
i0.ɵɵelementStart(6, "div", 174)(7, "mj-code-editor", 203);
|
|
1493
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_206_Template_mj_code_editor_ngModelChange_7_listener($event) { i0.ɵɵrestoreView(_r24); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.formattedModelSelection, $event) || (ctx_r1.formattedModelSelection = $event); return i0.ɵɵresetView($event); });
|
|
1477
1494
|
i0.ɵɵelementEnd()()();
|
|
1478
1495
|
} if (rf & 2) {
|
|
1479
1496
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -1481,17 +1498,17 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_201_Templa
|
|
|
1481
1498
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.formattedModelSelection);
|
|
1482
1499
|
i0.ɵɵproperty("readonly", true)("language", "json")("lineWrapping", true);
|
|
1483
1500
|
} }
|
|
1484
|
-
function
|
|
1485
|
-
const
|
|
1486
|
-
i0.ɵɵelementStart(0, "div",
|
|
1501
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_207_Template(rf, ctx) { if (rf & 1) {
|
|
1502
|
+
const _r25 = i0.ɵɵgetCurrentView();
|
|
1503
|
+
i0.ɵɵelementStart(0, "div", 77)(1, "div", 120)(2, "h4", 141);
|
|
1487
1504
|
i0.ɵɵtext(3, "Error Details");
|
|
1488
1505
|
i0.ɵɵelementEnd();
|
|
1489
|
-
i0.ɵɵelementStart(4, "button",
|
|
1490
|
-
i0.ɵɵlistener("click", function
|
|
1491
|
-
i0.ɵɵelement(5, "i",
|
|
1506
|
+
i0.ɵɵelementStart(4, "button", 123);
|
|
1507
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_207_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r25); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openFullScreen(ctx_r1.formattedErrorDetails, "json", "Error Details")); });
|
|
1508
|
+
i0.ɵɵelement(5, "i", 124);
|
|
1492
1509
|
i0.ɵɵelementEnd()();
|
|
1493
|
-
i0.ɵɵelementStart(6, "div",
|
|
1494
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
1510
|
+
i0.ɵɵelementStart(6, "div", 174)(7, "mj-code-editor", 204);
|
|
1511
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_207_Template_mj_code_editor_ngModelChange_7_listener($event) { i0.ɵɵrestoreView(_r25); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.formattedErrorDetails, $event) || (ctx_r1.formattedErrorDetails = $event); return i0.ɵɵresetView($event); });
|
|
1495
1512
|
i0.ɵɵelementEnd()()();
|
|
1496
1513
|
} if (rf & 2) {
|
|
1497
1514
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -1509,237 +1526,251 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Template(rf, ctx) { if
|
|
|
1509
1526
|
i0.ɵɵelementStart(8, "div", 9)(9, "h1", 10);
|
|
1510
1527
|
i0.ɵɵtext(10, " Prompt Run ");
|
|
1511
1528
|
i0.ɵɵconditionalCreate(11, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_11_Template, 2, 1, "span", 11);
|
|
1529
|
+
i0.ɵɵelementStart(12, "span", 12);
|
|
1530
|
+
i0.ɵɵelement(13, "i", 13);
|
|
1531
|
+
i0.ɵɵtext(14);
|
|
1532
|
+
i0.ɵɵelementEnd()();
|
|
1533
|
+
i0.ɵɵelementStart(15, "div", 14)(16, "div", 15)(17, "div", 16);
|
|
1534
|
+
i0.ɵɵtext(18, "Status");
|
|
1512
1535
|
i0.ɵɵelementEnd();
|
|
1513
|
-
i0.ɵɵelementStart(
|
|
1514
|
-
i0.ɵɵ
|
|
1515
|
-
i0.ɵɵ
|
|
1516
|
-
i0.ɵɵelementStart(16, "div", 15);
|
|
1517
|
-
i0.ɵɵelement(17, "span", 16)(18, "i");
|
|
1518
|
-
i0.ɵɵtext(19);
|
|
1536
|
+
i0.ɵɵelementStart(19, "div", 17);
|
|
1537
|
+
i0.ɵɵelement(20, "span", 18)(21, "i");
|
|
1538
|
+
i0.ɵɵtext(22);
|
|
1519
1539
|
i0.ɵɵelementEnd()();
|
|
1520
|
-
i0.ɵɵconditionalCreate(
|
|
1521
|
-
i0.ɵɵconditionalCreate(
|
|
1522
|
-
i0.ɵɵconditionalCreate(
|
|
1523
|
-
i0.ɵɵconditionalCreate(
|
|
1540
|
+
i0.ɵɵconditionalCreate(23, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_23_Template, 6, 5, "div", 19);
|
|
1541
|
+
i0.ɵɵconditionalCreate(24, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_24_Template, 2, 1);
|
|
1542
|
+
i0.ɵɵconditionalCreate(25, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_25_Template, 8, 2, "div", 20);
|
|
1543
|
+
i0.ɵɵconditionalCreate(26, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_26_Template, 4, 0, "span", 21);
|
|
1524
1544
|
i0.ɵɵelementEnd()()();
|
|
1525
|
-
i0.ɵɵelementStart(
|
|
1526
|
-
i0.ɵɵlistener("click", function
|
|
1527
|
-
i0.ɵɵelement(26, "i", 22);
|
|
1528
|
-
i0.ɵɵtext(27, " Re-Run ");
|
|
1529
|
-
i0.ɵɵelementEnd();
|
|
1530
|
-
i0.ɵɵelementStart(28, "button", 23);
|
|
1531
|
-
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Template_button_click_28_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.refreshData()); });
|
|
1545
|
+
i0.ɵɵelementStart(27, "div", 22)(28, "button", 23);
|
|
1546
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Template_button_click_28_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.reRunPrompt()); });
|
|
1532
1547
|
i0.ɵɵelement(29, "i", 24);
|
|
1548
|
+
i0.ɵɵtext(30, " Re-Run ");
|
|
1549
|
+
i0.ɵɵelementEnd();
|
|
1550
|
+
i0.ɵɵelementStart(31, "button", 25);
|
|
1551
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Template_button_click_31_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.refreshData()); });
|
|
1552
|
+
i0.ɵɵelement(32, "i", 26);
|
|
1533
1553
|
i0.ɵɵelementEnd()()();
|
|
1534
|
-
i0.ɵɵconditionalCreate(
|
|
1535
|
-
i0.ɵɵ
|
|
1536
|
-
i0.ɵɵ
|
|
1537
|
-
i0.ɵɵ
|
|
1538
|
-
i0.ɵɵ
|
|
1539
|
-
i0.ɵɵelementStart(
|
|
1540
|
-
i0.ɵɵ
|
|
1541
|
-
i0.ɵɵ
|
|
1542
|
-
i0.ɵɵelementStart(
|
|
1543
|
-
i0.ɵɵ
|
|
1544
|
-
i0.ɵɵ
|
|
1545
|
-
i0.ɵɵelementStart(
|
|
1546
|
-
i0.ɵɵ
|
|
1547
|
-
i0.ɵɵ
|
|
1548
|
-
i0.ɵɵ
|
|
1549
|
-
i0.ɵɵ
|
|
1550
|
-
i0.ɵɵ
|
|
1551
|
-
i0.ɵɵ
|
|
1552
|
-
i0.ɵɵelementStart(
|
|
1553
|
-
i0.ɵɵ
|
|
1554
|
-
i0.ɵɵ
|
|
1555
|
-
i0.ɵɵ
|
|
1556
|
-
i0.ɵɵ
|
|
1557
|
-
i0.ɵɵelementStart(
|
|
1558
|
-
i0.ɵɵtext(
|
|
1559
|
-
i0.ɵɵelementEnd();
|
|
1560
|
-
i0.ɵɵ
|
|
1561
|
-
i0.ɵɵ
|
|
1562
|
-
i0.ɵɵelementEnd();
|
|
1563
|
-
i0.ɵɵ
|
|
1564
|
-
i0.ɵɵ
|
|
1565
|
-
i0.ɵɵ
|
|
1566
|
-
i0.ɵɵ
|
|
1567
|
-
i0.ɵɵ
|
|
1568
|
-
i0.ɵɵelementStart(
|
|
1569
|
-
i0.ɵɵtext(
|
|
1570
|
-
i0.ɵɵelementEnd();
|
|
1571
|
-
i0.ɵɵ
|
|
1572
|
-
i0.ɵɵ
|
|
1573
|
-
i0.ɵɵ
|
|
1574
|
-
i0.ɵɵ
|
|
1575
|
-
i0.ɵɵ
|
|
1576
|
-
i0.ɵɵ
|
|
1577
|
-
i0.ɵɵ
|
|
1578
|
-
i0.ɵɵelementStart(
|
|
1579
|
-
i0.ɵɵtext(
|
|
1580
|
-
i0.ɵɵelementEnd();
|
|
1581
|
-
i0.ɵɵ
|
|
1582
|
-
i0.ɵɵ
|
|
1583
|
-
i0.ɵɵelementEnd();
|
|
1584
|
-
i0.ɵɵconditionalCreate(
|
|
1585
|
-
i0.ɵɵ
|
|
1586
|
-
i0.ɵɵ
|
|
1587
|
-
i0.ɵɵ
|
|
1588
|
-
i0.ɵɵ
|
|
1589
|
-
i0.ɵɵ
|
|
1590
|
-
i0.ɵɵelementStart(
|
|
1591
|
-
i0.ɵɵtext(
|
|
1592
|
-
i0.ɵɵelementEnd();
|
|
1593
|
-
i0.ɵɵ
|
|
1594
|
-
i0.ɵɵ
|
|
1595
|
-
i0.ɵɵelementEnd();
|
|
1596
|
-
i0.ɵɵconditionalCreate(
|
|
1597
|
-
i0.ɵɵconditionalCreate(
|
|
1598
|
-
i0.ɵɵ
|
|
1599
|
-
i0.ɵɵ
|
|
1600
|
-
i0.ɵɵ
|
|
1601
|
-
i0.ɵɵconditionalCreate(
|
|
1602
|
-
i0.ɵɵ
|
|
1554
|
+
i0.ɵɵconditionalCreate(33, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_33_Template, 38, 11)(34, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_34_Template, 24, 5, "div", 27);
|
|
1555
|
+
i0.ɵɵconditionalCreate(35, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_35_Template, 4, 2, "button", 28);
|
|
1556
|
+
i0.ɵɵelementEnd();
|
|
1557
|
+
i0.ɵɵelementStart(36, "div", 29)(37, "mj-accordion-sections", 30);
|
|
1558
|
+
i0.ɵɵlistener("ActiveKeyChange", function MJAIPromptRunFormComponentExtended_Conditional_0_Template_mj_accordion_sections_ActiveKeyChange_37_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.Phone.Pick($event)); });
|
|
1559
|
+
i0.ɵɵelementStart(38, "mj-accordion-panel", 31);
|
|
1560
|
+
i0.ɵɵlistener("ExpandedChange", function MJAIPromptRunFormComponentExtended_Conditional_0_Template_mj_accordion_panel_ExpandedChange_38_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onInputPanelToggle($event)); });
|
|
1561
|
+
i0.ɵɵtemplate(39, MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_39_Template, 4, 1, "ng-template", 32);
|
|
1562
|
+
i0.ɵɵelementStart(40, "div", 33);
|
|
1563
|
+
i0.ɵɵconditionalCreate(41, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_41_Template, 24, 12, "div", 34)(42, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_42_Template, 1, 0, "mj-empty-state", 35);
|
|
1564
|
+
i0.ɵɵelementEnd()();
|
|
1565
|
+
i0.ɵɵelementStart(43, "mj-accordion-panel", 36);
|
|
1566
|
+
i0.ɵɵlistener("ExpandedChange", function MJAIPromptRunFormComponentExtended_Conditional_0_Template_mj_accordion_panel_ExpandedChange_43_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onResultPanelToggle($event)); });
|
|
1567
|
+
i0.ɵɵtemplate(44, MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_44_Template, 5, 2, "ng-template", 32);
|
|
1568
|
+
i0.ɵɵelementStart(45, "div", 33);
|
|
1569
|
+
i0.ɵɵconditionalCreate(46, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_46_Template, 7, 1, "div", 37);
|
|
1570
|
+
i0.ɵɵconditionalCreate(47, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_47_Template, 8, 4, "div", 38)(48, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_48_Template, 2, 1, "mj-empty-state", 39);
|
|
1571
|
+
i0.ɵɵelementEnd()();
|
|
1572
|
+
i0.ɵɵelementStart(49, "mj-accordion-panel", 40);
|
|
1573
|
+
i0.ɵɵlistener("ExpandedChange", function MJAIPromptRunFormComponentExtended_Conditional_0_Template_mj_accordion_panel_ExpandedChange_49_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onMetricsPanelToggle($event)); });
|
|
1574
|
+
i0.ɵɵtemplate(50, MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_50_Template, 3, 0, "ng-template", 32);
|
|
1575
|
+
i0.ɵɵelementStart(51, "div", 33)(52, "div", 41)(53, "div", 42)(54, "div", 43);
|
|
1576
|
+
i0.ɵɵelement(55, "i", 44);
|
|
1577
|
+
i0.ɵɵelementStart(56, "h4");
|
|
1578
|
+
i0.ɵɵtext(57, "Prompt Tokens");
|
|
1579
|
+
i0.ɵɵelementEnd()();
|
|
1580
|
+
i0.ɵɵelementStart(58, "div", 45);
|
|
1581
|
+
i0.ɵɵtext(59);
|
|
1582
|
+
i0.ɵɵelementEnd();
|
|
1583
|
+
i0.ɵɵconditionalCreate(60, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_60_Template, 3, 1, "div", 46);
|
|
1584
|
+
i0.ɵɵconditionalCreate(61, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_61_Template, 3, 1, "div", 46);
|
|
1585
|
+
i0.ɵɵelementEnd();
|
|
1586
|
+
i0.ɵɵelementStart(62, "div", 42)(63, "div", 43);
|
|
1587
|
+
i0.ɵɵelement(64, "i", 47);
|
|
1588
|
+
i0.ɵɵelementStart(65, "h4");
|
|
1589
|
+
i0.ɵɵtext(66, "Completion Tokens");
|
|
1590
|
+
i0.ɵɵelementEnd()();
|
|
1591
|
+
i0.ɵɵelementStart(67, "div", 48);
|
|
1592
|
+
i0.ɵɵtext(68);
|
|
1593
|
+
i0.ɵɵelementEnd();
|
|
1594
|
+
i0.ɵɵconditionalCreate(69, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_69_Template, 3, 1, "div", 46);
|
|
1595
|
+
i0.ɵɵelementEnd();
|
|
1596
|
+
i0.ɵɵelementStart(70, "div", 42)(71, "div", 43);
|
|
1597
|
+
i0.ɵɵelement(72, "i", 49);
|
|
1598
|
+
i0.ɵɵelementStart(73, "h4");
|
|
1599
|
+
i0.ɵɵtext(74, "Total Tokens");
|
|
1600
|
+
i0.ɵɵelementEnd()();
|
|
1601
|
+
i0.ɵɵelementStart(75, "div", 50);
|
|
1602
|
+
i0.ɵɵtext(76);
|
|
1603
|
+
i0.ɵɵelementEnd();
|
|
1604
|
+
i0.ɵɵconditionalCreate(77, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_77_Template, 3, 1, "div", 46);
|
|
1605
|
+
i0.ɵɵconditionalCreate(78, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_78_Template, 3, 1, "div", 46);
|
|
1606
|
+
i0.ɵɵelementEnd();
|
|
1607
|
+
i0.ɵɵconditionalCreate(79, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_79_Template, 9, 3, "div", 42);
|
|
1608
|
+
i0.ɵɵelementStart(80, "div", 42)(81, "div", 43);
|
|
1609
|
+
i0.ɵɵelement(82, "i", 51);
|
|
1610
|
+
i0.ɵɵelementStart(83, "h4");
|
|
1611
|
+
i0.ɵɵtext(84, "Cost");
|
|
1612
|
+
i0.ɵɵelementEnd()();
|
|
1613
|
+
i0.ɵɵelementStart(85, "div", 48);
|
|
1614
|
+
i0.ɵɵtext(86);
|
|
1615
|
+
i0.ɵɵelementEnd();
|
|
1616
|
+
i0.ɵɵconditionalCreate(87, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_87_Template, 3, 1, "div", 46);
|
|
1617
|
+
i0.ɵɵconditionalCreate(88, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_88_Template, 2, 1, "div", 52);
|
|
1618
|
+
i0.ɵɵelementEnd();
|
|
1619
|
+
i0.ɵɵconditionalCreate(89, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_89_Template, 7, 1, "div", 42);
|
|
1620
|
+
i0.ɵɵconditionalCreate(90, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Template, 7, 1, "div", 42);
|
|
1621
|
+
i0.ɵɵconditionalCreate(91, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_91_Template, 7, 1, "div", 42);
|
|
1622
|
+
i0.ɵɵelementEnd();
|
|
1623
|
+
i0.ɵɵelementStart(92, "div", 53);
|
|
1624
|
+
i0.ɵɵconditionalCreate(93, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_93_Template, 5, 1, "div", 54);
|
|
1625
|
+
i0.ɵɵconditionalCreate(94, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_94_Template, 6, 1, "div", 54);
|
|
1603
1626
|
i0.ɵɵelementEnd()()();
|
|
1604
|
-
i0.ɵɵconditionalCreate(
|
|
1605
|
-
i0.ɵɵconditionalCreate(
|
|
1606
|
-
i0.ɵɵelementStart(
|
|
1607
|
-
i0.ɵɵtemplate(
|
|
1608
|
-
i0.ɵɵelementStart(
|
|
1609
|
-
i0.ɵɵconditionalCreate(
|
|
1610
|
-
i0.ɵɵconditionalCreate(
|
|
1611
|
-
i0.ɵɵconditionalCreate(
|
|
1612
|
-
i0.ɵɵelementStart(
|
|
1613
|
-
i0.ɵɵtext(
|
|
1627
|
+
i0.ɵɵconditionalCreate(95, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_95_Template, 37, 18, "mj-accordion-panel", 55);
|
|
1628
|
+
i0.ɵɵconditionalCreate(96, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_96_Template, 5, 3, "mj-accordion-panel", 56);
|
|
1629
|
+
i0.ɵɵelementStart(97, "mj-accordion-panel", 57);
|
|
1630
|
+
i0.ɵɵtemplate(98, MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_98_Template, 3, 0, "ng-template", 32);
|
|
1631
|
+
i0.ɵɵelementStart(99, "div", 33)(100, "div", 58);
|
|
1632
|
+
i0.ɵɵconditionalCreate(101, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_101_Template, 7, 1, "div", 59);
|
|
1633
|
+
i0.ɵɵconditionalCreate(102, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_102_Template, 6, 3, "div", 59);
|
|
1634
|
+
i0.ɵɵconditionalCreate(103, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_103_Template, 6, 1, "div", 59);
|
|
1635
|
+
i0.ɵɵelementStart(104, "div", 59)(105, "label");
|
|
1636
|
+
i0.ɵɵtext(106, "Temperature");
|
|
1614
1637
|
i0.ɵɵelementEnd();
|
|
1615
|
-
i0.ɵɵelementStart(
|
|
1616
|
-
i0.ɵɵelement(
|
|
1617
|
-
i0.ɵɵtext(
|
|
1638
|
+
i0.ɵɵelementStart(107, "div", 60);
|
|
1639
|
+
i0.ɵɵelement(108, "i", 61);
|
|
1640
|
+
i0.ɵɵtext(109);
|
|
1618
1641
|
i0.ɵɵelementEnd()();
|
|
1619
|
-
i0.ɵɵelementStart(
|
|
1620
|
-
i0.ɵɵtext(
|
|
1642
|
+
i0.ɵɵelementStart(110, "div", 59)(111, "label");
|
|
1643
|
+
i0.ɵɵtext(112, "Top P");
|
|
1621
1644
|
i0.ɵɵelementEnd();
|
|
1622
|
-
i0.ɵɵelementStart(
|
|
1623
|
-
i0.ɵɵelement(
|
|
1624
|
-
i0.ɵɵtext(
|
|
1645
|
+
i0.ɵɵelementStart(113, "div", 60);
|
|
1646
|
+
i0.ɵɵelement(114, "i", 62);
|
|
1647
|
+
i0.ɵɵtext(115);
|
|
1625
1648
|
i0.ɵɵelementEnd()();
|
|
1626
|
-
i0.ɵɵelementStart(
|
|
1627
|
-
i0.ɵɵtext(
|
|
1649
|
+
i0.ɵɵelementStart(116, "div", 59)(117, "label");
|
|
1650
|
+
i0.ɵɵtext(118, "Top K");
|
|
1628
1651
|
i0.ɵɵelementEnd();
|
|
1629
|
-
i0.ɵɵelementStart(
|
|
1630
|
-
i0.ɵɵelement(
|
|
1631
|
-
i0.ɵɵtext(
|
|
1652
|
+
i0.ɵɵelementStart(119, "div", 60);
|
|
1653
|
+
i0.ɵɵelement(120, "i", 63);
|
|
1654
|
+
i0.ɵɵtext(121);
|
|
1632
1655
|
i0.ɵɵelementEnd()();
|
|
1633
|
-
i0.ɵɵelementStart(
|
|
1634
|
-
i0.ɵɵtext(
|
|
1656
|
+
i0.ɵɵelementStart(122, "div", 59)(123, "label");
|
|
1657
|
+
i0.ɵɵtext(124, "Min P");
|
|
1635
1658
|
i0.ɵɵelementEnd();
|
|
1636
|
-
i0.ɵɵelementStart(
|
|
1637
|
-
i0.ɵɵelement(
|
|
1638
|
-
i0.ɵɵtext(
|
|
1659
|
+
i0.ɵɵelementStart(125, "div", 60);
|
|
1660
|
+
i0.ɵɵelement(126, "i", 64);
|
|
1661
|
+
i0.ɵɵtext(127);
|
|
1639
1662
|
i0.ɵɵelementEnd()();
|
|
1640
|
-
i0.ɵɵelementStart(
|
|
1641
|
-
i0.ɵɵtext(
|
|
1663
|
+
i0.ɵɵelementStart(128, "div", 59)(129, "label");
|
|
1664
|
+
i0.ɵɵtext(130, "Frequency Penalty");
|
|
1642
1665
|
i0.ɵɵelementEnd();
|
|
1643
|
-
i0.ɵɵelementStart(
|
|
1644
|
-
i0.ɵɵelement(
|
|
1645
|
-
i0.ɵɵtext(
|
|
1666
|
+
i0.ɵɵelementStart(131, "div", 60);
|
|
1667
|
+
i0.ɵɵelement(132, "i", 65);
|
|
1668
|
+
i0.ɵɵtext(133);
|
|
1646
1669
|
i0.ɵɵelementEnd()();
|
|
1647
|
-
i0.ɵɵelementStart(
|
|
1648
|
-
i0.ɵɵtext(
|
|
1670
|
+
i0.ɵɵelementStart(134, "div", 59)(135, "label");
|
|
1671
|
+
i0.ɵɵtext(136, "Presence Penalty");
|
|
1649
1672
|
i0.ɵɵelementEnd();
|
|
1650
|
-
i0.ɵɵelementStart(
|
|
1651
|
-
i0.ɵɵelement(
|
|
1652
|
-
i0.ɵɵtext(
|
|
1673
|
+
i0.ɵɵelementStart(137, "div", 60);
|
|
1674
|
+
i0.ɵɵelement(138, "i", 66);
|
|
1675
|
+
i0.ɵɵtext(139);
|
|
1653
1676
|
i0.ɵɵelementEnd()();
|
|
1654
|
-
i0.ɵɵelementStart(
|
|
1655
|
-
i0.ɵɵtext(
|
|
1677
|
+
i0.ɵɵelementStart(140, "div", 59)(141, "label");
|
|
1678
|
+
i0.ɵɵtext(142, "Seed");
|
|
1656
1679
|
i0.ɵɵelementEnd();
|
|
1657
|
-
i0.ɵɵelementStart(
|
|
1658
|
-
i0.ɵɵelement(
|
|
1659
|
-
i0.ɵɵtext(
|
|
1680
|
+
i0.ɵɵelementStart(143, "div", 60);
|
|
1681
|
+
i0.ɵɵelement(144, "i", 67);
|
|
1682
|
+
i0.ɵɵtext(145);
|
|
1660
1683
|
i0.ɵɵelementEnd()();
|
|
1661
|
-
i0.ɵɵelementStart(
|
|
1662
|
-
i0.ɵɵtext(
|
|
1684
|
+
i0.ɵɵelementStart(146, "div", 59)(147, "label");
|
|
1685
|
+
i0.ɵɵtext(148, "Stop Sequences");
|
|
1663
1686
|
i0.ɵɵelementEnd();
|
|
1664
|
-
i0.ɵɵelementStart(
|
|
1665
|
-
i0.ɵɵelement(
|
|
1666
|
-
i0.ɵɵtext(
|
|
1687
|
+
i0.ɵɵelementStart(149, "div", 60);
|
|
1688
|
+
i0.ɵɵelement(150, "i", 68);
|
|
1689
|
+
i0.ɵɵtext(151);
|
|
1667
1690
|
i0.ɵɵelementEnd()();
|
|
1668
|
-
i0.ɵɵelementStart(
|
|
1669
|
-
i0.ɵɵtext(
|
|
1691
|
+
i0.ɵɵelementStart(152, "div", 59)(153, "label");
|
|
1692
|
+
i0.ɵɵtext(154, "Assistant Prefill");
|
|
1670
1693
|
i0.ɵɵelementEnd();
|
|
1671
|
-
i0.ɵɵelementStart(
|
|
1672
|
-
i0.ɵɵelement(
|
|
1673
|
-
i0.ɵɵtext(
|
|
1694
|
+
i0.ɵɵelementStart(155, "div", 60);
|
|
1695
|
+
i0.ɵɵelement(156, "i", 69);
|
|
1696
|
+
i0.ɵɵtext(157);
|
|
1674
1697
|
i0.ɵɵelementEnd()();
|
|
1675
|
-
i0.ɵɵconditionalCreate(
|
|
1676
|
-
i0.ɵɵconditionalCreate(
|
|
1698
|
+
i0.ɵɵconditionalCreate(158, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_158_Template, 7, 4, "div", 59);
|
|
1699
|
+
i0.ɵɵconditionalCreate(159, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_159_Template, 7, 4, "div", 59);
|
|
1677
1700
|
i0.ɵɵelementEnd()()();
|
|
1678
|
-
i0.ɵɵconditionalCreate(
|
|
1679
|
-
i0.ɵɵelementStart(
|
|
1680
|
-
i0.ɵɵlistener("ExpandedChange", function
|
|
1681
|
-
i0.ɵɵtemplate(
|
|
1682
|
-
i0.ɵɵelementStart(
|
|
1683
|
-
i0.ɵɵtext(
|
|
1701
|
+
i0.ɵɵconditionalCreate(160, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_160_Template, 11, 5, "mj-accordion-panel", 70);
|
|
1702
|
+
i0.ɵɵelementStart(161, "mj-accordion-panel", 71);
|
|
1703
|
+
i0.ɵɵlistener("ExpandedChange", function MJAIPromptRunFormComponentExtended_Conditional_0_Template_mj_accordion_panel_ExpandedChange_161_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onModelSelectionPanelToggle($event)); });
|
|
1704
|
+
i0.ɵɵtemplate(162, MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_162_Template, 5, 2, "ng-template", 32);
|
|
1705
|
+
i0.ɵɵelementStart(163, "div", 33)(164, "div", 58)(165, "div", 59)(166, "label");
|
|
1706
|
+
i0.ɵɵtext(167, "Status");
|
|
1684
1707
|
i0.ɵɵelementEnd();
|
|
1685
|
-
i0.ɵɵelementStart(
|
|
1686
|
-
i0.ɵɵelement(
|
|
1687
|
-
i0.ɵɵtext(
|
|
1708
|
+
i0.ɵɵelementStart(168, "div", 60);
|
|
1709
|
+
i0.ɵɵelement(169, "i", 72);
|
|
1710
|
+
i0.ɵɵtext(170);
|
|
1688
1711
|
i0.ɵɵelementEnd()();
|
|
1689
|
-
i0.ɵɵelementStart(
|
|
1690
|
-
i0.ɵɵtext(
|
|
1712
|
+
i0.ɵɵelementStart(171, "div", 59)(172, "label");
|
|
1713
|
+
i0.ɵɵtext(173, "Selection Strategy");
|
|
1691
1714
|
i0.ɵɵelementEnd();
|
|
1692
|
-
i0.ɵɵelementStart(
|
|
1693
|
-
i0.ɵɵelement(
|
|
1694
|
-
i0.ɵɵtext(
|
|
1715
|
+
i0.ɵɵelementStart(174, "div", 60);
|
|
1716
|
+
i0.ɵɵelement(175, "i", 73);
|
|
1717
|
+
i0.ɵɵtext(176);
|
|
1695
1718
|
i0.ɵɵelementEnd()();
|
|
1696
|
-
i0.ɵɵelementStart(
|
|
1697
|
-
i0.ɵɵtext(
|
|
1719
|
+
i0.ɵɵelementStart(177, "div", 59)(178, "label");
|
|
1720
|
+
i0.ɵɵtext(179, "Model Power Rank");
|
|
1698
1721
|
i0.ɵɵelementEnd();
|
|
1699
|
-
i0.ɵɵelementStart(
|
|
1700
|
-
i0.ɵɵelement(
|
|
1701
|
-
i0.ɵɵtext(
|
|
1722
|
+
i0.ɵɵelementStart(180, "div", 60);
|
|
1723
|
+
i0.ɵɵelement(181, "i", 74);
|
|
1724
|
+
i0.ɵɵtext(182);
|
|
1702
1725
|
i0.ɵɵelementEnd()();
|
|
1703
|
-
i0.ɵɵelementStart(
|
|
1704
|
-
i0.ɵɵtext(
|
|
1726
|
+
i0.ɵɵelementStart(183, "div", 59)(184, "label");
|
|
1727
|
+
i0.ɵɵtext(185, "Cache Hit");
|
|
1705
1728
|
i0.ɵɵelementEnd();
|
|
1706
|
-
i0.ɵɵelementStart(
|
|
1707
|
-
i0.ɵɵelement(
|
|
1708
|
-
i0.ɵɵtext(
|
|
1729
|
+
i0.ɵɵelementStart(186, "div", 60);
|
|
1730
|
+
i0.ɵɵelement(187, "i");
|
|
1731
|
+
i0.ɵɵtext(188);
|
|
1709
1732
|
i0.ɵɵelementEnd()();
|
|
1710
|
-
i0.ɵɵconditionalCreate(
|
|
1711
|
-
i0.ɵɵconditionalCreate(
|
|
1712
|
-
i0.ɵɵconditionalCreate(
|
|
1713
|
-
i0.ɵɵelementStart(
|
|
1714
|
-
i0.ɵɵtext(
|
|
1733
|
+
i0.ɵɵconditionalCreate(189, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_189_Template, 7, 1, "div", 75);
|
|
1734
|
+
i0.ɵɵconditionalCreate(190, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_190_Template, 7, 1, "div", 59);
|
|
1735
|
+
i0.ɵɵconditionalCreate(191, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_191_Template, 6, 1, "div", 59);
|
|
1736
|
+
i0.ɵɵelementStart(192, "div", 59)(193, "label");
|
|
1737
|
+
i0.ɵɵtext(194, "Was Selected Result");
|
|
1715
1738
|
i0.ɵɵelementEnd();
|
|
1716
|
-
i0.ɵɵelementStart(
|
|
1717
|
-
i0.ɵɵelement(
|
|
1718
|
-
i0.ɵɵtext(
|
|
1739
|
+
i0.ɵɵelementStart(195, "div", 60);
|
|
1740
|
+
i0.ɵɵelement(196, "i");
|
|
1741
|
+
i0.ɵɵtext(197);
|
|
1719
1742
|
i0.ɵɵelementEnd()();
|
|
1720
|
-
i0.ɵɵelementStart(
|
|
1721
|
-
i0.ɵɵtext(
|
|
1743
|
+
i0.ɵɵelementStart(198, "div", 59)(199, "label");
|
|
1744
|
+
i0.ɵɵtext(200, "Streaming Enabled");
|
|
1722
1745
|
i0.ɵɵelementEnd();
|
|
1723
|
-
i0.ɵɵelementStart(
|
|
1724
|
-
i0.ɵɵelement(
|
|
1725
|
-
i0.ɵɵtext(
|
|
1746
|
+
i0.ɵɵelementStart(201, "div", 60);
|
|
1747
|
+
i0.ɵɵelement(202, "i");
|
|
1748
|
+
i0.ɵɵtext(203);
|
|
1726
1749
|
i0.ɵɵelementEnd()();
|
|
1727
|
-
i0.ɵɵconditionalCreate(
|
|
1728
|
-
i0.ɵɵconditionalCreate(
|
|
1750
|
+
i0.ɵɵconditionalCreate(204, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_204_Template, 6, 1, "div", 59);
|
|
1751
|
+
i0.ɵɵconditionalCreate(205, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_205_Template, 7, 1);
|
|
1729
1752
|
i0.ɵɵelementEnd();
|
|
1730
|
-
i0.ɵɵconditionalCreate(
|
|
1731
|
-
i0.ɵɵconditionalCreate(
|
|
1732
|
-
i0.ɵɵelementEnd()()()()();
|
|
1753
|
+
i0.ɵɵconditionalCreate(206, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_206_Template, 8, 4, "div", 76);
|
|
1754
|
+
i0.ɵɵconditionalCreate(207, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_207_Template, 8, 4, "div", 77);
|
|
1755
|
+
i0.ɵɵelementEnd()()()()()();
|
|
1733
1756
|
} if (rf & 2) {
|
|
1734
1757
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
1735
1758
|
i0.ɵɵproperty("Record", ctx_r1.record)("FormComponent", ctx_r1)("ToolbarConfig", ctx_r1.toolbarConfig)("WidthMode", "full-width");
|
|
1736
|
-
i0.ɵɵadvance(
|
|
1759
|
+
i0.ɵɵadvance(3);
|
|
1760
|
+
i0.ɵɵclassProp("hero-view", !ctx_r1.EditMode)("hero-compact", !ctx_r1.EditMode && !ctx_r1.HeroDetailsOpen);
|
|
1761
|
+
i0.ɵɵadvance(3);
|
|
1737
1762
|
i0.ɵɵstyleProp("background-color", ctx_r1.getStatusColor() + "20");
|
|
1738
1763
|
i0.ɵɵadvance();
|
|
1739
1764
|
i0.ɵɵclassMap("fa-solid " + ctx_r1.getStatusIcon());
|
|
1740
1765
|
i0.ɵɵstyleProp("color", ctx_r1.getStatusColor());
|
|
1741
1766
|
i0.ɵɵadvance(4);
|
|
1742
1767
|
i0.ɵɵconditional(ctx_r1.record.ID ? 11 : -1);
|
|
1768
|
+
i0.ɵɵadvance();
|
|
1769
|
+
i0.ɵɵattribute("data-status", ctx_r1.StatusKind);
|
|
1770
|
+
i0.ɵɵadvance();
|
|
1771
|
+
i0.ɵɵclassMap("fa-solid " + ctx_r1.getStatusIcon());
|
|
1772
|
+
i0.ɵɵadvance();
|
|
1773
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.getStatusText(), " ");
|
|
1743
1774
|
i0.ɵɵadvance(6);
|
|
1744
1775
|
i0.ɵɵstyleProp("background-color", ctx_r1.getStatusColor());
|
|
1745
1776
|
i0.ɵɵadvance();
|
|
@@ -1748,73 +1779,77 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Template(rf, ctx) { if
|
|
|
1748
1779
|
i0.ɵɵadvance();
|
|
1749
1780
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.getStatusText(), " ");
|
|
1750
1781
|
i0.ɵɵadvance();
|
|
1751
|
-
i0.ɵɵconditional(ctx_r1.record.RunType ?
|
|
1782
|
+
i0.ɵɵconditional(ctx_r1.record.RunType ? 23 : -1);
|
|
1752
1783
|
i0.ɵɵadvance();
|
|
1753
|
-
i0.ɵɵconditional(ctx_r1.prompt ?
|
|
1784
|
+
i0.ɵɵconditional(ctx_r1.prompt ? 24 : -1);
|
|
1754
1785
|
i0.ɵɵadvance();
|
|
1755
|
-
i0.ɵɵconditional(ctx_r1.model ?
|
|
1786
|
+
i0.ɵɵconditional(ctx_r1.model ? 25 : -1);
|
|
1756
1787
|
i0.ɵɵadvance();
|
|
1757
|
-
i0.ɵɵconditional(ctx_r1.record.RerunFromPromptRunID ?
|
|
1788
|
+
i0.ɵɵconditional(ctx_r1.record.RerunFromPromptRunID ? 26 : -1);
|
|
1758
1789
|
i0.ɵɵadvance(7);
|
|
1759
|
-
i0.ɵɵconditional(ctx_r1.record.ConfigurationID ?
|
|
1760
|
-
i0.ɵɵadvance(
|
|
1790
|
+
i0.ɵɵconditional(ctx_r1.record.ConfigurationID ? 33 : 34);
|
|
1791
|
+
i0.ɵɵadvance(2);
|
|
1792
|
+
i0.ɵɵconditional(!ctx_r1.EditMode && ctx_r1.HeroSummary ? 35 : -1);
|
|
1793
|
+
i0.ɵɵadvance(2);
|
|
1794
|
+
i0.ɵɵproperty("Enabled", ctx_r1.Phone.IsPhone)("ActiveKey", ctx_r1.Phone.Section);
|
|
1795
|
+
i0.ɵɵadvance();
|
|
1761
1796
|
i0.ɵɵproperty("Expanded", ctx_r1.inputExpanded);
|
|
1762
1797
|
i0.ɵɵadvance(3);
|
|
1763
|
-
i0.ɵɵconditional(ctx_r1.record.Messages && ctx_r1.record.Messages.trim() !== "" ?
|
|
1798
|
+
i0.ɵɵconditional(ctx_r1.record.Messages && ctx_r1.record.Messages.trim() !== "" ? 41 : 42);
|
|
1764
1799
|
i0.ɵɵadvance(2);
|
|
1765
1800
|
i0.ɵɵproperty("Expanded", ctx_r1.resultExpanded);
|
|
1766
1801
|
i0.ɵɵadvance(3);
|
|
1767
|
-
i0.ɵɵconditional(ctx_r1.record.ErrorMessage ?
|
|
1802
|
+
i0.ɵɵconditional(ctx_r1.record.ErrorMessage ? 46 : -1);
|
|
1768
1803
|
i0.ɵɵadvance();
|
|
1769
|
-
i0.ɵɵconditional(ctx_r1.record.Result && ctx_r1.record.Result.trim() !== "" ?
|
|
1804
|
+
i0.ɵɵconditional(ctx_r1.record.Result && ctx_r1.record.Result.trim() !== "" ? 47 : !ctx_r1.record.ErrorMessage ? 48 : -1);
|
|
1770
1805
|
i0.ɵɵadvance(2);
|
|
1771
1806
|
i0.ɵɵproperty("Expanded", ctx_r1.metricsExpanded);
|
|
1772
1807
|
i0.ɵɵadvance(10);
|
|
1773
1808
|
i0.ɵɵtextInterpolate(ctx_r1.formatTokens(ctx_r1.FullPromptTokens));
|
|
1774
1809
|
i0.ɵɵadvance();
|
|
1775
|
-
i0.ɵɵconditional(ctx_r1.CachedTokens > 0 ?
|
|
1810
|
+
i0.ɵɵconditional(ctx_r1.CachedTokens > 0 ? 60 : -1);
|
|
1776
1811
|
i0.ɵɵadvance();
|
|
1777
|
-
i0.ɵɵconditional(ctx_r1.record.TokensPromptRollup && ctx_r1.record.TokensPromptRollup !== ctx_r1.record.TokensPrompt ?
|
|
1812
|
+
i0.ɵɵconditional(ctx_r1.record.TokensPromptRollup && ctx_r1.record.TokensPromptRollup !== ctx_r1.record.TokensPrompt ? 61 : -1);
|
|
1778
1813
|
i0.ɵɵadvance(7);
|
|
1779
1814
|
i0.ɵɵtextInterpolate(ctx_r1.formatTokens(ctx_r1.record.TokensCompletion));
|
|
1780
1815
|
i0.ɵɵadvance();
|
|
1781
|
-
i0.ɵɵconditional(ctx_r1.record.TokensCompletionRollup && ctx_r1.record.TokensCompletionRollup !== ctx_r1.record.TokensCompletion ?
|
|
1816
|
+
i0.ɵɵconditional(ctx_r1.record.TokensCompletionRollup && ctx_r1.record.TokensCompletionRollup !== ctx_r1.record.TokensCompletion ? 69 : -1);
|
|
1782
1817
|
i0.ɵɵadvance(7);
|
|
1783
1818
|
i0.ɵɵtextInterpolate(ctx_r1.formatTokens(ctx_r1.TotalTokensProcessed));
|
|
1784
1819
|
i0.ɵɵadvance();
|
|
1785
|
-
i0.ɵɵconditional(ctx_r1.CachedTokens > 0 ?
|
|
1820
|
+
i0.ɵɵconditional(ctx_r1.CachedTokens > 0 ? 77 : -1);
|
|
1786
1821
|
i0.ɵɵadvance();
|
|
1787
|
-
i0.ɵɵconditional(ctx_r1.record.TokensUsedRollup && ctx_r1.record.TokensUsedRollup !== ctx_r1.record.TokensUsed ?
|
|
1822
|
+
i0.ɵɵconditional(ctx_r1.record.TokensUsedRollup && ctx_r1.record.TokensUsedRollup !== ctx_r1.record.TokensUsed ? 78 : -1);
|
|
1788
1823
|
i0.ɵɵadvance();
|
|
1789
|
-
i0.ɵɵconditional(ctx_r1.record.TokensCacheRead != null || ctx_r1.record.TokensCacheWrite != null ?
|
|
1824
|
+
i0.ɵɵconditional(ctx_r1.record.TokensCacheRead != null || ctx_r1.record.TokensCacheWrite != null ? 79 : -1);
|
|
1790
1825
|
i0.ɵɵadvance(7);
|
|
1791
1826
|
i0.ɵɵtextInterpolate(ctx_r1.formatCost(ctx_r1.record.Cost));
|
|
1792
1827
|
i0.ɵɵadvance();
|
|
1793
|
-
i0.ɵɵconditional(ctx_r1.record.TotalCost && ctx_r1.record.TotalCost !== ctx_r1.record.Cost ?
|
|
1828
|
+
i0.ɵɵconditional(ctx_r1.record.TotalCost && ctx_r1.record.TotalCost !== ctx_r1.record.Cost ? 87 : -1);
|
|
1794
1829
|
i0.ɵɵadvance();
|
|
1795
|
-
i0.ɵɵconditional(ctx_r1.record.CostCurrency ?
|
|
1830
|
+
i0.ɵɵconditional(ctx_r1.record.CostCurrency ? 88 : -1);
|
|
1796
1831
|
i0.ɵɵadvance();
|
|
1797
|
-
i0.ɵɵconditional(ctx_r1.record.QueueTime != null ?
|
|
1832
|
+
i0.ɵɵconditional(ctx_r1.record.QueueTime != null ? 89 : -1);
|
|
1798
1833
|
i0.ɵɵadvance();
|
|
1799
|
-
i0.ɵɵconditional(ctx_r1.record.PromptTime != null ?
|
|
1834
|
+
i0.ɵɵconditional(ctx_r1.record.PromptTime != null ? 90 : -1);
|
|
1800
1835
|
i0.ɵɵadvance();
|
|
1801
|
-
i0.ɵɵconditional(ctx_r1.record.CompletionTime != null ?
|
|
1836
|
+
i0.ɵɵconditional(ctx_r1.record.CompletionTime != null ? 91 : -1);
|
|
1802
1837
|
i0.ɵɵadvance(2);
|
|
1803
|
-
i0.ɵɵconditional(ctx_r1.record.ExecutionOrder !== null ?
|
|
1838
|
+
i0.ɵɵconditional(ctx_r1.record.ExecutionOrder !== null ? 93 : -1);
|
|
1804
1839
|
i0.ɵɵadvance();
|
|
1805
|
-
i0.ɵɵconditional(ctx_r1.record.AgentID ?
|
|
1840
|
+
i0.ɵɵconditional(ctx_r1.record.AgentID ? 94 : -1);
|
|
1806
1841
|
i0.ɵɵadvance();
|
|
1807
|
-
i0.ɵɵconditional(ctx_r1.record && (ctx_r1.record.ValidationAttemptCount && ctx_r1.record.ValidationAttemptCount > 0 || ctx_r1.record.ValidationBehavior) ?
|
|
1842
|
+
i0.ɵɵconditional(ctx_r1.record && (ctx_r1.record.ValidationAttemptCount && ctx_r1.record.ValidationAttemptCount > 0 || ctx_r1.record.ValidationBehavior) ? 95 : -1);
|
|
1808
1843
|
i0.ɵɵadvance();
|
|
1809
|
-
i0.ɵɵconditional(ctx_r1.record.ParentID || ctx_r1.childRuns.length > 0 ?
|
|
1844
|
+
i0.ɵɵconditional(ctx_r1.record.ParentID || ctx_r1.childRuns.length > 0 ? 96 : -1);
|
|
1810
1845
|
i0.ɵɵadvance();
|
|
1811
1846
|
i0.ɵɵproperty("Expanded", false);
|
|
1812
1847
|
i0.ɵɵadvance(4);
|
|
1813
|
-
i0.ɵɵconditional(ctx_r1.record.AgentID ?
|
|
1848
|
+
i0.ɵɵconditional(ctx_r1.record.AgentID ? 101 : -1);
|
|
1814
1849
|
i0.ɵɵadvance();
|
|
1815
|
-
i0.ɵɵconditional(ctx_r1.record.RunType ?
|
|
1850
|
+
i0.ɵɵconditional(ctx_r1.record.RunType ? 102 : -1);
|
|
1816
1851
|
i0.ɵɵadvance();
|
|
1817
|
-
i0.ɵɵconditional(ctx_r1.record.ResponseFormat ?
|
|
1852
|
+
i0.ɵɵconditional(ctx_r1.record.ResponseFormat ? 103 : -1);
|
|
1818
1853
|
i0.ɵɵadvance(4);
|
|
1819
1854
|
i0.ɵɵclassProp("null-value", ctx_r1.record.Temperature === null || ctx_r1.record.Temperature === undefined);
|
|
1820
1855
|
i0.ɵɵadvance(2);
|
|
@@ -1852,11 +1887,11 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Template(rf, ctx) { if
|
|
|
1852
1887
|
i0.ɵɵadvance(2);
|
|
1853
1888
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.AssistantPrefill || "\u2014", " ");
|
|
1854
1889
|
i0.ɵɵadvance();
|
|
1855
|
-
i0.ɵɵconditional(ctx_r1.record.RunAt ?
|
|
1890
|
+
i0.ɵɵconditional(ctx_r1.record.RunAt ? 158 : -1);
|
|
1856
1891
|
i0.ɵɵadvance();
|
|
1857
|
-
i0.ɵɵconditional(ctx_r1.record.CompletedAt ?
|
|
1892
|
+
i0.ɵɵconditional(ctx_r1.record.CompletedAt ? 159 : -1);
|
|
1858
1893
|
i0.ɵɵadvance();
|
|
1859
|
-
i0.ɵɵconditional(ctx_r1.record.ModelSpecificResponseDetails ?
|
|
1894
|
+
i0.ɵɵconditional(ctx_r1.record.ModelSpecificResponseDetails ? 160 : -1);
|
|
1860
1895
|
i0.ɵɵadvance();
|
|
1861
1896
|
i0.ɵɵproperty("Expanded", false);
|
|
1862
1897
|
i0.ɵɵadvance(9);
|
|
@@ -1872,11 +1907,11 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Template(rf, ctx) { if
|
|
|
1872
1907
|
i0.ɵɵadvance();
|
|
1873
1908
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.CacheHit ? "Yes" : "No", " ");
|
|
1874
1909
|
i0.ɵɵadvance();
|
|
1875
|
-
i0.ɵɵconditional(ctx_r1.record.CacheKey ?
|
|
1910
|
+
i0.ɵɵconditional(ctx_r1.record.CacheKey ? 189 : -1);
|
|
1876
1911
|
i0.ɵɵadvance();
|
|
1877
|
-
i0.ɵɵconditional(ctx_r1.record.JudgeID ?
|
|
1912
|
+
i0.ɵɵconditional(ctx_r1.record.JudgeID ? 190 : -1);
|
|
1878
1913
|
i0.ɵɵadvance();
|
|
1879
|
-
i0.ɵɵconditional(ctx_r1.record.JudgeScore !== null ?
|
|
1914
|
+
i0.ɵɵconditional(ctx_r1.record.JudgeScore !== null ? 191 : -1);
|
|
1880
1915
|
i0.ɵɵadvance(5);
|
|
1881
1916
|
i0.ɵɵclassMap(ctx_r1.record.WasSelectedResult ? "fa-solid fa-trophy" : "fa-solid fa-times");
|
|
1882
1917
|
i0.ɵɵadvance();
|
|
@@ -1886,36 +1921,36 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Template(rf, ctx) { if
|
|
|
1886
1921
|
i0.ɵɵadvance();
|
|
1887
1922
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.StreamingEnabled ? "Yes" : "No", " ");
|
|
1888
1923
|
i0.ɵɵadvance();
|
|
1889
|
-
i0.ɵɵconditional(ctx_r1.record.FirstTokenTime !== null ?
|
|
1924
|
+
i0.ɵɵconditional(ctx_r1.record.FirstTokenTime !== null ? 204 : -1);
|
|
1890
1925
|
i0.ɵɵadvance();
|
|
1891
|
-
i0.ɵɵconditional(ctx_r1.record.Cancelled ?
|
|
1926
|
+
i0.ɵɵconditional(ctx_r1.record.Cancelled ? 205 : -1);
|
|
1892
1927
|
i0.ɵɵadvance();
|
|
1893
|
-
i0.ɵɵconditional(ctx_r1.record.ModelSelection ?
|
|
1928
|
+
i0.ɵɵconditional(ctx_r1.record.ModelSelection ? 206 : -1);
|
|
1894
1929
|
i0.ɵɵadvance();
|
|
1895
|
-
i0.ɵɵconditional(ctx_r1.record.ErrorDetails ?
|
|
1930
|
+
i0.ɵɵconditional(ctx_r1.record.ErrorDetails ? 207 : -1);
|
|
1896
1931
|
} }
|
|
1897
1932
|
function MJAIPromptRunFormComponentExtended_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
1898
|
-
const
|
|
1899
|
-
i0.ɵɵelementStart(0, "div",
|
|
1900
|
-
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Template_div_click_0_listener() { i0.ɵɵrestoreView(
|
|
1901
|
-
i0.ɵɵelementStart(1, "div",
|
|
1933
|
+
const _r26 = i0.ɵɵgetCurrentView();
|
|
1934
|
+
i0.ɵɵelementStart(0, "div", 205);
|
|
1935
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r26); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeFullScreen()); });
|
|
1936
|
+
i0.ɵɵelementStart(1, "div", 206);
|
|
1902
1937
|
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Template_div_click_1_listener($event) { return $event.stopPropagation(); });
|
|
1903
|
-
i0.ɵɵelementStart(2, "div",
|
|
1904
|
-
i0.ɵɵelement(4, "i",
|
|
1938
|
+
i0.ɵɵelementStart(2, "div", 207)(3, "span", 208);
|
|
1939
|
+
i0.ɵɵelement(4, "i", 124);
|
|
1905
1940
|
i0.ɵɵtext(5);
|
|
1906
1941
|
i0.ɵɵelementEnd();
|
|
1907
|
-
i0.ɵɵelementStart(6, "div",
|
|
1908
|
-
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Template_button_click_7_listener() { i0.ɵɵrestoreView(
|
|
1909
|
-
i0.ɵɵelement(8, "i",
|
|
1942
|
+
i0.ɵɵelementStart(6, "div", 209)(7, "button", 210);
|
|
1943
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r26); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.copyToClipboard(ctx_r1.FullScreenContent, ctx_r1.FullScreenTitle)); });
|
|
1944
|
+
i0.ɵɵelement(8, "i", 122);
|
|
1910
1945
|
i0.ɵɵtext(9, " Copy ");
|
|
1911
1946
|
i0.ɵɵelementEnd();
|
|
1912
|
-
i0.ɵɵelementStart(10, "button",
|
|
1913
|
-
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Template_button_click_10_listener() { i0.ɵɵrestoreView(
|
|
1914
|
-
i0.ɵɵelement(11, "i",
|
|
1947
|
+
i0.ɵɵelementStart(10, "button", 211);
|
|
1948
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r26); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeFullScreen()); });
|
|
1949
|
+
i0.ɵɵelement(11, "i", 212);
|
|
1915
1950
|
i0.ɵɵtext(12, " Close ");
|
|
1916
1951
|
i0.ɵɵelementEnd()()();
|
|
1917
|
-
i0.ɵɵelementStart(13, "div",
|
|
1918
|
-
i0.ɵɵelement(14, "mj-code-editor",
|
|
1952
|
+
i0.ɵɵelementStart(13, "div", 213);
|
|
1953
|
+
i0.ɵɵelement(14, "mj-code-editor", 214);
|
|
1919
1954
|
i0.ɵɵelementEnd()()();
|
|
1920
1955
|
} if (rf & 2) {
|
|
1921
1956
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
@@ -1927,6 +1962,10 @@ function MJAIPromptRunFormComponentExtended_Conditional_1_Template(rf, ctx) { if
|
|
|
1927
1962
|
let MJAIPromptRunFormComponentExtended = class MJAIPromptRunFormComponentExtended extends MJAIPromptRunFormComponent {
|
|
1928
1963
|
constructor() {
|
|
1929
1964
|
super(...arguments);
|
|
1965
|
+
/** Phone width shows the stacked accordions as sections behind one picker (design call 7A). */
|
|
1966
|
+
this.Phone = new PhoneSectionsState(() => this.cdr.markForCheck());
|
|
1967
|
+
/** Phone hero (6A): whether the summary line is expanded to show the rest of the hero. */
|
|
1968
|
+
this.HeroDetailsOpen = false;
|
|
1930
1969
|
this.ToolbarConfig = CUSTOM_LAYOUT_TOOLBAR_CONFIG;
|
|
1931
1970
|
// Related entities
|
|
1932
1971
|
this.Prompt = null;
|
|
@@ -1980,6 +2019,20 @@ let MJAIPromptRunFormComponentExtended = class MJAIPromptRunFormComponentExtende
|
|
|
1980
2019
|
this.testHarnessWindowService = inject(TestHarnessWindowManagerService);
|
|
1981
2020
|
this.viewContainerRef = inject(ViewContainerRef);
|
|
1982
2021
|
}
|
|
2022
|
+
/** Toggles the phone hero between its compact identity row and the full hero. */
|
|
2023
|
+
ToggleHeroDetails() {
|
|
2024
|
+
this.HeroDetailsOpen = !this.HeroDetailsOpen;
|
|
2025
|
+
this.cdr.markForCheck();
|
|
2026
|
+
}
|
|
2027
|
+
/** The phone hero's one-line summary of what the compact hero leaves out. */
|
|
2028
|
+
get HeroSummary() {
|
|
2029
|
+
return JoinHeroSummary([
|
|
2030
|
+
this.record.RunType,
|
|
2031
|
+
this.record.ChildPrompt || this.Prompt?.Name,
|
|
2032
|
+
this.model?.Name,
|
|
2033
|
+
this.formatDuration(this.record.ExecutionTimeMS),
|
|
2034
|
+
]);
|
|
2035
|
+
}
|
|
1983
2036
|
/** @deprecated Use {@link ToolbarConfig}. */
|
|
1984
2037
|
get toolbarConfig() {
|
|
1985
2038
|
return this.ToolbarConfig;
|
|
@@ -2227,6 +2280,7 @@ let MJAIPromptRunFormComponentExtended = class MJAIPromptRunFormComponentExtende
|
|
|
2227
2280
|
}
|
|
2228
2281
|
ngOnDestroy() {
|
|
2229
2282
|
super.ngOnDestroy();
|
|
2283
|
+
this.Phone.Stop();
|
|
2230
2284
|
// Clean up any resources
|
|
2231
2285
|
// Currently no subscriptions or timers to clean up
|
|
2232
2286
|
// This is here for future use and to complete the lifecycle
|
|
@@ -2454,6 +2508,10 @@ let MJAIPromptRunFormComponentExtended = class MJAIPromptRunFormComponentExtende
|
|
|
2454
2508
|
return '#17a2b8'; // Blue (completed but no success flag)
|
|
2455
2509
|
}
|
|
2456
2510
|
}
|
|
2511
|
+
/** The phone status chip's kind, which picks its `--mj-status-*` tokens. */
|
|
2512
|
+
get StatusKind() {
|
|
2513
|
+
return RunStatusKind(!!this.record?.CompletedAt, this.record?.Success);
|
|
2514
|
+
}
|
|
2457
2515
|
/** @deprecated Use {@link GetStatusColor}. */
|
|
2458
2516
|
getStatusColor() {
|
|
2459
2517
|
return this.GetStatusColor();
|
|
@@ -2746,14 +2804,14 @@ let MJAIPromptRunFormComponentExtended = class MJAIPromptRunFormComponentExtende
|
|
|
2746
2804
|
// Don't auto-expand validation panel anymore - let user expand when needed
|
|
2747
2805
|
}
|
|
2748
2806
|
static { this.ɵfac = /*@__PURE__*/ (() => { let ɵMJAIPromptRunFormComponentExtended_BaseFactory; return function MJAIPromptRunFormComponentExtended_Factory(__ngFactoryType__) { return (ɵMJAIPromptRunFormComponentExtended_BaseFactory || (ɵMJAIPromptRunFormComponentExtended_BaseFactory = i0.ɵɵgetInheritedFactory(MJAIPromptRunFormComponentExtended)))(__ngFactoryType__ || MJAIPromptRunFormComponentExtended); }; })(); }
|
|
2749
|
-
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"], ["Size", "compact", "Icon", "fa-solid fa-comment-slash", "Title", "No input messages recorded"], [1, "error-message"], [1, "json-editor-container"], ["Size", "compact", "Icon", "fa-solid fa-inbox", "Title", "No result data recorded"], [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"], ["Size", "compact", "Icon", "fa-solid fa-comment-slash", "Title", "No chat messages found"], [3, "DataCapture", "DataShape", "DataCaptureNote"], ["Size", "compact", "Icon", "fa-solid fa-database", "Title", "No data object found"], [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-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, "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) {
|
|
2750
|
-
i0.ɵɵconditionalCreate(0, MJAIPromptRunFormComponentExtended_Conditional_0_Template,
|
|
2807
|
+
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", "phone-hero"], [1, "header-content"], [1, "run-overview"], [1, "run-icon-wrapper"], [1, "run-info"], [1, "run-title"], [1, "run-id"], [1, "phone-hero-only", "phone-hero-status"], ["aria-hidden", "true"], [1, "run-meta", "phone-hero-detail"], [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", "phone-hero-detail"], ["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", "phone-hero-detail", "phone-hero-stats"], ["type", "button", 1, "phone-hero-summary"], [1, "form-content", 2, "display", "flex", "flex-direction", "column", "flex", "1", "min-height", "0", "overflow-y", "auto"], [3, "ActiveKeyChange", "Enabled", "ActiveKey"], ["SectionKey", "input", "SectionTitle", "Input", "SectionIcon", "fa-solid fa-comment-dots", 2, "margin-bottom", "8px", 3, "ExpandedChange", "Expanded"], ["mjAccordionTitle", ""], [1, "panel-content"], [1, "nested-panels"], ["Size", "compact", "Icon", "fa-solid fa-comment-slash", "Title", "No input messages recorded"], ["SectionKey", "result", "SectionTitle", "Result", "SectionIcon", "fa-solid fa-square-check", 2, "margin-bottom", "8px", 3, "ExpandedChange", "Expanded"], [1, "error-message"], [1, "json-editor-container"], ["Size", "compact", "Icon", "fa-solid fa-inbox", "Title", "No result data recorded"], ["SectionKey", "metrics", "SectionTitle", "Token Usage & Metrics", "SectionIcon", "fa-solid fa-chart-line", 2, "margin-bottom", "8px", 3, "ExpandedChange", "Expanded"], [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"], ["SectionKey", "validation", "SectionTitle", "Validation & Retries", "SectionIcon", "fa-solid fa-shield-check", 2, "margin-bottom", "8px", 3, "Expanded"], ["SectionKey", "hierarchy", "SectionTitle", "Run Hierarchy", "SectionIcon", "fa-solid fa-sitemap", 2, "margin-bottom", "8px", 3, "Expanded"], ["SectionKey", "details", "SectionTitle", "Additional Details", "SectionIcon", "fa-solid fa-info-circle", 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"], ["SectionKey", "model-response", "SectionTitle", "Model Specific Response Details", "SectionIcon", "fa-solid fa-microchip", 2, "margin-bottom", "8px", 3, "Expanded"], ["SectionKey", "model-selection", "SectionTitle", "Model Selection & Performance", "SectionIcon", "fa-solid fa-microchip", 2, "margin-bottom", "8px", 3, "ExpandedChange", "Expanded"], [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"], ["type", "button", 1, "phone-hero-summary", 3, "click"], [1, "phone-hero-summary-text"], ["aria-hidden", "true", 1, "fa-solid", "fa-chevron-down"], [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"], ["Size", "compact", "Icon", "fa-solid fa-comment-slash", "Title", "No chat messages found"], [3, "DataCapture", "DataShape", "DataCaptureNote"], ["Size", "compact", "Icon", "fa-solid fa-database", "Title", "No data object found"], [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-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, "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"], ["SectionKey", "validation", "SectionTitle", "Validation & Retries", "SectionIcon", "fa-solid fa-shield-check", 2, "margin-bottom", "8px", 3, "ExpandedChange", "Expanded"], [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"], ["SectionKey", "model-response", "SectionTitle", "Model Specific Response Details", "SectionIcon", "fa-solid fa-microchip", 2, "margin-bottom", "8px", 3, "ExpandedChange", "Expanded"], ["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) {
|
|
2808
|
+
i0.ɵɵconditionalCreate(0, MJAIPromptRunFormComponentExtended_Conditional_0_Template, 208, 115, "mj-record-form-container", 1);
|
|
2751
2809
|
i0.ɵɵconditionalCreate(1, MJAIPromptRunFormComponentExtended_Conditional_1_Template, 15, 4, "div", 2);
|
|
2752
2810
|
} if (rf & 2) {
|
|
2753
2811
|
i0.ɵɵconditional(ctx.record ? 0 : -1);
|
|
2754
2812
|
i0.ɵɵadvance();
|
|
2755
2813
|
i0.ɵɵconditional(ctx.FullScreenContent ? 1 : -1);
|
|
2756
|
-
} }, dependencies: [i1.ɵNgNoValidate, i1.NgControlStatus, i1.NgControlStatusGroup, i1.NgModel, i1.NgForm, i2.MJEmptyStateComponent, i2.MJButtonDirective, i2.MJAccordionPanelComponent, i2.MJAccordionTitleDirective, i3.MjRecordFormContainerComponent, i4.CodeEditorComponent, i5.ChatMessageViewerComponent, i6.PromptRunDataCaptureNoteComponent, i7.DecimalPipe, i7.DatePipe], styles: ["\n[_nghost-%COMP%] {\n display: block;\n height: 100%;\n}\n\n.record-form-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n overflow: hidden;\n}\n\n.record-form[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0 !important;\n overflow: hidden;\n}\n\n.form-content[_ngcontent-%COMP%] {\n padding: 16px;\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n}\n\n\n.error-info[_ngcontent-%COMP%] {\n margin-top: 16px;\n padding: 16px;\n background-color: color-mix(in srgb, var(--mj-status-error) 5%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 20%, var(--mj-bg-surface));\n border-radius: 8px;\n}\n\n.finish-reason[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n color: var(--mj-status-error);\n font-size: 14px;\n}\n\n.error-details[_ngcontent-%COMP%] {\n margin-top: 12px;\n}\n\n.error-details[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n color: color-mix(in srgb, var(--mj-status-error) 80%, black);\n font-size: 14px;\n font-weight: 600;\n}\n\n.error-hint[_ngcontent-%COMP%] {\n margin: 0;\n color: color-mix(in srgb, var(--mj-status-error) 70%, black);\n font-size: 14px;\n font-style: italic;\n}\n\n\n.prompt-run-header[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n padding: 20px;\n margin-bottom: 0;\n}\n\n.header-content[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 20px;\n margin-bottom: 16px;\n}\n\n.run-overview[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 16px;\n flex: 1;\n}\n\n.run-icon-wrapper[_ngcontent-%COMP%] {\n width: 56px;\n height: 56px;\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.run-icon-wrapper[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 24px;\n}\n\n.run-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.run-title[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n font-size: 1.5em;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.run-id[_ngcontent-%COMP%] {\n font-size: 0.8em;\n color: var(--mj-text-muted);\n font-weight: 400;\n font-family: 'Courier New', monospace;\n}\n\n.run-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: stretch;\n gap: 10px;\n flex-wrap: wrap;\n}\n\n\n.meta-card[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n border-radius: 8px;\n overflow: hidden;\n border: 1px solid var(--mj-border-default);\n}\n\n.meta-card-body[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 7px;\n padding: 8px 12px;\n background: var(--mj-bg-surface-card);\n font-size: 0.82em;\n font-weight: 500;\n color: var(--mj-text-primary);\n white-space: nowrap;\n}\n\n.meta-card-body.clickable[_ngcontent-%COMP%] {\n cursor: pointer;\n transition: color 0.15s;\n}\n\n.meta-card-body.clickable[_ngcontent-%COMP%]:hover {\n color: var(--mj-brand-primary-hover);\n}\n\n\n.status-indicator[_ngcontent-%COMP%] {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n\n.prompt-card-c3[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n border-radius: 10px;\n overflow: hidden;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n}\n\n.c3-child-section[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 14px;\n font-size: 0.92em;\n font-weight: 600;\n color: var(--mj-text-primary);\n cursor: pointer;\n transition: color 0.15s;\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.c3-child-section[_ngcontent-%COMP%]:hover {\n color: var(--mj-brand-primary-hover);\n}\n\n.c3-child-section[_ngcontent-%COMP%] i.prompt-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 1rem;\n}\n\n.c3-divider[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 0 14px;\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.c3-line[_ngcontent-%COMP%] {\n flex: 1;\n height: 1px;\n background: var(--mj-border-default);\n}\n\n.c3-divider-label[_ngcontent-%COMP%] {\n font-size: 0.55rem;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.1em;\n color: var(--mj-text-disabled);\n white-space: nowrap;\n}\n\n.c3-parent-section[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 7px 14px 9px 14px;\n font-size: 0.76em;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: color 0.15s;\n border-left: 3px solid color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.c3-parent-section[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-secondary);\n}\n\n.c3-parent-section[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 0.75rem;\n}\n\n.c3-link-icon[_ngcontent-%COMP%] {\n margin-left: auto;\n font-size: 0.6rem !important;\n opacity: 0.4;\n}\n\n.c3-parent-section[_ngcontent-%COMP%]:hover .c3-link-icon[_ngcontent-%COMP%] {\n opacity: 0.8;\n}\n\n\n.model-card-c3[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n border-radius: 8px;\n overflow: hidden;\n border: 1px solid var(--mj-border-default);\n cursor: pointer;\n transition: border-color 0.15s;\n}\n\n.model-card-c3[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-border-strong);\n}\n\n.c3-card-label[_ngcontent-%COMP%] {\n font-size: 0.6rem;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.08em;\n padding: 4px 10px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.c3-card-body[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n padding: 8px 12px;\n background: var(--mj-bg-surface-card);\n font-size: 0.82em;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.c3-model-name[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.c3-model-name[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 0.9rem;\n}\n\n.c3-vendor-name[_ngcontent-%COMP%] {\n font-size: 0.72em;\n color: var(--mj-text-muted);\n font-weight: 400;\n padding-left: 22px;\n}\n\n.original-run[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n border-radius: 16px;\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n font-size: 0.85em;\n}\n\n.original-link[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n text-decoration: none;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.original-link[_ngcontent-%COMP%]:hover {\n color: color-mix(in srgb, var(--mj-status-error) 85%, black);\n text-decoration: underline;\n}\n\n.run-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n\n.metrics-bar[_ngcontent-%COMP%] {\n display: flex;\n gap: 24px;\n padding-top: 16px;\n border-top: 1px solid var(--mj-border-default);\n flex-wrap: wrap;\n}\n\n.metric-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.metric-item[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n font-size: 1.2em;\n color: var(--mj-text-muted);\n width: 24px;\n text-align: center;\n}\n\n.metric-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n\n.metric-label[_ngcontent-%COMP%] {\n font-size: 0.75em;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.metric-value[_ngcontent-%COMP%] {\n font-size: 1.1em;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.config-link[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n text-decoration: none;\n cursor: pointer;\n transition: color 0.2s;\n}\n\n.config-link[_ngcontent-%COMP%]:hover {\n color: color-mix(in srgb, var(--mj-brand-primary) 75%, black);\n text-decoration: underline;\n}\n\n\n.form-content[_ngcontent-%COMP%] {\n padding: 16px;\n}\n\n.panel-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n}\n\n\n.sub-panel-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 500;\n font-size: 0.95em;\n}\n\n.sub-panel-content[_ngcontent-%COMP%] {\n padding: 0;\n}\n\n\n.nested-panels[_ngcontent-%COMP%] mj-accordion-panel[_ngcontent-%COMP%] {\n margin-bottom: 8px;\n}\n\n\n.sub-panel-content[_ngcontent-%COMP%] mj-chat-message-viewer[_ngcontent-%COMP%] {\n display: block;\n min-height: 200px;\n max-height: 750px; \n height: auto;\n overflow: hidden;\n}\n\n\n.sub-expansion-panel[_ngcontent-%COMP%] {\n margin-bottom: 8px;\n}\n\n\n.sub-expansion-panel[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\n}\n\n.panel-badge[_ngcontent-%COMP%] {\n margin-left: auto;\n padding: 2px 8px;\n border-radius: 12px;\n background: var(--mj-border-default);\n color: var(--mj-text-secondary);\n font-size: 0.75em;\n font-weight: 500;\n}\n\n.panel-badge.error[_ngcontent-%COMP%] {\n background: var(--mj-status-error);\n color: var(--mj-text-inverse);\n}\n\n.panel-count[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-weight: 400;\n font-size: 0.9em;\n}\n\n.panel-content[_ngcontent-%COMP%] {\n padding: 20px;\n max-height: none !important;\n overflow: visible !important;\n}\n\n\n.json-editor-container[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\n}\n\n.json-toolbar[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n padding: 8px 12px;\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n justify-content: flex-end;\n}\n\n\n.error-message[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 6%, var(--mj-bg-surface));\n border: 1px solid var(--mj-status-error);\n border-radius: 6px;\n padding: 16px;\n display: flex;\n gap: 16px;\n margin-bottom: 16px;\n}\n\n.error-message[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 1.5em;\n color: var(--mj-status-error);\n flex-shrink: 0;\n}\n\n.error-content[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n color: var(--mj-status-error);\n font-size: 1em;\n}\n\n.error-content[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-text-secondary);\n}\n\n\n.loading-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 60px 40px;\n color: var(--mj-text-muted);\n}\n\n.loading-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 3em;\n margin-bottom: 16px;\n opacity: 0.6;\n color: var(--mj-brand-primary);\n}\n\n.loading-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 1.1em;\n}\n\n\n.metrics-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 20px;\n margin-bottom: 24px;\n}\n\n.metric-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 20px;\n}\n\n.metric-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 12px;\n}\n\n.metric-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 1.2em;\n color: var(--mj-text-muted);\n}\n\n.metric-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 0.9em;\n color: var(--mj-text-muted);\n font-weight: 500;\n}\n\n.metric-value.large[_ngcontent-%COMP%] {\n font-size: 1.8em;\n font-weight: 700;\n color: var(--mj-text-primary);\n}\n\n.metric-rollup[_ngcontent-%COMP%] {\n margin-top: 8px;\n font-size: 0.85em;\n color: var(--mj-text-muted);\n}\n\n.metric-currency[_ngcontent-%COMP%] {\n margin-top: 4px;\n font-size: 0.85em;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n}\n\n\n.additional-metrics[_ngcontent-%COMP%] {\n padding-top: 16px;\n}\n\n.metric-row[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 8px 0;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n}\n\n.metric-row[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.metric-row[_ngcontent-%COMP%] .metric-label[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-muted);\n}\n\n.metric-row[_ngcontent-%COMP%] .metric-value[_ngcontent-%COMP%] {\n font-weight: 400;\n color: var(--mj-text-primary);\n}\n\n.metric-row[_ngcontent-%COMP%] .metric-value.link[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: color 0.2s;\n}\n\n.metric-row[_ngcontent-%COMP%] .metric-value.link[_ngcontent-%COMP%]:hover {\n color: color-mix(in srgb, var(--mj-brand-primary) 75%, black);\n}\n\n\n.parent-run-section[_ngcontent-%COMP%], \n.child-runs-section[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.parent-run-section[_ngcontent-%COMP%]:last-child, \n.child-runs-section[_ngcontent-%COMP%]:last-child {\n margin-bottom: 0;\n}\n\n.parent-run-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%], \n.child-runs-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n font-size: 0.95em;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.runs-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.run-item[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 12px 16px;\n display: flex;\n align-items: center;\n gap: 12px;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.run-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default);\n border-color: var(--mj-border-strong);\n}\n\n.run-item.parent[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-brand-primary) 30%, var(--mj-bg-surface));\n}\n\n.run-item.parent[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 20%, var(--mj-bg-surface));\n}\n\n.run-item-icon[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.run-item-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.run-item-title[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-primary);\n margin-bottom: 4px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.execution-order[_ngcontent-%COMP%] {\n background: var(--mj-text-muted);\n color: var(--mj-text-inverse);\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 0.75em;\n font-weight: 600;\n}\n\n.run-item-type[_ngcontent-%COMP%] {\n font-size: 0.85em;\n color: var(--mj-text-muted);\n font-weight: 400;\n}\n\n.run-item-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n font-size: 0.85em;\n color: var(--mj-text-muted);\n}\n\n.run-item-meta[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.status-indicator[_ngcontent-%COMP%] {\n font-weight: 500;\n}\n\n.run-item[_ngcontent-%COMP%] > i[_ngcontent-%COMP%]:last-child {\n color: var(--mj-text-muted);\n font-size: 0.85em;\n}\n\n\n.detail-fields-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n gap: 24px;\n width: 100%;\n min-height: auto;\n overflow: visible;\n}\n\n.detail-field[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.detail-field[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: 0.85em;\n color: var(--mj-text-muted);\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.detail-value[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 1em;\n color: var(--mj-text-primary);\n padding: 10px 14px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n transition: all 0.2s;\n}\n\n.detail-value[_ngcontent-%COMP%] i[_ngcontent-%COMP%]:first-child {\n color: var(--mj-text-muted);\n font-size: 1.1em;\n width: 20px;\n text-align: center;\n}\n\n.detail-value.clickable[_ngcontent-%COMP%] {\n cursor: pointer;\n}\n\n.detail-value.clickable[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default);\n border-color: var(--mj-border-strong);\n color: var(--mj-brand-primary);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n}\n\n.detail-value.clickable[_ngcontent-%COMP%] i[_ngcontent-%COMP%]:last-child {\n margin-left: auto;\n font-size: 0.85em;\n opacity: 0.6;\n}\n\n.detail-value.clickable[_ngcontent-%COMP%]:hover i[_ngcontent-%COMP%]:last-child {\n opacity: 1;\n}\n\n.detail-value.null-value[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n font-style: italic;\n}\n\n.detail-value.null-value[_ngcontent-%COMP%] i[_ngcontent-%COMP%]:first-child {\n opacity: 0.5;\n}\n\n\nmj-accordion-panel[_ngcontent-%COMP%] {\n display: block;\n}\n\n\n.validation-summary[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.summary-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 16px;\n}\n\n.summary-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 1.1em;\n color: var(--mj-text-primary);\n}\n\n.validation-status[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 6px 16px;\n border-radius: 20px;\n font-weight: 500;\n font-size: 0.9em;\n}\n\n.validation-status.success[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 12%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.validation-status.failed[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 12%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.validation-metrics[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));\n gap: 12px;\n margin-bottom: 20px;\n}\n\n.metric-card.small[_ngcontent-%COMP%] {\n padding: 16px;\n text-align: center;\n}\n\n.metric-card.small[_ngcontent-%COMP%] .metric-label[_ngcontent-%COMP%] {\n font-size: 0.8em;\n margin-bottom: 8px;\n font-weight: 600;\n}\n\n.metric-card.small[_ngcontent-%COMP%] .metric-value[_ngcontent-%COMP%] {\n font-size: 1.4em;\n font-weight: 700;\n}\n\n.validation-error[_ngcontent-%COMP%], \n.common-error[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 6%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 18%, var(--mj-bg-surface));\n border-radius: 8px;\n padding: 16px;\n margin-bottom: 16px;\n}\n\n.validation-error[_ngcontent-%COMP%] h5[_ngcontent-%COMP%], \n.common-error[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n color: var(--mj-status-error);\n font-size: 0.95em;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.validation-error[_ngcontent-%COMP%] p[_ngcontent-%COMP%], \n.common-error[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-text-secondary);\n font-size: 0.9em;\n}\n\n.error-count[_ngcontent-%COMP%] {\n display: inline-block;\n margin-top: 8px;\n padding: 2px 8px;\n background: var(--mj-status-error);\n color: var(--mj-text-inverse);\n border-radius: 12px;\n font-size: 0.75em;\n font-weight: 500;\n}\n\n\n.retry-timeline[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.retry-timeline[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n font-size: 1em;\n color: var(--mj-text-secondary);\n}\n\n.timeline-info[_ngcontent-%COMP%] {\n display: flex;\n gap: 24px;\n flex-wrap: wrap;\n}\n\n.timeline-stat[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n color: var(--mj-text-muted);\n font-size: 0.9em;\n}\n\n.timeline-stat[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 1.1em;\n}\n\n\n.validation-attempts[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.validation-attempts[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n font-size: 1em;\n color: var(--mj-text-secondary);\n}\n\n.attempts-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.attempt-item[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 12px 16px;\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 16px;\n}\n\n.attempt-item.success[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 6%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-status-success) 18%, var(--mj-bg-surface));\n}\n\n.attempt-item.failed[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 6%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-status-error) 18%, var(--mj-bg-surface));\n}\n\n.attempt-number[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.attempt-item.success[_ngcontent-%COMP%] .attempt-number[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.attempt-item.failed[_ngcontent-%COMP%] .attempt-number[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n.attempt-details[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n font-size: 0.85em;\n}\n\n.attempt-time[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n.attempt-error[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n flex: 1 0 100%;\n}\n\n.output-length[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-style: italic;\n}\n\n\n.validation-json[_ngcontent-%COMP%] {\n margin-top: 24px;\n}\n\n.validation-json[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n font-size: 1em;\n color: var(--mj-text-secondary);\n}\n\n.json-viewer-container[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n}\n\n\n.panel-badge.success[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n}\n\n\n.fullscreen-overlay[_ngcontent-%COMP%] {\n position: fixed;\n inset: 0;\n z-index: 10000;\n background: var(--mj-bg-overlay, rgba(0, 0, 0, 0.6));\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 1.5rem;\n}\n\n.fullscreen-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n max-width: 95vw;\n max-height: 95vh;\n background: var(--mj-bg-surface);\n border-radius: 10px;\n border: 1px solid var(--mj-border-default);\n box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);\n overflow: hidden;\n}\n\n.fullscreen-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0.75rem 1rem;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.fullscreen-title[_ngcontent-%COMP%] {\n font-weight: 600;\n font-size: 0.9rem;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.fullscreen-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n}\n\n.fullscreen-actions[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.fullscreen-body[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n overflow: hidden;\n}\n\n.fullscreen-body[_ngcontent-%COMP%] mj-code-editor[_ngcontent-%COMP%] {\n display: block;\n height: 100%;\n}"], changeDetection: 0 }); }
|
|
2814
|
+
} }, dependencies: [i1.ɵNgNoValidate, i1.NgControlStatus, i1.NgControlStatusGroup, i1.NgModel, i1.NgForm, i2.MJEmptyStateComponent, i2.MJAccordionSectionsComponent, i2.MJButtonDirective, i2.MJAccordionPanelComponent, i2.MJAccordionTitleDirective, i3.MjRecordFormContainerComponent, i4.CodeEditorComponent, i5.ChatMessageViewerComponent, i6.PromptRunDataCaptureNoteComponent, i7.DecimalPipe, i7.DatePipe], styles: ["\n[_nghost-%COMP%] {\n display: block;\n height: 100%;\n}\n\n.record-form-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n overflow: hidden;\n}\n\n.record-form[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0 !important;\n overflow: hidden;\n}\n\n.form-content[_ngcontent-%COMP%] {\n padding: 16px;\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n}\n\n\n.error-info[_ngcontent-%COMP%] {\n margin-top: 16px;\n padding: 16px;\n background-color: color-mix(in srgb, var(--mj-status-error) 5%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 20%, var(--mj-bg-surface));\n border-radius: 8px;\n}\n\n.finish-reason[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n color: var(--mj-status-error);\n font-size: 14px;\n}\n\n.error-details[_ngcontent-%COMP%] {\n margin-top: 12px;\n}\n\n.error-details[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n color: color-mix(in srgb, var(--mj-status-error) 80%, black);\n font-size: 14px;\n font-weight: 600;\n}\n\n.error-hint[_ngcontent-%COMP%] {\n margin: 0;\n color: color-mix(in srgb, var(--mj-status-error) 70%, black);\n font-size: 14px;\n font-style: italic;\n}\n\n\n.prompt-run-header[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n padding: 20px;\n margin-bottom: 0;\n}\n\n.header-content[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 20px;\n margin-bottom: 16px;\n}\n\n.run-overview[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 16px;\n flex: 1;\n min-width: 0; \n}\n\n.run-icon-wrapper[_ngcontent-%COMP%] {\n width: 56px;\n height: 56px;\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.run-icon-wrapper[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 24px;\n}\n\n.run-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.run-title[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n font-size: 1.5em;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.run-id[_ngcontent-%COMP%] {\n font-size: 0.8em;\n color: var(--mj-text-muted);\n font-weight: 400;\n font-family: 'Courier New', monospace;\n}\n\n.run-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: stretch;\n gap: 10px;\n flex-wrap: wrap;\n}\n\n\n.meta-card[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n border-radius: 8px;\n overflow: hidden;\n border: 1px solid var(--mj-border-default);\n}\n\n.meta-card-body[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 7px;\n padding: 8px 12px;\n background: var(--mj-bg-surface-card);\n font-size: 0.82em;\n font-weight: 500;\n color: var(--mj-text-primary);\n white-space: nowrap;\n}\n\n.meta-card-body.clickable[_ngcontent-%COMP%] {\n cursor: pointer;\n transition: color 0.15s;\n}\n\n.meta-card-body.clickable[_ngcontent-%COMP%]:hover {\n color: var(--mj-brand-primary-hover);\n}\n\n\n.status-indicator[_ngcontent-%COMP%] {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n\n.prompt-card-c3[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n border-radius: 10px;\n overflow: hidden;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n}\n\n.c3-child-section[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 14px;\n font-size: 0.92em;\n font-weight: 600;\n color: var(--mj-text-primary);\n cursor: pointer;\n transition: color 0.15s;\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.c3-child-section[_ngcontent-%COMP%]:hover {\n color: var(--mj-brand-primary-hover);\n}\n\n.c3-child-section[_ngcontent-%COMP%] i.prompt-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 1rem;\n}\n\n.c3-divider[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 0 14px;\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.c3-line[_ngcontent-%COMP%] {\n flex: 1;\n height: 1px;\n background: var(--mj-border-default);\n}\n\n.c3-divider-label[_ngcontent-%COMP%] {\n font-size: 0.55rem;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.1em;\n color: var(--mj-text-disabled);\n white-space: nowrap;\n}\n\n.c3-parent-section[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 7px 14px 9px 14px;\n font-size: 0.76em;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: color 0.15s;\n border-left: 3px solid color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.c3-parent-section[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-secondary);\n}\n\n.c3-parent-section[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 0.75rem;\n}\n\n.c3-link-icon[_ngcontent-%COMP%] {\n margin-left: auto;\n font-size: 0.6rem !important;\n opacity: 0.4;\n}\n\n.c3-parent-section[_ngcontent-%COMP%]:hover .c3-link-icon[_ngcontent-%COMP%] {\n opacity: 0.8;\n}\n\n\n.model-card-c3[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n border-radius: 8px;\n overflow: hidden;\n border: 1px solid var(--mj-border-default);\n cursor: pointer;\n transition: border-color 0.15s;\n}\n\n.model-card-c3[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-border-strong);\n}\n\n.c3-card-label[_ngcontent-%COMP%] {\n font-size: 0.6rem;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.08em;\n padding: 4px 10px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.c3-card-body[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n padding: 8px 12px;\n background: var(--mj-bg-surface-card);\n font-size: 0.82em;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.c3-model-name[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.c3-model-name[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 0.9rem;\n}\n\n.c3-vendor-name[_ngcontent-%COMP%] {\n font-size: 0.72em;\n color: var(--mj-text-muted);\n font-weight: 400;\n padding-left: 22px;\n}\n\n.original-run[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n border-radius: 16px;\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n font-size: 0.85em;\n}\n\n.original-link[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n text-decoration: none;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.original-link[_ngcontent-%COMP%]:hover {\n color: color-mix(in srgb, var(--mj-status-error) 85%, black);\n text-decoration: underline;\n}\n\n.run-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n\n.metrics-bar[_ngcontent-%COMP%] {\n display: flex;\n gap: 24px;\n padding-top: 16px;\n border-top: 1px solid var(--mj-border-default);\n flex-wrap: wrap;\n}\n\n.metric-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.metric-item[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n font-size: 1.2em;\n color: var(--mj-text-muted);\n width: 24px;\n text-align: center;\n}\n\n.metric-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n\n.metric-label[_ngcontent-%COMP%] {\n font-size: 0.75em;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.metric-value[_ngcontent-%COMP%] {\n font-size: 1.1em;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.config-link[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n text-decoration: none;\n cursor: pointer;\n transition: color 0.2s;\n}\n\n.config-link[_ngcontent-%COMP%]:hover {\n color: color-mix(in srgb, var(--mj-brand-primary) 75%, black);\n text-decoration: underline;\n}\n\n\n.form-content[_ngcontent-%COMP%] {\n padding: 16px;\n}\n\n\n\n\n.form-content[_ngcontent-%COMP%] mj-accordion-sections[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n\n.panel-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n}\n\n\n.sub-panel-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 500;\n font-size: 0.95em;\n}\n\n.sub-panel-content[_ngcontent-%COMP%] {\n padding: 0;\n}\n\n\n.nested-panels[_ngcontent-%COMP%] mj-accordion-panel[_ngcontent-%COMP%] {\n margin-bottom: 8px;\n}\n\n\n.sub-panel-content[_ngcontent-%COMP%] mj-chat-message-viewer[_ngcontent-%COMP%] {\n display: block;\n min-height: 200px;\n max-height: 750px; \n height: auto;\n overflow: hidden;\n}\n\n\n.sub-expansion-panel[_ngcontent-%COMP%] {\n margin-bottom: 8px;\n}\n\n\n.sub-expansion-panel[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\n}\n\n.panel-badge[_ngcontent-%COMP%] {\n margin-left: auto;\n padding: 2px 8px;\n border-radius: 12px;\n background: var(--mj-border-default);\n color: var(--mj-text-secondary);\n font-size: 0.75em;\n font-weight: 500;\n}\n\n.panel-badge.error[_ngcontent-%COMP%] {\n background: var(--mj-status-error);\n color: var(--mj-text-inverse);\n}\n\n.panel-count[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-weight: 400;\n font-size: 0.9em;\n}\n\n.panel-content[_ngcontent-%COMP%] {\n padding: 20px;\n max-height: none !important;\n overflow: visible !important;\n}\n\n\n.json-editor-container[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\n}\n\n.json-toolbar[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n padding: 8px 12px;\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n justify-content: flex-end;\n}\n\n\n.error-message[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 6%, var(--mj-bg-surface));\n border: 1px solid var(--mj-status-error);\n border-radius: 6px;\n padding: 16px;\n display: flex;\n gap: 16px;\n margin-bottom: 16px;\n}\n\n.error-message[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 1.5em;\n color: var(--mj-status-error);\n flex-shrink: 0;\n}\n\n.error-content[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n color: var(--mj-status-error);\n font-size: 1em;\n}\n\n.error-content[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-text-secondary);\n}\n\n\n.loading-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 60px 40px;\n color: var(--mj-text-muted);\n}\n\n.loading-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 3em;\n margin-bottom: 16px;\n opacity: 0.6;\n color: var(--mj-brand-primary);\n}\n\n.loading-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 1.1em;\n}\n\n\n.metrics-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 20px;\n margin-bottom: 24px;\n}\n\n.metric-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 20px;\n}\n\n.metric-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 12px;\n}\n\n.metric-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 1.2em;\n color: var(--mj-text-muted);\n}\n\n.metric-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 0.9em;\n color: var(--mj-text-muted);\n font-weight: 500;\n}\n\n.metric-value.large[_ngcontent-%COMP%] {\n font-size: 1.8em;\n font-weight: 700;\n color: var(--mj-text-primary);\n}\n\n.metric-rollup[_ngcontent-%COMP%] {\n margin-top: 8px;\n font-size: 0.85em;\n color: var(--mj-text-muted);\n}\n\n.metric-currency[_ngcontent-%COMP%] {\n margin-top: 4px;\n font-size: 0.85em;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n}\n\n\n.additional-metrics[_ngcontent-%COMP%] {\n padding-top: 16px;\n}\n\n.metric-row[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 8px 0;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n}\n\n.metric-row[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.metric-row[_ngcontent-%COMP%] .metric-label[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-muted);\n}\n\n.metric-row[_ngcontent-%COMP%] .metric-value[_ngcontent-%COMP%] {\n font-weight: 400;\n color: var(--mj-text-primary);\n}\n\n.metric-row[_ngcontent-%COMP%] .metric-value.link[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: color 0.2s;\n}\n\n.metric-row[_ngcontent-%COMP%] .metric-value.link[_ngcontent-%COMP%]:hover {\n color: color-mix(in srgb, var(--mj-brand-primary) 75%, black);\n}\n\n\n.parent-run-section[_ngcontent-%COMP%], \n.child-runs-section[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.parent-run-section[_ngcontent-%COMP%]:last-child, \n.child-runs-section[_ngcontent-%COMP%]:last-child {\n margin-bottom: 0;\n}\n\n.parent-run-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%], \n.child-runs-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n font-size: 0.95em;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.runs-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.run-item[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 12px 16px;\n display: flex;\n align-items: center;\n gap: 12px;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.run-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default);\n border-color: var(--mj-border-strong);\n}\n\n.run-item.parent[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-brand-primary) 30%, var(--mj-bg-surface));\n}\n\n.run-item.parent[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 20%, var(--mj-bg-surface));\n}\n\n.run-item-icon[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.run-item-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.run-item-title[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-primary);\n margin-bottom: 4px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.execution-order[_ngcontent-%COMP%] {\n background: var(--mj-text-muted);\n color: var(--mj-text-inverse);\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 0.75em;\n font-weight: 600;\n}\n\n.run-item-type[_ngcontent-%COMP%] {\n font-size: 0.85em;\n color: var(--mj-text-muted);\n font-weight: 400;\n}\n\n.run-item-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n font-size: 0.85em;\n color: var(--mj-text-muted);\n}\n\n.run-item-meta[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.status-indicator[_ngcontent-%COMP%] {\n font-weight: 500;\n}\n\n.run-item[_ngcontent-%COMP%] > i[_ngcontent-%COMP%]:last-child {\n color: var(--mj-text-muted);\n font-size: 0.85em;\n}\n\n\n.detail-fields-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n gap: 24px;\n width: 100%;\n min-height: auto;\n overflow: visible;\n}\n\n.detail-field[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.detail-field[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: 0.85em;\n color: var(--mj-text-muted);\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.detail-value[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 1em;\n color: var(--mj-text-primary);\n padding: 10px 14px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n transition: all 0.2s;\n}\n\n.detail-value[_ngcontent-%COMP%] i[_ngcontent-%COMP%]:first-child {\n color: var(--mj-text-muted);\n font-size: 1.1em;\n width: 20px;\n text-align: center;\n}\n\n.detail-value.clickable[_ngcontent-%COMP%] {\n cursor: pointer;\n}\n\n.detail-value.clickable[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default);\n border-color: var(--mj-border-strong);\n color: var(--mj-brand-primary);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n}\n\n.detail-value.clickable[_ngcontent-%COMP%] i[_ngcontent-%COMP%]:last-child {\n margin-left: auto;\n font-size: 0.85em;\n opacity: 0.6;\n}\n\n.detail-value.clickable[_ngcontent-%COMP%]:hover i[_ngcontent-%COMP%]:last-child {\n opacity: 1;\n}\n\n.detail-value.null-value[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n font-style: italic;\n}\n\n.detail-value.null-value[_ngcontent-%COMP%] i[_ngcontent-%COMP%]:first-child {\n opacity: 0.5;\n}\n\n\nmj-accordion-panel[_ngcontent-%COMP%] {\n display: block;\n}\n\n\n.validation-summary[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.summary-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 16px;\n}\n\n.summary-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 1.1em;\n color: var(--mj-text-primary);\n}\n\n.validation-status[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 6px 16px;\n border-radius: 20px;\n font-weight: 500;\n font-size: 0.9em;\n}\n\n.validation-status.success[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 12%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.validation-status.failed[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 12%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.validation-metrics[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));\n gap: 12px;\n margin-bottom: 20px;\n}\n\n.metric-card.small[_ngcontent-%COMP%] {\n padding: 16px;\n text-align: center;\n}\n\n.metric-card.small[_ngcontent-%COMP%] .metric-label[_ngcontent-%COMP%] {\n font-size: 0.8em;\n margin-bottom: 8px;\n font-weight: 600;\n}\n\n.metric-card.small[_ngcontent-%COMP%] .metric-value[_ngcontent-%COMP%] {\n font-size: 1.4em;\n font-weight: 700;\n}\n\n.validation-error[_ngcontent-%COMP%], \n.common-error[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 6%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 18%, var(--mj-bg-surface));\n border-radius: 8px;\n padding: 16px;\n margin-bottom: 16px;\n}\n\n.validation-error[_ngcontent-%COMP%] h5[_ngcontent-%COMP%], \n.common-error[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n color: var(--mj-status-error);\n font-size: 0.95em;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.validation-error[_ngcontent-%COMP%] p[_ngcontent-%COMP%], \n.common-error[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-text-secondary);\n font-size: 0.9em;\n}\n\n.error-count[_ngcontent-%COMP%] {\n display: inline-block;\n margin-top: 8px;\n padding: 2px 8px;\n background: var(--mj-status-error);\n color: var(--mj-text-inverse);\n border-radius: 12px;\n font-size: 0.75em;\n font-weight: 500;\n}\n\n\n.retry-timeline[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.retry-timeline[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n font-size: 1em;\n color: var(--mj-text-secondary);\n}\n\n.timeline-info[_ngcontent-%COMP%] {\n display: flex;\n gap: 24px;\n flex-wrap: wrap;\n}\n\n.timeline-stat[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n color: var(--mj-text-muted);\n font-size: 0.9em;\n}\n\n.timeline-stat[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 1.1em;\n}\n\n\n.validation-attempts[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.validation-attempts[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n font-size: 1em;\n color: var(--mj-text-secondary);\n}\n\n.attempts-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.attempt-item[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 12px 16px;\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 16px;\n}\n\n.attempt-item.success[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 6%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-status-success) 18%, var(--mj-bg-surface));\n}\n\n.attempt-item.failed[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 6%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-status-error) 18%, var(--mj-bg-surface));\n}\n\n.attempt-number[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.attempt-item.success[_ngcontent-%COMP%] .attempt-number[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.attempt-item.failed[_ngcontent-%COMP%] .attempt-number[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n.attempt-details[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n font-size: 0.85em;\n}\n\n.attempt-time[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n.attempt-error[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n flex: 1 0 100%;\n}\n\n.output-length[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-style: italic;\n}\n\n\n.validation-json[_ngcontent-%COMP%] {\n margin-top: 24px;\n}\n\n.validation-json[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n font-size: 1em;\n color: var(--mj-text-secondary);\n}\n\n.json-viewer-container[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n}\n\n\n.panel-badge.success[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n}\n\n\n.fullscreen-overlay[_ngcontent-%COMP%] {\n position: fixed;\n inset: 0;\n z-index: 10000;\n background: var(--mj-bg-overlay, rgba(0, 0, 0, 0.6));\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 1.5rem;\n}\n\n.fullscreen-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n max-width: 95vw;\n max-height: 95vh;\n background: var(--mj-bg-surface);\n border-radius: 10px;\n border: 1px solid var(--mj-border-default);\n box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);\n overflow: hidden;\n}\n\n.fullscreen-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0.75rem 1rem;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.fullscreen-title[_ngcontent-%COMP%] {\n font-weight: 600;\n font-size: 0.9rem;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.fullscreen-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n}\n\n.fullscreen-actions[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.fullscreen-body[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n overflow: hidden;\n}\n\n.fullscreen-body[_ngcontent-%COMP%] mj-code-editor[_ngcontent-%COMP%] {\n display: block;\n height: 100%;\n}\n\n\n@media (max-width: 768px) {\n .header-content[_ngcontent-%COMP%] {\n flex-wrap: wrap;\n }\n\n .run-actions[_ngcontent-%COMP%] {\n flex-basis: 100%;\n }\n}\n\n\n\n\n@media (max-width: 768px) {\n .run-overview[_ngcontent-%COMP%] {\n gap: 10px;\n }\n\n .run-icon-wrapper[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n border-radius: 10px;\n }\n\n .run-title[_ngcontent-%COMP%] {\n flex-wrap: wrap;\n row-gap: 4px;\n font-size: 1.15em;\n }\n\n .form-content[_ngcontent-%COMP%] {\n padding: 12px;\n }\n\n .form-content[_ngcontent-%COMP%] .panel-content[_ngcontent-%COMP%] {\n padding: 0;\n }\n}", "\n\n\n\n\n\n\n\n\n\n\n\n\n\n.phone-hero-summary[_ngcontent-%COMP%], \n.phone-hero-only[_ngcontent-%COMP%] {\n display: none;\n}\n\n@media (max-width: 768px) {\n .phone-hero[_ngcontent-%COMP%] {\n padding: 12px !important;\n }\n\n \n .phone-hero.hero-compact[_ngcontent-%COMP%] .phone-hero-detail[_ngcontent-%COMP%], \n .phone-hero.hero-view[_ngcontent-%COMP%] .phone-hero-hide[_ngcontent-%COMP%] {\n display: none !important;\n }\n\n .phone-hero-only[_ngcontent-%COMP%] {\n display: inline-flex;\n }\n\n \n .phone-hero[_ngcontent-%COMP%] .phone-hero-stats[_ngcontent-%COMP%] {\n display: grid !important;\n grid-template-columns: repeat(2, minmax(0, 1fr));\n gap: 8px;\n }\n\n .phone-hero-status[_ngcontent-%COMP%] {\n align-items: center;\n gap: 4px;\n margin-left: 8px;\n padding: 2px 8px;\n border-radius: var(--mj-radius-full, 999px);\n color: var(--mj-text-secondary);\n background: var(--mj-bg-surface-sunken);\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-semibold);\n vertical-align: middle;\n white-space: nowrap;\n }\n\n \n .phone-hero-status[data-status=\"running\"][_ngcontent-%COMP%] { color: var(--mj-status-warning-text); background: var(--mj-status-warning-bg); }\n .phone-hero-status[data-status=\"success\"][_ngcontent-%COMP%] { color: var(--mj-status-success-text); background: var(--mj-status-success-bg); }\n .phone-hero-status[data-status=\"error\"][_ngcontent-%COMP%] { color: var(--mj-status-error-text); background: var(--mj-status-error-bg); }\n .phone-hero-status[data-status=\"info\"][_ngcontent-%COMP%] { color: var(--mj-status-info-text); background: var(--mj-status-info-bg); }\n\n .phone-hero-top[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: stretch;\n gap: 10px;\n }\n\n .phone-hero-actions[_ngcontent-%COMP%] {\n width: 100%;\n }\n\n .phone-hero[_ngcontent-%COMP%] .phone-hero-run[_ngcontent-%COMP%] {\n width: 100%;\n min-height: 44px;\n justify-content: center;\n }\n\n \n\n .phone-hero-summary[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n min-height: 44px;\n margin-top: 8px;\n padding: 0 4px;\n border: 0;\n border-top: 1px solid color-mix(in srgb, currentColor 20%, transparent);\n background: transparent;\n color: inherit;\n font: inherit;\n font-size: var(--mj-text-sm);\n text-align: left;\n cursor: pointer;\n opacity: 0.85;\n }\n\n .phone-hero-summary[_ngcontent-%COMP%]:focus-visible {\n outline: none;\n box-shadow: var(--mj-focus-ring);\n }\n\n .phone-hero-summary-text[_ngcontent-%COMP%] {\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .phone-hero-summary[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n flex-shrink: 0;\n transition: transform 0.15s ease;\n }\n\n .phone-hero-summary[aria-expanded=\"true\"][_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n transform: rotate(180deg);\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .phone-hero-summary[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n transition: none;\n }\n}"], changeDetection: 0 }); }
|
|
2757
2815
|
};
|
|
2758
2816
|
MJAIPromptRunFormComponentExtended = __decorate([
|
|
2759
2817
|
RegisterClass(BaseFormComponent, 'MJ: AI Prompt Runs')
|
|
@@ -2761,7 +2819,7 @@ MJAIPromptRunFormComponentExtended = __decorate([
|
|
|
2761
2819
|
export { MJAIPromptRunFormComponentExtended };
|
|
2762
2820
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MJAIPromptRunFormComponentExtended, [{
|
|
2763
2821
|
type: Component,
|
|
2764
|
-
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 <mj-empty-state\n Size=\"compact\"\n Icon=\"fa-solid fa-comment-slash\"\n Title=\"No chat messages found\" />\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 <mj-prompt-run-data-capture-note [DataCapture]=\"DataCapture\" [DataShape]=\"DataShape\" [DataCaptureNote]=\"DataCaptureNote\" />\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 if (DataCapture !== 'None') {\n <mj-empty-state\n Size=\"compact\"\n Icon=\"fa-solid fa-database\"\n Title=\"No data object found\" />\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 <mj-empty-state\n Size=\"compact\"\n Icon=\"fa-solid fa-comment-slash\"\n Title=\"No input messages recorded\" />\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 <mj-empty-state\n Size=\"compact\"\n Icon=\"fa-solid fa-inbox\"\n Title=\"No result data recorded\">\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 </mj-empty-state>\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: var(--mj-text-inverse);\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/* 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: var(--mj-text-inverse);\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: var(--mj-text-inverse);\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: var(--mj-text-inverse);\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"] }]
|
|
2822
|
+
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 phone-hero\" [class.hero-view]=\"!EditMode\" [class.hero-compact]=\"!EditMode && !HeroDetailsOpen\">\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 <span class=\"phone-hero-only phone-hero-status\" [attr.data-status]=\"StatusKind\">\n <i [class]=\"'fa-solid ' + getStatusIcon()\" aria-hidden=\"true\"></i>\n {{ getStatusText() }}\n </span>\n </h1>\n <div class=\"run-meta phone-hero-detail\">\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 phone-hero-detail\">\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 phone-hero-detail phone-hero-stats\">\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 phone-hero-detail phone-hero-stats\">\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 phone-hero-detail phone-hero-stats\">\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 @if (!EditMode && HeroSummary) {\n <button type=\"button\" class=\"phone-hero-summary\" [attr.aria-expanded]=\"HeroDetailsOpen\" (click)=\"ToggleHeroDetails()\">\n <span class=\"phone-hero-summary-text\">{{ HeroSummary }}</span>\n <i class=\"fa-solid fa-chevron-down\" aria-hidden=\"true\"></i>\n </button>\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 <!-- Phone: one section at a time behind a picker; desktop keeps the accordions -->\n <mj-accordion-sections [Enabled]=\"Phone.IsPhone\" [ActiveKey]=\"Phone.Section\" (ActiveKeyChange)=\"Phone.Pick($event)\">\n\n <!-- Input Panel with nested sub-panels -->\n <mj-accordion-panel SectionKey=\"input\" SectionTitle=\"Input\" SectionIcon=\"fa-solid fa-comment-dots\" [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 <mj-empty-state\n Size=\"compact\"\n Icon=\"fa-solid fa-comment-slash\"\n Title=\"No chat messages found\" />\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 <mj-prompt-run-data-capture-note [DataCapture]=\"DataCapture\" [DataShape]=\"DataShape\" [DataCaptureNote]=\"DataCaptureNote\" />\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 if (DataCapture !== 'None') {\n <mj-empty-state\n Size=\"compact\"\n Icon=\"fa-solid fa-database\"\n Title=\"No data object found\" />\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 <mj-empty-state\n Size=\"compact\"\n Icon=\"fa-solid fa-comment-slash\"\n Title=\"No input messages recorded\" />\n }\n </div>\n </mj-accordion-panel>\n\n <!-- Result Panel -->\n <mj-accordion-panel SectionKey=\"result\" SectionTitle=\"Result\" SectionIcon=\"fa-solid fa-square-check\" [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 <mj-empty-state\n Size=\"compact\"\n Icon=\"fa-solid fa-inbox\"\n Title=\"No result data recorded\">\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 </mj-empty-state>\n }\n </div>\n </mj-accordion-panel>\n\n <!-- Token Usage & Metrics Panel -->\n <mj-accordion-panel SectionKey=\"metrics\" SectionTitle=\"Token Usage & Metrics\" SectionIcon=\"fa-solid fa-chart-line\" [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 SectionKey=\"validation\" SectionTitle=\"Validation & Retries\" SectionIcon=\"fa-solid fa-shield-check\" [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 SectionKey=\"hierarchy\" SectionTitle=\"Run Hierarchy\" SectionIcon=\"fa-solid fa-sitemap\" [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 SectionKey=\"details\" SectionTitle=\"Additional Details\" SectionIcon=\"fa-solid fa-info-circle\" [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 SectionKey=\"model-response\" SectionTitle=\"Model Specific Response Details\" SectionIcon=\"fa-solid fa-microchip\" [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 SectionKey=\"model-selection\" SectionTitle=\"Model Selection & Performance\" SectionIcon=\"fa-solid fa-microchip\" [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 </mj-accordion-sections>\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 min-width: 0; /* a flex child; without this it cannot shrink below its title row */\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/* The panels sit inside mj-accordion-sections (the phone section picker's host). Keep them in a flex\n column on desktop too, as they were as direct flex children of .form-content: in a plain block their\n margins collapse and the gap between panels halves. */\n.form-content mj-accordion-sections {\n display: flex;\n flex-direction: column;\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: var(--mj-text-inverse);\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/* 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: var(--mj-text-inverse);\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: var(--mj-text-inverse);\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: var(--mj-text-inverse);\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\n/* Phone (375px): the Re-Run / Refresh row drops under the title instead of overflowing. */\n@media (max-width: 768px) {\n .header-content {\n flex-wrap: wrap;\n }\n\n .run-actions {\n flex-basis: 100%;\n }\n}\n\n/* Phone: sections sit at the page gutter; the desktop panel padding would indent them twice.\n The hero's title row (\"Prompt Run\", the id, the status chip) wraps at a phone size, beside\n a smaller icon. */\n@media (max-width: 768px) {\n .run-overview {\n gap: 10px;\n }\n\n .run-icon-wrapper {\n width: 40px;\n height: 40px;\n border-radius: 10px;\n }\n\n .run-title {\n flex-wrap: wrap;\n row-gap: 4px;\n font-size: 1.15em;\n }\n\n .form-content {\n padding: 12px;\n }\n\n .form-content .panel-content {\n padding: 0;\n }\n}\n", "/* ============================================\n PHONE HERO (design call 6A), shared by the custom forms that own a hero.\n Under 768px the hero keeps icon, name, status and the primary action. Anything tagged\n .phone-hero-detail hides while the hero is compact and comes back when the summary line is\n tapped. Edit mode is untouched: the host only gets .hero-compact / .hero-view in view mode.\n Host: .phone-hero [class.hero-view]=\"!EditMode\" [class.hero-compact]=\"!EditMode && !HeroDetailsOpen\"\n Tags: .phone-hero-detail hidden while compact\n .phone-hero-hide hidden in view mode (said elsewhere on the phone hero)\n .phone-hero-only shown only on phones\n .phone-hero-top a title + action row that stacks\n .phone-hero-actions / .phone-hero-run the primary action, full width at 44px\n .phone-hero-stats a metric row that reflows to a 2-up grid when the hero is expanded\n .phone-hero-status a status chip in the identity row (with .phone-hero-only)\n ============================================ */\n.phone-hero-summary,\n.phone-hero-only {\n display: none;\n}\n\n@media (max-width: 768px) {\n .phone-hero {\n padding: 12px !important;\n }\n\n /* !important: several heroes carry inline display/padding styles on these rows */\n .phone-hero.hero-compact .phone-hero-detail,\n .phone-hero.hero-view .phone-hero-hide {\n display: none !important;\n }\n\n .phone-hero-only {\n display: inline-flex;\n }\n\n /* Lower specificity than the compact rule above, so a compact hero still hides it */\n .phone-hero .phone-hero-stats {\n display: grid !important;\n grid-template-columns: repeat(2, minmax(0, 1fr));\n gap: 8px;\n }\n\n .phone-hero-status {\n align-items: center;\n gap: 4px;\n margin-left: 8px;\n padding: 2px 8px;\n border-radius: var(--mj-radius-full, 999px);\n color: var(--mj-text-secondary);\n background: var(--mj-bg-surface-sunken);\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-semibold);\n vertical-align: middle;\n white-space: nowrap;\n }\n\n /* data-status comes from RunStatusKind(); the -text / -bg pairs keep contrast in both themes */\n .phone-hero-status[data-status=\"running\"] { color: var(--mj-status-warning-text); background: var(--mj-status-warning-bg); }\n .phone-hero-status[data-status=\"success\"] { color: var(--mj-status-success-text); background: var(--mj-status-success-bg); }\n .phone-hero-status[data-status=\"error\"] { color: var(--mj-status-error-text); background: var(--mj-status-error-bg); }\n .phone-hero-status[data-status=\"info\"] { color: var(--mj-status-info-text); background: var(--mj-status-info-bg); }\n\n .phone-hero-top {\n flex-direction: column;\n align-items: stretch;\n gap: 10px;\n }\n\n .phone-hero-actions {\n width: 100%;\n }\n\n .phone-hero .phone-hero-run {\n width: 100%;\n min-height: 44px;\n justify-content: center;\n }\n\n /* Inherits the hero's text colour, so it reads on light heroes and on the brand-blue\n Queries hero alike; a muted token would be grey on blue. */\n .phone-hero-summary {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n min-height: 44px;\n margin-top: 8px;\n padding: 0 4px;\n border: 0;\n border-top: 1px solid color-mix(in srgb, currentColor 20%, transparent);\n background: transparent;\n color: inherit;\n font: inherit;\n font-size: var(--mj-text-sm);\n text-align: left;\n cursor: pointer;\n opacity: 0.85;\n }\n\n .phone-hero-summary:focus-visible {\n outline: none;\n box-shadow: var(--mj-focus-ring);\n }\n\n .phone-hero-summary-text {\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .phone-hero-summary > i {\n flex-shrink: 0;\n transition: transform 0.15s ease;\n }\n\n .phone-hero-summary[aria-expanded=\"true\"] > i {\n transform: rotate(180deg);\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .phone-hero-summary > i {\n transition: none;\n }\n}\n"] }]
|
|
2765
2823
|
}], null, null); })();
|
|
2766
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MJAIPromptRunFormComponentExtended, { className: "MJAIPromptRunFormComponentExtended", filePath: "src/lib/custom/AIPromptRuns/ai-prompt-run-form.component.ts", lineNumber:
|
|
2824
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MJAIPromptRunFormComponentExtended, { className: "MJAIPromptRunFormComponentExtended", filePath: "src/lib/custom/AIPromptRuns/ai-prompt-run-form.component.ts", lineNumber: 23 }); })();
|
|
2767
2825
|
//# sourceMappingURL=ai-prompt-run-form.component.js.map
|