@memberjunction/ng-core-entity-forms 5.43.0 → 5.44.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/__tests__/model-prediction.logic.test.d.ts +2 -0
- package/dist/__tests__/model-prediction.logic.test.d.ts.map +1 -0
- package/dist/__tests__/model-prediction.logic.test.js +140 -0
- package/dist/__tests__/model-prediction.logic.test.js.map +1 -0
- package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.js +79 -105
- package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.js +7 -10
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/add-action-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/add-action-dialog.component.js +46 -51
- package/dist/lib/custom/AIAgents/add-action-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts +2 -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 +300 -378
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js +22 -29
- package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/new-agent-dialog.component.js +15 -17
- package/dist/lib/custom/AIAgents/new-agent-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js +27 -34
- package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.d.ts +11 -0
- package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js +48 -47
- package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js +438 -454
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js.map +1 -1
- package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.js +48 -51
- package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.js.map +1 -1
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js +253 -282
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js.map +1 -1
- package/dist/lib/custom/Actions/action-execution-log-form.component.js +24 -33
- package/dist/lib/custom/Actions/action-execution-log-form.component.js.map +1 -1
- package/dist/lib/custom/Actions/action-form.component.js +263 -311
- package/dist/lib/custom/Actions/action-form.component.js.map +1 -1
- package/dist/lib/custom/Entities/entity-form.component.d.ts +6 -0
- package/dist/lib/custom/Entities/entity-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Entities/entity-form.component.js +475 -493
- package/dist/lib/custom/Entities/entity-form.component.js.map +1 -1
- package/dist/lib/custom/Lists/list-form.component.js +122 -173
- package/dist/lib/custom/Lists/list-form.component.js.map +1 -1
- package/dist/lib/custom/Queries/query-form.component.js +190 -248
- package/dist/lib/custom/Queries/query-form.component.js.map +1 -1
- package/dist/lib/custom/Queries/query-run-dialog.component.js +19 -23
- package/dist/lib/custom/Queries/query-run-dialog.component.js.map +1 -1
- package/dist/lib/custom/SearchScopes/searchscopeprovider-form.component.js +23 -24
- package/dist/lib/custom/SearchScopes/searchscopeprovider-form.component.js.map +1 -1
- package/dist/lib/custom/Templates/template-param-dialog.component.js +14 -23
- package/dist/lib/custom/Templates/template-param-dialog.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-form.component.js +100 -130
- package/dist/lib/custom/Tests/test-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-run-form.component.js +187 -205
- package/dist/lib/custom/Tests/test-run-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-suite-form.component.d.ts +8 -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 +412 -489
- package/dist/lib/custom/Tests/test-suite-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-suite-run-form.component.js +100 -126
- package/dist/lib/custom/Tests/test-suite-run-form.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js +166 -184
- package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.js +42 -61
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js +8 -17
- package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts +0 -2
- 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 +183 -188
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.component.d.ts +108 -0
- package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.component.d.ts.map +1 -0
- package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.component.js +665 -0
- package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.component.js.map +1 -0
- package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.model.d.ts +94 -0
- package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.model.d.ts.map +1 -0
- package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.model.js +257 -0
- package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.model.js.map +1 -0
- package/dist/lib/custom/ai-agent-run/flow/constellation.component.d.ts +38 -0
- package/dist/lib/custom/ai-agent-run/flow/constellation.component.d.ts.map +1 -0
- package/dist/lib/custom/ai-agent-run/flow/constellation.component.js +200 -0
- package/dist/lib/custom/ai-agent-run/flow/constellation.component.js.map +1 -0
- package/dist/lib/custom/ai-agent-run/flow/flame-cascade.component.d.ts +44 -0
- package/dist/lib/custom/ai-agent-run/flow/flame-cascade.component.d.ts.map +1 -0
- package/dist/lib/custom/ai-agent-run/flow/flame-cascade.component.js +180 -0
- package/dist/lib/custom/ai-agent-run/flow/flame-cascade.component.js.map +1 -0
- package/dist/lib/custom/ai-agent-run/flow/flow-svg.util.d.ts +12 -0
- package/dist/lib/custom/ai-agent-run/flow/flow-svg.util.d.ts.map +1 -0
- package/dist/lib/custom/ai-agent-run/flow/flow-svg.util.js +46 -0
- package/dist/lib/custom/ai-agent-run/flow/flow-svg.util.js.map +1 -0
- package/dist/lib/custom/ai-agent-run/flow/flowchart.component.d.ts +64 -0
- package/dist/lib/custom/ai-agent-run/flow/flowchart.component.d.ts.map +1 -0
- package/dist/lib/custom/ai-agent-run/flow/flowchart.component.js +267 -0
- package/dist/lib/custom/ai-agent-run/flow/flowchart.component.js.map +1 -0
- package/dist/lib/custom/ai-agent-run/flow/pan-zoom.d.ts +53 -0
- package/dist/lib/custom/ai-agent-run/flow/pan-zoom.d.ts.map +1 -0
- package/dist/lib/custom/ai-agent-run/flow/pan-zoom.js +111 -0
- package/dist/lib/custom/ai-agent-run/flow/pan-zoom.js.map +1 -0
- package/dist/lib/custom/ai-agent-run/flow/subway-lines.component.d.ts +42 -0
- package/dist/lib/custom/ai-agent-run/flow/subway-lines.component.d.ts.map +1 -0
- package/dist/lib/custom/ai-agent-run/flow/subway-lines.component.js +193 -0
- package/dist/lib/custom/ai-agent-run/flow/subway-lines.component.js.map +1 -0
- package/dist/lib/custom/custom-forms.module.d.ts +58 -51
- package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
- package/dist/lib/custom/custom-forms.module.js +52 -13
- package/dist/lib/custom/custom-forms.module.js.map +1 -1
- package/dist/lib/custom/shared/entity-selector-dialog.component.d.ts +2 -0
- package/dist/lib/custom/shared/entity-selector-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/shared/entity-selector-dialog.component.js +25 -25
- package/dist/lib/custom/shared/entity-selector-dialog.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js +280 -216
- package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentChannel/mjaiagentchannel.form.component.js +25 -21
- package/dist/lib/generated/Entities/MJAIAgentChannel/mjaiagentchannel.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js +68 -14
- package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentSession/mjaiagentsession.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentSession/mjaiagentsession.form.component.js +44 -32
- package/dist/lib/generated/Entities/MJAIAgentSession/mjaiagentsession.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentSkill/mjaiagentskill.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJAIAgentSkill/mjaiagentskill.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJAIAgentSkill/mjaiagentskill.form.component.js +66 -0
- package/dist/lib/generated/Entities/MJAIAgentSkill/mjaiagentskill.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJAIPrompt/mjaiprompt.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIPrompt/mjaiprompt.form.component.js +55 -19
- package/dist/lib/generated/Entities/MJAIPrompt/mjaiprompt.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.js +28 -10
- package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAISkill/mjaiskill.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJAISkill/mjaiskill.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJAISkill/mjaiskill.form.component.js +167 -0
- package/dist/lib/generated/Entities/MJAISkill/mjaiskill.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJAISkillAction/mjaiskillaction.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJAISkillAction/mjaiskillaction.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJAISkillAction/mjaiskillaction.form.component.js +64 -0
- package/dist/lib/generated/Entities/MJAISkillAction/mjaiskillaction.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJAISkillPermission/mjaiskillpermission.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJAISkillPermission/mjaiskillpermission.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJAISkillPermission/mjaiskillpermission.form.component.js +82 -0
- package/dist/lib/generated/Entities/MJAISkillPermission/mjaiskillpermission.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJAISkillSubAgent/mjaiskillsubagent.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJAISkillSubAgent/mjaiskillsubagent.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJAISkillSubAgent/mjaiskillsubagent.form.component.js +64 -0
- package/dist/lib/generated/Entities/MJAISkillSubAgent/mjaiskillsubagent.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJAction/mjaction.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAction/mjaction.form.component.js +35 -17
- package/dist/lib/generated/Entities/MJAction/mjaction.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJApplication/mjapplication.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJApplication/mjapplication.form.component.js +59 -51
- package/dist/lib/generated/Entities/MJApplication/mjapplication.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJCollection/mjcollection.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJCollection/mjcollection.form.component.js +25 -7
- package/dist/lib/generated/Entities/MJCollection/mjcollection.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJCollectionArtifact/mjcollectionartifact.form.component.js +11 -7
- package/dist/lib/generated/Entities/MJCollectionArtifact/mjcollectionartifact.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.js +56 -46
- package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJConversationDetail/mjconversationdetail.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJConversationDetail/mjconversationdetail.form.component.js +73 -59
- package/dist/lib/generated/Entities/MJConversationDetail/mjconversationdetail.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJDuplicateRunDetailMatch/mjduplicaterundetailmatch.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJDuplicateRunDetailMatch/mjduplicaterundetailmatch.form.component.js +24 -4
- package/dist/lib/generated/Entities/MJDuplicateRunDetailMatch/mjduplicaterundetailmatch.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js +137 -87
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntityDocument/mjentitydocument.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJEntityDocument/mjentitydocument.form.component.js +47 -29
- package/dist/lib/generated/Entities/MJEntityDocument/mjentitydocument.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJExperiment/mjexperiment.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJExperiment/mjexperiment.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJExperiment/mjexperiment.form.component.js +99 -0
- package/dist/lib/generated/Entities/MJExperiment/mjexperiment.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJExperimentSession/mjexperimentsession.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJExperimentSession/mjexperimentsession.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJExperimentSession/mjexperimentsession.form.component.js +101 -0
- package/dist/lib/generated/Entities/MJExperimentSession/mjexperimentsession.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJExperimentSessionIteration/mjexperimentsessioniteration.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJExperimentSessionIteration/mjexperimentsessioniteration.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJExperimentSessionIteration/mjexperimentsessioniteration.form.component.js +115 -0
- package/dist/lib/generated/Entities/MJExperimentSessionIteration/mjexperimentsessioniteration.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 +63 -9
- 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 +32 -14
- package/dist/lib/generated/Entities/MJFileStorageProvider/mjfilestorageprovider.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJMLAlgorithm/mjmlalgorithm.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJMLAlgorithm/mjmlalgorithm.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJMLAlgorithm/mjmlalgorithm.form.component.js +161 -0
- package/dist/lib/generated/Entities/MJMLAlgorithm/mjmlalgorithm.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJMLAlgorithmUseCase/mjmlalgorithmusecase.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJMLAlgorithmUseCase/mjmlalgorithmusecase.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJMLAlgorithmUseCase/mjmlalgorithmusecase.form.component.js +89 -0
- package/dist/lib/generated/Entities/MJMLAlgorithmUseCase/mjmlalgorithmusecase.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJMLAlgorithmUseCaseRanking/mjmlalgorithmusecaseranking.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJMLAlgorithmUseCaseRanking/mjmlalgorithmusecaseranking.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJMLAlgorithmUseCaseRanking/mjmlalgorithmusecaseranking.form.component.js +76 -0
- package/dist/lib/generated/Entities/MJMLAlgorithmUseCaseRanking/mjmlalgorithmusecaseranking.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJMLModel/mjmlmodel.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJMLModel/mjmlmodel.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJMLModel/mjmlmodel.form.component.js +141 -0
- package/dist/lib/generated/Entities/MJMLModel/mjmlmodel.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJMLModelScoringBinding/mjmlmodelscoringbinding.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJMLModelScoringBinding/mjmlmodelscoringbinding.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJMLModelScoringBinding/mjmlmodelscoringbinding.form.component.js +88 -0
- package/dist/lib/generated/Entities/MJMLModelScoringBinding/mjmlmodelscoringbinding.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJMLTrainingPipeline/mjmltrainingpipeline.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJMLTrainingPipeline/mjmltrainingpipeline.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJMLTrainingPipeline/mjmltrainingpipeline.form.component.js +143 -0
- package/dist/lib/generated/Entities/MJMLTrainingPipeline/mjmltrainingpipeline.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJMLTrainingRun/mjmltrainingrun.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJMLTrainingRun/mjmltrainingrun.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJMLTrainingRun/mjmltrainingrun.form.component.js +110 -0
- package/dist/lib/generated/Entities/MJMLTrainingRun/mjmltrainingrun.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJOpenApp/mjopenapp.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJOpenApp/mjopenapp.form.component.js +54 -24
- package/dist/lib/generated/Entities/MJOpenApp/mjopenapp.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 +24 -6
- package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJRole/mjrole.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJRole/mjrole.form.component.js +36 -18
- package/dist/lib/generated/Entities/MJRole/mjrole.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJSchemaInfo/mjschemainfo.form.component.js +8 -6
- package/dist/lib/generated/Entities/MJSchemaInfo/mjschemainfo.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJScopedPromptPart/mjscopedpromptpart.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJScopedPromptPart/mjscopedpromptpart.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJScopedPromptPart/mjscopedpromptpart.form.component.js +78 -0
- package/dist/lib/generated/Entities/MJScopedPromptPart/mjscopedpromptpart.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js +145 -109
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js.map +1 -1
- package/dist/lib/generated/generated-forms.module.d.ts +356 -335
- package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
- package/dist/lib/generated/generated-forms.module.js +304 -226
- package/dist/lib/generated/generated-forms.module.js.map +1 -1
- package/dist/lib/panels/ai-agents/agent-realtime.panel.js +44 -44
- package/dist/lib/panels/ai-agents/agent-realtime.panel.js.map +1 -1
- package/dist/lib/panels/ai-skill-sharing/ai-skill-sharing-panel.component.d.ts +43 -0
- package/dist/lib/panels/ai-skill-sharing/ai-skill-sharing-panel.component.d.ts.map +1 -0
- package/dist/lib/panels/ai-skill-sharing/ai-skill-sharing-panel.component.js +240 -0
- package/dist/lib/panels/ai-skill-sharing/ai-skill-sharing-panel.component.js.map +1 -0
- package/dist/lib/panels/model-predictions/model-prediction.logic.d.ts +69 -0
- package/dist/lib/panels/model-predictions/model-prediction.logic.d.ts.map +1 -0
- package/dist/lib/panels/model-predictions/model-prediction.logic.js +130 -0
- package/dist/lib/panels/model-predictions/model-prediction.logic.js.map +1 -0
- package/dist/lib/panels/model-predictions/model-prediction.panel.d.ts +83 -0
- package/dist/lib/panels/model-predictions/model-prediction.panel.d.ts.map +1 -0
- package/dist/lib/panels/model-predictions/model-prediction.panel.js +293 -0
- package/dist/lib/panels/model-predictions/model-prediction.panel.js.map +1 -0
- package/package.json +38 -37
- package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.d.ts +0 -82
- package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.d.ts.map +0 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.js +0 -1033
- package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.js.map +0 -1
|
@@ -48,26 +48,26 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_20_Templat
|
|
|
48
48
|
} }
|
|
49
49
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_21_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
50
50
|
const _r3 = i0.ɵɵgetCurrentView();
|
|
51
|
-
i0.ɵɵelementStart(0, "div",
|
|
51
|
+
i0.ɵɵelementStart(0, "div", 68)(1, "div", 14);
|
|
52
52
|
i0.ɵɵtext(2, "Prompt");
|
|
53
53
|
i0.ɵɵelementEnd();
|
|
54
|
-
i0.ɵɵelementStart(3, "div",
|
|
54
|
+
i0.ɵɵelementStart(3, "div", 70);
|
|
55
55
|
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_21_Conditional_0_Template_div_click_3_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Prompts", ctx_r1.record.ChildPromptID)); });
|
|
56
|
-
i0.ɵɵelement(4, "i",
|
|
56
|
+
i0.ɵɵelement(4, "i", 71);
|
|
57
57
|
i0.ɵɵtext(5);
|
|
58
58
|
i0.ɵɵelementEnd();
|
|
59
|
-
i0.ɵɵelementStart(6, "div",
|
|
60
|
-
i0.ɵɵelement(7, "span",
|
|
61
|
-
i0.ɵɵelementStart(8, "span",
|
|
59
|
+
i0.ɵɵelementStart(6, "div", 72);
|
|
60
|
+
i0.ɵɵelement(7, "span", 73);
|
|
61
|
+
i0.ɵɵelementStart(8, "span", 74);
|
|
62
62
|
i0.ɵɵtext(9, "wrapped by");
|
|
63
63
|
i0.ɵɵelementEnd();
|
|
64
|
-
i0.ɵɵelement(10, "span",
|
|
64
|
+
i0.ɵɵelement(10, "span", 73);
|
|
65
65
|
i0.ɵɵelementEnd();
|
|
66
|
-
i0.ɵɵelementStart(11, "div",
|
|
66
|
+
i0.ɵɵelementStart(11, "div", 75);
|
|
67
67
|
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_21_Conditional_0_Template_div_click_11_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Prompts", ctx_r1.prompt.ID)); });
|
|
68
|
-
i0.ɵɵelement(12, "i",
|
|
68
|
+
i0.ɵɵelement(12, "i", 76);
|
|
69
69
|
i0.ɵɵtext(13);
|
|
70
|
-
i0.ɵɵelement(14, "i",
|
|
70
|
+
i0.ɵɵelement(14, "i", 77);
|
|
71
71
|
i0.ɵɵelementEnd()();
|
|
72
72
|
} if (rf & 2) {
|
|
73
73
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -78,12 +78,12 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_21_Conditi
|
|
|
78
78
|
} }
|
|
79
79
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_21_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
80
80
|
const _r4 = i0.ɵɵgetCurrentView();
|
|
81
|
-
i0.ɵɵelementStart(0, "div",
|
|
81
|
+
i0.ɵɵelementStart(0, "div", 69)(1, "div", 14);
|
|
82
82
|
i0.ɵɵtext(2, "Prompt");
|
|
83
83
|
i0.ɵɵelementEnd();
|
|
84
|
-
i0.ɵɵelementStart(3, "div",
|
|
84
|
+
i0.ɵɵelementStart(3, "div", 78);
|
|
85
85
|
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_21_Conditional_1_Template_div_click_3_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Prompts", ctx_r1.prompt.ID)); });
|
|
86
|
-
i0.ɵɵelement(4, "i",
|
|
86
|
+
i0.ɵɵelement(4, "i", 79);
|
|
87
87
|
i0.ɵɵtext(5);
|
|
88
88
|
i0.ɵɵelementEnd()();
|
|
89
89
|
} if (rf & 2) {
|
|
@@ -92,13 +92,13 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_21_Conditi
|
|
|
92
92
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.prompt.Name, " ");
|
|
93
93
|
} }
|
|
94
94
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_21_Template(rf, ctx) { if (rf & 1) {
|
|
95
|
-
i0.ɵɵconditionalCreate(0, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_21_Conditional_0_Template, 15, 2, "div",
|
|
95
|
+
i0.ɵɵconditionalCreate(0, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_21_Conditional_0_Template, 15, 2, "div", 68)(1, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_21_Conditional_1_Template, 6, 1, "div", 69);
|
|
96
96
|
} if (rf & 2) {
|
|
97
97
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
98
98
|
i0.ɵɵconditional(ctx_r1.record.ChildPromptID ? 0 : 1);
|
|
99
99
|
} }
|
|
100
100
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_22_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
101
|
-
i0.ɵɵelementStart(0, "span",
|
|
101
|
+
i0.ɵɵelementStart(0, "span", 83);
|
|
102
102
|
i0.ɵɵtext(1);
|
|
103
103
|
i0.ɵɵelementEnd();
|
|
104
104
|
} if (rf & 2) {
|
|
@@ -111,13 +111,13 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_22_Templat
|
|
|
111
111
|
i0.ɵɵelementStart(0, "div", 18)(1, "div", 14);
|
|
112
112
|
i0.ɵɵtext(2, "Model");
|
|
113
113
|
i0.ɵɵelementEnd();
|
|
114
|
-
i0.ɵɵelementStart(3, "div",
|
|
114
|
+
i0.ɵɵelementStart(3, "div", 80);
|
|
115
115
|
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_22_Template_div_click_3_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Models", ctx_r1.model.ID)); });
|
|
116
|
-
i0.ɵɵelementStart(4, "span",
|
|
117
|
-
i0.ɵɵelement(5, "i",
|
|
116
|
+
i0.ɵɵelementStart(4, "span", 81);
|
|
117
|
+
i0.ɵɵelement(5, "i", 82);
|
|
118
118
|
i0.ɵɵtext(6);
|
|
119
119
|
i0.ɵɵelementEnd();
|
|
120
|
-
i0.ɵɵconditionalCreate(7, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_22_Conditional_7_Template, 2, 1, "span",
|
|
120
|
+
i0.ɵɵconditionalCreate(7, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_22_Conditional_7_Template, 2, 1, "span", 83);
|
|
121
121
|
i0.ɵɵelementEnd()();
|
|
122
122
|
} if (rf & 2) {
|
|
123
123
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -129,19 +129,19 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_22_Templat
|
|
|
129
129
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_23_Template(rf, ctx) { if (rf & 1) {
|
|
130
130
|
const _r6 = i0.ɵɵgetCurrentView();
|
|
131
131
|
i0.ɵɵelementStart(0, "span", 19);
|
|
132
|
-
i0.ɵɵelement(1, "i",
|
|
133
|
-
i0.ɵɵelementStart(2, "a",
|
|
132
|
+
i0.ɵɵelement(1, "i", 84);
|
|
133
|
+
i0.ɵɵelementStart(2, "a", 85);
|
|
134
134
|
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_23_Template_a_click_2_listener() { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.navigateToOriginalRun()); });
|
|
135
135
|
i0.ɵɵtext(3, "Original Run");
|
|
136
136
|
i0.ɵɵelementEnd()();
|
|
137
137
|
} }
|
|
138
138
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
139
|
-
i0.ɵɵelementStart(0, "div",
|
|
140
|
-
i0.ɵɵelement(1, "i",
|
|
141
|
-
i0.ɵɵelementStart(2, "div",
|
|
139
|
+
i0.ɵɵelementStart(0, "div", 86);
|
|
140
|
+
i0.ɵɵelement(1, "i", 53);
|
|
141
|
+
i0.ɵɵelementStart(2, "div", 87)(3, "div", 88);
|
|
142
142
|
i0.ɵɵtext(4, "Temperature");
|
|
143
143
|
i0.ɵɵelementEnd();
|
|
144
|
-
i0.ɵɵelementStart(5, "div",
|
|
144
|
+
i0.ɵɵelementStart(5, "div", 89);
|
|
145
145
|
i0.ɵɵtext(6);
|
|
146
146
|
i0.ɵɵelementEnd()()();
|
|
147
147
|
} if (rf & 2) {
|
|
@@ -150,12 +150,12 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditi
|
|
|
150
150
|
i0.ɵɵtextInterpolate(ctx_r1.record.Temperature);
|
|
151
151
|
} }
|
|
152
152
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
153
|
-
i0.ɵɵelementStart(0, "div",
|
|
154
|
-
i0.ɵɵelement(1, "i",
|
|
155
|
-
i0.ɵɵelementStart(2, "div",
|
|
153
|
+
i0.ɵɵelementStart(0, "div", 86);
|
|
154
|
+
i0.ɵɵelement(1, "i", 54);
|
|
155
|
+
i0.ɵɵelementStart(2, "div", 87)(3, "div", 88);
|
|
156
156
|
i0.ɵɵtext(4, "Top P");
|
|
157
157
|
i0.ɵɵelementEnd();
|
|
158
|
-
i0.ɵɵelementStart(5, "div",
|
|
158
|
+
i0.ɵɵelementStart(5, "div", 89);
|
|
159
159
|
i0.ɵɵtext(6);
|
|
160
160
|
i0.ɵɵelementEnd()()();
|
|
161
161
|
} if (rf & 2) {
|
|
@@ -164,12 +164,12 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditi
|
|
|
164
164
|
i0.ɵɵtextInterpolate(ctx_r1.record.TopP);
|
|
165
165
|
} }
|
|
166
166
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
167
|
-
i0.ɵɵelementStart(0, "div",
|
|
168
|
-
i0.ɵɵelement(1, "i",
|
|
169
|
-
i0.ɵɵelementStart(2, "div",
|
|
167
|
+
i0.ɵɵelementStart(0, "div", 86);
|
|
168
|
+
i0.ɵɵelement(1, "i", 55);
|
|
169
|
+
i0.ɵɵelementStart(2, "div", 87)(3, "div", 88);
|
|
170
170
|
i0.ɵɵtext(4, "Top K");
|
|
171
171
|
i0.ɵɵelementEnd();
|
|
172
|
-
i0.ɵɵelementStart(5, "div",
|
|
172
|
+
i0.ɵɵelementStart(5, "div", 89);
|
|
173
173
|
i0.ɵɵtext(6);
|
|
174
174
|
i0.ɵɵelementEnd()()();
|
|
175
175
|
} if (rf & 2) {
|
|
@@ -178,12 +178,12 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditi
|
|
|
178
178
|
i0.ɵɵtextInterpolate(ctx_r1.record.TopK);
|
|
179
179
|
} }
|
|
180
180
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
181
|
-
i0.ɵɵelementStart(0, "div",
|
|
182
|
-
i0.ɵɵelement(1, "i",
|
|
183
|
-
i0.ɵɵelementStart(2, "div",
|
|
181
|
+
i0.ɵɵelementStart(0, "div", 86);
|
|
182
|
+
i0.ɵɵelement(1, "i", 93);
|
|
183
|
+
i0.ɵɵelementStart(2, "div", 87)(3, "div", 88);
|
|
184
184
|
i0.ɵɵtext(4, "Effort Level");
|
|
185
185
|
i0.ɵɵelementEnd();
|
|
186
|
-
i0.ɵɵelementStart(5, "div",
|
|
186
|
+
i0.ɵɵelementStart(5, "div", 89);
|
|
187
187
|
i0.ɵɵtext(6);
|
|
188
188
|
i0.ɵɵelementEnd()()();
|
|
189
189
|
} if (rf & 2) {
|
|
@@ -192,12 +192,12 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditi
|
|
|
192
192
|
i0.ɵɵtextInterpolate(ctx_r1.record.EffortLevel);
|
|
193
193
|
} }
|
|
194
194
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
195
|
-
i0.ɵɵelementStart(0, "div",
|
|
196
|
-
i0.ɵɵelement(1, "i",
|
|
197
|
-
i0.ɵɵelementStart(2, "div",
|
|
195
|
+
i0.ɵɵelementStart(0, "div", 86);
|
|
196
|
+
i0.ɵɵelement(1, "i", 94);
|
|
197
|
+
i0.ɵɵelementStart(2, "div", 87)(3, "div", 88);
|
|
198
198
|
i0.ɵɵtext(4, "Response Format");
|
|
199
199
|
i0.ɵɵelementEnd();
|
|
200
|
-
i0.ɵɵelementStart(5, "div",
|
|
200
|
+
i0.ɵɵelementStart(5, "div", 89);
|
|
201
201
|
i0.ɵɵtext(6);
|
|
202
202
|
i0.ɵɵelementEnd()()();
|
|
203
203
|
} if (rf & 2) {
|
|
@@ -206,12 +206,12 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditi
|
|
|
206
206
|
i0.ɵɵtextInterpolate(ctx_r1.record.ResponseFormat);
|
|
207
207
|
} }
|
|
208
208
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditional_29_Template(rf, ctx) { if (rf & 1) {
|
|
209
|
-
i0.ɵɵelementStart(0, "div",
|
|
210
|
-
i0.ɵɵelement(1, "i",
|
|
211
|
-
i0.ɵɵelementStart(2, "div",
|
|
209
|
+
i0.ɵɵelementStart(0, "div", 86);
|
|
210
|
+
i0.ɵɵelement(1, "i", 95);
|
|
211
|
+
i0.ɵɵelementStart(2, "div", 87)(3, "div", 88);
|
|
212
212
|
i0.ɵɵtext(4, "Cached");
|
|
213
213
|
i0.ɵɵelementEnd();
|
|
214
|
-
i0.ɵɵelementStart(5, "div",
|
|
214
|
+
i0.ɵɵelementStart(5, "div", 89);
|
|
215
215
|
i0.ɵɵtext(6);
|
|
216
216
|
i0.ɵɵelementEnd()()();
|
|
217
217
|
} if (rf & 2) {
|
|
@@ -220,12 +220,12 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditi
|
|
|
220
220
|
i0.ɵɵtextInterpolate(ctx_r1.formatTokens(ctx_r1.record.TokensCacheRead));
|
|
221
221
|
} }
|
|
222
222
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditional_37_Template(rf, ctx) { if (rf & 1) {
|
|
223
|
-
i0.ɵɵelementStart(0, "div",
|
|
224
|
-
i0.ɵɵelement(1, "i",
|
|
225
|
-
i0.ɵɵelementStart(2, "div",
|
|
223
|
+
i0.ɵɵelementStart(0, "div", 86);
|
|
224
|
+
i0.ɵɵelement(1, "i", 96);
|
|
225
|
+
i0.ɵɵelementStart(2, "div", 87)(3, "div", 88);
|
|
226
226
|
i0.ɵɵtext(4, "Started");
|
|
227
227
|
i0.ɵɵelementEnd();
|
|
228
|
-
i0.ɵɵelementStart(5, "div",
|
|
228
|
+
i0.ɵɵelementStart(5, "div", 89);
|
|
229
229
|
i0.ɵɵtext(6);
|
|
230
230
|
i0.ɵɵpipe(7, "date");
|
|
231
231
|
i0.ɵɵelementEnd()()();
|
|
@@ -236,47 +236,47 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditi
|
|
|
236
236
|
} }
|
|
237
237
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Template(rf, ctx) { if (rf & 1) {
|
|
238
238
|
const _r7 = i0.ɵɵgetCurrentView();
|
|
239
|
-
i0.ɵɵelementStart(0, "div", 25)(1, "div",
|
|
240
|
-
i0.ɵɵelement(2, "i",
|
|
241
|
-
i0.ɵɵelementStart(3, "div",
|
|
239
|
+
i0.ɵɵelementStart(0, "div", 25)(1, "div", 86);
|
|
240
|
+
i0.ɵɵelement(2, "i", 76);
|
|
241
|
+
i0.ɵɵelementStart(3, "div", 87)(4, "div", 88);
|
|
242
242
|
i0.ɵɵtext(5, "Configuration");
|
|
243
243
|
i0.ɵɵelementEnd();
|
|
244
|
-
i0.ɵɵelementStart(6, "div",
|
|
244
|
+
i0.ɵɵelementStart(6, "div", 89)(7, "a", 90);
|
|
245
245
|
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Template_a_click_7_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Configurations", ctx_r1.record.ConfigurationID)); });
|
|
246
246
|
i0.ɵɵtext(8);
|
|
247
247
|
i0.ɵɵelementEnd()()()();
|
|
248
|
-
i0.ɵɵconditionalCreate(9, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditional_9_Template, 7, 1, "div",
|
|
249
|
-
i0.ɵɵconditionalCreate(10, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditional_10_Template, 7, 1, "div",
|
|
250
|
-
i0.ɵɵconditionalCreate(11, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditional_11_Template, 7, 1, "div",
|
|
251
|
-
i0.ɵɵconditionalCreate(12, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditional_12_Template, 7, 1, "div",
|
|
252
|
-
i0.ɵɵconditionalCreate(13, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditional_13_Template, 7, 1, "div",
|
|
253
|
-
i0.ɵɵelementEnd();
|
|
254
|
-
i0.ɵɵelementStart(14, "div", 25)(15, "div",
|
|
255
|
-
i0.ɵɵelement(16, "i",
|
|
256
|
-
i0.ɵɵelementStart(17, "div",
|
|
248
|
+
i0.ɵɵconditionalCreate(9, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditional_9_Template, 7, 1, "div", 86);
|
|
249
|
+
i0.ɵɵconditionalCreate(10, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditional_10_Template, 7, 1, "div", 86);
|
|
250
|
+
i0.ɵɵconditionalCreate(11, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditional_11_Template, 7, 1, "div", 86);
|
|
251
|
+
i0.ɵɵconditionalCreate(12, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditional_12_Template, 7, 1, "div", 86);
|
|
252
|
+
i0.ɵɵconditionalCreate(13, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditional_13_Template, 7, 1, "div", 86);
|
|
253
|
+
i0.ɵɵelementEnd();
|
|
254
|
+
i0.ɵɵelementStart(14, "div", 25)(15, "div", 86);
|
|
255
|
+
i0.ɵɵelement(16, "i", 91);
|
|
256
|
+
i0.ɵɵelementStart(17, "div", 87)(18, "div", 88);
|
|
257
257
|
i0.ɵɵtext(19, "Duration");
|
|
258
258
|
i0.ɵɵelementEnd();
|
|
259
|
-
i0.ɵɵelementStart(20, "div",
|
|
259
|
+
i0.ɵɵelementStart(20, "div", 89);
|
|
260
260
|
i0.ɵɵtext(21);
|
|
261
261
|
i0.ɵɵelementEnd()()();
|
|
262
|
-
i0.ɵɵelementStart(22, "div",
|
|
263
|
-
i0.ɵɵelement(23, "i",
|
|
264
|
-
i0.ɵɵelementStart(24, "div",
|
|
262
|
+
i0.ɵɵelementStart(22, "div", 92);
|
|
263
|
+
i0.ɵɵelement(23, "i", 43);
|
|
264
|
+
i0.ɵɵelementStart(24, "div", 87)(25, "div", 88);
|
|
265
265
|
i0.ɵɵtext(26, "Total Tokens");
|
|
266
266
|
i0.ɵɵelementEnd();
|
|
267
|
-
i0.ɵɵelementStart(27, "div",
|
|
267
|
+
i0.ɵɵelementStart(27, "div", 89);
|
|
268
268
|
i0.ɵɵtext(28);
|
|
269
269
|
i0.ɵɵelementEnd()()();
|
|
270
|
-
i0.ɵɵconditionalCreate(29, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditional_29_Template, 7, 1, "div",
|
|
271
|
-
i0.ɵɵelementStart(30, "div",
|
|
272
|
-
i0.ɵɵelement(31, "i",
|
|
273
|
-
i0.ɵɵelementStart(32, "div",
|
|
270
|
+
i0.ɵɵconditionalCreate(29, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditional_29_Template, 7, 1, "div", 86);
|
|
271
|
+
i0.ɵɵelementStart(30, "div", 86);
|
|
272
|
+
i0.ɵɵelement(31, "i", 45);
|
|
273
|
+
i0.ɵɵelementStart(32, "div", 87)(33, "div", 88);
|
|
274
274
|
i0.ɵɵtext(34, "Cost");
|
|
275
275
|
i0.ɵɵelementEnd();
|
|
276
|
-
i0.ɵɵelementStart(35, "div",
|
|
276
|
+
i0.ɵɵelementStart(35, "div", 89);
|
|
277
277
|
i0.ɵɵtext(36);
|
|
278
278
|
i0.ɵɵelementEnd()()();
|
|
279
|
-
i0.ɵɵconditionalCreate(37, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditional_37_Template, 8, 4, "div",
|
|
279
|
+
i0.ɵɵconditionalCreate(37, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Conditional_37_Template, 8, 4, "div", 86);
|
|
280
280
|
i0.ɵɵelementEnd();
|
|
281
281
|
} if (rf & 2) {
|
|
282
282
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -304,12 +304,12 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_30_Templat
|
|
|
304
304
|
i0.ɵɵconditional(ctx_r1.record.RunAt ? 37 : -1);
|
|
305
305
|
} }
|
|
306
306
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_31_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
307
|
-
i0.ɵɵelementStart(0, "div",
|
|
308
|
-
i0.ɵɵelement(1, "i",
|
|
309
|
-
i0.ɵɵelementStart(2, "div",
|
|
307
|
+
i0.ɵɵelementStart(0, "div", 86);
|
|
308
|
+
i0.ɵɵelement(1, "i", 95);
|
|
309
|
+
i0.ɵɵelementStart(2, "div", 87)(3, "div", 88);
|
|
310
310
|
i0.ɵɵtext(4, "Cached");
|
|
311
311
|
i0.ɵɵelementEnd();
|
|
312
|
-
i0.ɵɵelementStart(5, "div",
|
|
312
|
+
i0.ɵɵelementStart(5, "div", 89);
|
|
313
313
|
i0.ɵɵtext(6);
|
|
314
314
|
i0.ɵɵelementEnd()()();
|
|
315
315
|
} if (rf & 2) {
|
|
@@ -318,12 +318,12 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_31_Conditi
|
|
|
318
318
|
i0.ɵɵtextInterpolate(ctx_r1.formatTokens(ctx_r1.record.TokensCacheRead));
|
|
319
319
|
} }
|
|
320
320
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_31_Conditional_23_Template(rf, ctx) { if (rf & 1) {
|
|
321
|
-
i0.ɵɵelementStart(0, "div",
|
|
322
|
-
i0.ɵɵelement(1, "i",
|
|
323
|
-
i0.ɵɵelementStart(2, "div",
|
|
321
|
+
i0.ɵɵelementStart(0, "div", 86);
|
|
322
|
+
i0.ɵɵelement(1, "i", 96);
|
|
323
|
+
i0.ɵɵelementStart(2, "div", 87)(3, "div", 88);
|
|
324
324
|
i0.ɵɵtext(4, "Started");
|
|
325
325
|
i0.ɵɵelementEnd();
|
|
326
|
-
i0.ɵɵelementStart(5, "div",
|
|
326
|
+
i0.ɵɵelementStart(5, "div", 89);
|
|
327
327
|
i0.ɵɵtext(6);
|
|
328
328
|
i0.ɵɵpipe(7, "date");
|
|
329
329
|
i0.ɵɵelementEnd()()();
|
|
@@ -333,32 +333,32 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_31_Conditi
|
|
|
333
333
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(7, 1, ctx_r1.record.RunAt, "short"));
|
|
334
334
|
} }
|
|
335
335
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_31_Template(rf, ctx) { if (rf & 1) {
|
|
336
|
-
i0.ɵɵelementStart(0, "div", 25)(1, "div",
|
|
337
|
-
i0.ɵɵelement(2, "i",
|
|
338
|
-
i0.ɵɵelementStart(3, "div",
|
|
336
|
+
i0.ɵɵelementStart(0, "div", 25)(1, "div", 86);
|
|
337
|
+
i0.ɵɵelement(2, "i", 91);
|
|
338
|
+
i0.ɵɵelementStart(3, "div", 87)(4, "div", 88);
|
|
339
339
|
i0.ɵɵtext(5, "Duration");
|
|
340
340
|
i0.ɵɵelementEnd();
|
|
341
|
-
i0.ɵɵelementStart(6, "div",
|
|
341
|
+
i0.ɵɵelementStart(6, "div", 89);
|
|
342
342
|
i0.ɵɵtext(7);
|
|
343
343
|
i0.ɵɵelementEnd()()();
|
|
344
|
-
i0.ɵɵelementStart(8, "div",
|
|
345
|
-
i0.ɵɵelement(9, "i",
|
|
346
|
-
i0.ɵɵelementStart(10, "div",
|
|
344
|
+
i0.ɵɵelementStart(8, "div", 92);
|
|
345
|
+
i0.ɵɵelement(9, "i", 43);
|
|
346
|
+
i0.ɵɵelementStart(10, "div", 87)(11, "div", 88);
|
|
347
347
|
i0.ɵɵtext(12, "Total Tokens");
|
|
348
348
|
i0.ɵɵelementEnd();
|
|
349
|
-
i0.ɵɵelementStart(13, "div",
|
|
349
|
+
i0.ɵɵelementStart(13, "div", 89);
|
|
350
350
|
i0.ɵɵtext(14);
|
|
351
351
|
i0.ɵɵelementEnd()()();
|
|
352
|
-
i0.ɵɵconditionalCreate(15, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_31_Conditional_15_Template, 7, 1, "div",
|
|
353
|
-
i0.ɵɵelementStart(16, "div",
|
|
354
|
-
i0.ɵɵelement(17, "i",
|
|
355
|
-
i0.ɵɵelementStart(18, "div",
|
|
352
|
+
i0.ɵɵconditionalCreate(15, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_31_Conditional_15_Template, 7, 1, "div", 86);
|
|
353
|
+
i0.ɵɵelementStart(16, "div", 86);
|
|
354
|
+
i0.ɵɵelement(17, "i", 45);
|
|
355
|
+
i0.ɵɵelementStart(18, "div", 87)(19, "div", 88);
|
|
356
356
|
i0.ɵɵtext(20, "Cost");
|
|
357
357
|
i0.ɵɵelementEnd();
|
|
358
|
-
i0.ɵɵelementStart(21, "div",
|
|
358
|
+
i0.ɵɵelementStart(21, "div", 89);
|
|
359
359
|
i0.ɵɵtext(22);
|
|
360
360
|
i0.ɵɵelementEnd()()();
|
|
361
|
-
i0.ɵɵconditionalCreate(23, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_31_Conditional_23_Template, 8, 4, "div",
|
|
361
|
+
i0.ɵɵconditionalCreate(23, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_31_Conditional_23_Template, 8, 4, "div", 86);
|
|
362
362
|
i0.ɵɵelementEnd();
|
|
363
363
|
} if (rf & 2) {
|
|
364
364
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -374,15 +374,15 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_31_Templat
|
|
|
374
374
|
i0.ɵɵconditional(ctx_r1.record.RunAt ? 23 : -1);
|
|
375
375
|
} }
|
|
376
376
|
function MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_34_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
377
|
-
i0.ɵɵelementStart(0, "span",
|
|
377
|
+
i0.ɵɵelementStart(0, "span", 99);
|
|
378
378
|
i0.ɵɵtext(1, "JSON");
|
|
379
379
|
i0.ɵɵelementEnd();
|
|
380
380
|
} }
|
|
381
381
|
function MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_34_Template(rf, ctx) { if (rf & 1) {
|
|
382
|
-
i0.ɵɵelementStart(0, "span",
|
|
383
|
-
i0.ɵɵelement(1, "i",
|
|
382
|
+
i0.ɵɵelementStart(0, "span", 97);
|
|
383
|
+
i0.ɵɵelement(1, "i", 98);
|
|
384
384
|
i0.ɵɵtext(2, " Input ");
|
|
385
|
-
i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_34_Conditional_3_Template, 2, 0, "span",
|
|
385
|
+
i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_34_Conditional_3_Template, 2, 0, "span", 99);
|
|
386
386
|
i0.ɵɵelementEnd();
|
|
387
387
|
} if (rf & 2) {
|
|
388
388
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -390,7 +390,7 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_34_Templat
|
|
|
390
390
|
i0.ɵɵconditional(ctx_r1.record.Messages && ctx_r1.record.Messages.trim() !== "" ? 3 : -1);
|
|
391
391
|
} }
|
|
392
392
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_ng_template_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
393
|
-
i0.ɵɵelementStart(0, "span",
|
|
393
|
+
i0.ɵɵelementStart(0, "span", 114);
|
|
394
394
|
i0.ɵɵtext(1);
|
|
395
395
|
i0.ɵɵelementEnd();
|
|
396
396
|
} if (rf & 2) {
|
|
@@ -399,10 +399,10 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_ng_temp
|
|
|
399
399
|
i0.ɵɵtextInterpolate1("(", ctx_r1.chatMessages.length, ")");
|
|
400
400
|
} }
|
|
401
401
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
402
|
-
i0.ɵɵelementStart(0, "span",
|
|
403
|
-
i0.ɵɵelement(1, "i",
|
|
402
|
+
i0.ɵɵelementStart(0, "span", 112);
|
|
403
|
+
i0.ɵɵelement(1, "i", 113);
|
|
404
404
|
i0.ɵɵtext(2, " Messages ");
|
|
405
|
-
i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_ng_template_2_Conditional_3_Template, 2, 1, "span",
|
|
405
|
+
i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_ng_template_2_Conditional_3_Template, 2, 1, "span", 114);
|
|
406
406
|
i0.ɵɵelementEnd();
|
|
407
407
|
} if (rf & 2) {
|
|
408
408
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -410,35 +410,31 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_ng_temp
|
|
|
410
410
|
i0.ɵɵconditional(ctx_r1.chatMessages.length > 0 ? 3 : -1);
|
|
411
411
|
} }
|
|
412
412
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
413
|
-
i0.ɵɵelementStart(0, "div",
|
|
414
|
-
i0.ɵɵelement(1, "i",
|
|
413
|
+
i0.ɵɵelementStart(0, "div", 102);
|
|
414
|
+
i0.ɵɵelement(1, "i", 115);
|
|
415
415
|
i0.ɵɵelementStart(2, "p");
|
|
416
416
|
i0.ɵɵtext(3, "Loading messages...");
|
|
417
417
|
i0.ɵɵelementEnd()();
|
|
418
418
|
} }
|
|
419
419
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
420
|
-
i0.ɵɵelement(0, "mj-chat-message-viewer",
|
|
420
|
+
i0.ɵɵelement(0, "mj-chat-message-viewer", 103);
|
|
421
421
|
} if (rf & 2) {
|
|
422
422
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
423
423
|
i0.ɵɵproperty("messages", ctx_r1.chatMessages);
|
|
424
424
|
} }
|
|
425
425
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
426
|
-
i0.ɵɵ
|
|
427
|
-
i0.ɵɵelement(1, "i", 113);
|
|
428
|
-
i0.ɵɵelementStart(2, "p");
|
|
429
|
-
i0.ɵɵtext(3, "No chat messages found");
|
|
430
|
-
i0.ɵɵelementEnd()();
|
|
426
|
+
i0.ɵɵelement(0, "mj-empty-state", 104);
|
|
431
427
|
} }
|
|
432
428
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_ng_template_8_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
433
|
-
i0.ɵɵelementStart(0, "span",
|
|
429
|
+
i0.ɵɵelementStart(0, "span", 99);
|
|
434
430
|
i0.ɵɵtext(1, "Object");
|
|
435
431
|
i0.ɵɵelementEnd();
|
|
436
432
|
} }
|
|
437
433
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_ng_template_8_Template(rf, ctx) { if (rf & 1) {
|
|
438
|
-
i0.ɵɵelementStart(0, "span",
|
|
439
|
-
i0.ɵɵelement(1, "i",
|
|
434
|
+
i0.ɵɵelementStart(0, "span", 112);
|
|
435
|
+
i0.ɵɵelement(1, "i", 116);
|
|
440
436
|
i0.ɵɵtext(2, " Data ");
|
|
441
|
-
i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_ng_template_8_Conditional_3_Template, 2, 0, "span",
|
|
437
|
+
i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_ng_template_8_Conditional_3_Template, 2, 0, "span", 99);
|
|
442
438
|
i0.ɵɵelementEnd();
|
|
443
439
|
} if (rf & 2) {
|
|
444
440
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -447,16 +443,16 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_ng_temp
|
|
|
447
443
|
} }
|
|
448
444
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
449
445
|
const _r9 = i0.ɵɵgetCurrentView();
|
|
450
|
-
i0.ɵɵelementStart(0, "div", 33)(1, "div",
|
|
446
|
+
i0.ɵɵelementStart(0, "div", 33)(1, "div", 106)(2, "button", 107);
|
|
451
447
|
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_Conditional_10_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.copyToClipboard(ctx_r1.formattedData, "Data")); });
|
|
452
|
-
i0.ɵɵelement(3, "i",
|
|
448
|
+
i0.ɵɵelement(3, "i", 108);
|
|
453
449
|
i0.ɵɵtext(4, " Copy ");
|
|
454
450
|
i0.ɵɵelementEnd();
|
|
455
|
-
i0.ɵɵelementStart(5, "button",
|
|
451
|
+
i0.ɵɵelementStart(5, "button", 109);
|
|
456
452
|
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_Conditional_10_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openFullScreen(ctx_r1.formattedData, "json", "Data")); });
|
|
457
|
-
i0.ɵɵelement(6, "i",
|
|
453
|
+
i0.ɵɵelement(6, "i", 110);
|
|
458
454
|
i0.ɵɵelementEnd()();
|
|
459
|
-
i0.ɵɵelementStart(7, "mj-code-editor",
|
|
455
|
+
i0.ɵɵelementStart(7, "mj-code-editor", 117);
|
|
460
456
|
i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_Conditional_10_Template_mj_code_editor_ngModelChange_7_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.formattedData, $event) || (ctx_r1.formattedData = $event); return i0.ɵɵresetView($event); });
|
|
461
457
|
i0.ɵɵelementEnd()();
|
|
462
458
|
} if (rf & 2) {
|
|
@@ -466,42 +462,38 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_Conditi
|
|
|
466
462
|
i0.ɵɵproperty("readonly", true)("language", "json")("lineWrapping", true);
|
|
467
463
|
} }
|
|
468
464
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
469
|
-
i0.ɵɵ
|
|
470
|
-
i0.ɵɵelement(1, "i", 114);
|
|
471
|
-
i0.ɵɵelementStart(2, "p");
|
|
472
|
-
i0.ɵɵtext(3, "No data object found");
|
|
473
|
-
i0.ɵɵelementEnd()();
|
|
465
|
+
i0.ɵɵelement(0, "mj-empty-state", 105);
|
|
474
466
|
} }
|
|
475
467
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_ng_template_13_Template(rf, ctx) { if (rf & 1) {
|
|
476
|
-
i0.ɵɵelementStart(0, "span",
|
|
477
|
-
i0.ɵɵelement(1, "i",
|
|
468
|
+
i0.ɵɵelementStart(0, "span", 112);
|
|
469
|
+
i0.ɵɵelement(1, "i", 94);
|
|
478
470
|
i0.ɵɵtext(2, " Raw ");
|
|
479
471
|
i0.ɵɵelementEnd();
|
|
480
472
|
} }
|
|
481
473
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_Template(rf, ctx) { if (rf & 1) {
|
|
482
474
|
const _r8 = i0.ɵɵgetCurrentView();
|
|
483
|
-
i0.ɵɵelementStart(0, "div", 30)(1, "mj-accordion-panel",
|
|
475
|
+
i0.ɵɵelementStart(0, "div", 30)(1, "mj-accordion-panel", 100);
|
|
484
476
|
i0.ɵɵtemplate(2, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_ng_template_2_Template, 4, 1, "ng-template", 28);
|
|
485
|
-
i0.ɵɵelementStart(3, "div",
|
|
486
|
-
i0.ɵɵconditionalCreate(4, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_Conditional_4_Template, 4, 0, "div",
|
|
477
|
+
i0.ɵɵelementStart(3, "div", 101);
|
|
478
|
+
i0.ɵɵconditionalCreate(4, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_Conditional_4_Template, 4, 0, "div", 102)(5, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_Conditional_5_Template, 1, 1, "mj-chat-message-viewer", 103)(6, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_Conditional_6_Template, 1, 0, "mj-empty-state", 104);
|
|
487
479
|
i0.ɵɵelementEnd()();
|
|
488
|
-
i0.ɵɵelementStart(7, "mj-accordion-panel",
|
|
480
|
+
i0.ɵɵelementStart(7, "mj-accordion-panel", 100);
|
|
489
481
|
i0.ɵɵtemplate(8, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_ng_template_8_Template, 4, 1, "ng-template", 28);
|
|
490
|
-
i0.ɵɵelementStart(9, "div",
|
|
491
|
-
i0.ɵɵconditionalCreate(10, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_Conditional_10_Template, 8, 4, "div", 33)(11, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_Conditional_11_Template,
|
|
482
|
+
i0.ɵɵelementStart(9, "div", 101);
|
|
483
|
+
i0.ɵɵconditionalCreate(10, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_Conditional_10_Template, 8, 4, "div", 33)(11, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_Conditional_11_Template, 1, 0, "mj-empty-state", 105);
|
|
492
484
|
i0.ɵɵelementEnd()();
|
|
493
|
-
i0.ɵɵelementStart(12, "mj-accordion-panel",
|
|
485
|
+
i0.ɵɵelementStart(12, "mj-accordion-panel", 100);
|
|
494
486
|
i0.ɵɵtemplate(13, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_ng_template_13_Template, 3, 0, "ng-template", 28);
|
|
495
|
-
i0.ɵɵelementStart(14, "div",
|
|
487
|
+
i0.ɵɵelementStart(14, "div", 101)(15, "div", 33)(16, "div", 106)(17, "button", 107);
|
|
496
488
|
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_Template_button_click_17_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.copyToClipboard(ctx_r1.formattedMessages, "Messages")); });
|
|
497
|
-
i0.ɵɵelement(18, "i",
|
|
489
|
+
i0.ɵɵelement(18, "i", 108);
|
|
498
490
|
i0.ɵɵtext(19, " Copy ");
|
|
499
491
|
i0.ɵɵelementEnd();
|
|
500
|
-
i0.ɵɵelementStart(20, "button",
|
|
492
|
+
i0.ɵɵelementStart(20, "button", 109);
|
|
501
493
|
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_Template_button_click_20_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openFullScreen(ctx_r1.formattedMessages, "json", "Raw Messages")); });
|
|
502
|
-
i0.ɵɵelement(21, "i",
|
|
494
|
+
i0.ɵɵelement(21, "i", 110);
|
|
503
495
|
i0.ɵɵelementEnd()();
|
|
504
|
-
i0.ɵɵelementStart(22, "mj-code-editor",
|
|
496
|
+
i0.ɵɵelementStart(22, "mj-code-editor", 111);
|
|
505
497
|
i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_Template_mj_code_editor_ngModelChange_22_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.formattedMessages, $event) || (ctx_r1.formattedMessages = $event); return i0.ɵɵresetView($event); });
|
|
506
498
|
i0.ɵɵelementEnd()()()()();
|
|
507
499
|
} if (rf & 2) {
|
|
@@ -521,28 +513,24 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_Templat
|
|
|
521
513
|
i0.ɵɵproperty("readonly", true)("language", "json")("lineWrapping", true);
|
|
522
514
|
} }
|
|
523
515
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_37_Template(rf, ctx) { if (rf & 1) {
|
|
524
|
-
i0.ɵɵ
|
|
525
|
-
i0.ɵɵelement(1, "i", 113);
|
|
526
|
-
i0.ɵɵelementStart(2, "p");
|
|
527
|
-
i0.ɵɵtext(3, "No input messages recorded");
|
|
528
|
-
i0.ɵɵelementEnd()();
|
|
516
|
+
i0.ɵɵelement(0, "mj-empty-state", 31);
|
|
529
517
|
} }
|
|
530
518
|
function MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_39_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
531
|
-
i0.ɵɵelementStart(0, "span",
|
|
519
|
+
i0.ɵɵelementStart(0, "span", 99);
|
|
532
520
|
i0.ɵɵtext(1, "JSON");
|
|
533
521
|
i0.ɵɵelementEnd();
|
|
534
522
|
} }
|
|
535
523
|
function MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_39_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
536
|
-
i0.ɵɵelementStart(0, "span",
|
|
524
|
+
i0.ɵɵelementStart(0, "span", 119);
|
|
537
525
|
i0.ɵɵtext(1, "Error");
|
|
538
526
|
i0.ɵɵelementEnd();
|
|
539
527
|
} }
|
|
540
528
|
function MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_39_Template(rf, ctx) { if (rf & 1) {
|
|
541
|
-
i0.ɵɵelementStart(0, "span",
|
|
542
|
-
i0.ɵɵelement(1, "i",
|
|
529
|
+
i0.ɵɵelementStart(0, "span", 97);
|
|
530
|
+
i0.ɵɵelement(1, "i", 118);
|
|
543
531
|
i0.ɵɵtext(2, " Result ");
|
|
544
|
-
i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_39_Conditional_3_Template, 2, 0, "span",
|
|
545
|
-
i0.ɵɵconditionalCreate(4, MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_39_Conditional_4_Template, 2, 0, "span",
|
|
532
|
+
i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_39_Conditional_3_Template, 2, 0, "span", 99);
|
|
533
|
+
i0.ɵɵconditionalCreate(4, MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_39_Conditional_4_Template, 2, 0, "span", 119);
|
|
546
534
|
i0.ɵɵelementEnd();
|
|
547
535
|
} if (rf & 2) {
|
|
548
536
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -553,8 +541,8 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_39_Templat
|
|
|
553
541
|
} }
|
|
554
542
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_41_Template(rf, ctx) { if (rf & 1) {
|
|
555
543
|
i0.ɵɵelementStart(0, "div", 32);
|
|
556
|
-
i0.ɵɵelement(1, "i",
|
|
557
|
-
i0.ɵɵelementStart(2, "div",
|
|
544
|
+
i0.ɵɵelement(1, "i", 120);
|
|
545
|
+
i0.ɵɵelementStart(2, "div", 121)(3, "h4");
|
|
558
546
|
i0.ɵɵtext(4, "Error Message");
|
|
559
547
|
i0.ɵɵelementEnd();
|
|
560
548
|
i0.ɵɵelementStart(5, "p");
|
|
@@ -567,16 +555,16 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_41_Templat
|
|
|
567
555
|
} }
|
|
568
556
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_42_Template(rf, ctx) { if (rf & 1) {
|
|
569
557
|
const _r10 = i0.ɵɵgetCurrentView();
|
|
570
|
-
i0.ɵɵelementStart(0, "div", 33)(1, "div",
|
|
558
|
+
i0.ɵɵelementStart(0, "div", 33)(1, "div", 106)(2, "button", 107);
|
|
571
559
|
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_42_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.copyToClipboard(ctx_r1.formattedResult, "Result")); });
|
|
572
|
-
i0.ɵɵelement(3, "i",
|
|
560
|
+
i0.ɵɵelement(3, "i", 108);
|
|
573
561
|
i0.ɵɵtext(4, " Copy ");
|
|
574
562
|
i0.ɵɵelementEnd();
|
|
575
|
-
i0.ɵɵelementStart(5, "button",
|
|
563
|
+
i0.ɵɵelementStart(5, "button", 109);
|
|
576
564
|
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_42_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openFullScreen(ctx_r1.formattedResult, "json", "Result")); });
|
|
577
|
-
i0.ɵɵelement(6, "i",
|
|
565
|
+
i0.ɵɵelement(6, "i", 110);
|
|
578
566
|
i0.ɵɵelementEnd()();
|
|
579
|
-
i0.ɵɵelementStart(7, "mj-code-editor",
|
|
567
|
+
i0.ɵɵelementStart(7, "mj-code-editor", 122);
|
|
580
568
|
i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_42_Template_mj_code_editor_ngModelChange_7_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.formattedResult, $event) || (ctx_r1.formattedResult = $event); return i0.ɵɵresetView($event); });
|
|
581
569
|
i0.ɵɵelementEnd()();
|
|
582
570
|
} if (rf & 2) {
|
|
@@ -585,8 +573,8 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_42_Templat
|
|
|
585
573
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.formattedResult);
|
|
586
574
|
i0.ɵɵproperty("readonly", true)("language", "json")("lineWrapping", true);
|
|
587
575
|
} }
|
|
588
|
-
function
|
|
589
|
-
i0.ɵɵelementStart(0, "p",
|
|
576
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_43_Conditional_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
577
|
+
i0.ɵɵelementStart(0, "p", 124)(1, "strong");
|
|
590
578
|
i0.ɵɵtext(2, "Status:");
|
|
591
579
|
i0.ɵɵelementEnd();
|
|
592
580
|
i0.ɵɵtext(3);
|
|
@@ -596,32 +584,32 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_43_Conditi
|
|
|
596
584
|
i0.ɵɵadvance(3);
|
|
597
585
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.Status, " ");
|
|
598
586
|
} }
|
|
599
|
-
function
|
|
587
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_43_Conditional_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
600
588
|
const _r11 = i0.ɵɵgetCurrentView();
|
|
601
|
-
i0.ɵɵelementStart(0, "div",
|
|
589
|
+
i0.ɵɵelementStart(0, "div", 125)(1, "div", 106)(2, "h4", 127);
|
|
602
590
|
i0.ɵɵtext(3, "Error Details");
|
|
603
591
|
i0.ɵɵelementEnd();
|
|
604
|
-
i0.ɵɵelementStart(4, "button",
|
|
605
|
-
i0.ɵɵlistener("click", function
|
|
606
|
-
i0.ɵɵelement(5, "i",
|
|
592
|
+
i0.ɵɵelementStart(4, "button", 109);
|
|
593
|
+
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_43_Conditional_1_Conditional_2_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.openFullScreen(ctx_r1.formattedErrorDetails, "json", "Error Details")); });
|
|
594
|
+
i0.ɵɵelement(5, "i", 110);
|
|
607
595
|
i0.ɵɵelementEnd()();
|
|
608
|
-
i0.ɵɵelement(6, "mj-code-editor",
|
|
596
|
+
i0.ɵɵelement(6, "mj-code-editor", 128);
|
|
609
597
|
i0.ɵɵelementEnd();
|
|
610
598
|
} if (rf & 2) {
|
|
611
599
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
612
600
|
i0.ɵɵadvance(6);
|
|
613
601
|
i0.ɵɵproperty("ngModel", ctx_r1.formattedErrorDetails)("disabled", true)("language", "json")("lineWrapping", true);
|
|
614
602
|
} }
|
|
615
|
-
function
|
|
616
|
-
i0.ɵɵelementStart(0, "p",
|
|
603
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_43_Conditional_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
604
|
+
i0.ɵɵelementStart(0, "p", 126);
|
|
617
605
|
i0.ɵɵtext(1, " The prompt execution failed but no additional error information is available. ");
|
|
618
606
|
i0.ɵɵelementEnd();
|
|
619
607
|
} }
|
|
620
|
-
function
|
|
621
|
-
i0.ɵɵelementStart(0, "div",
|
|
622
|
-
i0.ɵɵconditionalCreate(1,
|
|
623
|
-
i0.ɵɵconditionalCreate(2,
|
|
624
|
-
i0.ɵɵconditionalCreate(3,
|
|
608
|
+
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_43_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
609
|
+
i0.ɵɵelementStart(0, "div", 123);
|
|
610
|
+
i0.ɵɵconditionalCreate(1, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_43_Conditional_1_Conditional_1_Template, 4, 1, "p", 124);
|
|
611
|
+
i0.ɵɵconditionalCreate(2, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_43_Conditional_1_Conditional_2_Template, 7, 4, "div", 125);
|
|
612
|
+
i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_43_Conditional_1_Conditional_3_Template, 2, 0, "p", 126);
|
|
625
613
|
i0.ɵɵelementEnd();
|
|
626
614
|
} if (rf & 2) {
|
|
627
615
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -633,26 +621,22 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_43_Conditi
|
|
|
633
621
|
i0.ɵɵconditional(!ctx_r1.formattedErrorDetails ? 3 : -1);
|
|
634
622
|
} }
|
|
635
623
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_43_Template(rf, ctx) { if (rf & 1) {
|
|
636
|
-
i0.ɵɵelementStart(0, "
|
|
637
|
-
i0.ɵɵ
|
|
638
|
-
i0.ɵɵelementStart(2, "p");
|
|
639
|
-
i0.ɵɵtext(3, "No result data recorded");
|
|
640
|
-
i0.ɵɵelementEnd();
|
|
641
|
-
i0.ɵɵconditionalCreate(4, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_43_Conditional_4_Template, 4, 3, "div", 122);
|
|
624
|
+
i0.ɵɵelementStart(0, "mj-empty-state", 34);
|
|
625
|
+
i0.ɵɵconditionalCreate(1, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_43_Conditional_1_Template, 4, 3, "div", 123);
|
|
642
626
|
i0.ɵɵelementEnd();
|
|
643
627
|
} if (rf & 2) {
|
|
644
628
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
645
|
-
i0.ɵɵadvance(
|
|
646
|
-
i0.ɵɵconditional(ctx_r1.record.CompletedAt && (ctx_r1.record.Status === "Failed" || ctx_r1.record.Success === false) ?
|
|
629
|
+
i0.ɵɵadvance();
|
|
630
|
+
i0.ɵɵconditional(ctx_r1.record.CompletedAt && (ctx_r1.record.Status === "Failed" || ctx_r1.record.Success === false) ? 1 : -1);
|
|
647
631
|
} }
|
|
648
632
|
function MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_45_Template(rf, ctx) { if (rf & 1) {
|
|
649
|
-
i0.ɵɵelementStart(0, "span",
|
|
650
|
-
i0.ɵɵelement(1, "i",
|
|
633
|
+
i0.ɵɵelementStart(0, "span", 97);
|
|
634
|
+
i0.ɵɵelement(1, "i", 129);
|
|
651
635
|
i0.ɵɵtext(2, " Token Usage & Metrics ");
|
|
652
636
|
i0.ɵɵelementEnd();
|
|
653
637
|
} }
|
|
654
638
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_55_Template(rf, ctx) { if (rf & 1) {
|
|
655
|
-
i0.ɵɵelementStart(0, "div",
|
|
639
|
+
i0.ɵɵelementStart(0, "div", 40)(1, "span");
|
|
656
640
|
i0.ɵɵtext(2);
|
|
657
641
|
i0.ɵɵelementEnd()();
|
|
658
642
|
} if (rf & 2) {
|
|
@@ -661,7 +645,7 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_55_Templat
|
|
|
661
645
|
i0.ɵɵtextInterpolate1("incl. ", ctx_r1.formatTokens(ctx_r1.CachedTokens), " cached");
|
|
662
646
|
} }
|
|
663
647
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_56_Template(rf, ctx) { if (rf & 1) {
|
|
664
|
-
i0.ɵɵelementStart(0, "div",
|
|
648
|
+
i0.ɵɵelementStart(0, "div", 40)(1, "span");
|
|
665
649
|
i0.ɵɵtext(2);
|
|
666
650
|
i0.ɵɵelementEnd()();
|
|
667
651
|
} if (rf & 2) {
|
|
@@ -670,7 +654,7 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_56_Templat
|
|
|
670
654
|
i0.ɵɵtextInterpolate1("Rollup: ", ctx_r1.formatTokens(ctx_r1.record.TokensPromptRollup));
|
|
671
655
|
} }
|
|
672
656
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_64_Template(rf, ctx) { if (rf & 1) {
|
|
673
|
-
i0.ɵɵelementStart(0, "div",
|
|
657
|
+
i0.ɵɵelementStart(0, "div", 40)(1, "span");
|
|
674
658
|
i0.ɵɵtext(2);
|
|
675
659
|
i0.ɵɵelementEnd()();
|
|
676
660
|
} if (rf & 2) {
|
|
@@ -679,7 +663,7 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_64_Templat
|
|
|
679
663
|
i0.ɵɵtextInterpolate1("Rollup: ", ctx_r1.formatTokens(ctx_r1.record.TokensCompletionRollup));
|
|
680
664
|
} }
|
|
681
665
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_72_Template(rf, ctx) { if (rf & 1) {
|
|
682
|
-
i0.ɵɵelementStart(0, "div",
|
|
666
|
+
i0.ɵɵelementStart(0, "div", 40)(1, "span");
|
|
683
667
|
i0.ɵɵtext(2);
|
|
684
668
|
i0.ɵɵelementEnd()();
|
|
685
669
|
} if (rf & 2) {
|
|
@@ -688,7 +672,7 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_72_Templat
|
|
|
688
672
|
i0.ɵɵtextInterpolate1("incl. ", ctx_r1.formatTokens(ctx_r1.CachedTokens), " cached");
|
|
689
673
|
} }
|
|
690
674
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_73_Template(rf, ctx) { if (rf & 1) {
|
|
691
|
-
i0.ɵɵelementStart(0, "div",
|
|
675
|
+
i0.ɵɵelementStart(0, "div", 40)(1, "span");
|
|
692
676
|
i0.ɵɵtext(2);
|
|
693
677
|
i0.ɵɵelementEnd()();
|
|
694
678
|
} if (rf & 2) {
|
|
@@ -697,7 +681,7 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_73_Templat
|
|
|
697
681
|
i0.ɵɵtextInterpolate1("Net rollup: ", ctx_r1.formatTokens(ctx_r1.record.TokensUsedRollup));
|
|
698
682
|
} }
|
|
699
683
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_74_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
700
|
-
i0.ɵɵelementStart(0, "div",
|
|
684
|
+
i0.ɵɵelementStart(0, "div", 40)(1, "span");
|
|
701
685
|
i0.ɵɵtext(2);
|
|
702
686
|
i0.ɵɵelementEnd()();
|
|
703
687
|
} if (rf & 2) {
|
|
@@ -706,7 +690,7 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_74_Conditi
|
|
|
706
690
|
i0.ɵɵtextInterpolate1("Write: ", ctx_r1.formatTokens(ctx_r1.record.TokensCacheWrite));
|
|
707
691
|
} }
|
|
708
692
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_74_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
709
|
-
i0.ɵɵelementStart(0, "div",
|
|
693
|
+
i0.ɵɵelementStart(0, "div", 40)(1, "span");
|
|
710
694
|
i0.ɵɵtext(2);
|
|
711
695
|
i0.ɵɵpipe(3, "number");
|
|
712
696
|
i0.ɵɵelementEnd()();
|
|
@@ -716,16 +700,16 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_74_Conditi
|
|
|
716
700
|
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind2(3, 1, ctx_r1.CacheHitRatePct, "1.0-0"), "% hit rate");
|
|
717
701
|
} }
|
|
718
702
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_74_Template(rf, ctx) { if (rf & 1) {
|
|
719
|
-
i0.ɵɵelementStart(0, "div",
|
|
720
|
-
i0.ɵɵelement(2, "i",
|
|
703
|
+
i0.ɵɵelementStart(0, "div", 36)(1, "div", 37);
|
|
704
|
+
i0.ɵɵelement(2, "i", 95);
|
|
721
705
|
i0.ɵɵelementStart(3, "h4");
|
|
722
706
|
i0.ɵɵtext(4, "Cache Read");
|
|
723
707
|
i0.ɵɵelementEnd()();
|
|
724
|
-
i0.ɵɵelementStart(5, "div",
|
|
708
|
+
i0.ɵɵelementStart(5, "div", 42);
|
|
725
709
|
i0.ɵɵtext(6);
|
|
726
710
|
i0.ɵɵelementEnd();
|
|
727
|
-
i0.ɵɵconditionalCreate(7, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_74_Conditional_7_Template, 3, 1, "div",
|
|
728
|
-
i0.ɵɵconditionalCreate(8, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_74_Conditional_8_Template, 4, 4, "div",
|
|
711
|
+
i0.ɵɵconditionalCreate(7, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_74_Conditional_7_Template, 3, 1, "div", 40);
|
|
712
|
+
i0.ɵɵconditionalCreate(8, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_74_Conditional_8_Template, 4, 4, "div", 40);
|
|
729
713
|
i0.ɵɵelementEnd();
|
|
730
714
|
} if (rf & 2) {
|
|
731
715
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -737,7 +721,7 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_74_Templat
|
|
|
737
721
|
i0.ɵɵconditional(ctx_r1.record.TokensCacheRead || ctx_r1.record.TokensCacheWrite ? 8 : -1);
|
|
738
722
|
} }
|
|
739
723
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_82_Template(rf, ctx) { if (rf & 1) {
|
|
740
|
-
i0.ɵɵelementStart(0, "div",
|
|
724
|
+
i0.ɵɵelementStart(0, "div", 40)(1, "span");
|
|
741
725
|
i0.ɵɵtext(2);
|
|
742
726
|
i0.ɵɵelementEnd()();
|
|
743
727
|
} if (rf & 2) {
|
|
@@ -746,7 +730,7 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_82_Templat
|
|
|
746
730
|
i0.ɵɵtextInterpolate1("Total: ", ctx_r1.formatCost(ctx_r1.record.TotalCost));
|
|
747
731
|
} }
|
|
748
732
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_83_Template(rf, ctx) { if (rf & 1) {
|
|
749
|
-
i0.ɵɵelementStart(0, "div",
|
|
733
|
+
i0.ɵɵelementStart(0, "div", 46);
|
|
750
734
|
i0.ɵɵtext(1);
|
|
751
735
|
i0.ɵɵelementEnd();
|
|
752
736
|
} if (rf & 2) {
|
|
@@ -755,12 +739,12 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_83_Templat
|
|
|
755
739
|
i0.ɵɵtextInterpolate(ctx_r1.record.CostCurrency);
|
|
756
740
|
} }
|
|
757
741
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_84_Template(rf, ctx) { if (rf & 1) {
|
|
758
|
-
i0.ɵɵelementStart(0, "div",
|
|
759
|
-
i0.ɵɵelement(2, "i",
|
|
742
|
+
i0.ɵɵelementStart(0, "div", 36)(1, "div", 37);
|
|
743
|
+
i0.ɵɵelement(2, "i", 130);
|
|
760
744
|
i0.ɵɵelementStart(3, "h4");
|
|
761
745
|
i0.ɵɵtext(4, "Queue Time");
|
|
762
746
|
i0.ɵɵelementEnd()();
|
|
763
|
-
i0.ɵɵelementStart(5, "div",
|
|
747
|
+
i0.ɵɵelementStart(5, "div", 42);
|
|
764
748
|
i0.ɵɵtext(6);
|
|
765
749
|
i0.ɵɵelementEnd()();
|
|
766
750
|
} if (rf & 2) {
|
|
@@ -769,12 +753,12 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_84_Templat
|
|
|
769
753
|
i0.ɵɵtextInterpolate(ctx_r1.formatDuration(ctx_r1.record.QueueTime));
|
|
770
754
|
} }
|
|
771
755
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_85_Template(rf, ctx) { if (rf & 1) {
|
|
772
|
-
i0.ɵɵelementStart(0, "div",
|
|
773
|
-
i0.ɵɵelement(2, "i",
|
|
756
|
+
i0.ɵɵelementStart(0, "div", 36)(1, "div", 37);
|
|
757
|
+
i0.ɵɵelement(2, "i", 131);
|
|
774
758
|
i0.ɵɵelementStart(3, "h4");
|
|
775
759
|
i0.ɵɵtext(4, "Prompt Time");
|
|
776
760
|
i0.ɵɵelementEnd()();
|
|
777
|
-
i0.ɵɵelementStart(5, "div",
|
|
761
|
+
i0.ɵɵelementStart(5, "div", 42);
|
|
778
762
|
i0.ɵɵtext(6);
|
|
779
763
|
i0.ɵɵelementEnd()();
|
|
780
764
|
} if (rf & 2) {
|
|
@@ -783,12 +767,12 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_85_Templat
|
|
|
783
767
|
i0.ɵɵtextInterpolate(ctx_r1.formatDuration(ctx_r1.record.PromptTime));
|
|
784
768
|
} }
|
|
785
769
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_86_Template(rf, ctx) { if (rf & 1) {
|
|
786
|
-
i0.ɵɵelementStart(0, "div",
|
|
787
|
-
i0.ɵɵelement(2, "i",
|
|
770
|
+
i0.ɵɵelementStart(0, "div", 36)(1, "div", 37);
|
|
771
|
+
i0.ɵɵelement(2, "i", 132);
|
|
788
772
|
i0.ɵɵelementStart(3, "h4");
|
|
789
773
|
i0.ɵɵtext(4, "Completion Time");
|
|
790
774
|
i0.ɵɵelementEnd()();
|
|
791
|
-
i0.ɵɵelementStart(5, "div",
|
|
775
|
+
i0.ɵɵelementStart(5, "div", 42);
|
|
792
776
|
i0.ɵɵtext(6);
|
|
793
777
|
i0.ɵɵelementEnd()();
|
|
794
778
|
} if (rf & 2) {
|
|
@@ -797,10 +781,10 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_86_Templat
|
|
|
797
781
|
i0.ɵɵtextInterpolate(ctx_r1.formatDuration(ctx_r1.record.CompletionTime));
|
|
798
782
|
} }
|
|
799
783
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_88_Template(rf, ctx) { if (rf & 1) {
|
|
800
|
-
i0.ɵɵelementStart(0, "div",
|
|
784
|
+
i0.ɵɵelementStart(0, "div", 48)(1, "span", 88);
|
|
801
785
|
i0.ɵɵtext(2, "Execution Order:");
|
|
802
786
|
i0.ɵɵelementEnd();
|
|
803
|
-
i0.ɵɵelementStart(3, "span",
|
|
787
|
+
i0.ɵɵelementStart(3, "span", 89);
|
|
804
788
|
i0.ɵɵtext(4);
|
|
805
789
|
i0.ɵɵelementEnd()();
|
|
806
790
|
} if (rf & 2) {
|
|
@@ -810,13 +794,13 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_88_Templat
|
|
|
810
794
|
} }
|
|
811
795
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_89_Template(rf, ctx) { if (rf & 1) {
|
|
812
796
|
const _r12 = i0.ɵɵgetCurrentView();
|
|
813
|
-
i0.ɵɵelementStart(0, "div",
|
|
797
|
+
i0.ɵɵelementStart(0, "div", 48)(1, "span", 88);
|
|
814
798
|
i0.ɵɵtext(2, "Agent:");
|
|
815
799
|
i0.ɵɵelementEnd();
|
|
816
|
-
i0.ɵɵelementStart(3, "span",
|
|
800
|
+
i0.ɵɵelementStart(3, "span", 133);
|
|
817
801
|
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_89_Template_span_click_3_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Agents", ctx_r1.record.AgentID)); });
|
|
818
802
|
i0.ɵɵtext(4);
|
|
819
|
-
i0.ɵɵelement(5, "i",
|
|
803
|
+
i0.ɵɵelement(5, "i", 134);
|
|
820
804
|
i0.ɵɵelementEnd()();
|
|
821
805
|
} if (rf & 2) {
|
|
822
806
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -824,7 +808,7 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_89_Templat
|
|
|
824
808
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.Agent, " ");
|
|
825
809
|
} }
|
|
826
810
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
827
|
-
i0.ɵɵelementStart(0, "span",
|
|
811
|
+
i0.ɵɵelementStart(0, "span", 114);
|
|
828
812
|
i0.ɵɵtext(1);
|
|
829
813
|
i0.ɵɵelementEnd();
|
|
830
814
|
} if (rf & 2) {
|
|
@@ -833,21 +817,21 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_ng_temp
|
|
|
833
817
|
i0.ɵɵtextInterpolate1("(", ctx_r1.record.ValidationAttemptCount, " attempts)");
|
|
834
818
|
} }
|
|
835
819
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_ng_template_1_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
836
|
-
i0.ɵɵelementStart(0, "span",
|
|
820
|
+
i0.ɵɵelementStart(0, "span", 146);
|
|
837
821
|
i0.ɵɵtext(1, "Passed");
|
|
838
822
|
i0.ɵɵelementEnd();
|
|
839
823
|
} }
|
|
840
824
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_ng_template_1_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
841
|
-
i0.ɵɵelementStart(0, "span",
|
|
825
|
+
i0.ɵɵelementStart(0, "span", 119);
|
|
842
826
|
i0.ɵɵtext(1, "Failed");
|
|
843
827
|
i0.ɵɵelementEnd();
|
|
844
828
|
} }
|
|
845
829
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
846
|
-
i0.ɵɵelementStart(0, "span",
|
|
847
|
-
i0.ɵɵelement(1, "i",
|
|
830
|
+
i0.ɵɵelementStart(0, "span", 97);
|
|
831
|
+
i0.ɵɵelement(1, "i", 145);
|
|
848
832
|
i0.ɵɵtext(2, " Validation & Retries ");
|
|
849
|
-
i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_ng_template_1_Conditional_3_Template, 2, 1, "span",
|
|
850
|
-
i0.ɵɵconditionalCreate(4, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_ng_template_1_Conditional_4_Template, 2, 0, "span",
|
|
833
|
+
i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_ng_template_1_Conditional_3_Template, 2, 1, "span", 114);
|
|
834
|
+
i0.ɵɵconditionalCreate(4, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_ng_template_1_Conditional_4_Template, 2, 0, "span", 146)(5, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_ng_template_1_Conditional_5_Template, 2, 0, "span", 119);
|
|
851
835
|
i0.ɵɵelementEnd();
|
|
852
836
|
} if (rf & 2) {
|
|
853
837
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -857,7 +841,7 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_ng_temp
|
|
|
857
841
|
i0.ɵɵconditional(ctx_r1.record.FinalValidationPassed ? 4 : ctx_r1.record.FinalValidationPassed === false ? 5 : -1);
|
|
858
842
|
} }
|
|
859
843
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_31_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
860
|
-
i0.ɵɵelementStart(0, "span",
|
|
844
|
+
i0.ɵɵelementStart(0, "span", 147);
|
|
861
845
|
i0.ɵɵtext(1);
|
|
862
846
|
i0.ɵɵelementEnd();
|
|
863
847
|
} if (rf & 2) {
|
|
@@ -866,14 +850,14 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditi
|
|
|
866
850
|
i0.ɵɵtextInterpolate1("", ctx_r1.record.ValidationErrorCount, " validation errors");
|
|
867
851
|
} }
|
|
868
852
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_31_Template(rf, ctx) { if (rf & 1) {
|
|
869
|
-
i0.ɵɵelementStart(0, "div",
|
|
870
|
-
i0.ɵɵelement(2, "i",
|
|
853
|
+
i0.ɵɵelementStart(0, "div", 140)(1, "h5");
|
|
854
|
+
i0.ɵɵelement(2, "i", 120);
|
|
871
855
|
i0.ɵɵtext(3, " Final Validation Error");
|
|
872
856
|
i0.ɵɵelementEnd();
|
|
873
857
|
i0.ɵɵelementStart(4, "p");
|
|
874
858
|
i0.ɵɵtext(5);
|
|
875
859
|
i0.ɵɵelementEnd();
|
|
876
|
-
i0.ɵɵconditionalCreate(6, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_31_Conditional_6_Template, 2, 1, "span",
|
|
860
|
+
i0.ɵɵconditionalCreate(6, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_31_Conditional_6_Template, 2, 1, "span", 147);
|
|
877
861
|
i0.ɵɵelementEnd();
|
|
878
862
|
} if (rf & 2) {
|
|
879
863
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -883,8 +867,8 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditi
|
|
|
883
867
|
i0.ɵɵconditional(ctx_r1.record && ctx_r1.record.ValidationErrorCount && ctx_r1.record.ValidationErrorCount > 0 ? 6 : -1);
|
|
884
868
|
} }
|
|
885
869
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_32_Template(rf, ctx) { if (rf & 1) {
|
|
886
|
-
i0.ɵɵelementStart(0, "div",
|
|
887
|
-
i0.ɵɵelement(2, "i",
|
|
870
|
+
i0.ɵɵelementStart(0, "div", 141)(1, "h5");
|
|
871
|
+
i0.ɵɵelement(2, "i", 57);
|
|
888
872
|
i0.ɵɵtext(3, " Most Common Error");
|
|
889
873
|
i0.ɵɵelementEnd();
|
|
890
874
|
i0.ɵɵelementStart(4, "p");
|
|
@@ -896,23 +880,23 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditi
|
|
|
896
880
|
i0.ɵɵtextInterpolate(ctx_r1.record.CommonValidationError);
|
|
897
881
|
} }
|
|
898
882
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_33_Template(rf, ctx) { if (rf & 1) {
|
|
899
|
-
i0.ɵɵelementStart(0, "div",
|
|
883
|
+
i0.ɵɵelementStart(0, "div", 142)(1, "h4");
|
|
900
884
|
i0.ɵɵtext(2, "Retry Timeline");
|
|
901
885
|
i0.ɵɵelementEnd();
|
|
902
|
-
i0.ɵɵelementStart(3, "div",
|
|
903
|
-
i0.ɵɵelement(5, "i",
|
|
886
|
+
i0.ɵɵelementStart(3, "div", 148)(4, "div", 149);
|
|
887
|
+
i0.ɵɵelement(5, "i", 91);
|
|
904
888
|
i0.ɵɵelementStart(6, "span");
|
|
905
889
|
i0.ɵɵtext(7);
|
|
906
890
|
i0.ɵɵpipe(8, "date");
|
|
907
891
|
i0.ɵɵelementEnd()();
|
|
908
|
-
i0.ɵɵelementStart(9, "div",
|
|
909
|
-
i0.ɵɵelement(10, "i",
|
|
892
|
+
i0.ɵɵelementStart(9, "div", 149);
|
|
893
|
+
i0.ɵɵelement(10, "i", 132);
|
|
910
894
|
i0.ɵɵelementStart(11, "span");
|
|
911
895
|
i0.ɵɵtext(12);
|
|
912
896
|
i0.ɵɵpipe(13, "date");
|
|
913
897
|
i0.ɵɵelementEnd()();
|
|
914
|
-
i0.ɵɵelementStart(14, "div",
|
|
915
|
-
i0.ɵɵelement(15, "i",
|
|
898
|
+
i0.ɵɵelementStart(14, "div", 149);
|
|
899
|
+
i0.ɵɵelement(15, "i", 150);
|
|
916
900
|
i0.ɵɵelementStart(16, "span");
|
|
917
901
|
i0.ɵɵtext(17);
|
|
918
902
|
i0.ɵɵelementEnd()()()();
|
|
@@ -926,7 +910,7 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditi
|
|
|
926
910
|
i0.ɵɵtextInterpolate1("Total Retry Duration: ", ctx_r1.formatDuration(ctx_r1.record.TotalRetryDurationMS));
|
|
927
911
|
} }
|
|
928
912
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_34_For_5_Conditional_7_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
929
|
-
i0.ɵɵelementStart(0, "span",
|
|
913
|
+
i0.ɵɵelementStart(0, "span", 147);
|
|
930
914
|
i0.ɵɵtext(1);
|
|
931
915
|
i0.ɵɵelementEnd();
|
|
932
916
|
} if (rf & 2) {
|
|
@@ -935,10 +919,10 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditi
|
|
|
935
919
|
i0.ɵɵtextInterpolate1("(", attempt_r14.validationErrorCount, " errors)");
|
|
936
920
|
} }
|
|
937
921
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_34_For_5_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
938
|
-
i0.ɵɵelementStart(0, "span",
|
|
922
|
+
i0.ɵɵelementStart(0, "span", 158);
|
|
939
923
|
i0.ɵɵtext(1);
|
|
940
924
|
i0.ɵɵelementEnd();
|
|
941
|
-
i0.ɵɵconditionalCreate(2, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_34_For_5_Conditional_7_Conditional_2_Template, 2, 1, "span",
|
|
925
|
+
i0.ɵɵconditionalCreate(2, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_34_For_5_Conditional_7_Conditional_2_Template, 2, 1, "span", 147);
|
|
942
926
|
} if (rf & 2) {
|
|
943
927
|
const attempt_r14 = i0.ɵɵnextContext().$implicit;
|
|
944
928
|
i0.ɵɵadvance();
|
|
@@ -947,7 +931,7 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditi
|
|
|
947
931
|
i0.ɵɵconditional(attempt_r14.validationErrorCount > 0 ? 2 : -1);
|
|
948
932
|
} }
|
|
949
933
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_34_For_5_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
950
|
-
i0.ɵɵelementStart(0, "span",
|
|
934
|
+
i0.ɵɵelementStart(0, "span", 157);
|
|
951
935
|
i0.ɵɵtext(1);
|
|
952
936
|
i0.ɵɵelementEnd();
|
|
953
937
|
} if (rf & 2) {
|
|
@@ -956,15 +940,15 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditi
|
|
|
956
940
|
i0.ɵɵtextInterpolate1("Output: ", attempt_r14.outputLength, " chars");
|
|
957
941
|
} }
|
|
958
942
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_34_For_5_Template(rf, ctx) { if (rf & 1) {
|
|
959
|
-
i0.ɵɵelementStart(0, "div",
|
|
943
|
+
i0.ɵɵelementStart(0, "div", 153)(1, "div", 154);
|
|
960
944
|
i0.ɵɵelement(2, "i");
|
|
961
945
|
i0.ɵɵtext(3);
|
|
962
946
|
i0.ɵɵelementEnd();
|
|
963
|
-
i0.ɵɵelementStart(4, "div",
|
|
947
|
+
i0.ɵɵelementStart(4, "div", 155)(5, "span", 156);
|
|
964
948
|
i0.ɵɵtext(6);
|
|
965
949
|
i0.ɵɵelementEnd();
|
|
966
950
|
i0.ɵɵconditionalCreate(7, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_34_For_5_Conditional_7_Template, 3, 2);
|
|
967
|
-
i0.ɵɵconditionalCreate(8, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_34_For_5_Conditional_8_Template, 2, 1, "span",
|
|
951
|
+
i0.ɵɵconditionalCreate(8, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_34_For_5_Conditional_8_Template, 2, 1, "span", 157);
|
|
968
952
|
i0.ɵɵelementEnd()();
|
|
969
953
|
} if (rf & 2) {
|
|
970
954
|
const attempt_r14 = ctx.$implicit;
|
|
@@ -981,11 +965,11 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditi
|
|
|
981
965
|
i0.ɵɵconditional(attempt_r14.outputLength ? 8 : -1);
|
|
982
966
|
} }
|
|
983
967
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_34_Template(rf, ctx) { if (rf & 1) {
|
|
984
|
-
i0.ɵɵelementStart(0, "div",
|
|
968
|
+
i0.ɵɵelementStart(0, "div", 143)(1, "h4");
|
|
985
969
|
i0.ɵɵtext(2, "Validation Attempts");
|
|
986
970
|
i0.ɵɵelementEnd();
|
|
987
|
-
i0.ɵɵelementStart(3, "div",
|
|
988
|
-
i0.ɵɵrepeaterCreate(4, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_34_For_5_Template, 9, 10, "div",
|
|
971
|
+
i0.ɵɵelementStart(3, "div", 151);
|
|
972
|
+
i0.ɵɵrepeaterCreate(4, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_34_For_5_Template, 9, 10, "div", 152, _forTrack0);
|
|
989
973
|
i0.ɵɵelementEnd()();
|
|
990
974
|
} if (rf & 2) {
|
|
991
975
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -994,14 +978,14 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditi
|
|
|
994
978
|
} }
|
|
995
979
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_35_Template(rf, ctx) { if (rf & 1) {
|
|
996
980
|
const _r15 = i0.ɵɵgetCurrentView();
|
|
997
|
-
i0.ɵɵelementStart(0, "div",
|
|
981
|
+
i0.ɵɵelementStart(0, "div", 144)(1, "div", 106)(2, "h4", 127);
|
|
998
982
|
i0.ɵɵtext(3, "Validation Summary Details");
|
|
999
983
|
i0.ɵɵelementEnd();
|
|
1000
|
-
i0.ɵɵelementStart(4, "button",
|
|
984
|
+
i0.ɵɵelementStart(4, "button", 109);
|
|
1001
985
|
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_35_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openFullScreen(ctx_r1.formattedValidationSummary, "json", "Validation Summary")); });
|
|
1002
|
-
i0.ɵɵelement(5, "i",
|
|
986
|
+
i0.ɵɵelement(5, "i", 110);
|
|
1003
987
|
i0.ɵɵelementEnd()();
|
|
1004
|
-
i0.ɵɵelementStart(6, "div",
|
|
988
|
+
i0.ɵɵelementStart(6, "div", 159)(7, "mj-code-editor", 160);
|
|
1005
989
|
i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_35_Template_mj_code_editor_ngModelChange_7_listener($event) { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.formattedValidationSummary, $event) || (ctx_r1.formattedValidationSummary = $event); return i0.ɵɵresetView($event); });
|
|
1006
990
|
i0.ɵɵelementEnd()()();
|
|
1007
991
|
} if (rf & 2) {
|
|
@@ -1012,14 +996,14 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditi
|
|
|
1012
996
|
} }
|
|
1013
997
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_36_Template(rf, ctx) { if (rf & 1) {
|
|
1014
998
|
const _r16 = i0.ɵɵgetCurrentView();
|
|
1015
|
-
i0.ɵɵelementStart(0, "div",
|
|
999
|
+
i0.ɵɵelementStart(0, "div", 144)(1, "div", 106)(2, "h4", 127);
|
|
1016
1000
|
i0.ɵɵtext(3, "Validation Attempts (Raw JSON)");
|
|
1017
1001
|
i0.ɵɵelementEnd();
|
|
1018
|
-
i0.ɵɵelementStart(4, "button",
|
|
1002
|
+
i0.ɵɵelementStart(4, "button", 109);
|
|
1019
1003
|
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_36_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openFullScreen(ctx_r1.formattedValidationAttempts, "json", "Validation Attempts")); });
|
|
1020
|
-
i0.ɵɵelement(5, "i",
|
|
1004
|
+
i0.ɵɵelement(5, "i", 110);
|
|
1021
1005
|
i0.ɵɵelementEnd()();
|
|
1022
|
-
i0.ɵɵelementStart(6, "div",
|
|
1006
|
+
i0.ɵɵelementStart(6, "div", 159)(7, "mj-code-editor", 161);
|
|
1023
1007
|
i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_36_Template_mj_code_editor_ngModelChange_7_listener($event) { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.formattedValidationAttempts, $event) || (ctx_r1.formattedValidationAttempts = $event); return i0.ɵɵresetView($event); });
|
|
1024
1008
|
i0.ɵɵelementEnd()()();
|
|
1025
1009
|
} if (rf & 2) {
|
|
@@ -1033,44 +1017,44 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Templat
|
|
|
1033
1017
|
i0.ɵɵelementStart(0, "mj-accordion-panel", 27);
|
|
1034
1018
|
i0.ɵɵlistener("ExpandedChange", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Template_mj_accordion_panel_ExpandedChange_0_listener($event) { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onValidationPanelToggle($event)); });
|
|
1035
1019
|
i0.ɵɵtemplate(1, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_ng_template_1_Template, 6, 2, "ng-template", 28);
|
|
1036
|
-
i0.ɵɵelementStart(2, "div", 29)(3, "div",
|
|
1020
|
+
i0.ɵɵelementStart(2, "div", 29)(3, "div", 135)(4, "div", 136)(5, "h4");
|
|
1037
1021
|
i0.ɵɵtext(6, "Validation Summary");
|
|
1038
1022
|
i0.ɵɵelementEnd();
|
|
1039
|
-
i0.ɵɵelementStart(7, "div",
|
|
1023
|
+
i0.ɵɵelementStart(7, "div", 137);
|
|
1040
1024
|
i0.ɵɵelement(8, "i");
|
|
1041
1025
|
i0.ɵɵtext(9);
|
|
1042
1026
|
i0.ɵɵelementEnd()();
|
|
1043
|
-
i0.ɵɵelementStart(10, "div",
|
|
1027
|
+
i0.ɵɵelementStart(10, "div", 138)(11, "div", 139)(12, "div", 88);
|
|
1044
1028
|
i0.ɵɵtext(13, "Total Attempts");
|
|
1045
1029
|
i0.ɵɵelementEnd();
|
|
1046
|
-
i0.ɵɵelementStart(14, "div",
|
|
1030
|
+
i0.ɵɵelementStart(14, "div", 89);
|
|
1047
1031
|
i0.ɵɵtext(15);
|
|
1048
1032
|
i0.ɵɵelementEnd()();
|
|
1049
|
-
i0.ɵɵelementStart(16, "div",
|
|
1033
|
+
i0.ɵɵelementStart(16, "div", 139)(17, "div", 88);
|
|
1050
1034
|
i0.ɵɵtext(18, "Successful");
|
|
1051
1035
|
i0.ɵɵelementEnd();
|
|
1052
|
-
i0.ɵɵelementStart(19, "div",
|
|
1036
|
+
i0.ɵɵelementStart(19, "div", 89);
|
|
1053
1037
|
i0.ɵɵtext(20);
|
|
1054
1038
|
i0.ɵɵelementEnd()();
|
|
1055
|
-
i0.ɵɵelementStart(21, "div",
|
|
1039
|
+
i0.ɵɵelementStart(21, "div", 139)(22, "div", 88);
|
|
1056
1040
|
i0.ɵɵtext(23, "Behavior");
|
|
1057
1041
|
i0.ɵɵelementEnd();
|
|
1058
|
-
i0.ɵɵelementStart(24, "div",
|
|
1042
|
+
i0.ɵɵelementStart(24, "div", 89);
|
|
1059
1043
|
i0.ɵɵtext(25);
|
|
1060
1044
|
i0.ɵɵelementEnd()();
|
|
1061
|
-
i0.ɵɵelementStart(26, "div",
|
|
1045
|
+
i0.ɵɵelementStart(26, "div", 139)(27, "div", 88);
|
|
1062
1046
|
i0.ɵɵtext(28, "Retry Strategy");
|
|
1063
1047
|
i0.ɵɵelementEnd();
|
|
1064
|
-
i0.ɵɵelementStart(29, "div",
|
|
1048
|
+
i0.ɵɵelementStart(29, "div", 89);
|
|
1065
1049
|
i0.ɵɵtext(30);
|
|
1066
1050
|
i0.ɵɵelementEnd()()();
|
|
1067
|
-
i0.ɵɵconditionalCreate(31, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_31_Template, 7, 2, "div",
|
|
1068
|
-
i0.ɵɵconditionalCreate(32, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_32_Template, 6, 1, "div",
|
|
1051
|
+
i0.ɵɵconditionalCreate(31, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_31_Template, 7, 2, "div", 140);
|
|
1052
|
+
i0.ɵɵconditionalCreate(32, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_32_Template, 6, 1, "div", 141);
|
|
1069
1053
|
i0.ɵɵelementEnd();
|
|
1070
|
-
i0.ɵɵconditionalCreate(33, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_33_Template, 18, 9, "div",
|
|
1071
|
-
i0.ɵɵconditionalCreate(34, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_34_Template, 6, 0, "div",
|
|
1072
|
-
i0.ɵɵconditionalCreate(35, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_35_Template, 8, 4, "div",
|
|
1073
|
-
i0.ɵɵconditionalCreate(36, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_36_Template, 8, 4, "div",
|
|
1054
|
+
i0.ɵɵconditionalCreate(33, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_33_Template, 18, 9, "div", 142);
|
|
1055
|
+
i0.ɵɵconditionalCreate(34, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_34_Template, 6, 0, "div", 143);
|
|
1056
|
+
i0.ɵɵconditionalCreate(35, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_35_Template, 8, 4, "div", 144);
|
|
1057
|
+
i0.ɵɵconditionalCreate(36, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Conditional_36_Template, 8, 4, "div", 144);
|
|
1074
1058
|
i0.ɵɵelementEnd()();
|
|
1075
1059
|
} if (rf & 2) {
|
|
1076
1060
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -1103,7 +1087,7 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Templat
|
|
|
1103
1087
|
i0.ɵɵconditional(ctx_r1.record.ValidationAttempts ? 36 : -1);
|
|
1104
1088
|
} }
|
|
1105
1089
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_91_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
1106
|
-
i0.ɵɵelementStart(0, "span",
|
|
1090
|
+
i0.ɵɵelementStart(0, "span", 114);
|
|
1107
1091
|
i0.ɵɵtext(1);
|
|
1108
1092
|
i0.ɵɵelementEnd();
|
|
1109
1093
|
} if (rf & 2) {
|
|
@@ -1112,10 +1096,10 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_91_ng_temp
|
|
|
1112
1096
|
i0.ɵɵtextInterpolate1("(", ctx_r1.childRuns.length, " children)");
|
|
1113
1097
|
} }
|
|
1114
1098
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_91_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
1115
|
-
i0.ɵɵelementStart(0, "span",
|
|
1116
|
-
i0.ɵɵelement(1, "i",
|
|
1099
|
+
i0.ɵɵelementStart(0, "span", 97);
|
|
1100
|
+
i0.ɵɵelement(1, "i", 164);
|
|
1117
1101
|
i0.ɵɵtext(2, " Run Hierarchy ");
|
|
1118
|
-
i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_91_ng_template_1_Conditional_3_Template, 2, 1, "span",
|
|
1102
|
+
i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_91_ng_template_1_Conditional_3_Template, 2, 1, "span", 114);
|
|
1119
1103
|
i0.ɵɵelementEnd();
|
|
1120
1104
|
} if (rf & 2) {
|
|
1121
1105
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -1124,34 +1108,34 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_91_ng_temp
|
|
|
1124
1108
|
} }
|
|
1125
1109
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_91_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
1126
1110
|
const _r17 = i0.ɵɵgetCurrentView();
|
|
1127
|
-
i0.ɵɵelementStart(0, "div",
|
|
1128
|
-
i0.ɵɵelement(2, "i",
|
|
1111
|
+
i0.ɵɵelementStart(0, "div", 162)(1, "h4");
|
|
1112
|
+
i0.ɵɵelement(2, "i", 84);
|
|
1129
1113
|
i0.ɵɵtext(3, " Parent Run");
|
|
1130
1114
|
i0.ɵɵelementEnd();
|
|
1131
|
-
i0.ɵɵelementStart(4, "div",
|
|
1115
|
+
i0.ɵɵelementStart(4, "div", 165);
|
|
1132
1116
|
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_91_Conditional_3_Template_div_click_4_listener() { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Prompt Runs", ctx_r1.parentRun.ID)); });
|
|
1133
|
-
i0.ɵɵelementStart(5, "div",
|
|
1117
|
+
i0.ɵɵelementStart(5, "div", 166);
|
|
1134
1118
|
i0.ɵɵelement(6, "i");
|
|
1135
1119
|
i0.ɵɵelementEnd();
|
|
1136
|
-
i0.ɵɵelementStart(7, "div",
|
|
1120
|
+
i0.ɵɵelementStart(7, "div", 167)(8, "div", 168);
|
|
1137
1121
|
i0.ɵɵtext(9);
|
|
1138
|
-
i0.ɵɵelementStart(10, "span",
|
|
1122
|
+
i0.ɵɵelementStart(10, "span", 169);
|
|
1139
1123
|
i0.ɵɵtext(11);
|
|
1140
1124
|
i0.ɵɵelementEnd()();
|
|
1141
|
-
i0.ɵɵelementStart(12, "div",
|
|
1142
|
-
i0.ɵɵelement(14, "i",
|
|
1125
|
+
i0.ɵɵelementStart(12, "div", 170)(13, "span");
|
|
1126
|
+
i0.ɵɵelement(14, "i", 91);
|
|
1143
1127
|
i0.ɵɵtext(15);
|
|
1144
1128
|
i0.ɵɵelementEnd();
|
|
1145
1129
|
i0.ɵɵelementStart(16, "span");
|
|
1146
|
-
i0.ɵɵelement(17, "i",
|
|
1130
|
+
i0.ɵɵelement(17, "i", 43);
|
|
1147
1131
|
i0.ɵɵtext(18);
|
|
1148
1132
|
i0.ɵɵelementEnd();
|
|
1149
1133
|
i0.ɵɵelementStart(19, "span");
|
|
1150
|
-
i0.ɵɵelement(20, "i",
|
|
1134
|
+
i0.ɵɵelement(20, "i", 96);
|
|
1151
1135
|
i0.ɵɵtext(21);
|
|
1152
1136
|
i0.ɵɵpipe(22, "date");
|
|
1153
1137
|
i0.ɵɵelementEnd()()();
|
|
1154
|
-
i0.ɵɵelement(23, "i",
|
|
1138
|
+
i0.ɵɵelement(23, "i", 134);
|
|
1155
1139
|
i0.ɵɵelementEnd()();
|
|
1156
1140
|
} if (rf & 2) {
|
|
1157
1141
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -1171,7 +1155,7 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_91_Conditi
|
|
|
1171
1155
|
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(22, 9, ctx_r1.parentRun.RunAt, "short"));
|
|
1172
1156
|
} }
|
|
1173
1157
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_91_Conditional_4_For_6_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
1174
|
-
i0.ɵɵelementStart(0, "span",
|
|
1158
|
+
i0.ɵɵelementStart(0, "span", 175);
|
|
1175
1159
|
i0.ɵɵtext(1);
|
|
1176
1160
|
i0.ɵɵelementEnd();
|
|
1177
1161
|
} if (rf & 2) {
|
|
@@ -1181,30 +1165,30 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_91_Conditi
|
|
|
1181
1165
|
} }
|
|
1182
1166
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_91_Conditional_4_For_6_Template(rf, ctx) { if (rf & 1) {
|
|
1183
1167
|
const _r18 = i0.ɵɵgetCurrentView();
|
|
1184
|
-
i0.ɵɵelementStart(0, "div",
|
|
1168
|
+
i0.ɵɵelementStart(0, "div", 174);
|
|
1185
1169
|
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_91_Conditional_4_For_6_Template_div_click_0_listener() { const childRun_r19 = i0.ɵɵrestoreView(_r18).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Prompt Runs", childRun_r19.ID)); });
|
|
1186
|
-
i0.ɵɵelementStart(1, "div",
|
|
1170
|
+
i0.ɵɵelementStart(1, "div", 166);
|
|
1187
1171
|
i0.ɵɵelement(2, "i");
|
|
1188
1172
|
i0.ɵɵelementEnd();
|
|
1189
|
-
i0.ɵɵelementStart(3, "div",
|
|
1173
|
+
i0.ɵɵelementStart(3, "div", 167)(4, "div", 168);
|
|
1190
1174
|
i0.ɵɵtext(5);
|
|
1191
|
-
i0.ɵɵconditionalCreate(6, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_91_Conditional_4_For_6_Conditional_6_Template, 2, 1, "span",
|
|
1192
|
-
i0.ɵɵelementStart(7, "span",
|
|
1175
|
+
i0.ɵɵconditionalCreate(6, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_91_Conditional_4_For_6_Conditional_6_Template, 2, 1, "span", 175);
|
|
1176
|
+
i0.ɵɵelementStart(7, "span", 169);
|
|
1193
1177
|
i0.ɵɵtext(8);
|
|
1194
1178
|
i0.ɵɵelementEnd()();
|
|
1195
|
-
i0.ɵɵelementStart(9, "div",
|
|
1179
|
+
i0.ɵɵelementStart(9, "div", 170)(10, "span", 16);
|
|
1196
1180
|
i0.ɵɵelement(11, "i");
|
|
1197
1181
|
i0.ɵɵtext(12);
|
|
1198
1182
|
i0.ɵɵelementEnd();
|
|
1199
1183
|
i0.ɵɵelementStart(13, "span");
|
|
1200
|
-
i0.ɵɵelement(14, "i",
|
|
1184
|
+
i0.ɵɵelement(14, "i", 91);
|
|
1201
1185
|
i0.ɵɵtext(15);
|
|
1202
1186
|
i0.ɵɵelementEnd();
|
|
1203
1187
|
i0.ɵɵelementStart(16, "span");
|
|
1204
|
-
i0.ɵɵelement(17, "i",
|
|
1188
|
+
i0.ɵɵelement(17, "i", 43);
|
|
1205
1189
|
i0.ɵɵtext(18);
|
|
1206
1190
|
i0.ɵɵelementEnd()()();
|
|
1207
|
-
i0.ɵɵelement(19, "i",
|
|
1191
|
+
i0.ɵɵelement(19, "i", 134);
|
|
1208
1192
|
i0.ɵɵelementEnd();
|
|
1209
1193
|
} if (rf & 2) {
|
|
1210
1194
|
const childRun_r19 = ctx.$implicit;
|
|
@@ -1231,12 +1215,12 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_91_Conditi
|
|
|
1231
1215
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.formatTokens(childRun_r19.TokensUsed));
|
|
1232
1216
|
} }
|
|
1233
1217
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_91_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
1234
|
-
i0.ɵɵelementStart(0, "div",
|
|
1235
|
-
i0.ɵɵelement(2, "i",
|
|
1218
|
+
i0.ɵɵelementStart(0, "div", 163)(1, "h4");
|
|
1219
|
+
i0.ɵɵelement(2, "i", 171);
|
|
1236
1220
|
i0.ɵɵtext(3, " Child Runs");
|
|
1237
1221
|
i0.ɵɵelementEnd();
|
|
1238
|
-
i0.ɵɵelementStart(4, "div",
|
|
1239
|
-
i0.ɵɵrepeaterCreate(5, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_91_Conditional_4_For_6_Template, 20, 14, "div",
|
|
1222
|
+
i0.ɵɵelementStart(4, "div", 172);
|
|
1223
|
+
i0.ɵɵrepeaterCreate(5, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_91_Conditional_4_For_6_Template, 20, 14, "div", 173, _forTrack1);
|
|
1240
1224
|
i0.ɵɵelementEnd()();
|
|
1241
1225
|
} if (rf & 2) {
|
|
1242
1226
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -1244,11 +1228,11 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_91_Conditi
|
|
|
1244
1228
|
i0.ɵɵrepeater(ctx_r1.childRuns);
|
|
1245
1229
|
} }
|
|
1246
1230
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_91_Template(rf, ctx) { if (rf & 1) {
|
|
1247
|
-
i0.ɵɵelementStart(0, "mj-accordion-panel",
|
|
1231
|
+
i0.ɵɵelementStart(0, "mj-accordion-panel", 49);
|
|
1248
1232
|
i0.ɵɵtemplate(1, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_91_ng_template_1_Template, 4, 1, "ng-template", 28);
|
|
1249
1233
|
i0.ɵɵelementStart(2, "div", 29);
|
|
1250
|
-
i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_91_Conditional_3_Template, 24, 12, "div",
|
|
1251
|
-
i0.ɵɵconditionalCreate(4, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_91_Conditional_4_Template, 7, 0, "div",
|
|
1234
|
+
i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_91_Conditional_3_Template, 24, 12, "div", 162);
|
|
1235
|
+
i0.ɵɵconditionalCreate(4, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_91_Conditional_4_Template, 7, 0, "div", 163);
|
|
1252
1236
|
i0.ɵɵelementEnd()();
|
|
1253
1237
|
} if (rf & 2) {
|
|
1254
1238
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -1259,21 +1243,21 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_91_Templat
|
|
|
1259
1243
|
i0.ɵɵconditional(ctx_r1.childRuns.length > 0 ? 4 : -1);
|
|
1260
1244
|
} }
|
|
1261
1245
|
function MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_93_Template(rf, ctx) { if (rf & 1) {
|
|
1262
|
-
i0.ɵɵelementStart(0, "span",
|
|
1263
|
-
i0.ɵɵelement(1, "i",
|
|
1246
|
+
i0.ɵɵelementStart(0, "span", 97);
|
|
1247
|
+
i0.ɵɵelement(1, "i", 62);
|
|
1264
1248
|
i0.ɵɵtext(2, " Additional Details ");
|
|
1265
1249
|
i0.ɵɵelementEnd();
|
|
1266
1250
|
} }
|
|
1267
1251
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_96_Template(rf, ctx) { if (rf & 1) {
|
|
1268
1252
|
const _r20 = i0.ɵɵgetCurrentView();
|
|
1269
|
-
i0.ɵɵelementStart(0, "div",
|
|
1253
|
+
i0.ɵɵelementStart(0, "div", 51)(1, "label");
|
|
1270
1254
|
i0.ɵɵtext(2, "Agent");
|
|
1271
1255
|
i0.ɵɵelementEnd();
|
|
1272
|
-
i0.ɵɵelementStart(3, "div",
|
|
1256
|
+
i0.ɵɵelementStart(3, "div", 176);
|
|
1273
1257
|
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_96_Template_div_click_3_listener() { i0.ɵɵrestoreView(_r20); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Agents", ctx_r1.record.AgentID)); });
|
|
1274
|
-
i0.ɵɵelement(4, "i",
|
|
1258
|
+
i0.ɵɵelement(4, "i", 177);
|
|
1275
1259
|
i0.ɵɵtext(5);
|
|
1276
|
-
i0.ɵɵelement(6, "i",
|
|
1260
|
+
i0.ɵɵelement(6, "i", 134);
|
|
1277
1261
|
i0.ɵɵelementEnd()();
|
|
1278
1262
|
} if (rf & 2) {
|
|
1279
1263
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -1281,10 +1265,10 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_96_Templat
|
|
|
1281
1265
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.Agent || "Unknown", " ");
|
|
1282
1266
|
} }
|
|
1283
1267
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_97_Template(rf, ctx) { if (rf & 1) {
|
|
1284
|
-
i0.ɵɵelementStart(0, "div",
|
|
1268
|
+
i0.ɵɵelementStart(0, "div", 51)(1, "label");
|
|
1285
1269
|
i0.ɵɵtext(2, "Run Type");
|
|
1286
1270
|
i0.ɵɵelementEnd();
|
|
1287
|
-
i0.ɵɵelementStart(3, "div",
|
|
1271
|
+
i0.ɵɵelementStart(3, "div", 52);
|
|
1288
1272
|
i0.ɵɵelement(4, "i");
|
|
1289
1273
|
i0.ɵɵtext(5);
|
|
1290
1274
|
i0.ɵɵelementEnd()();
|
|
@@ -1296,11 +1280,11 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_97_Templat
|
|
|
1296
1280
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.RunType, " ");
|
|
1297
1281
|
} }
|
|
1298
1282
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_98_Template(rf, ctx) { if (rf & 1) {
|
|
1299
|
-
i0.ɵɵelementStart(0, "div",
|
|
1283
|
+
i0.ɵɵelementStart(0, "div", 51)(1, "label");
|
|
1300
1284
|
i0.ɵɵtext(2, "Response Format");
|
|
1301
1285
|
i0.ɵɵelementEnd();
|
|
1302
|
-
i0.ɵɵelementStart(3, "div",
|
|
1303
|
-
i0.ɵɵelement(4, "i",
|
|
1286
|
+
i0.ɵɵelementStart(3, "div", 52);
|
|
1287
|
+
i0.ɵɵelement(4, "i", 94);
|
|
1304
1288
|
i0.ɵɵtext(5);
|
|
1305
1289
|
i0.ɵɵelementEnd()();
|
|
1306
1290
|
} if (rf & 2) {
|
|
@@ -1309,11 +1293,11 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_98_Templat
|
|
|
1309
1293
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.ResponseFormat, " ");
|
|
1310
1294
|
} }
|
|
1311
1295
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_153_Template(rf, ctx) { if (rf & 1) {
|
|
1312
|
-
i0.ɵɵelementStart(0, "div",
|
|
1296
|
+
i0.ɵɵelementStart(0, "div", 51)(1, "label");
|
|
1313
1297
|
i0.ɵɵtext(2, "Started At");
|
|
1314
1298
|
i0.ɵɵelementEnd();
|
|
1315
|
-
i0.ɵɵelementStart(3, "div",
|
|
1316
|
-
i0.ɵɵelement(4, "i",
|
|
1299
|
+
i0.ɵɵelementStart(3, "div", 52);
|
|
1300
|
+
i0.ɵɵelement(4, "i", 91);
|
|
1317
1301
|
i0.ɵɵtext(5);
|
|
1318
1302
|
i0.ɵɵpipe(6, "date");
|
|
1319
1303
|
i0.ɵɵelementEnd()();
|
|
@@ -1323,11 +1307,11 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_153_Templa
|
|
|
1323
1307
|
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(6, 1, ctx_r1.record.RunAt, "medium"), " ");
|
|
1324
1308
|
} }
|
|
1325
1309
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_154_Template(rf, ctx) { if (rf & 1) {
|
|
1326
|
-
i0.ɵɵelementStart(0, "div",
|
|
1310
|
+
i0.ɵɵelementStart(0, "div", 51)(1, "label");
|
|
1327
1311
|
i0.ɵɵtext(2, "Completed At");
|
|
1328
1312
|
i0.ɵɵelementEnd();
|
|
1329
|
-
i0.ɵɵelementStart(3, "div",
|
|
1330
|
-
i0.ɵɵelement(4, "i",
|
|
1313
|
+
i0.ɵɵelementStart(3, "div", 52);
|
|
1314
|
+
i0.ɵɵelement(4, "i", 178);
|
|
1331
1315
|
i0.ɵɵtext(5);
|
|
1332
1316
|
i0.ɵɵpipe(6, "date");
|
|
1333
1317
|
i0.ɵɵelementEnd()();
|
|
@@ -1337,10 +1321,10 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_154_Templa
|
|
|
1337
1321
|
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(6, 1, ctx_r1.record.CompletedAt, "medium"), " ");
|
|
1338
1322
|
} }
|
|
1339
1323
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_155_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
1340
|
-
i0.ɵɵelementStart(0, "span",
|
|
1341
|
-
i0.ɵɵelement(1, "i",
|
|
1324
|
+
i0.ɵɵelementStart(0, "span", 97);
|
|
1325
|
+
i0.ɵɵelement(1, "i", 82);
|
|
1342
1326
|
i0.ɵɵtext(2, " Model Specific Response Details ");
|
|
1343
|
-
i0.ɵɵelementStart(3, "span",
|
|
1327
|
+
i0.ɵɵelementStart(3, "span", 99);
|
|
1344
1328
|
i0.ɵɵtext(4, "JSON");
|
|
1345
1329
|
i0.ɵɵelementEnd()();
|
|
1346
1330
|
} }
|
|
@@ -1349,16 +1333,16 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_155_Templa
|
|
|
1349
1333
|
i0.ɵɵelementStart(0, "mj-accordion-panel", 27);
|
|
1350
1334
|
i0.ɵɵlistener("ExpandedChange", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_155_Template_mj_accordion_panel_ExpandedChange_0_listener($event) { i0.ɵɵrestoreView(_r21); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onModelSpecificPanelToggle($event)); });
|
|
1351
1335
|
i0.ɵɵtemplate(1, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_155_ng_template_1_Template, 5, 0, "ng-template", 28);
|
|
1352
|
-
i0.ɵɵelementStart(2, "div", 29)(3, "div", 33)(4, "div",
|
|
1336
|
+
i0.ɵɵelementStart(2, "div", 29)(3, "div", 33)(4, "div", 106)(5, "button", 107);
|
|
1353
1337
|
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_155_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r21); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.copyToClipboard(ctx_r1.formattedModelSpecificResponseDetails, "Model Specific Response Details")); });
|
|
1354
|
-
i0.ɵɵelement(6, "i",
|
|
1338
|
+
i0.ɵɵelement(6, "i", 108);
|
|
1355
1339
|
i0.ɵɵtext(7, " Copy ");
|
|
1356
1340
|
i0.ɵɵelementEnd();
|
|
1357
|
-
i0.ɵɵelementStart(8, "button",
|
|
1341
|
+
i0.ɵɵelementStart(8, "button", 109);
|
|
1358
1342
|
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_155_Template_button_click_8_listener() { i0.ɵɵrestoreView(_r21); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openFullScreen(ctx_r1.formattedModelSpecificResponseDetails, "json", "Model Specific Response Details")); });
|
|
1359
|
-
i0.ɵɵelement(9, "i",
|
|
1343
|
+
i0.ɵɵelement(9, "i", 110);
|
|
1360
1344
|
i0.ɵɵelementEnd()();
|
|
1361
|
-
i0.ɵɵelementStart(10, "mj-code-editor",
|
|
1345
|
+
i0.ɵɵelementStart(10, "mj-code-editor", 179);
|
|
1362
1346
|
i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_155_Template_mj_code_editor_ngModelChange_10_listener($event) { i0.ɵɵrestoreView(_r21); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.formattedModelSpecificResponseDetails, $event) || (ctx_r1.formattedModelSpecificResponseDetails = $event); return i0.ɵɵresetView($event); });
|
|
1363
1347
|
i0.ɵɵelementEnd()()()();
|
|
1364
1348
|
} if (rf & 2) {
|
|
@@ -1369,21 +1353,21 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_155_Templa
|
|
|
1369
1353
|
i0.ɵɵproperty("readonly", true)("language", "json")("lineWrapping", true);
|
|
1370
1354
|
} }
|
|
1371
1355
|
function MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_157_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
1372
|
-
i0.ɵɵelementStart(0, "span",
|
|
1356
|
+
i0.ɵɵelementStart(0, "span", 146);
|
|
1373
1357
|
i0.ɵɵtext(1, "Cached");
|
|
1374
1358
|
i0.ɵɵelementEnd();
|
|
1375
1359
|
} }
|
|
1376
1360
|
function MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_157_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
1377
|
-
i0.ɵɵelementStart(0, "span",
|
|
1361
|
+
i0.ɵɵelementStart(0, "span", 146);
|
|
1378
1362
|
i0.ɵɵtext(1, "Selected");
|
|
1379
1363
|
i0.ɵɵelementEnd();
|
|
1380
1364
|
} }
|
|
1381
1365
|
function MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_157_Template(rf, ctx) { if (rf & 1) {
|
|
1382
|
-
i0.ɵɵelementStart(0, "span",
|
|
1383
|
-
i0.ɵɵelement(1, "i",
|
|
1366
|
+
i0.ɵɵelementStart(0, "span", 97);
|
|
1367
|
+
i0.ɵɵelement(1, "i", 82);
|
|
1384
1368
|
i0.ɵɵtext(2, " Model Selection & Performance ");
|
|
1385
|
-
i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_157_Conditional_3_Template, 2, 0, "span",
|
|
1386
|
-
i0.ɵɵconditionalCreate(4, MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_157_Conditional_4_Template, 2, 0, "span",
|
|
1369
|
+
i0.ɵɵconditionalCreate(3, MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_157_Conditional_3_Template, 2, 0, "span", 146);
|
|
1370
|
+
i0.ɵɵconditionalCreate(4, MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_157_Conditional_4_Template, 2, 0, "span", 146);
|
|
1387
1371
|
i0.ɵɵelementEnd();
|
|
1388
1372
|
} if (rf & 2) {
|
|
1389
1373
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -1393,11 +1377,11 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_157_Templa
|
|
|
1393
1377
|
i0.ɵɵconditional(ctx_r1.record.WasSelectedResult ? 4 : -1);
|
|
1394
1378
|
} }
|
|
1395
1379
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_184_Template(rf, ctx) { if (rf & 1) {
|
|
1396
|
-
i0.ɵɵelementStart(0, "div",
|
|
1380
|
+
i0.ɵɵelementStart(0, "div", 65)(1, "label");
|
|
1397
1381
|
i0.ɵɵtext(2, "Cache Key");
|
|
1398
1382
|
i0.ɵɵelementEnd();
|
|
1399
|
-
i0.ɵɵelementStart(3, "div",
|
|
1400
|
-
i0.ɵɵelement(4, "i",
|
|
1383
|
+
i0.ɵɵelementStart(3, "div", 52);
|
|
1384
|
+
i0.ɵɵelement(4, "i", 180);
|
|
1401
1385
|
i0.ɵɵelementStart(5, "code");
|
|
1402
1386
|
i0.ɵɵtext(6);
|
|
1403
1387
|
i0.ɵɵelementEnd()()();
|
|
@@ -1408,14 +1392,14 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_184_Templa
|
|
|
1408
1392
|
} }
|
|
1409
1393
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_185_Template(rf, ctx) { if (rf & 1) {
|
|
1410
1394
|
const _r22 = i0.ɵɵgetCurrentView();
|
|
1411
|
-
i0.ɵɵelementStart(0, "div",
|
|
1395
|
+
i0.ɵɵelementStart(0, "div", 51)(1, "label");
|
|
1412
1396
|
i0.ɵɵtext(2, "Judge Prompt");
|
|
1413
1397
|
i0.ɵɵelementEnd();
|
|
1414
|
-
i0.ɵɵelementStart(3, "div",
|
|
1398
|
+
i0.ɵɵelementStart(3, "div", 181);
|
|
1415
1399
|
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_185_Template_div_click_3_listener() { i0.ɵɵrestoreView(_r22); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.navigateToEntity("MJ: AI Prompts", ctx_r1.record.JudgeID)); });
|
|
1416
|
-
i0.ɵɵelement(4, "i",
|
|
1400
|
+
i0.ɵɵelement(4, "i", 182);
|
|
1417
1401
|
i0.ɵɵtext(5);
|
|
1418
|
-
i0.ɵɵelement(6, "i",
|
|
1402
|
+
i0.ɵɵelement(6, "i", 134);
|
|
1419
1403
|
i0.ɵɵelementEnd()();
|
|
1420
1404
|
} if (rf & 2) {
|
|
1421
1405
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -1423,11 +1407,11 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_185_Templa
|
|
|
1423
1407
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.Judge || "Unknown", " ");
|
|
1424
1408
|
} }
|
|
1425
1409
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_186_Template(rf, ctx) { if (rf & 1) {
|
|
1426
|
-
i0.ɵɵelementStart(0, "div",
|
|
1410
|
+
i0.ɵɵelementStart(0, "div", 51)(1, "label");
|
|
1427
1411
|
i0.ɵɵtext(2, "Judge Score");
|
|
1428
1412
|
i0.ɵɵelementEnd();
|
|
1429
|
-
i0.ɵɵelementStart(3, "div",
|
|
1430
|
-
i0.ɵɵelement(4, "i",
|
|
1413
|
+
i0.ɵɵelementStart(3, "div", 52);
|
|
1414
|
+
i0.ɵɵelement(4, "i", 183);
|
|
1431
1415
|
i0.ɵɵtext(5);
|
|
1432
1416
|
i0.ɵɵelementEnd()();
|
|
1433
1417
|
} if (rf & 2) {
|
|
@@ -1436,11 +1420,11 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_186_Templa
|
|
|
1436
1420
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.JudgeScore, " ");
|
|
1437
1421
|
} }
|
|
1438
1422
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_199_Template(rf, ctx) { if (rf & 1) {
|
|
1439
|
-
i0.ɵɵelementStart(0, "div",
|
|
1423
|
+
i0.ɵɵelementStart(0, "div", 51)(1, "label");
|
|
1440
1424
|
i0.ɵɵtext(2, "First Token Time");
|
|
1441
1425
|
i0.ɵɵelementEnd();
|
|
1442
|
-
i0.ɵɵelementStart(3, "div",
|
|
1443
|
-
i0.ɵɵelement(4, "i",
|
|
1426
|
+
i0.ɵɵelementStart(3, "div", 52);
|
|
1427
|
+
i0.ɵɵelement(4, "i", 95);
|
|
1444
1428
|
i0.ɵɵtext(5);
|
|
1445
1429
|
i0.ɵɵelementEnd()();
|
|
1446
1430
|
} if (rf & 2) {
|
|
@@ -1449,11 +1433,11 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_199_Templa
|
|
|
1449
1433
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.FirstTokenTime, " ms ");
|
|
1450
1434
|
} }
|
|
1451
1435
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_200_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
1452
|
-
i0.ɵɵelementStart(0, "div",
|
|
1436
|
+
i0.ɵɵelementStart(0, "div", 65)(1, "label");
|
|
1453
1437
|
i0.ɵɵtext(2, "Cancellation Reason");
|
|
1454
1438
|
i0.ɵɵelementEnd();
|
|
1455
|
-
i0.ɵɵelementStart(3, "div",
|
|
1456
|
-
i0.ɵɵelement(4, "i",
|
|
1439
|
+
i0.ɵɵelementStart(3, "div", 52);
|
|
1440
|
+
i0.ɵɵelement(4, "i", 186);
|
|
1457
1441
|
i0.ɵɵtext(5);
|
|
1458
1442
|
i0.ɵɵelementEnd()();
|
|
1459
1443
|
} if (rf & 2) {
|
|
@@ -1462,14 +1446,14 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_200_Condit
|
|
|
1462
1446
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.CancellationReason, " ");
|
|
1463
1447
|
} }
|
|
1464
1448
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_200_Template(rf, ctx) { if (rf & 1) {
|
|
1465
|
-
i0.ɵɵelementStart(0, "div",
|
|
1449
|
+
i0.ɵɵelementStart(0, "div", 51)(1, "label");
|
|
1466
1450
|
i0.ɵɵtext(2, "Cancelled");
|
|
1467
1451
|
i0.ɵɵelementEnd();
|
|
1468
|
-
i0.ɵɵelementStart(3, "div",
|
|
1469
|
-
i0.ɵɵelement(4, "i",
|
|
1452
|
+
i0.ɵɵelementStart(3, "div", 184);
|
|
1453
|
+
i0.ɵɵelement(4, "i", 185);
|
|
1470
1454
|
i0.ɵɵtext(5, " Yes ");
|
|
1471
1455
|
i0.ɵɵelementEnd()();
|
|
1472
|
-
i0.ɵɵconditionalCreate(6, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_200_Conditional_6_Template, 6, 1, "div",
|
|
1456
|
+
i0.ɵɵconditionalCreate(6, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_200_Conditional_6_Template, 6, 1, "div", 65);
|
|
1473
1457
|
} if (rf & 2) {
|
|
1474
1458
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
1475
1459
|
i0.ɵɵadvance(6);
|
|
@@ -1477,14 +1461,14 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_200_Templa
|
|
|
1477
1461
|
} }
|
|
1478
1462
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_201_Template(rf, ctx) { if (rf & 1) {
|
|
1479
1463
|
const _r23 = i0.ɵɵgetCurrentView();
|
|
1480
|
-
i0.ɵɵelementStart(0, "div",
|
|
1464
|
+
i0.ɵɵelementStart(0, "div", 66)(1, "div", 106)(2, "h4", 127);
|
|
1481
1465
|
i0.ɵɵtext(3, "Model Selection Details");
|
|
1482
1466
|
i0.ɵɵelementEnd();
|
|
1483
|
-
i0.ɵɵelementStart(4, "button",
|
|
1467
|
+
i0.ɵɵelementStart(4, "button", 109);
|
|
1484
1468
|
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_201_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r23); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openFullScreen(ctx_r1.formattedModelSelection, "json", "Model Selection")); });
|
|
1485
|
-
i0.ɵɵelement(5, "i",
|
|
1469
|
+
i0.ɵɵelement(5, "i", 110);
|
|
1486
1470
|
i0.ɵɵelementEnd()();
|
|
1487
|
-
i0.ɵɵelementStart(6, "div",
|
|
1471
|
+
i0.ɵɵelementStart(6, "div", 159)(7, "mj-code-editor", 187);
|
|
1488
1472
|
i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_201_Template_mj_code_editor_ngModelChange_7_listener($event) { i0.ɵɵrestoreView(_r23); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.formattedModelSelection, $event) || (ctx_r1.formattedModelSelection = $event); return i0.ɵɵresetView($event); });
|
|
1489
1473
|
i0.ɵɵelementEnd()()();
|
|
1490
1474
|
} if (rf & 2) {
|
|
@@ -1495,14 +1479,14 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_201_Templa
|
|
|
1495
1479
|
} }
|
|
1496
1480
|
function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_202_Template(rf, ctx) { if (rf & 1) {
|
|
1497
1481
|
const _r24 = i0.ɵɵgetCurrentView();
|
|
1498
|
-
i0.ɵɵelementStart(0, "div",
|
|
1482
|
+
i0.ɵɵelementStart(0, "div", 67)(1, "div", 106)(2, "h4", 127);
|
|
1499
1483
|
i0.ɵɵtext(3, "Error Details");
|
|
1500
1484
|
i0.ɵɵelementEnd();
|
|
1501
|
-
i0.ɵɵelementStart(4, "button",
|
|
1485
|
+
i0.ɵɵelementStart(4, "button", 109);
|
|
1502
1486
|
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_202_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r24); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openFullScreen(ctx_r1.formattedErrorDetails, "json", "Error Details")); });
|
|
1503
|
-
i0.ɵɵelement(5, "i",
|
|
1487
|
+
i0.ɵɵelement(5, "i", 110);
|
|
1504
1488
|
i0.ɵɵelementEnd()();
|
|
1505
|
-
i0.ɵɵelementStart(6, "div",
|
|
1489
|
+
i0.ɵɵelementStart(6, "div", 159)(7, "mj-code-editor", 188);
|
|
1506
1490
|
i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_202_Template_mj_code_editor_ngModelChange_7_listener($event) { i0.ɵɵrestoreView(_r24); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.formattedErrorDetails, $event) || (ctx_r1.formattedErrorDetails = $event); return i0.ɵɵresetView($event); });
|
|
1507
1491
|
i0.ɵɵelementEnd()()();
|
|
1508
1492
|
} if (rf & 2) {
|
|
@@ -1549,198 +1533,198 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Template(rf, ctx) { if
|
|
|
1549
1533
|
i0.ɵɵlistener("ExpandedChange", function MJAIPromptRunFormComponentExtended_Conditional_0_Template_mj_accordion_panel_ExpandedChange_33_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onInputPanelToggle($event)); });
|
|
1550
1534
|
i0.ɵɵtemplate(34, MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_34_Template, 4, 1, "ng-template", 28);
|
|
1551
1535
|
i0.ɵɵelementStart(35, "div", 29);
|
|
1552
|
-
i0.ɵɵconditionalCreate(36, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_Template, 23, 9, "div", 30)(37, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_37_Template,
|
|
1536
|
+
i0.ɵɵconditionalCreate(36, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_36_Template, 23, 9, "div", 30)(37, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_37_Template, 1, 0, "mj-empty-state", 31);
|
|
1553
1537
|
i0.ɵɵelementEnd()();
|
|
1554
1538
|
i0.ɵɵelementStart(38, "mj-accordion-panel", 27);
|
|
1555
1539
|
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.onResultPanelToggle($event)); });
|
|
1556
1540
|
i0.ɵɵtemplate(39, MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_39_Template, 5, 2, "ng-template", 28);
|
|
1557
1541
|
i0.ɵɵelementStart(40, "div", 29);
|
|
1558
1542
|
i0.ɵɵconditionalCreate(41, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_41_Template, 7, 1, "div", 32);
|
|
1559
|
-
i0.ɵɵconditionalCreate(42, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_42_Template, 8, 4, "div", 33)(43, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_43_Template,
|
|
1543
|
+
i0.ɵɵconditionalCreate(42, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_42_Template, 8, 4, "div", 33)(43, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_43_Template, 2, 1, "mj-empty-state", 34);
|
|
1560
1544
|
i0.ɵɵelementEnd()();
|
|
1561
1545
|
i0.ɵɵelementStart(44, "mj-accordion-panel", 27);
|
|
1562
1546
|
i0.ɵɵlistener("ExpandedChange", function MJAIPromptRunFormComponentExtended_Conditional_0_Template_mj_accordion_panel_ExpandedChange_44_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onMetricsPanelToggle($event)); });
|
|
1563
1547
|
i0.ɵɵtemplate(45, MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_45_Template, 3, 0, "ng-template", 28);
|
|
1564
|
-
i0.ɵɵelementStart(46, "div", 29)(47, "div",
|
|
1565
|
-
i0.ɵɵelement(50, "i",
|
|
1548
|
+
i0.ɵɵelementStart(46, "div", 29)(47, "div", 35)(48, "div", 36)(49, "div", 37);
|
|
1549
|
+
i0.ɵɵelement(50, "i", 38);
|
|
1566
1550
|
i0.ɵɵelementStart(51, "h4");
|
|
1567
1551
|
i0.ɵɵtext(52, "Prompt Tokens");
|
|
1568
1552
|
i0.ɵɵelementEnd()();
|
|
1569
|
-
i0.ɵɵelementStart(53, "div",
|
|
1553
|
+
i0.ɵɵelementStart(53, "div", 39);
|
|
1570
1554
|
i0.ɵɵtext(54);
|
|
1571
1555
|
i0.ɵɵelementEnd();
|
|
1572
|
-
i0.ɵɵconditionalCreate(55, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_55_Template, 3, 1, "div",
|
|
1573
|
-
i0.ɵɵconditionalCreate(56, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_56_Template, 3, 1, "div",
|
|
1556
|
+
i0.ɵɵconditionalCreate(55, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_55_Template, 3, 1, "div", 40);
|
|
1557
|
+
i0.ɵɵconditionalCreate(56, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_56_Template, 3, 1, "div", 40);
|
|
1574
1558
|
i0.ɵɵelementEnd();
|
|
1575
|
-
i0.ɵɵelementStart(57, "div",
|
|
1576
|
-
i0.ɵɵelement(59, "i",
|
|
1559
|
+
i0.ɵɵelementStart(57, "div", 36)(58, "div", 37);
|
|
1560
|
+
i0.ɵɵelement(59, "i", 41);
|
|
1577
1561
|
i0.ɵɵelementStart(60, "h4");
|
|
1578
1562
|
i0.ɵɵtext(61, "Completion Tokens");
|
|
1579
1563
|
i0.ɵɵelementEnd()();
|
|
1580
|
-
i0.ɵɵelementStart(62, "div",
|
|
1564
|
+
i0.ɵɵelementStart(62, "div", 42);
|
|
1581
1565
|
i0.ɵɵtext(63);
|
|
1582
1566
|
i0.ɵɵelementEnd();
|
|
1583
|
-
i0.ɵɵconditionalCreate(64, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_64_Template, 3, 1, "div",
|
|
1567
|
+
i0.ɵɵconditionalCreate(64, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_64_Template, 3, 1, "div", 40);
|
|
1584
1568
|
i0.ɵɵelementEnd();
|
|
1585
|
-
i0.ɵɵelementStart(65, "div",
|
|
1586
|
-
i0.ɵɵelement(67, "i",
|
|
1569
|
+
i0.ɵɵelementStart(65, "div", 36)(66, "div", 37);
|
|
1570
|
+
i0.ɵɵelement(67, "i", 43);
|
|
1587
1571
|
i0.ɵɵelementStart(68, "h4");
|
|
1588
1572
|
i0.ɵɵtext(69, "Total Tokens");
|
|
1589
1573
|
i0.ɵɵelementEnd()();
|
|
1590
|
-
i0.ɵɵelementStart(70, "div",
|
|
1574
|
+
i0.ɵɵelementStart(70, "div", 44);
|
|
1591
1575
|
i0.ɵɵtext(71);
|
|
1592
1576
|
i0.ɵɵelementEnd();
|
|
1593
|
-
i0.ɵɵconditionalCreate(72, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_72_Template, 3, 1, "div",
|
|
1594
|
-
i0.ɵɵconditionalCreate(73, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_73_Template, 3, 1, "div",
|
|
1577
|
+
i0.ɵɵconditionalCreate(72, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_72_Template, 3, 1, "div", 40);
|
|
1578
|
+
i0.ɵɵconditionalCreate(73, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_73_Template, 3, 1, "div", 40);
|
|
1595
1579
|
i0.ɵɵelementEnd();
|
|
1596
|
-
i0.ɵɵconditionalCreate(74, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_74_Template, 9, 3, "div",
|
|
1597
|
-
i0.ɵɵelementStart(75, "div",
|
|
1598
|
-
i0.ɵɵelement(77, "i",
|
|
1580
|
+
i0.ɵɵconditionalCreate(74, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_74_Template, 9, 3, "div", 36);
|
|
1581
|
+
i0.ɵɵelementStart(75, "div", 36)(76, "div", 37);
|
|
1582
|
+
i0.ɵɵelement(77, "i", 45);
|
|
1599
1583
|
i0.ɵɵelementStart(78, "h4");
|
|
1600
1584
|
i0.ɵɵtext(79, "Cost");
|
|
1601
1585
|
i0.ɵɵelementEnd()();
|
|
1602
|
-
i0.ɵɵelementStart(80, "div",
|
|
1586
|
+
i0.ɵɵelementStart(80, "div", 42);
|
|
1603
1587
|
i0.ɵɵtext(81);
|
|
1604
1588
|
i0.ɵɵelementEnd();
|
|
1605
|
-
i0.ɵɵconditionalCreate(82, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_82_Template, 3, 1, "div",
|
|
1606
|
-
i0.ɵɵconditionalCreate(83, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_83_Template, 2, 1, "div",
|
|
1589
|
+
i0.ɵɵconditionalCreate(82, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_82_Template, 3, 1, "div", 40);
|
|
1590
|
+
i0.ɵɵconditionalCreate(83, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_83_Template, 2, 1, "div", 46);
|
|
1607
1591
|
i0.ɵɵelementEnd();
|
|
1608
|
-
i0.ɵɵconditionalCreate(84, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_84_Template, 7, 1, "div",
|
|
1609
|
-
i0.ɵɵconditionalCreate(85, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_85_Template, 7, 1, "div",
|
|
1610
|
-
i0.ɵɵconditionalCreate(86, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_86_Template, 7, 1, "div",
|
|
1592
|
+
i0.ɵɵconditionalCreate(84, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_84_Template, 7, 1, "div", 36);
|
|
1593
|
+
i0.ɵɵconditionalCreate(85, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_85_Template, 7, 1, "div", 36);
|
|
1594
|
+
i0.ɵɵconditionalCreate(86, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_86_Template, 7, 1, "div", 36);
|
|
1611
1595
|
i0.ɵɵelementEnd();
|
|
1612
|
-
i0.ɵɵelementStart(87, "div",
|
|
1613
|
-
i0.ɵɵconditionalCreate(88, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_88_Template, 5, 1, "div",
|
|
1614
|
-
i0.ɵɵconditionalCreate(89, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_89_Template, 6, 1, "div",
|
|
1596
|
+
i0.ɵɵelementStart(87, "div", 47);
|
|
1597
|
+
i0.ɵɵconditionalCreate(88, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_88_Template, 5, 1, "div", 48);
|
|
1598
|
+
i0.ɵɵconditionalCreate(89, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_89_Template, 6, 1, "div", 48);
|
|
1615
1599
|
i0.ɵɵelementEnd()()();
|
|
1616
|
-
i0.ɵɵconditionalCreate(90, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Template, 37, 18, "mj-accordion-panel",
|
|
1617
|
-
i0.ɵɵconditionalCreate(91, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_91_Template, 5, 3, "mj-accordion-panel",
|
|
1618
|
-
i0.ɵɵelementStart(92, "mj-accordion-panel",
|
|
1600
|
+
i0.ɵɵconditionalCreate(90, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_90_Template, 37, 18, "mj-accordion-panel", 49);
|
|
1601
|
+
i0.ɵɵconditionalCreate(91, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_91_Template, 5, 3, "mj-accordion-panel", 49);
|
|
1602
|
+
i0.ɵɵelementStart(92, "mj-accordion-panel", 49);
|
|
1619
1603
|
i0.ɵɵtemplate(93, MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_93_Template, 3, 0, "ng-template", 28);
|
|
1620
|
-
i0.ɵɵelementStart(94, "div", 29)(95, "div",
|
|
1621
|
-
i0.ɵɵconditionalCreate(96, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_96_Template, 7, 1, "div",
|
|
1622
|
-
i0.ɵɵconditionalCreate(97, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_97_Template, 6, 3, "div",
|
|
1623
|
-
i0.ɵɵconditionalCreate(98, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_98_Template, 6, 1, "div",
|
|
1624
|
-
i0.ɵɵelementStart(99, "div",
|
|
1604
|
+
i0.ɵɵelementStart(94, "div", 29)(95, "div", 50);
|
|
1605
|
+
i0.ɵɵconditionalCreate(96, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_96_Template, 7, 1, "div", 51);
|
|
1606
|
+
i0.ɵɵconditionalCreate(97, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_97_Template, 6, 3, "div", 51);
|
|
1607
|
+
i0.ɵɵconditionalCreate(98, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_98_Template, 6, 1, "div", 51);
|
|
1608
|
+
i0.ɵɵelementStart(99, "div", 51)(100, "label");
|
|
1625
1609
|
i0.ɵɵtext(101, "Temperature");
|
|
1626
1610
|
i0.ɵɵelementEnd();
|
|
1627
|
-
i0.ɵɵelementStart(102, "div",
|
|
1628
|
-
i0.ɵɵelement(103, "i",
|
|
1611
|
+
i0.ɵɵelementStart(102, "div", 52);
|
|
1612
|
+
i0.ɵɵelement(103, "i", 53);
|
|
1629
1613
|
i0.ɵɵtext(104);
|
|
1630
1614
|
i0.ɵɵelementEnd()();
|
|
1631
|
-
i0.ɵɵelementStart(105, "div",
|
|
1615
|
+
i0.ɵɵelementStart(105, "div", 51)(106, "label");
|
|
1632
1616
|
i0.ɵɵtext(107, "Top P");
|
|
1633
1617
|
i0.ɵɵelementEnd();
|
|
1634
|
-
i0.ɵɵelementStart(108, "div",
|
|
1635
|
-
i0.ɵɵelement(109, "i",
|
|
1618
|
+
i0.ɵɵelementStart(108, "div", 52);
|
|
1619
|
+
i0.ɵɵelement(109, "i", 54);
|
|
1636
1620
|
i0.ɵɵtext(110);
|
|
1637
1621
|
i0.ɵɵelementEnd()();
|
|
1638
|
-
i0.ɵɵelementStart(111, "div",
|
|
1622
|
+
i0.ɵɵelementStart(111, "div", 51)(112, "label");
|
|
1639
1623
|
i0.ɵɵtext(113, "Top K");
|
|
1640
1624
|
i0.ɵɵelementEnd();
|
|
1641
|
-
i0.ɵɵelementStart(114, "div",
|
|
1642
|
-
i0.ɵɵelement(115, "i",
|
|
1625
|
+
i0.ɵɵelementStart(114, "div", 52);
|
|
1626
|
+
i0.ɵɵelement(115, "i", 55);
|
|
1643
1627
|
i0.ɵɵtext(116);
|
|
1644
1628
|
i0.ɵɵelementEnd()();
|
|
1645
|
-
i0.ɵɵelementStart(117, "div",
|
|
1629
|
+
i0.ɵɵelementStart(117, "div", 51)(118, "label");
|
|
1646
1630
|
i0.ɵɵtext(119, "Min P");
|
|
1647
1631
|
i0.ɵɵelementEnd();
|
|
1648
|
-
i0.ɵɵelementStart(120, "div",
|
|
1649
|
-
i0.ɵɵelement(121, "i",
|
|
1632
|
+
i0.ɵɵelementStart(120, "div", 52);
|
|
1633
|
+
i0.ɵɵelement(121, "i", 56);
|
|
1650
1634
|
i0.ɵɵtext(122);
|
|
1651
1635
|
i0.ɵɵelementEnd()();
|
|
1652
|
-
i0.ɵɵelementStart(123, "div",
|
|
1636
|
+
i0.ɵɵelementStart(123, "div", 51)(124, "label");
|
|
1653
1637
|
i0.ɵɵtext(125, "Frequency Penalty");
|
|
1654
1638
|
i0.ɵɵelementEnd();
|
|
1655
|
-
i0.ɵɵelementStart(126, "div",
|
|
1656
|
-
i0.ɵɵelement(127, "i",
|
|
1639
|
+
i0.ɵɵelementStart(126, "div", 52);
|
|
1640
|
+
i0.ɵɵelement(127, "i", 57);
|
|
1657
1641
|
i0.ɵɵtext(128);
|
|
1658
1642
|
i0.ɵɵelementEnd()();
|
|
1659
|
-
i0.ɵɵelementStart(129, "div",
|
|
1643
|
+
i0.ɵɵelementStart(129, "div", 51)(130, "label");
|
|
1660
1644
|
i0.ɵɵtext(131, "Presence Penalty");
|
|
1661
1645
|
i0.ɵɵelementEnd();
|
|
1662
|
-
i0.ɵɵelementStart(132, "div",
|
|
1663
|
-
i0.ɵɵelement(133, "i",
|
|
1646
|
+
i0.ɵɵelementStart(132, "div", 52);
|
|
1647
|
+
i0.ɵɵelement(133, "i", 58);
|
|
1664
1648
|
i0.ɵɵtext(134);
|
|
1665
1649
|
i0.ɵɵelementEnd()();
|
|
1666
|
-
i0.ɵɵelementStart(135, "div",
|
|
1650
|
+
i0.ɵɵelementStart(135, "div", 51)(136, "label");
|
|
1667
1651
|
i0.ɵɵtext(137, "Seed");
|
|
1668
1652
|
i0.ɵɵelementEnd();
|
|
1669
|
-
i0.ɵɵelementStart(138, "div",
|
|
1670
|
-
i0.ɵɵelement(139, "i",
|
|
1653
|
+
i0.ɵɵelementStart(138, "div", 52);
|
|
1654
|
+
i0.ɵɵelement(139, "i", 59);
|
|
1671
1655
|
i0.ɵɵtext(140);
|
|
1672
1656
|
i0.ɵɵelementEnd()();
|
|
1673
|
-
i0.ɵɵelementStart(141, "div",
|
|
1657
|
+
i0.ɵɵelementStart(141, "div", 51)(142, "label");
|
|
1674
1658
|
i0.ɵɵtext(143, "Stop Sequences");
|
|
1675
1659
|
i0.ɵɵelementEnd();
|
|
1676
|
-
i0.ɵɵelementStart(144, "div",
|
|
1677
|
-
i0.ɵɵelement(145, "i",
|
|
1660
|
+
i0.ɵɵelementStart(144, "div", 52);
|
|
1661
|
+
i0.ɵɵelement(145, "i", 60);
|
|
1678
1662
|
i0.ɵɵtext(146);
|
|
1679
1663
|
i0.ɵɵelementEnd()();
|
|
1680
|
-
i0.ɵɵelementStart(147, "div",
|
|
1664
|
+
i0.ɵɵelementStart(147, "div", 51)(148, "label");
|
|
1681
1665
|
i0.ɵɵtext(149, "Assistant Prefill");
|
|
1682
1666
|
i0.ɵɵelementEnd();
|
|
1683
|
-
i0.ɵɵelementStart(150, "div",
|
|
1684
|
-
i0.ɵɵelement(151, "i",
|
|
1667
|
+
i0.ɵɵelementStart(150, "div", 52);
|
|
1668
|
+
i0.ɵɵelement(151, "i", 61);
|
|
1685
1669
|
i0.ɵɵtext(152);
|
|
1686
1670
|
i0.ɵɵelementEnd()();
|
|
1687
|
-
i0.ɵɵconditionalCreate(153, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_153_Template, 7, 4, "div",
|
|
1688
|
-
i0.ɵɵconditionalCreate(154, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_154_Template, 7, 4, "div",
|
|
1671
|
+
i0.ɵɵconditionalCreate(153, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_153_Template, 7, 4, "div", 51);
|
|
1672
|
+
i0.ɵɵconditionalCreate(154, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_154_Template, 7, 4, "div", 51);
|
|
1689
1673
|
i0.ɵɵelementEnd()()();
|
|
1690
|
-
i0.ɵɵconditionalCreate(155, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_155_Template, 11, 5, "mj-accordion-panel",
|
|
1674
|
+
i0.ɵɵconditionalCreate(155, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_155_Template, 11, 5, "mj-accordion-panel", 49);
|
|
1691
1675
|
i0.ɵɵelementStart(156, "mj-accordion-panel", 27);
|
|
1692
1676
|
i0.ɵɵlistener("ExpandedChange", function MJAIPromptRunFormComponentExtended_Conditional_0_Template_mj_accordion_panel_ExpandedChange_156_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onModelSelectionPanelToggle($event)); });
|
|
1693
1677
|
i0.ɵɵtemplate(157, MJAIPromptRunFormComponentExtended_Conditional_0_ng_template_157_Template, 5, 2, "ng-template", 28);
|
|
1694
|
-
i0.ɵɵelementStart(158, "div", 29)(159, "div",
|
|
1678
|
+
i0.ɵɵelementStart(158, "div", 29)(159, "div", 50)(160, "div", 51)(161, "label");
|
|
1695
1679
|
i0.ɵɵtext(162, "Status");
|
|
1696
1680
|
i0.ɵɵelementEnd();
|
|
1697
|
-
i0.ɵɵelementStart(163, "div",
|
|
1698
|
-
i0.ɵɵelement(164, "i",
|
|
1681
|
+
i0.ɵɵelementStart(163, "div", 52);
|
|
1682
|
+
i0.ɵɵelement(164, "i", 62);
|
|
1699
1683
|
i0.ɵɵtext(165);
|
|
1700
1684
|
i0.ɵɵelementEnd()();
|
|
1701
|
-
i0.ɵɵelementStart(166, "div",
|
|
1685
|
+
i0.ɵɵelementStart(166, "div", 51)(167, "label");
|
|
1702
1686
|
i0.ɵɵtext(168, "Selection Strategy");
|
|
1703
1687
|
i0.ɵɵelementEnd();
|
|
1704
|
-
i0.ɵɵelementStart(169, "div",
|
|
1705
|
-
i0.ɵɵelement(170, "i",
|
|
1688
|
+
i0.ɵɵelementStart(169, "div", 52);
|
|
1689
|
+
i0.ɵɵelement(170, "i", 63);
|
|
1706
1690
|
i0.ɵɵtext(171);
|
|
1707
1691
|
i0.ɵɵelementEnd()();
|
|
1708
|
-
i0.ɵɵelementStart(172, "div",
|
|
1692
|
+
i0.ɵɵelementStart(172, "div", 51)(173, "label");
|
|
1709
1693
|
i0.ɵɵtext(174, "Model Power Rank");
|
|
1710
1694
|
i0.ɵɵelementEnd();
|
|
1711
|
-
i0.ɵɵelementStart(175, "div",
|
|
1712
|
-
i0.ɵɵelement(176, "i",
|
|
1695
|
+
i0.ɵɵelementStart(175, "div", 52);
|
|
1696
|
+
i0.ɵɵelement(176, "i", 64);
|
|
1713
1697
|
i0.ɵɵtext(177);
|
|
1714
1698
|
i0.ɵɵelementEnd()();
|
|
1715
|
-
i0.ɵɵelementStart(178, "div",
|
|
1699
|
+
i0.ɵɵelementStart(178, "div", 51)(179, "label");
|
|
1716
1700
|
i0.ɵɵtext(180, "Cache Hit");
|
|
1717
1701
|
i0.ɵɵelementEnd();
|
|
1718
|
-
i0.ɵɵelementStart(181, "div",
|
|
1702
|
+
i0.ɵɵelementStart(181, "div", 52);
|
|
1719
1703
|
i0.ɵɵelement(182, "i");
|
|
1720
1704
|
i0.ɵɵtext(183);
|
|
1721
1705
|
i0.ɵɵelementEnd()();
|
|
1722
|
-
i0.ɵɵconditionalCreate(184, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_184_Template, 7, 1, "div",
|
|
1723
|
-
i0.ɵɵconditionalCreate(185, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_185_Template, 7, 1, "div",
|
|
1724
|
-
i0.ɵɵconditionalCreate(186, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_186_Template, 6, 1, "div",
|
|
1725
|
-
i0.ɵɵelementStart(187, "div",
|
|
1706
|
+
i0.ɵɵconditionalCreate(184, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_184_Template, 7, 1, "div", 65);
|
|
1707
|
+
i0.ɵɵconditionalCreate(185, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_185_Template, 7, 1, "div", 51);
|
|
1708
|
+
i0.ɵɵconditionalCreate(186, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_186_Template, 6, 1, "div", 51);
|
|
1709
|
+
i0.ɵɵelementStart(187, "div", 51)(188, "label");
|
|
1726
1710
|
i0.ɵɵtext(189, "Was Selected Result");
|
|
1727
1711
|
i0.ɵɵelementEnd();
|
|
1728
|
-
i0.ɵɵelementStart(190, "div",
|
|
1712
|
+
i0.ɵɵelementStart(190, "div", 52);
|
|
1729
1713
|
i0.ɵɵelement(191, "i");
|
|
1730
1714
|
i0.ɵɵtext(192);
|
|
1731
1715
|
i0.ɵɵelementEnd()();
|
|
1732
|
-
i0.ɵɵelementStart(193, "div",
|
|
1716
|
+
i0.ɵɵelementStart(193, "div", 51)(194, "label");
|
|
1733
1717
|
i0.ɵɵtext(195, "Streaming Enabled");
|
|
1734
1718
|
i0.ɵɵelementEnd();
|
|
1735
|
-
i0.ɵɵelementStart(196, "div",
|
|
1719
|
+
i0.ɵɵelementStart(196, "div", 52);
|
|
1736
1720
|
i0.ɵɵelement(197, "i");
|
|
1737
1721
|
i0.ɵɵtext(198);
|
|
1738
1722
|
i0.ɵɵelementEnd()();
|
|
1739
|
-
i0.ɵɵconditionalCreate(199, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_199_Template, 6, 1, "div",
|
|
1723
|
+
i0.ɵɵconditionalCreate(199, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_199_Template, 6, 1, "div", 51);
|
|
1740
1724
|
i0.ɵɵconditionalCreate(200, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_200_Template, 7, 1);
|
|
1741
1725
|
i0.ɵɵelementEnd();
|
|
1742
|
-
i0.ɵɵconditionalCreate(201, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_201_Template, 8, 4, "div",
|
|
1743
|
-
i0.ɵɵconditionalCreate(202, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_202_Template, 8, 4, "div",
|
|
1726
|
+
i0.ɵɵconditionalCreate(201, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_201_Template, 8, 4, "div", 66);
|
|
1727
|
+
i0.ɵɵconditionalCreate(202, MJAIPromptRunFormComponentExtended_Conditional_0_Conditional_202_Template, 8, 4, "div", 67);
|
|
1744
1728
|
i0.ɵɵelementEnd()()()()();
|
|
1745
1729
|
} if (rf & 2) {
|
|
1746
1730
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
@@ -1908,26 +1892,26 @@ function MJAIPromptRunFormComponentExtended_Conditional_0_Template(rf, ctx) { if
|
|
|
1908
1892
|
} }
|
|
1909
1893
|
function MJAIPromptRunFormComponentExtended_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
1910
1894
|
const _r25 = i0.ɵɵgetCurrentView();
|
|
1911
|
-
i0.ɵɵelementStart(0, "div",
|
|
1895
|
+
i0.ɵɵelementStart(0, "div", 189);
|
|
1912
1896
|
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r25); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeFullScreen()); });
|
|
1913
|
-
i0.ɵɵelementStart(1, "div",
|
|
1897
|
+
i0.ɵɵelementStart(1, "div", 190);
|
|
1914
1898
|
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Template_div_click_1_listener($event) { i0.ɵɵrestoreView(_r25); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
1915
|
-
i0.ɵɵelementStart(2, "div",
|
|
1916
|
-
i0.ɵɵelement(4, "i",
|
|
1899
|
+
i0.ɵɵelementStart(2, "div", 191)(3, "span", 192);
|
|
1900
|
+
i0.ɵɵelement(4, "i", 110);
|
|
1917
1901
|
i0.ɵɵtext(5);
|
|
1918
1902
|
i0.ɵɵelementEnd();
|
|
1919
|
-
i0.ɵɵelementStart(6, "div",
|
|
1903
|
+
i0.ɵɵelementStart(6, "div", 193)(7, "button", 194);
|
|
1920
1904
|
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r25); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.copyToClipboard(ctx_r1.FullScreenContent, ctx_r1.FullScreenTitle)); });
|
|
1921
|
-
i0.ɵɵelement(8, "i",
|
|
1905
|
+
i0.ɵɵelement(8, "i", 108);
|
|
1922
1906
|
i0.ɵɵtext(9, " Copy ");
|
|
1923
1907
|
i0.ɵɵelementEnd();
|
|
1924
|
-
i0.ɵɵelementStart(10, "button",
|
|
1908
|
+
i0.ɵɵelementStart(10, "button", 195);
|
|
1925
1909
|
i0.ɵɵlistener("click", function MJAIPromptRunFormComponentExtended_Conditional_1_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r25); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeFullScreen()); });
|
|
1926
|
-
i0.ɵɵelement(11, "i",
|
|
1910
|
+
i0.ɵɵelement(11, "i", 196);
|
|
1927
1911
|
i0.ɵɵtext(12, " Close ");
|
|
1928
1912
|
i0.ɵɵelementEnd()()();
|
|
1929
|
-
i0.ɵɵelementStart(13, "div",
|
|
1930
|
-
i0.ɵɵelement(14, "mj-code-editor",
|
|
1913
|
+
i0.ɵɵelementStart(13, "div", 197);
|
|
1914
|
+
i0.ɵɵelement(14, "mj-code-editor", 198);
|
|
1931
1915
|
i0.ɵɵelementEnd()()();
|
|
1932
1916
|
} if (rf & 2) {
|
|
1933
1917
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
@@ -2454,14 +2438,14 @@ let MJAIPromptRunFormComponentExtended = class MJAIPromptRunFormComponentExtende
|
|
|
2454
2438
|
// Don't auto-expand validation panel anymore - let user expand when needed
|
|
2455
2439
|
}
|
|
2456
2440
|
static { this.ɵfac = /*@__PURE__*/ (() => { let ɵMJAIPromptRunFormComponentExtended_BaseFactory; return function MJAIPromptRunFormComponentExtended_Factory(__ngFactoryType__) { return (ɵMJAIPromptRunFormComponentExtended_BaseFactory || (ɵMJAIPromptRunFormComponentExtended_BaseFactory = i0.ɵɵgetInheritedFactory(MJAIPromptRunFormComponentExtended)))(__ngFactoryType__ || MJAIPromptRunFormComponentExtended); }; })(); }
|
|
2457
|
-
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MJAIPromptRunFormComponentExtended, selectors: [["mj-ai-prompt-run-form"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 2, vars: 2, consts: [["form", "ngForm"], [3, "Record", "FormComponent", "ToolbarConfig", "WidthMode"], [1, "fullscreen-overlay"], [3, "Navigate", "DeleteRequested", "FavoriteToggled", "HistoryRequested", "ListManagementRequested", "Record", "FormComponent", "ToolbarConfig", "WidthMode"], [1, "record-form", 2, "display", "flex", "flex-direction", "column", "height", "100%", "overflow", "hidden"], [1, "prompt-run-header"], [1, "header-content"], [1, "run-overview"], [1, "run-icon-wrapper"], [1, "run-info"], [1, "run-title"], [1, "run-id"], [1, "run-meta"], [1, "meta-card", "status-card"], [1, "c3-card-label"], [1, "meta-card-body"], [1, "status-indicator"], [1, "meta-card", "execution-card"], [1, "model-card-c3"], ["title", "View Original Run", 1, "original-run"], [1, "run-actions"], ["mjButton", "", "variant", "outline", "size", "sm", "title", "Re-run this prompt", 3, "click"], [1, "fa-solid", "fa-play-circle"], ["mjButton", "", "variant", "outline", "size", "sm", "title", "Refresh data", 3, "click"], [1, "fa-solid", "fa-refresh"], [1, "metrics-bar"], [1, "form-content", 2, "display", "flex", "flex-direction", "column", "flex", "1", "min-height", "0", "overflow-y", "auto"], [2, "margin-bottom", "8px", 3, "ExpandedChange", "Expanded"], ["mjAccordionTitle", ""], [1, "panel-content"], [1, "nested-panels"], [
|
|
2441
|
+
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"], ["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) {
|
|
2458
2442
|
i0.ɵɵconditionalCreate(0, MJAIPromptRunFormComponentExtended_Conditional_0_Template, 203, 104, "mj-record-form-container", 1);
|
|
2459
2443
|
i0.ɵɵconditionalCreate(1, MJAIPromptRunFormComponentExtended_Conditional_1_Template, 15, 4, "div", 2);
|
|
2460
2444
|
} if (rf & 2) {
|
|
2461
2445
|
i0.ɵɵconditional(ctx.record ? 0 : -1);
|
|
2462
2446
|
i0.ɵɵadvance();
|
|
2463
2447
|
i0.ɵɵconditional(ctx.FullScreenContent ? 1 : -1);
|
|
2464
|
-
} }, dependencies: [i1.ɵNgNoValidate, i1.NgControlStatus, i1.NgControlStatusGroup, i1.NgModel, i1.NgForm, i2.MJButtonDirective, i2.MJAccordionPanelComponent, i2.MJAccordionTitleDirective, i3.MjRecordFormContainerComponent, i4.CodeEditorComponent, i5.ChatMessageViewerComponent, i6.DecimalPipe, i6.DatePipe], styles: ["\n\n[_nghost-%COMP%] {\n display: block;\n height: 100%;\n}\n\n.record-form-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n overflow: hidden;\n}\n\n.record-form[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0 !important;\n overflow: hidden;\n}\n\n.form-content[_ngcontent-%COMP%] {\n padding: 16px;\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n}\n\n\n\n.error-info[_ngcontent-%COMP%] {\n margin-top: 16px;\n padding: 16px;\n background-color: color-mix(in srgb, var(--mj-status-error) 5%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 20%, var(--mj-bg-surface));\n border-radius: 8px;\n}\n\n.finish-reason[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n color: var(--mj-status-error);\n font-size: 14px;\n}\n\n.error-details[_ngcontent-%COMP%] {\n margin-top: 12px;\n}\n\n.error-details[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n color: color-mix(in srgb, var(--mj-status-error) 80%, black);\n font-size: 14px;\n font-weight: 600;\n}\n\n.error-hint[_ngcontent-%COMP%] {\n margin: 0;\n color: color-mix(in srgb, var(--mj-status-error) 70%, black);\n font-size: 14px;\n font-style: italic;\n}\n\n\n\n.prompt-run-header[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n padding: 20px;\n margin-bottom: 0;\n}\n\n.header-content[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 20px;\n margin-bottom: 16px;\n}\n\n.run-overview[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 16px;\n flex: 1;\n}\n\n.run-icon-wrapper[_ngcontent-%COMP%] {\n width: 56px;\n height: 56px;\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.run-icon-wrapper[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 24px;\n}\n\n.run-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.run-title[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n font-size: 1.5em;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.run-id[_ngcontent-%COMP%] {\n font-size: 0.8em;\n color: var(--mj-text-muted);\n font-weight: 400;\n font-family: 'Courier New', monospace;\n}\n\n.run-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: stretch;\n gap: 10px;\n flex-wrap: wrap;\n}\n\n\n\n.meta-card[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n border-radius: 8px;\n overflow: hidden;\n border: 1px solid var(--mj-border-default);\n}\n\n.meta-card-body[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 7px;\n padding: 8px 12px;\n background: var(--mj-bg-surface-card);\n font-size: 0.82em;\n font-weight: 500;\n color: var(--mj-text-primary);\n white-space: nowrap;\n}\n\n.meta-card-body.clickable[_ngcontent-%COMP%] {\n cursor: pointer;\n transition: color 0.15s;\n}\n\n.meta-card-body.clickable[_ngcontent-%COMP%]:hover {\n color: var(--mj-brand-primary-hover);\n}\n\n\n\n.status-indicator[_ngcontent-%COMP%] {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n\n\n.prompt-card-c3[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n border-radius: 10px;\n overflow: hidden;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n}\n\n.c3-child-section[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 14px;\n font-size: 0.92em;\n font-weight: 600;\n color: var(--mj-text-primary);\n cursor: pointer;\n transition: color 0.15s;\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.c3-child-section[_ngcontent-%COMP%]:hover {\n color: var(--mj-brand-primary-hover);\n}\n\n.c3-child-section[_ngcontent-%COMP%] i.prompt-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 1rem;\n}\n\n.c3-divider[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 0 14px;\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.c3-line[_ngcontent-%COMP%] {\n flex: 1;\n height: 1px;\n background: var(--mj-border-default);\n}\n\n.c3-divider-label[_ngcontent-%COMP%] {\n font-size: 0.55rem;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.1em;\n color: var(--mj-text-disabled);\n white-space: nowrap;\n}\n\n.c3-parent-section[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 7px 14px 9px 14px;\n font-size: 0.76em;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: color 0.15s;\n border-left: 3px solid color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.c3-parent-section[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-secondary);\n}\n\n.c3-parent-section[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 0.75rem;\n}\n\n.c3-link-icon[_ngcontent-%COMP%] {\n margin-left: auto;\n font-size: 0.6rem !important;\n opacity: 0.4;\n}\n\n.c3-parent-section[_ngcontent-%COMP%]:hover .c3-link-icon[_ngcontent-%COMP%] {\n opacity: 0.8;\n}\n\n\n\n.model-card-c3[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n border-radius: 8px;\n overflow: hidden;\n border: 1px solid var(--mj-border-default);\n cursor: pointer;\n transition: border-color 0.15s;\n}\n\n.model-card-c3[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-border-strong);\n}\n\n.c3-card-label[_ngcontent-%COMP%] {\n font-size: 0.6rem;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.08em;\n padding: 4px 10px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.c3-card-body[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n padding: 8px 12px;\n background: var(--mj-bg-surface-card);\n font-size: 0.82em;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.c3-model-name[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.c3-model-name[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 0.9rem;\n}\n\n.c3-vendor-name[_ngcontent-%COMP%] {\n font-size: 0.72em;\n color: var(--mj-text-muted);\n font-weight: 400;\n padding-left: 22px;\n}\n\n.original-run[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n border-radius: 16px;\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n font-size: 0.85em;\n}\n\n.original-link[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n text-decoration: none;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.original-link[_ngcontent-%COMP%]:hover {\n color: color-mix(in srgb, var(--mj-status-error) 85%, black);\n text-decoration: underline;\n}\n\n.run-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n\n\n.metrics-bar[_ngcontent-%COMP%] {\n display: flex;\n gap: 24px;\n padding-top: 16px;\n border-top: 1px solid var(--mj-border-default);\n flex-wrap: wrap;\n}\n\n.metric-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.metric-item[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n font-size: 1.2em;\n color: var(--mj-text-muted);\n width: 24px;\n text-align: center;\n}\n\n.metric-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n\n.metric-label[_ngcontent-%COMP%] {\n font-size: 0.75em;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.metric-value[_ngcontent-%COMP%] {\n font-size: 1.1em;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.config-link[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n text-decoration: none;\n cursor: pointer;\n transition: color 0.2s;\n}\n\n.config-link[_ngcontent-%COMP%]:hover {\n color: color-mix(in srgb, var(--mj-brand-primary) 75%, black);\n text-decoration: underline;\n}\n\n\n\n.form-content[_ngcontent-%COMP%] {\n padding: 16px;\n}\n\n.panel-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n}\n\n\n\n.sub-panel-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 500;\n font-size: 0.95em;\n}\n\n.sub-panel-content[_ngcontent-%COMP%] {\n padding: 0;\n}\n\n\n\n.nested-panels[_ngcontent-%COMP%] mj-accordion-panel[_ngcontent-%COMP%] {\n margin-bottom: 8px;\n}\n\n\n\n.sub-panel-content[_ngcontent-%COMP%] mj-chat-message-viewer[_ngcontent-%COMP%] {\n display: block;\n min-height: 200px;\n max-height: 750px; \n\n height: auto;\n overflow: hidden;\n}\n\n\n\n.sub-expansion-panel[_ngcontent-%COMP%] {\n margin-bottom: 8px;\n}\n\n\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: white;\n}\n\n.panel-count[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-weight: 400;\n font-size: 0.9em;\n}\n\n.panel-content[_ngcontent-%COMP%] {\n padding: 20px;\n max-height: none !important;\n overflow: visible !important;\n}\n\n\n\n.json-editor-container[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\n}\n\n.json-toolbar[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n padding: 8px 12px;\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n justify-content: flex-end;\n}\n\n\n\n.error-message[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 6%, var(--mj-bg-surface));\n border: 1px solid var(--mj-status-error);\n border-radius: 6px;\n padding: 16px;\n display: flex;\n gap: 16px;\n margin-bottom: 16px;\n}\n\n.error-message[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 1.5em;\n color: var(--mj-status-error);\n flex-shrink: 0;\n}\n\n.error-content[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n color: var(--mj-status-error);\n font-size: 1em;\n}\n\n.error-content[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-text-secondary);\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 60px 40px;\n color: var(--mj-text-muted);\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 3em;\n margin-bottom: 16px;\n opacity: 0.3;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 1.1em;\n}\n\n\n\n.loading-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 60px 40px;\n color: var(--mj-text-muted);\n}\n\n.loading-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 3em;\n margin-bottom: 16px;\n opacity: 0.6;\n color: var(--mj-brand-primary);\n}\n\n.loading-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 1.1em;\n}\n\n\n\n.metrics-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 20px;\n margin-bottom: 24px;\n}\n\n.metric-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 20px;\n}\n\n.metric-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 12px;\n}\n\n.metric-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 1.2em;\n color: var(--mj-text-muted);\n}\n\n.metric-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 0.9em;\n color: var(--mj-text-muted);\n font-weight: 500;\n}\n\n.metric-value.large[_ngcontent-%COMP%] {\n font-size: 1.8em;\n font-weight: 700;\n color: var(--mj-text-primary);\n}\n\n.metric-rollup[_ngcontent-%COMP%] {\n margin-top: 8px;\n font-size: 0.85em;\n color: var(--mj-text-muted);\n}\n\n.metric-currency[_ngcontent-%COMP%] {\n margin-top: 4px;\n font-size: 0.85em;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n}\n\n\n\n.additional-metrics[_ngcontent-%COMP%] {\n padding-top: 16px;\n}\n\n.metric-row[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 8px 0;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n}\n\n.metric-row[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.metric-row[_ngcontent-%COMP%] .metric-label[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-muted);\n}\n\n.metric-row[_ngcontent-%COMP%] .metric-value[_ngcontent-%COMP%] {\n font-weight: 400;\n color: var(--mj-text-primary);\n}\n\n.metric-row[_ngcontent-%COMP%] .metric-value.link[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: color 0.2s;\n}\n\n.metric-row[_ngcontent-%COMP%] .metric-value.link[_ngcontent-%COMP%]:hover {\n color: color-mix(in srgb, var(--mj-brand-primary) 75%, black);\n}\n\n\n\n.parent-run-section[_ngcontent-%COMP%], \n.child-runs-section[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.parent-run-section[_ngcontent-%COMP%]:last-child, \n.child-runs-section[_ngcontent-%COMP%]:last-child {\n margin-bottom: 0;\n}\n\n.parent-run-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%], \n.child-runs-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n font-size: 0.95em;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.runs-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.run-item[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 12px 16px;\n display: flex;\n align-items: center;\n gap: 12px;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.run-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default);\n border-color: var(--mj-border-strong);\n}\n\n.run-item.parent[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-brand-primary) 30%, var(--mj-bg-surface));\n}\n\n.run-item.parent[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 20%, var(--mj-bg-surface));\n}\n\n.run-item-icon[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.run-item-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.run-item-title[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-primary);\n margin-bottom: 4px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.execution-order[_ngcontent-%COMP%] {\n background: var(--mj-text-muted);\n color: white;\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 0.75em;\n font-weight: 600;\n}\n\n.run-item-type[_ngcontent-%COMP%] {\n font-size: 0.85em;\n color: var(--mj-text-muted);\n font-weight: 400;\n}\n\n.run-item-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n font-size: 0.85em;\n color: var(--mj-text-muted);\n}\n\n.run-item-meta[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.status-indicator[_ngcontent-%COMP%] {\n font-weight: 500;\n}\n\n.run-item[_ngcontent-%COMP%] > i[_ngcontent-%COMP%]:last-child {\n color: var(--mj-text-muted);\n font-size: 0.85em;\n}\n\n\n\n.detail-fields-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n gap: 24px;\n width: 100%;\n min-height: auto;\n overflow: visible;\n}\n\n.detail-field[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.detail-field[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: 0.85em;\n color: var(--mj-text-muted);\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.detail-value[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 1em;\n color: var(--mj-text-primary);\n padding: 10px 14px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n transition: all 0.2s;\n}\n\n.detail-value[_ngcontent-%COMP%] i[_ngcontent-%COMP%]:first-child {\n color: var(--mj-text-muted);\n font-size: 1.1em;\n width: 20px;\n text-align: center;\n}\n\n.detail-value.clickable[_ngcontent-%COMP%] {\n cursor: pointer;\n}\n\n.detail-value.clickable[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default);\n border-color: var(--mj-border-strong);\n color: var(--mj-brand-primary);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n}\n\n.detail-value.clickable[_ngcontent-%COMP%] i[_ngcontent-%COMP%]:last-child {\n margin-left: auto;\n font-size: 0.85em;\n opacity: 0.6;\n}\n\n.detail-value.clickable[_ngcontent-%COMP%]:hover i[_ngcontent-%COMP%]:last-child {\n opacity: 1;\n}\n\n.detail-value.null-value[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n font-style: italic;\n}\n\n.detail-value.null-value[_ngcontent-%COMP%] i[_ngcontent-%COMP%]:first-child {\n opacity: 0.5;\n}\n\n\n\nmj-accordion-panel[_ngcontent-%COMP%] {\n display: block;\n}\n\n\n\n.validation-summary[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.summary-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 16px;\n}\n\n.summary-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 1.1em;\n color: var(--mj-text-primary);\n}\n\n.validation-status[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 6px 16px;\n border-radius: 20px;\n font-weight: 500;\n font-size: 0.9em;\n}\n\n.validation-status.success[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 12%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.validation-status.failed[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 12%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.validation-metrics[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));\n gap: 12px;\n margin-bottom: 20px;\n}\n\n.metric-card.small[_ngcontent-%COMP%] {\n padding: 16px;\n text-align: center;\n}\n\n.metric-card.small[_ngcontent-%COMP%] .metric-label[_ngcontent-%COMP%] {\n font-size: 0.8em;\n margin-bottom: 8px;\n font-weight: 600;\n}\n\n.metric-card.small[_ngcontent-%COMP%] .metric-value[_ngcontent-%COMP%] {\n font-size: 1.4em;\n font-weight: 700;\n}\n\n.validation-error[_ngcontent-%COMP%], \n.common-error[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 6%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 18%, var(--mj-bg-surface));\n border-radius: 8px;\n padding: 16px;\n margin-bottom: 16px;\n}\n\n.validation-error[_ngcontent-%COMP%] h5[_ngcontent-%COMP%], \n.common-error[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n color: var(--mj-status-error);\n font-size: 0.95em;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.validation-error[_ngcontent-%COMP%] p[_ngcontent-%COMP%], \n.common-error[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-text-secondary);\n font-size: 0.9em;\n}\n\n.error-count[_ngcontent-%COMP%] {\n display: inline-block;\n margin-top: 8px;\n padding: 2px 8px;\n background: var(--mj-status-error);\n color: white;\n border-radius: 12px;\n font-size: 0.75em;\n font-weight: 500;\n}\n\n\n\n.retry-timeline[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.retry-timeline[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n font-size: 1em;\n color: var(--mj-text-secondary);\n}\n\n.timeline-info[_ngcontent-%COMP%] {\n display: flex;\n gap: 24px;\n flex-wrap: wrap;\n}\n\n.timeline-stat[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n color: var(--mj-text-muted);\n font-size: 0.9em;\n}\n\n.timeline-stat[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 1.1em;\n}\n\n\n\n.validation-attempts[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.validation-attempts[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n font-size: 1em;\n color: var(--mj-text-secondary);\n}\n\n.attempts-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.attempt-item[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 12px 16px;\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 16px;\n}\n\n.attempt-item.success[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 6%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-status-success) 18%, var(--mj-bg-surface));\n}\n\n.attempt-item.failed[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 6%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-status-error) 18%, var(--mj-bg-surface));\n}\n\n.attempt-number[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.attempt-item.success[_ngcontent-%COMP%] .attempt-number[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.attempt-item.failed[_ngcontent-%COMP%] .attempt-number[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n.attempt-details[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n font-size: 0.85em;\n}\n\n.attempt-time[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n.attempt-error[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n flex: 1 0 100%;\n}\n\n.output-length[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-style: italic;\n}\n\n\n\n.validation-json[_ngcontent-%COMP%] {\n margin-top: 24px;\n}\n\n.validation-json[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n font-size: 1em;\n color: var(--mj-text-secondary);\n}\n\n.json-viewer-container[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n}\n\n\n\n.panel-badge.success[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n color: white;\n}\n\n\n\n.fullscreen-overlay[_ngcontent-%COMP%] {\n position: fixed;\n inset: 0;\n z-index: 10000;\n background: var(--mj-bg-overlay, rgba(0, 0, 0, 0.6));\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 1.5rem;\n}\n\n.fullscreen-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n max-width: 95vw;\n max-height: 95vh;\n background: var(--mj-bg-surface);\n border-radius: 10px;\n border: 1px solid var(--mj-border-default);\n box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);\n overflow: hidden;\n}\n\n.fullscreen-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0.75rem 1rem;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.fullscreen-title[_ngcontent-%COMP%] {\n font-weight: 600;\n font-size: 0.9rem;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.fullscreen-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n}\n\n.fullscreen-actions[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.fullscreen-body[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n overflow: hidden;\n}\n\n.fullscreen-body[_ngcontent-%COMP%] mj-code-editor[_ngcontent-%COMP%] {\n display: block;\n height: 100%;\n}"], changeDetection: 0 }); }
|
|
2448
|
+
} }, 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.DecimalPipe, i6.DatePipe], styles: ["\n\n[_nghost-%COMP%] {\n display: block;\n height: 100%;\n}\n\n.record-form-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n overflow: hidden;\n}\n\n.record-form[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0 !important;\n overflow: hidden;\n}\n\n.form-content[_ngcontent-%COMP%] {\n padding: 16px;\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n}\n\n\n\n.error-info[_ngcontent-%COMP%] {\n margin-top: 16px;\n padding: 16px;\n background-color: color-mix(in srgb, var(--mj-status-error) 5%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 20%, var(--mj-bg-surface));\n border-radius: 8px;\n}\n\n.finish-reason[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n color: var(--mj-status-error);\n font-size: 14px;\n}\n\n.error-details[_ngcontent-%COMP%] {\n margin-top: 12px;\n}\n\n.error-details[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n color: color-mix(in srgb, var(--mj-status-error) 80%, black);\n font-size: 14px;\n font-weight: 600;\n}\n\n.error-hint[_ngcontent-%COMP%] {\n margin: 0;\n color: color-mix(in srgb, var(--mj-status-error) 70%, black);\n font-size: 14px;\n font-style: italic;\n}\n\n\n\n.prompt-run-header[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n padding: 20px;\n margin-bottom: 0;\n}\n\n.header-content[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 20px;\n margin-bottom: 16px;\n}\n\n.run-overview[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 16px;\n flex: 1;\n}\n\n.run-icon-wrapper[_ngcontent-%COMP%] {\n width: 56px;\n height: 56px;\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.run-icon-wrapper[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 24px;\n}\n\n.run-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.run-title[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n font-size: 1.5em;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.run-id[_ngcontent-%COMP%] {\n font-size: 0.8em;\n color: var(--mj-text-muted);\n font-weight: 400;\n font-family: 'Courier New', monospace;\n}\n\n.run-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: stretch;\n gap: 10px;\n flex-wrap: wrap;\n}\n\n\n\n.meta-card[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n border-radius: 8px;\n overflow: hidden;\n border: 1px solid var(--mj-border-default);\n}\n\n.meta-card-body[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 7px;\n padding: 8px 12px;\n background: var(--mj-bg-surface-card);\n font-size: 0.82em;\n font-weight: 500;\n color: var(--mj-text-primary);\n white-space: nowrap;\n}\n\n.meta-card-body.clickable[_ngcontent-%COMP%] {\n cursor: pointer;\n transition: color 0.15s;\n}\n\n.meta-card-body.clickable[_ngcontent-%COMP%]:hover {\n color: var(--mj-brand-primary-hover);\n}\n\n\n\n.status-indicator[_ngcontent-%COMP%] {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n\n\n.prompt-card-c3[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n border-radius: 10px;\n overflow: hidden;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n}\n\n.c3-child-section[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 14px;\n font-size: 0.92em;\n font-weight: 600;\n color: var(--mj-text-primary);\n cursor: pointer;\n transition: color 0.15s;\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.c3-child-section[_ngcontent-%COMP%]:hover {\n color: var(--mj-brand-primary-hover);\n}\n\n.c3-child-section[_ngcontent-%COMP%] i.prompt-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 1rem;\n}\n\n.c3-divider[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 0 14px;\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.c3-line[_ngcontent-%COMP%] {\n flex: 1;\n height: 1px;\n background: var(--mj-border-default);\n}\n\n.c3-divider-label[_ngcontent-%COMP%] {\n font-size: 0.55rem;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.1em;\n color: var(--mj-text-disabled);\n white-space: nowrap;\n}\n\n.c3-parent-section[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 7px 14px 9px 14px;\n font-size: 0.76em;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: color 0.15s;\n border-left: 3px solid color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.c3-parent-section[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-secondary);\n}\n\n.c3-parent-section[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 0.75rem;\n}\n\n.c3-link-icon[_ngcontent-%COMP%] {\n margin-left: auto;\n font-size: 0.6rem !important;\n opacity: 0.4;\n}\n\n.c3-parent-section[_ngcontent-%COMP%]:hover .c3-link-icon[_ngcontent-%COMP%] {\n opacity: 0.8;\n}\n\n\n\n.model-card-c3[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n border-radius: 8px;\n overflow: hidden;\n border: 1px solid var(--mj-border-default);\n cursor: pointer;\n transition: border-color 0.15s;\n}\n\n.model-card-c3[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-border-strong);\n}\n\n.c3-card-label[_ngcontent-%COMP%] {\n font-size: 0.6rem;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.08em;\n padding: 4px 10px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.c3-card-body[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n padding: 8px 12px;\n background: var(--mj-bg-surface-card);\n font-size: 0.82em;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.c3-model-name[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.c3-model-name[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 0.9rem;\n}\n\n.c3-vendor-name[_ngcontent-%COMP%] {\n font-size: 0.72em;\n color: var(--mj-text-muted);\n font-weight: 400;\n padding-left: 22px;\n}\n\n.original-run[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n border-radius: 16px;\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n font-size: 0.85em;\n}\n\n.original-link[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n text-decoration: none;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.original-link[_ngcontent-%COMP%]:hover {\n color: color-mix(in srgb, var(--mj-status-error) 85%, black);\n text-decoration: underline;\n}\n\n.run-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n\n\n.metrics-bar[_ngcontent-%COMP%] {\n display: flex;\n gap: 24px;\n padding-top: 16px;\n border-top: 1px solid var(--mj-border-default);\n flex-wrap: wrap;\n}\n\n.metric-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.metric-item[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n font-size: 1.2em;\n color: var(--mj-text-muted);\n width: 24px;\n text-align: center;\n}\n\n.metric-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n\n.metric-label[_ngcontent-%COMP%] {\n font-size: 0.75em;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.metric-value[_ngcontent-%COMP%] {\n font-size: 1.1em;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.config-link[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n text-decoration: none;\n cursor: pointer;\n transition: color 0.2s;\n}\n\n.config-link[_ngcontent-%COMP%]:hover {\n color: color-mix(in srgb, var(--mj-brand-primary) 75%, black);\n text-decoration: underline;\n}\n\n\n\n.form-content[_ngcontent-%COMP%] {\n padding: 16px;\n}\n\n.panel-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n}\n\n\n\n.sub-panel-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 500;\n font-size: 0.95em;\n}\n\n.sub-panel-content[_ngcontent-%COMP%] {\n padding: 0;\n}\n\n\n\n.nested-panels[_ngcontent-%COMP%] mj-accordion-panel[_ngcontent-%COMP%] {\n margin-bottom: 8px;\n}\n\n\n\n.sub-panel-content[_ngcontent-%COMP%] mj-chat-message-viewer[_ngcontent-%COMP%] {\n display: block;\n min-height: 200px;\n max-height: 750px; \n\n height: auto;\n overflow: hidden;\n}\n\n\n\n.sub-expansion-panel[_ngcontent-%COMP%] {\n margin-bottom: 8px;\n}\n\n\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: white;\n}\n\n.panel-count[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-weight: 400;\n font-size: 0.9em;\n}\n\n.panel-content[_ngcontent-%COMP%] {\n padding: 20px;\n max-height: none !important;\n overflow: visible !important;\n}\n\n\n\n.json-editor-container[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\n}\n\n.json-toolbar[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n padding: 8px 12px;\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n justify-content: flex-end;\n}\n\n\n\n.error-message[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 6%, var(--mj-bg-surface));\n border: 1px solid var(--mj-status-error);\n border-radius: 6px;\n padding: 16px;\n display: flex;\n gap: 16px;\n margin-bottom: 16px;\n}\n\n.error-message[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 1.5em;\n color: var(--mj-status-error);\n flex-shrink: 0;\n}\n\n.error-content[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n color: var(--mj-status-error);\n font-size: 1em;\n}\n\n.error-content[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-text-secondary);\n}\n\n\n\n.loading-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 60px 40px;\n color: var(--mj-text-muted);\n}\n\n.loading-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 3em;\n margin-bottom: 16px;\n opacity: 0.6;\n color: var(--mj-brand-primary);\n}\n\n.loading-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 1.1em;\n}\n\n\n\n.metrics-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 20px;\n margin-bottom: 24px;\n}\n\n.metric-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 20px;\n}\n\n.metric-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 12px;\n}\n\n.metric-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 1.2em;\n color: var(--mj-text-muted);\n}\n\n.metric-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 0.9em;\n color: var(--mj-text-muted);\n font-weight: 500;\n}\n\n.metric-value.large[_ngcontent-%COMP%] {\n font-size: 1.8em;\n font-weight: 700;\n color: var(--mj-text-primary);\n}\n\n.metric-rollup[_ngcontent-%COMP%] {\n margin-top: 8px;\n font-size: 0.85em;\n color: var(--mj-text-muted);\n}\n\n.metric-currency[_ngcontent-%COMP%] {\n margin-top: 4px;\n font-size: 0.85em;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n}\n\n\n\n.additional-metrics[_ngcontent-%COMP%] {\n padding-top: 16px;\n}\n\n.metric-row[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 8px 0;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n}\n\n.metric-row[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.metric-row[_ngcontent-%COMP%] .metric-label[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-muted);\n}\n\n.metric-row[_ngcontent-%COMP%] .metric-value[_ngcontent-%COMP%] {\n font-weight: 400;\n color: var(--mj-text-primary);\n}\n\n.metric-row[_ngcontent-%COMP%] .metric-value.link[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: color 0.2s;\n}\n\n.metric-row[_ngcontent-%COMP%] .metric-value.link[_ngcontent-%COMP%]:hover {\n color: color-mix(in srgb, var(--mj-brand-primary) 75%, black);\n}\n\n\n\n.parent-run-section[_ngcontent-%COMP%], \n.child-runs-section[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.parent-run-section[_ngcontent-%COMP%]:last-child, \n.child-runs-section[_ngcontent-%COMP%]:last-child {\n margin-bottom: 0;\n}\n\n.parent-run-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%], \n.child-runs-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n font-size: 0.95em;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.runs-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.run-item[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 12px 16px;\n display: flex;\n align-items: center;\n gap: 12px;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.run-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default);\n border-color: var(--mj-border-strong);\n}\n\n.run-item.parent[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-brand-primary) 30%, var(--mj-bg-surface));\n}\n\n.run-item.parent[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 20%, var(--mj-bg-surface));\n}\n\n.run-item-icon[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.run-item-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.run-item-title[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-primary);\n margin-bottom: 4px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.execution-order[_ngcontent-%COMP%] {\n background: var(--mj-text-muted);\n color: white;\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 0.75em;\n font-weight: 600;\n}\n\n.run-item-type[_ngcontent-%COMP%] {\n font-size: 0.85em;\n color: var(--mj-text-muted);\n font-weight: 400;\n}\n\n.run-item-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n font-size: 0.85em;\n color: var(--mj-text-muted);\n}\n\n.run-item-meta[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.status-indicator[_ngcontent-%COMP%] {\n font-weight: 500;\n}\n\n.run-item[_ngcontent-%COMP%] > i[_ngcontent-%COMP%]:last-child {\n color: var(--mj-text-muted);\n font-size: 0.85em;\n}\n\n\n\n.detail-fields-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n gap: 24px;\n width: 100%;\n min-height: auto;\n overflow: visible;\n}\n\n.detail-field[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.detail-field[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: 0.85em;\n color: var(--mj-text-muted);\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.detail-value[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 1em;\n color: var(--mj-text-primary);\n padding: 10px 14px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n transition: all 0.2s;\n}\n\n.detail-value[_ngcontent-%COMP%] i[_ngcontent-%COMP%]:first-child {\n color: var(--mj-text-muted);\n font-size: 1.1em;\n width: 20px;\n text-align: center;\n}\n\n.detail-value.clickable[_ngcontent-%COMP%] {\n cursor: pointer;\n}\n\n.detail-value.clickable[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default);\n border-color: var(--mj-border-strong);\n color: var(--mj-brand-primary);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n}\n\n.detail-value.clickable[_ngcontent-%COMP%] i[_ngcontent-%COMP%]:last-child {\n margin-left: auto;\n font-size: 0.85em;\n opacity: 0.6;\n}\n\n.detail-value.clickable[_ngcontent-%COMP%]:hover i[_ngcontent-%COMP%]:last-child {\n opacity: 1;\n}\n\n.detail-value.null-value[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n font-style: italic;\n}\n\n.detail-value.null-value[_ngcontent-%COMP%] i[_ngcontent-%COMP%]:first-child {\n opacity: 0.5;\n}\n\n\n\nmj-accordion-panel[_ngcontent-%COMP%] {\n display: block;\n}\n\n\n\n.validation-summary[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.summary-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 16px;\n}\n\n.summary-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 1.1em;\n color: var(--mj-text-primary);\n}\n\n.validation-status[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 6px 16px;\n border-radius: 20px;\n font-weight: 500;\n font-size: 0.9em;\n}\n\n.validation-status.success[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 12%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.validation-status.failed[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 12%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.validation-metrics[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));\n gap: 12px;\n margin-bottom: 20px;\n}\n\n.metric-card.small[_ngcontent-%COMP%] {\n padding: 16px;\n text-align: center;\n}\n\n.metric-card.small[_ngcontent-%COMP%] .metric-label[_ngcontent-%COMP%] {\n font-size: 0.8em;\n margin-bottom: 8px;\n font-weight: 600;\n}\n\n.metric-card.small[_ngcontent-%COMP%] .metric-value[_ngcontent-%COMP%] {\n font-size: 1.4em;\n font-weight: 700;\n}\n\n.validation-error[_ngcontent-%COMP%], \n.common-error[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 6%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 18%, var(--mj-bg-surface));\n border-radius: 8px;\n padding: 16px;\n margin-bottom: 16px;\n}\n\n.validation-error[_ngcontent-%COMP%] h5[_ngcontent-%COMP%], \n.common-error[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n color: var(--mj-status-error);\n font-size: 0.95em;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.validation-error[_ngcontent-%COMP%] p[_ngcontent-%COMP%], \n.common-error[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-text-secondary);\n font-size: 0.9em;\n}\n\n.error-count[_ngcontent-%COMP%] {\n display: inline-block;\n margin-top: 8px;\n padding: 2px 8px;\n background: var(--mj-status-error);\n color: white;\n border-radius: 12px;\n font-size: 0.75em;\n font-weight: 500;\n}\n\n\n\n.retry-timeline[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.retry-timeline[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n font-size: 1em;\n color: var(--mj-text-secondary);\n}\n\n.timeline-info[_ngcontent-%COMP%] {\n display: flex;\n gap: 24px;\n flex-wrap: wrap;\n}\n\n.timeline-stat[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n color: var(--mj-text-muted);\n font-size: 0.9em;\n}\n\n.timeline-stat[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 1.1em;\n}\n\n\n\n.validation-attempts[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.validation-attempts[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n font-size: 1em;\n color: var(--mj-text-secondary);\n}\n\n.attempts-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.attempt-item[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 12px 16px;\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 16px;\n}\n\n.attempt-item.success[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 6%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-status-success) 18%, var(--mj-bg-surface));\n}\n\n.attempt-item.failed[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 6%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-status-error) 18%, var(--mj-bg-surface));\n}\n\n.attempt-number[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.attempt-item.success[_ngcontent-%COMP%] .attempt-number[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.attempt-item.failed[_ngcontent-%COMP%] .attempt-number[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n.attempt-details[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n font-size: 0.85em;\n}\n\n.attempt-time[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n.attempt-error[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n flex: 1 0 100%;\n}\n\n.output-length[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-style: italic;\n}\n\n\n\n.validation-json[_ngcontent-%COMP%] {\n margin-top: 24px;\n}\n\n.validation-json[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n font-size: 1em;\n color: var(--mj-text-secondary);\n}\n\n.json-viewer-container[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n}\n\n\n\n.panel-badge.success[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n color: white;\n}\n\n\n\n.fullscreen-overlay[_ngcontent-%COMP%] {\n position: fixed;\n inset: 0;\n z-index: 10000;\n background: var(--mj-bg-overlay, rgba(0, 0, 0, 0.6));\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 1.5rem;\n}\n\n.fullscreen-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n max-width: 95vw;\n max-height: 95vh;\n background: var(--mj-bg-surface);\n border-radius: 10px;\n border: 1px solid var(--mj-border-default);\n box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);\n overflow: hidden;\n}\n\n.fullscreen-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0.75rem 1rem;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.fullscreen-title[_ngcontent-%COMP%] {\n font-weight: 600;\n font-size: 0.9rem;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.fullscreen-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n}\n\n.fullscreen-actions[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.fullscreen-body[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n overflow: hidden;\n}\n\n.fullscreen-body[_ngcontent-%COMP%] mj-code-editor[_ngcontent-%COMP%] {\n display: block;\n height: 100%;\n}"], changeDetection: 0 }); }
|
|
2465
2449
|
};
|
|
2466
2450
|
MJAIPromptRunFormComponentExtended = __decorate([
|
|
2467
2451
|
RegisterClass(BaseFormComponent, 'MJ: AI Prompt Runs')
|
|
@@ -2469,7 +2453,7 @@ MJAIPromptRunFormComponentExtended = __decorate([
|
|
|
2469
2453
|
export { MJAIPromptRunFormComponentExtended };
|
|
2470
2454
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MJAIPromptRunFormComponentExtended, [{
|
|
2471
2455
|
type: Component,
|
|
2472
|
-
args: [{ standalone: false, selector: 'mj-ai-prompt-run-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (record) {\n<mj-record-form-container [Record]=\"record\" [FormComponent]=\"this\"\n [ToolbarConfig]=\"toolbarConfig\"\n [WidthMode]=\"'full-width'\"\n (Navigate)=\"OnFormNavigate($event)\"\n (DeleteRequested)=\"OnDeleteRequested()\"\n (FavoriteToggled)=\"OnFavoriteToggled()\"\n (HistoryRequested)=\"OnHistoryRequested()\"\n (ListManagementRequested)=\"OnListManagementRequested()\">\n <form class=\"record-form\" #form=\"ngForm\" style=\"display: flex; flex-direction: column; height: 100%; overflow: hidden;\">\n\n <!-- Header Section -->\n <div class=\"prompt-run-header\">\n <div class=\"header-content\">\n <div class=\"run-overview\">\n <div class=\"run-icon-wrapper\" [style.background-color]=\"getStatusColor() + '20'\">\n <i [class]=\"'fa-solid ' + getStatusIcon()\" [style.color]=\"getStatusColor()\"></i>\n </div>\n <div class=\"run-info\">\n <h1 class=\"run-title\">\n Prompt Run\n @if (record.ID) {\n <span class=\"run-id\">#{{ record.ID.substring(0, 8) }}</span>\n }\n </h1>\n <div class=\"run-meta\">\n <!-- Status Card -->\n <div class=\"meta-card status-card\">\n <div class=\"c3-card-label\">Status</div>\n <div class=\"meta-card-body\">\n <span class=\"status-indicator\" [style.background-color]=\"getStatusColor()\"></span>\n <i [class]=\"'fa-solid ' + getStatusIcon()\" [style.color]=\"getStatusColor()\"></i>\n {{ getStatusText() }}\n </div>\n </div>\n\n <!-- Execution Card -->\n @if (record.RunType) {\n <div class=\"meta-card execution-card\">\n <div class=\"c3-card-label\">Execution</div>\n <div class=\"meta-card-body\">\n <i [class]=\"'fa-solid ' + getRunTypeIcon(record.RunType)\" [style.color]=\"getRunTypeColor(record.RunType)\"></i>\n {{ record.RunType }}\n </div>\n </div>\n }\n\n <!-- Prompt Card -->\n @if (prompt) {\n @if (record.ChildPromptID) {\n <!-- C3 Stacked Connector: child prompt prominent, parent nested -->\n <div class=\"prompt-card-c3\">\n <div class=\"c3-card-label\">Prompt</div>\n <div class=\"c3-child-section\" (click)=\"navigateToEntity('MJ: AI Prompts', record.ChildPromptID)\" title=\"View Agent Prompt\">\n <i class=\"fa-solid fa-comment prompt-icon\"></i>\n {{ record.ChildPrompt }}\n </div>\n <div class=\"c3-divider\">\n <span class=\"c3-line\"></span>\n <span class=\"c3-divider-label\">wrapped by</span>\n <span class=\"c3-line\"></span>\n </div>\n <div class=\"c3-parent-section\" (click)=\"navigateToEntity('MJ: AI Prompts', prompt.ID)\" title=\"View System Prompt\">\n <i class=\"fa-solid fa-cog\"></i>\n {{ prompt.Name }}\n <i class=\"fa-solid fa-arrow-up-right-from-square c3-link-icon\"></i>\n </div>\n </div>\n } @else {\n <!-- Single prompt (no child) \u2014 same card style -->\n <div class=\"meta-card prompt-single-card\">\n <div class=\"c3-card-label\">Prompt</div>\n <div class=\"meta-card-body clickable\" (click)=\"navigateToEntity('MJ: AI Prompts', prompt.ID)\" title=\"View Prompt\">\n <i class=\"fa-solid fa-comment-dots\" style=\"color: var(--mj-brand-primary);\"></i>\n {{ prompt.Name }}\n </div>\n </div>\n }\n }\n\n <!-- Model Card -->\n @if (model) {\n <div class=\"model-card-c3\">\n <div class=\"c3-card-label\">Model</div>\n <div class=\"c3-card-body\" (click)=\"navigateToEntity('MJ: AI Models', model.ID)\" title=\"View Model\">\n <span class=\"c3-model-name\"><i class=\"fa-solid fa-microchip\"></i> {{ model.Name }}</span>\n @if (record.Vendor) {\n <span class=\"c3-vendor-name\">{{ record.Vendor }}</span>\n }\n </div>\n </div>\n }\n @if (record.RerunFromPromptRunID) {\n <span class=\"original-run\" title=\"View Original Run\">\n <i class=\"fa-solid fa-level-up-alt\"></i>\n <a (click)=\"navigateToOriginalRun()\" class=\"original-link\">Original Run</a>\n </span>\n }\n </div>\n </div>\n </div>\n \n <!-- Action Buttons -->\n <div class=\"run-actions\">\n <button mjButton variant=\"outline\" size=\"sm\" (click)=\"reRunPrompt()\" title=\"Re-run this prompt\">\n <i class=\"fa-solid fa-play-circle\"></i>\n Re-Run\n </button>\n <button mjButton variant=\"outline\" size=\"sm\" (click)=\"refreshData()\" title=\"Refresh data\">\n <i class=\"fa-solid fa-refresh\"></i>\n </button>\n </div>\n </div>\n \n <!-- Key Metrics Bar -->\n @if (record.ConfigurationID) {\n <!-- Configuration Bar -->\n <div class=\"metrics-bar\">\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-cog\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Configuration</div>\n <div class=\"metric-value\">\n <a href=\"javascript:void(0)\" class=\"config-link\" (click)=\"navigateToEntity('MJ: AI Configurations', record.ConfigurationID)\">\n {{ record.Configuration || 'Unknown' }}\n </a>\n </div>\n </div>\n </div>\n @if (record.Temperature !== null && record.Temperature !== undefined) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-temperature-high\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Temperature</div>\n <div class=\"metric-value\">{{ record.Temperature }}</div>\n </div>\n </div>\n }\n @if (record.TopP !== null && record.TopP !== undefined) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-percentage\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Top P</div>\n <div class=\"metric-value\">{{ record.TopP }}</div>\n </div>\n </div>\n }\n @if (record.TopK !== null && record.TopK !== undefined) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-list-ol\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Top K</div>\n <div class=\"metric-value\">{{ record.TopK }}</div>\n </div>\n </div>\n }\n @if (record.EffortLevel !== null && record.EffortLevel !== undefined) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-tachometer-alt\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Effort Level</div>\n <div class=\"metric-value\">{{ record.EffortLevel }}</div>\n </div>\n </div>\n }\n @if (record.ResponseFormat) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-code\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Response Format</div>\n <div class=\"metric-value\">{{ record.ResponseFormat }}</div>\n </div>\n </div>\n }\n </div>\n \n <!-- Execution Metrics Bar (always show when configuration exists) -->\n <div class=\"metrics-bar\">\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-clock\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Duration</div>\n <div class=\"metric-value\">{{ formatDuration(record.ExecutionTimeMS) }}</div>\n </div>\n </div>\n <div class=\"metric-item\" title=\"Total tokens the model processed, including cached input\">\n <i class=\"fa-solid fa-coins\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Total Tokens</div>\n <div class=\"metric-value\">{{ formatTokens(TotalTokensProcessed) }}</div>\n </div>\n </div>\n @if (record.TokensCacheRead) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-bolt\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Cached</div>\n <div class=\"metric-value\">{{ formatTokens(record.TokensCacheRead) }}</div>\n </div>\n </div>\n }\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-dollar-sign\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Cost</div>\n <div class=\"metric-value\">{{ formatCost(record.TotalCost || record.Cost) }}</div>\n </div>\n </div>\n @if (record.RunAt) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-calendar\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Started</div>\n <div class=\"metric-value\">{{ record.RunAt | date:'short' }}</div>\n </div>\n </div>\n }\n </div>\n } @else {\n <!-- Execution Metrics Bar (original behavior when no configuration) -->\n <div class=\"metrics-bar\">\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-clock\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Duration</div>\n <div class=\"metric-value\">{{ formatDuration(record.ExecutionTimeMS) }}</div>\n </div>\n </div>\n <div class=\"metric-item\" title=\"Total tokens the model processed, including cached input\">\n <i class=\"fa-solid fa-coins\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Total Tokens</div>\n <div class=\"metric-value\">{{ formatTokens(TotalTokensProcessed) }}</div>\n </div>\n </div>\n @if (record.TokensCacheRead) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-bolt\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Cached</div>\n <div class=\"metric-value\">{{ formatTokens(record.TokensCacheRead) }}</div>\n </div>\n </div>\n }\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-dollar-sign\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Cost</div>\n <div class=\"metric-value\">{{ formatCost(record.TotalCost || record.Cost) }}</div>\n </div>\n </div>\n @if (record.RunAt) {\n <div class=\"metric-item\">\n <i class=\"fa-solid fa-calendar\"></i>\n <div class=\"metric-content\">\n <div class=\"metric-label\">Started</div>\n <div class=\"metric-value\">{{ record.RunAt | date:'short' }}</div>\n </div>\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Main Content with Expansion Panels -->\n <div class=\"form-content\" style=\"display: flex; flex-direction: column; flex: 1; min-height: 0; overflow-y: auto;\">\n\n <!-- Input Panel with nested sub-panels -->\n <mj-accordion-panel [Expanded]=\"inputExpanded\" (ExpandedChange)=\"onInputPanelToggle($event)\" style=\"margin-bottom: 8px;\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-comment-dots\"></i>\n Input\n @if (record.Messages && record.Messages.trim() !== '') {\n <span class=\"panel-badge\">JSON</span>\n }\n </span>\n </ng-template>\n <div class=\"panel-content\">\n @if (record.Messages && record.Messages.trim() !== '') {\n <!-- Nested expansion panels for sub-sections -->\n <div class=\"nested-panels\">\n <!-- Messages Sub-Panel -->\n <mj-accordion-panel\n [Expanded]=\"messagesExpanded\"\n class=\"sub-expansion-panel\"\n style=\"margin-bottom: 8px;\">\n <ng-template mjAccordionTitle>\n <span class=\"sub-panel-title\">\n <i class=\"fa-solid fa-comments\"></i>\n Messages\n @if (chatMessages.length > 0) {\n <span class=\"panel-count\">({{ chatMessages.length }})</span>\n }\n </span>\n </ng-template>\n <div class=\"sub-panel-content\">\n @if (isParsingMessages || isLoadingRelatedData) {\n <div class=\"loading-state\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <p>Loading messages...</p>\n </div>\n } @else if (chatMessages.length > 0) {\n <mj-chat-message-viewer \n [messages]=\"chatMessages\">\n </mj-chat-message-viewer>\n } @else {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-comment-slash\"></i>\n <p>No chat messages found</p>\n </div>\n }\n </div>\n </mj-accordion-panel>\n\n <!-- Data Sub-Panel -->\n <mj-accordion-panel\n [Expanded]=\"dataExpanded\"\n class=\"sub-expansion-panel\"\n style=\"margin-bottom: 8px;\">\n <ng-template mjAccordionTitle>\n <span class=\"sub-panel-title\">\n <i class=\"fa-solid fa-database\"></i>\n Data\n @if (inputData) {\n <span class=\"panel-badge\">Object</span>\n }\n </span>\n </ng-template>\n <div class=\"sub-panel-content\">\n @if (inputData && formattedData) {\n <div class=\"json-editor-container\">\n <div class=\"json-toolbar\">\n <button mjButton\n variant=\"flat\"\n size=\"sm\"\n (click)=\"copyToClipboard(formattedData, 'Data')\"\n title=\"Copy JSON\">\n <i class=\"fa-solid fa-copy\"></i> Copy\n </button>\n <button mjButton\n variant=\"flat\"\n size=\"sm\"\n (click)=\"openFullScreen(formattedData, 'json', 'Data')\"\n title=\"View full screen\">\n <i class=\"fa-solid fa-expand\"></i>\n </button>\n </div>\n <mj-code-editor \n [(ngModel)]=\"formattedData\"\n name=\"formattedData\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n </div>\n } @else {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-database\"></i>\n <p>No data object found</p>\n </div>\n }\n </div>\n </mj-accordion-panel>\n\n <!-- Raw Sub-Panel -->\n <mj-accordion-panel\n [Expanded]=\"rawExpanded\"\n class=\"sub-expansion-panel\"\n style=\"margin-bottom: 8px;\">\n <ng-template mjAccordionTitle>\n <span class=\"sub-panel-title\">\n <i class=\"fa-solid fa-code\"></i>\n Raw\n </span>\n </ng-template>\n <div class=\"sub-panel-content\">\n <div class=\"json-editor-container\">\n <div class=\"json-toolbar\">\n <button mjButton\n variant=\"flat\"\n size=\"sm\"\n (click)=\"copyToClipboard(formattedMessages, 'Messages')\"\n title=\"Copy JSON\">\n <i class=\"fa-solid fa-copy\"></i> Copy\n </button>\n <button mjButton\n variant=\"flat\"\n size=\"sm\"\n (click)=\"openFullScreen(formattedMessages, 'json', 'Raw Messages')\"\n title=\"View full screen\">\n <i class=\"fa-solid fa-expand\"></i>\n </button>\n </div>\n <mj-code-editor \n [(ngModel)]=\"formattedMessages\"\n name=\"formattedMessages\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 400px; width: 100%;\">\n </mj-code-editor>\n </div>\n </div>\n </mj-accordion-panel>\n </div>\n } @else {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-comment-slash\"></i>\n <p>No input messages recorded</p>\n </div>\n }\n </div>\n </mj-accordion-panel>\n \n <!-- Result Panel -->\n <mj-accordion-panel [Expanded]=\"resultExpanded\" (ExpandedChange)=\"onResultPanelToggle($event)\" style=\"margin-bottom: 8px;\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-square-check\"></i>\n Result\n @if (record.Result && record.Result.trim() !== '') {\n <span class=\"panel-badge\">JSON</span>\n }\n @if (record.ErrorMessage) {\n <span class=\"panel-badge error\">Error</span>\n }\n </span>\n </ng-template>\n <div class=\"panel-content\">\n @if (record.ErrorMessage) {\n <div class=\"error-message\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n <div class=\"error-content\">\n <h4>Error Message</h4>\n <p>{{ record.ErrorMessage }}</p>\n </div>\n </div>\n }\n \n @if (record.Result && record.Result.trim() !== '') {\n <div class=\"json-editor-container\">\n <div class=\"json-toolbar\">\n <button mjButton\n variant=\"flat\"\n size=\"sm\"\n (click)=\"copyToClipboard(formattedResult, 'Result')\"\n title=\"Copy JSON\">\n <i class=\"fa-solid fa-copy\"></i> Copy\n </button>\n <button mjButton\n variant=\"flat\"\n size=\"sm\"\n (click)=\"openFullScreen(formattedResult, 'json', 'Result')\"\n title=\"View full screen\">\n <i class=\"fa-solid fa-expand\"></i>\n </button>\n </div>\n <mj-code-editor \n [(ngModel)]=\"formattedResult\"\n name=\"formattedResult\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 400px; width: 100%;\">\n </mj-code-editor>\n </div>\n } @else if (!record.ErrorMessage) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-inbox\"></i>\n <p>No result data recorded</p>\n @if (record.CompletedAt && (record.Status === 'Failed' || record.Success === false)) {\n <div class=\"error-info\">\n @if (record.Status) {\n <p class=\"finish-reason\">\n <strong>Status:</strong> {{ record.Status }}\n </p>\n }\n @if (formattedErrorDetails) {\n <div class=\"error-details\">\n <div class=\"json-toolbar\">\n <h4 style=\"margin: 0;\">Error Details</h4>\n <button mjButton\n variant=\"flat\"\n size=\"sm\"\n (click)=\"openFullScreen(formattedErrorDetails, 'json', 'Error Details')\"\n title=\"View full screen\">\n <i class=\"fa-solid fa-expand\"></i>\n </button>\n </div>\n <mj-code-editor\n [ngModel]=\"formattedErrorDetails\"\n [disabled]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 200px; width: 100%;\">\n </mj-code-editor>\n </div>\n }\n @if (!formattedErrorDetails) {\n <p class=\"error-hint\">\n The prompt execution failed but no additional error information is available.\n </p>\n }\n </div>\n }\n </div>\n }\n </div>\n </mj-accordion-panel>\n\n <!-- Token Usage & Metrics Panel -->\n <mj-accordion-panel [Expanded]=\"metricsExpanded\" (ExpandedChange)=\"onMetricsPanelToggle($event)\" style=\"margin-bottom: 8px;\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-chart-line\"></i>\n Token Usage & Metrics\n </span>\n </ng-template>\n <div class=\"panel-content\">\n <div class=\"metrics-grid\">\n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <i class=\"fa-solid fa-message\"></i>\n <h4>Prompt Tokens</h4>\n </div>\n <div class=\"metric-value large\" title=\"Full input the model processed \u2014 uncached (new) prompt tokens plus any cached tokens\">{{ formatTokens(FullPromptTokens) }}</div>\n @if (CachedTokens > 0) {\n <div class=\"metric-rollup\">\n <span>incl. {{ formatTokens(CachedTokens) }} cached</span>\n </div>\n }\n @if (record.TokensPromptRollup && record.TokensPromptRollup !== record.TokensPrompt) {\n <div class=\"metric-rollup\">\n <span>Rollup: {{ formatTokens(record.TokensPromptRollup) }}</span>\n </div>\n }\n </div>\n \n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <i class=\"fa-solid fa-reply\"></i>\n <h4>Completion Tokens</h4>\n </div>\n <div class=\"metric-value large\">{{ formatTokens(record.TokensCompletion) }}</div>\n @if (record.TokensCompletionRollup && record.TokensCompletionRollup !== record.TokensCompletion) {\n <div class=\"metric-rollup\">\n <span>Rollup: {{ formatTokens(record.TokensCompletionRollup) }}</span>\n </div>\n }\n </div>\n \n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <i class=\"fa-solid fa-coins\"></i>\n <h4>Total Tokens</h4>\n </div>\n <div class=\"metric-value large\" title=\"Prompt + completion + cached tokens \u2014 the full amount the model processed\">{{ formatTokens(TotalTokensProcessed) }}</div>\n @if (CachedTokens > 0) {\n <div class=\"metric-rollup\">\n <span>incl. {{ formatTokens(CachedTokens) }} cached</span>\n </div>\n }\n @if (record.TokensUsedRollup && record.TokensUsedRollup !== record.TokensUsed) {\n <div class=\"metric-rollup\">\n <span>Net rollup: {{ formatTokens(record.TokensUsedRollup) }}</span>\n </div>\n }\n </div>\n\n <!-- Prompt-cache tokens (provider cache reads = hits, writes = cache creation).\n Only rendered when the provider reported cache usage. -->\n @if (record.TokensCacheRead != null || record.TokensCacheWrite != null) {\n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <i class=\"fa-solid fa-bolt\"></i>\n <h4>Cache Read</h4>\n </div>\n <div class=\"metric-value large\">{{ formatTokens(record.TokensCacheRead) }}</div>\n @if (record.TokensCacheWrite) {\n <div class=\"metric-rollup\">\n <span>Write: {{ formatTokens(record.TokensCacheWrite) }}</span>\n </div>\n }\n @if (record.TokensCacheRead || record.TokensCacheWrite) {\n <div class=\"metric-rollup\">\n <span>{{ CacheHitRatePct | number:'1.0-0' }}% hit rate</span>\n </div>\n }\n </div>\n }\n\n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <i class=\"fa-solid fa-dollar-sign\"></i>\n <h4>Cost</h4>\n </div>\n <div class=\"metric-value large\">{{ formatCost(record.Cost) }}</div>\n @if (record.TotalCost && record.TotalCost !== record.Cost) {\n <div class=\"metric-rollup\">\n <span>Total: {{ formatCost(record.TotalCost) }}</span>\n </div>\n }\n @if (record.CostCurrency) {\n <div class=\"metric-currency\">{{ record.CostCurrency }}</div>\n }\n </div>\n \n <!-- Timing Metrics -->\n @if (record.QueueTime != null) {\n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <i class=\"fa-solid fa-hourglass-start\"></i>\n <h4>Queue Time</h4>\n </div>\n <div class=\"metric-value large\">{{ formatDuration(record.QueueTime) }}</div>\n </div>\n }\n \n @if (record.PromptTime != null) {\n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <i class=\"fa-solid fa-brain\"></i>\n <h4>Prompt Time</h4>\n </div>\n <div class=\"metric-value large\">{{ formatDuration(record.PromptTime) }}</div>\n </div>\n }\n \n @if (record.CompletionTime != null) {\n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <i class=\"fa-solid fa-flag-checkered\"></i>\n <h4>Completion Time</h4>\n </div>\n <div class=\"metric-value large\">{{ formatDuration(record.CompletionTime) }}</div>\n </div>\n }\n </div>\n \n <!-- Additional Metrics -->\n <div class=\"additional-metrics\">\n @if (record.ExecutionOrder !== null) {\n <div class=\"metric-row\">\n <span class=\"metric-label\">Execution Order:</span>\n <span class=\"metric-value\">{{ record.ExecutionOrder }}</span>\n </div>\n }\n @if (record.AgentID) {\n <div class=\"metric-row\">\n <span class=\"metric-label\">Agent:</span>\n <span class=\"metric-value link\" (click)=\"navigateToEntity('MJ: AI Agents', record.AgentID)\">\n {{ record.Agent }}\n <i class=\"fa-solid fa-external-link\"></i>\n </span>\n </div>\n }\n </div>\n </div>\n </mj-accordion-panel>\n\n <!-- Validation & Retry Panel -->\n @if (record && ((record.ValidationAttemptCount && record.ValidationAttemptCount > 0) || record.ValidationBehavior)) {\n <mj-accordion-panel [Expanded]=\"validationExpanded\" (ExpandedChange)=\"onValidationPanelToggle($event)\" style=\"margin-bottom: 8px;\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-shield-check\"></i>\n Validation & Retries\n @if (record && record.ValidationAttemptCount && record.ValidationAttemptCount > 1) {\n <span class=\"panel-count\">({{ record.ValidationAttemptCount }} attempts)</span>\n }\n @if (record.FinalValidationPassed) {\n <span class=\"panel-badge success\">Passed</span>\n } @else if (record.FinalValidationPassed === false) {\n <span class=\"panel-badge error\">Failed</span>\n }\n </span>\n </ng-template>\n <div class=\"panel-content\">\n <!-- Validation Summary -->\n <div class=\"validation-summary\">\n <div class=\"summary-header\">\n <h4>Validation Summary</h4>\n <div class=\"validation-status\" [class.success]=\"record.FinalValidationPassed === true\" [class.failed]=\"record.FinalValidationPassed === false\">\n <i [class]=\"record.FinalValidationPassed === true ? 'fa-solid fa-check-circle' : (record.FinalValidationPassed === false ? 'fa-solid fa-times-circle' : 'fa-solid fa-hourglass-half')\"></i>\n {{ record.FinalValidationPassed === true ? 'Validation Passed' : (record.FinalValidationPassed === false ? 'Validation Failed' : 'Validation Pending') }}\n </div>\n </div>\n \n <div class=\"validation-metrics\">\n <div class=\"metric-card small\">\n <div class=\"metric-label\">Total Attempts</div>\n <div class=\"metric-value\">{{ record.ValidationAttemptCount || 0 }}</div>\n </div>\n <div class=\"metric-card small\">\n <div class=\"metric-label\">Successful</div>\n <div class=\"metric-value\">{{ record.SuccessfulValidationCount || 0 }}</div>\n </div>\n <div class=\"metric-card small\">\n <div class=\"metric-label\">Behavior</div>\n <div class=\"metric-value\">{{ record.ValidationBehavior || 'Not set' }}</div>\n </div>\n <div class=\"metric-card small\">\n <div class=\"metric-label\">Retry Strategy</div>\n <div class=\"metric-value\">{{ record.RetryStrategy || 'Not set' }}</div>\n </div>\n </div>\n \n @if (record.FinalValidationError) {\n <div class=\"validation-error\">\n <h5><i class=\"fa-solid fa-exclamation-triangle\"></i> Final Validation Error</h5>\n <p>{{ record.FinalValidationError }}</p>\n @if (record && record.ValidationErrorCount && record.ValidationErrorCount > 0) {\n <span class=\"error-count\">{{ record.ValidationErrorCount }} validation errors</span>\n }\n </div>\n }\n \n @if (record.CommonValidationError && record.CommonValidationError !== record.FinalValidationError) {\n <div class=\"common-error\">\n <h5><i class=\"fa-solid fa-repeat\"></i> Most Common Error</h5>\n <p>{{ record.CommonValidationError }}</p>\n </div>\n }\n </div>\n \n <!-- Retry Timeline -->\n @if (record && record.ValidationAttemptCount && record.ValidationAttemptCount > 1) {\n <div class=\"retry-timeline\">\n <h4>Retry Timeline</h4>\n <div class=\"timeline-info\">\n <div class=\"timeline-stat\">\n <i class=\"fa-solid fa-clock\"></i>\n <span>First Attempt: {{ record.FirstAttemptAt | date:'short' }}</span>\n </div>\n <div class=\"timeline-stat\">\n <i class=\"fa-solid fa-flag-checkered\"></i>\n <span>Last Attempt: {{ record.LastAttemptAt | date:'short' }}</span>\n </div>\n <div class=\"timeline-stat\">\n <i class=\"fa-solid fa-stopwatch\"></i>\n <span>Total Retry Duration: {{ formatDuration(record.TotalRetryDurationMS) }}</span>\n </div>\n </div>\n </div>\n }\n \n <!-- Validation Attempts Details -->\n @if (validationAttempts && validationAttempts.length > 0) {\n <div class=\"validation-attempts\">\n <h4>Validation Attempts</h4>\n <div class=\"attempts-list\">\n @for (attempt of validationAttempts; track attempt.attemptNumber) {\n <div class=\"attempt-item\" [class.success]=\"attempt.success\" [class.failed]=\"!attempt.success\">\n <div class=\"attempt-number\">\n <i [class]=\"attempt.success ? 'fa-solid fa-check' : 'fa-solid fa-times'\"></i>\n Attempt #{{ attempt.attemptNumber }}\n </div>\n <div class=\"attempt-details\">\n <span class=\"attempt-time\">{{ attempt.timestamp }}</span>\n @if (!attempt.success) {\n <span class=\"attempt-error\">{{ attempt.errorMessage || 'Unknown error' }}</span>\n @if (attempt.validationErrorCount > 0) {\n <span class=\"error-count\">({{ attempt.validationErrorCount }} errors)</span>\n }\n }\n @if (attempt.outputLength) {\n <span class=\"output-length\">Output: {{ attempt.outputLength }} chars</span>\n }\n </div>\n </div>\n }\n </div>\n </div>\n }\n \n <!-- Validation Summary JSON -->\n @if (validationSummary) {\n <div class=\"validation-json\">\n <div class=\"json-toolbar\">\n <h4 style=\"margin: 0;\">Validation Summary Details</h4>\n <button mjButton\n variant=\"flat\"\n size=\"sm\"\n (click)=\"openFullScreen(formattedValidationSummary, 'json', 'Validation Summary')\"\n title=\"View full screen\">\n <i class=\"fa-solid fa-expand\"></i>\n </button>\n </div>\n <div class=\"json-viewer-container\">\n <mj-code-editor\n [(ngModel)]=\"formattedValidationSummary\"\n name=\"formattedValidationSummary\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 200px; width: 100%;\">\n </mj-code-editor>\n </div>\n </div>\n }\n \n <!-- Validation Attempts JSON -->\n @if (record.ValidationAttempts) {\n <div class=\"validation-json\">\n <div class=\"json-toolbar\">\n <h4 style=\"margin: 0;\">Validation Attempts (Raw JSON)</h4>\n <button mjButton\n variant=\"flat\"\n size=\"sm\"\n (click)=\"openFullScreen(formattedValidationAttempts, 'json', 'Validation Attempts')\"\n title=\"View full screen\">\n <i class=\"fa-solid fa-expand\"></i>\n </button>\n </div>\n <div class=\"json-viewer-container\">\n <mj-code-editor\n [(ngModel)]=\"formattedValidationAttempts\"\n name=\"formattedValidationAttempts\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n </div>\n </div>\n }\n </div>\n </mj-accordion-panel>\n }\n\n <!-- Hierarchy Panel (for parent/child relationships) -->\n @if (record.ParentID || childRuns.length > 0) {\n <mj-accordion-panel [Expanded]=\"hierarchyExpanded\" style=\"margin-bottom: 8px;\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-sitemap\"></i>\n Run Hierarchy\n @if (childRuns.length > 0) {\n <span class=\"panel-count\">({{ childRuns.length }} children)</span>\n }\n </span>\n </ng-template>\n <div class=\"panel-content\">\n @if (parentRun) {\n <div class=\"parent-run-section\">\n <h4><i class=\"fa-solid fa-level-up-alt\"></i> Parent Run</h4>\n <div class=\"run-item parent\" (click)=\"navigateToEntity('MJ: AI Prompt Runs', parentRun.ID)\">\n <div class=\"run-item-icon\" [style.background-color]=\"getStatusColor() + '20'\">\n <i [class]=\"'fa-solid ' + getRunTypeIcon(parentRun.RunType)\"></i>\n </div>\n <div class=\"run-item-content\">\n <div class=\"run-item-title\">\n Parent Run #{{ parentRun.ID.substring(0, 8) }}\n <span class=\"run-item-type\">{{ parentRun.RunType }}</span>\n </div>\n <div class=\"run-item-meta\">\n <span><i class=\"fa-solid fa-clock\"></i> {{ formatDuration(parentRun.ExecutionTimeMS) }}</span>\n <span><i class=\"fa-solid fa-coins\"></i> {{ formatTokens(parentRun.TokensUsed) }}</span>\n <span><i class=\"fa-solid fa-calendar\"></i> {{ parentRun.RunAt | date:'short' }}</span>\n </div>\n </div>\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n </div>\n }\n \n @if (childRuns.length > 0) {\n <div class=\"child-runs-section\">\n <h4><i class=\"fa-solid fa-level-down-alt\"></i> Child Runs</h4>\n <div class=\"runs-list\">\n @for (childRun of childRuns; track childRun.ID) {\n <div class=\"run-item child\" (click)=\"navigateToEntity('MJ: AI Prompt Runs', childRun.ID)\">\n <div class=\"run-item-icon\" [style.background-color]=\"getStatusColor() + '20'\">\n <i [class]=\"'fa-solid ' + getRunTypeIcon(childRun.RunType)\"></i>\n </div>\n <div class=\"run-item-content\">\n <div class=\"run-item-title\">\n Child Run #{{ childRun.ID.substring(0, 8) }}\n @if (childRun.ExecutionOrder !== null) {\n <span class=\"execution-order\">#{{ childRun.ExecutionOrder }}</span>\n }\n <span class=\"run-item-type\">{{ childRun.RunType }}</span>\n </div>\n <div class=\"run-item-meta\">\n <span class=\"status-indicator\" [style.color]=\"getStatusColor()\">\n <i [class]=\"'fa-solid ' + getStatusIcon()\"></i>\n {{ childRun.Success ? 'Success' : childRun.ErrorMessage ? 'Failed' : 'Running' }}\n </span>\n <span><i class=\"fa-solid fa-clock\"></i> {{ formatDuration(childRun.ExecutionTimeMS) }}</span>\n <span><i class=\"fa-solid fa-coins\"></i> {{ formatTokens(childRun.TokensUsed) }}</span>\n </div>\n </div>\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n }\n </div>\n </div>\n }\n </div>\n </mj-accordion-panel>\n }\n\n <!-- Additional Details Panel -->\n <mj-accordion-panel [Expanded]=\"false\" style=\"margin-bottom: 8px;\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-info-circle\"></i>\n Additional Details\n </span>\n </ng-template>\n <div class=\"panel-content\">\n <div class=\"detail-fields-grid\">\n @if (record.AgentID) {\n <div class=\"detail-field\">\n <label>Agent</label>\n <div class=\"detail-value clickable\" (click)=\"navigateToEntity('MJ: AI Agents', record.AgentID)\" title=\"View Agent\">\n <i class=\"fa-solid fa-robot\"></i>\n {{ record.Agent || 'Unknown' }}\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n </div>\n }\n \n \n @if (record.RunType) {\n <div class=\"detail-field\">\n <label>Run Type</label>\n <div class=\"detail-value\">\n <i [class]=\"'fa-solid ' + getRunTypeIcon(record.RunType)\"></i>\n {{ record.RunType }}\n </div>\n </div>\n }\n \n @if (record.ResponseFormat) {\n <div class=\"detail-field\">\n <label>Response Format</label>\n <div class=\"detail-value\">\n <i class=\"fa-solid fa-code\"></i>\n {{ record.ResponseFormat }}\n </div>\n </div>\n }\n \n <div class=\"detail-field\">\n <label>Temperature</label>\n <div class=\"detail-value\" [class.null-value]=\"record.Temperature === null || record.Temperature === undefined\">\n <i class=\"fa-solid fa-temperature-high\"></i>\n {{ record.Temperature !== null && record.Temperature !== undefined ? record.Temperature : '\u2014' }}\n </div>\n </div>\n \n <div class=\"detail-field\">\n <label>Top P</label>\n <div class=\"detail-value\" [class.null-value]=\"record.TopP === null || record.TopP === undefined\">\n <i class=\"fa-solid fa-percentage\"></i>\n {{ record.TopP !== null && record.TopP !== undefined ? record.TopP : '\u2014' }}\n </div>\n </div>\n \n <div class=\"detail-field\">\n <label>Top K</label>\n <div class=\"detail-value\" [class.null-value]=\"record.TopK === null || record.TopK === undefined\">\n <i class=\"fa-solid fa-list-ol\"></i>\n {{ record.TopK !== null && record.TopK !== undefined ? record.TopK : '\u2014' }}\n </div>\n </div>\n \n <div class=\"detail-field\">\n <label>Min P</label>\n <div class=\"detail-value\" [class.null-value]=\"record.MinP === null || record.MinP === undefined\">\n <i class=\"fa-solid fa-filter\"></i>\n {{ record.MinP !== null && record.MinP !== undefined ? record.MinP : '\u2014' }}\n </div>\n </div>\n \n <div class=\"detail-field\">\n <label>Frequency Penalty</label>\n <div class=\"detail-value\" [class.null-value]=\"record.FrequencyPenalty === null || record.FrequencyPenalty === undefined\">\n <i class=\"fa-solid fa-repeat\"></i>\n {{ record.FrequencyPenalty !== null && record.FrequencyPenalty !== undefined ? record.FrequencyPenalty : '\u2014' }}\n </div>\n </div>\n \n <div class=\"detail-field\">\n <label>Presence Penalty</label>\n <div class=\"detail-value\" [class.null-value]=\"record.PresencePenalty === null || record.PresencePenalty === undefined\">\n <i class=\"fa-solid fa-plus-circle\"></i>\n {{ record.PresencePenalty !== null && record.PresencePenalty !== undefined ? record.PresencePenalty : '\u2014' }}\n </div>\n </div>\n \n <div class=\"detail-field\">\n <label>Seed</label>\n <div class=\"detail-value\" [class.null-value]=\"record.Seed === null || record.Seed === undefined\">\n <i class=\"fa-solid fa-seedling\"></i>\n {{ record.Seed !== null && record.Seed !== undefined ? record.Seed : '\u2014' }}\n </div>\n </div>\n\n <div class=\"detail-field\">\n <label>Stop Sequences</label>\n <div class=\"detail-value\" [class.null-value]=\"!record.StopSequences\">\n <i class=\"fa-solid fa-stop-circle\"></i>\n {{ record.StopSequences || '\u2014' }}\n </div>\n </div>\n\n <div class=\"detail-field\">\n <label>Assistant Prefill</label>\n <div class=\"detail-value\" [class.null-value]=\"!record.AssistantPrefill\">\n <i class=\"fa-solid fa-wand-magic-sparkles\"></i>\n {{ record.AssistantPrefill || '\u2014' }}\n </div>\n </div>\n\n @if (record.RunAt) {\n <div class=\"detail-field\">\n <label>Started At</label>\n <div class=\"detail-value\">\n <i class=\"fa-solid fa-clock\"></i>\n {{ record.RunAt | date:'medium' }}\n </div>\n </div>\n }\n \n @if (record.CompletedAt) {\n <div class=\"detail-field\">\n <label>Completed At</label>\n <div class=\"detail-value\">\n <i class=\"fa-solid fa-check-circle\"></i>\n {{ record.CompletedAt | date:'medium' }}\n </div>\n </div>\n }\n </div>\n </div>\n </mj-accordion-panel>\n\n <!-- Model Specific Response Details Panel -->\n @if (record.ModelSpecificResponseDetails) {\n <mj-accordion-panel [Expanded]=\"modelSpecificExpanded\" (ExpandedChange)=\"onModelSpecificPanelToggle($event)\" style=\"margin-bottom: 8px;\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-microchip\"></i>\n Model Specific Response Details\n <span class=\"panel-badge\">JSON</span>\n </span>\n </ng-template>\n <div class=\"panel-content\">\n <div class=\"json-editor-container\">\n <div class=\"json-toolbar\">\n <button mjButton\n variant=\"flat\"\n size=\"sm\"\n (click)=\"copyToClipboard(formattedModelSpecificResponseDetails, 'Model Specific Response Details')\"\n title=\"Copy JSON\">\n <i class=\"fa-solid fa-copy\"></i> Copy\n </button>\n <button mjButton\n variant=\"flat\"\n size=\"sm\"\n (click)=\"openFullScreen(formattedModelSpecificResponseDetails, 'json', 'Model Specific Response Details')\"\n title=\"View full screen\">\n <i class=\"fa-solid fa-expand\"></i>\n </button>\n </div>\n <mj-code-editor \n [(ngModel)]=\"formattedModelSpecificResponseDetails\"\n name=\"formattedModelSpecificResponseDetails\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 400px; width: 100%;\">\n </mj-code-editor>\n </div>\n </div>\n </mj-accordion-panel>\n }\n\n <!-- Model Selection & Performance Panel (v2.78 fields) -->\n <mj-accordion-panel [Expanded]=\"false\" (ExpandedChange)=\"onModelSelectionPanelToggle($event)\" style=\"margin-bottom: 8px;\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-microchip\"></i>\n Model Selection & Performance\n @if (record.CacheHit) {\n <span class=\"panel-badge success\">Cached</span>\n }\n @if (record.WasSelectedResult) {\n <span class=\"panel-badge success\">Selected</span>\n }\n </span>\n </ng-template>\n <div class=\"panel-content\">\n <div class=\"detail-fields-grid\">\n <!-- Model Selection Details -->\n <div class=\"detail-field\">\n <label>Status</label>\n <div class=\"detail-value\">\n <i class=\"fa-solid fa-info-circle\"></i>\n {{ record.Status || 'Unknown' }}\n </div>\n </div>\n \n <div class=\"detail-field\">\n <label>Selection Strategy</label>\n <div class=\"detail-value\">\n <i class=\"fa-solid fa-strategy\"></i>\n {{ record.SelectionStrategy || '\u2014' }}\n </div>\n </div>\n \n <div class=\"detail-field\">\n <label>Model Power Rank</label>\n <div class=\"detail-value\" [class.null-value]=\"record.ModelPowerRank === null\">\n <i class=\"fa-solid fa-ranking-star\"></i>\n {{ record.ModelPowerRank !== null ? record.ModelPowerRank : '\u2014' }}\n </div>\n </div>\n \n <!-- Cache Information -->\n <div class=\"detail-field\">\n <label>Cache Hit</label>\n <div class=\"detail-value\">\n <i [class]=\"record.CacheHit ? 'fa-solid fa-check-circle' : 'fa-solid fa-times-circle'\"></i>\n {{ record.CacheHit ? 'Yes' : 'No' }}\n </div>\n </div>\n \n @if (record.CacheKey) {\n <div class=\"detail-field full-width\">\n <label>Cache Key</label>\n <div class=\"detail-value\">\n <i class=\"fa-solid fa-key\"></i>\n <code>{{ record.CacheKey }}</code>\n </div>\n </div>\n }\n \n <!-- Judge Information -->\n @if (record.JudgeID) {\n <div class=\"detail-field\">\n <label>Judge Prompt</label>\n <div class=\"detail-value clickable\" (click)=\"navigateToEntity('MJ: AI Prompts', record.JudgeID)\" title=\"View Judge Prompt\">\n <i class=\"fa-solid fa-gavel\"></i>\n {{ record.Judge || 'Unknown' }}\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n </div>\n }\n \n @if (record.JudgeScore !== null) {\n <div class=\"detail-field\">\n <label>Judge Score</label>\n <div class=\"detail-value\">\n <i class=\"fa-solid fa-star\"></i>\n {{ record.JudgeScore }}\n </div>\n </div>\n }\n \n <div class=\"detail-field\">\n <label>Was Selected Result</label>\n <div class=\"detail-value\">\n <i [class]=\"record.WasSelectedResult ? 'fa-solid fa-trophy' : 'fa-solid fa-times'\"></i>\n {{ record.WasSelectedResult ? 'Yes' : 'No' }}\n </div>\n </div>\n \n <!-- Performance Metrics -->\n <div class=\"detail-field\">\n <label>Streaming Enabled</label>\n <div class=\"detail-value\">\n <i [class]=\"record.StreamingEnabled ? 'fa-solid fa-stream' : 'fa-solid fa-ban'\"></i>\n {{ record.StreamingEnabled ? 'Yes' : 'No' }}\n </div>\n </div>\n \n @if (record.FirstTokenTime !== null) {\n <div class=\"detail-field\">\n <label>First Token Time</label>\n <div class=\"detail-value\">\n <i class=\"fa-solid fa-bolt\"></i>\n {{ record.FirstTokenTime }} ms\n </div>\n </div>\n }\n \n @if (record.Cancelled) {\n <div class=\"detail-field\">\n <label>Cancelled</label>\n <div class=\"detail-value error\">\n <i class=\"fa-solid fa-ban\"></i>\n Yes\n </div>\n </div>\n \n @if (record.CancellationReason) {\n <div class=\"detail-field full-width\">\n <label>Cancellation Reason</label>\n <div class=\"detail-value\">\n <i class=\"fa-solid fa-exclamation-circle\"></i>\n {{ record.CancellationReason }}\n </div>\n </div>\n }\n }\n </div>\n \n <!-- Model Selection JSON -->\n @if (record.ModelSelection) {\n <div class=\"model-selection-json\">\n <div class=\"json-toolbar\">\n <h4 style=\"margin: 0;\">Model Selection Details</h4>\n <button mjButton\n variant=\"flat\"\n size=\"sm\"\n (click)=\"openFullScreen(formattedModelSelection, 'json', 'Model Selection')\"\n title=\"View full screen\">\n <i class=\"fa-solid fa-expand\"></i>\n </button>\n </div>\n <div class=\"json-viewer-container\">\n <mj-code-editor\n [(ngModel)]=\"formattedModelSelection\"\n name=\"formattedModelSelection\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n </div>\n </div>\n }\n \n <!-- Error Details JSON -->\n @if (record.ErrorDetails) {\n <div class=\"error-details-json\">\n <div class=\"json-toolbar\">\n <h4 style=\"margin: 0;\">Error Details</h4>\n <button mjButton\n variant=\"flat\"\n size=\"sm\"\n (click)=\"openFullScreen(formattedErrorDetails, 'json', 'Error Details')\"\n title=\"View full screen\">\n <i class=\"fa-solid fa-expand\"></i>\n </button>\n </div>\n <div class=\"json-viewer-container\">\n <mj-code-editor\n [(ngModel)]=\"formattedErrorDetails\"\n name=\"formattedErrorDetails\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 200px; width: 100%;\">\n </mj-code-editor>\n </div>\n </div>\n }\n </div>\n </mj-accordion-panel>\n\n </div>\n </form>\n</mj-record-form-container>\n}\n\n<!-- Full-screen overlay -->\n @if (FullScreenContent) {\n <div class=\"fullscreen-overlay\" (click)=\"closeFullScreen()\">\n <div class=\"fullscreen-container\" (click)=\"$event.stopPropagation()\">\n <div class=\"fullscreen-header\">\n <span class=\"fullscreen-title\">\n <i class=\"fa-solid fa-expand\"></i>\n {{ FullScreenTitle }}\n </span>\n <div class=\"fullscreen-actions\">\n <button mjButton\n variant=\"flat\"\n size=\"sm\"\n (click)=\"copyToClipboard(FullScreenContent, FullScreenTitle)\"\n title=\"Copy content\">\n <i class=\"fa-solid fa-copy\"></i> Copy\n </button>\n <button mjButton\n variant=\"flat\"\n size=\"sm\"\n (click)=\"closeFullScreen()\"\n title=\"Close\">\n <i class=\"fa-solid fa-times\"></i> Close\n </button>\n </div>\n </div>\n <div class=\"fullscreen-body\">\n <mj-code-editor\n [value]=\"FullScreenContent\"\n [readonly]=\"true\"\n [language]=\"FullScreenLanguage\"\n style=\"height: 100%; width: 100%;\">\n </mj-code-editor>\n </div>\n </div>\n </div>\n }", styles: ["/* Host and Container Layout */\n:host {\n display: block;\n height: 100%;\n}\n\n.record-form-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n overflow: hidden;\n}\n\n.record-form {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0 !important;\n overflow: hidden;\n}\n\n.form-content {\n padding: 16px;\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n}\n\n/* Error Info Styles */\n.error-info {\n margin-top: 16px;\n padding: 16px;\n background-color: color-mix(in srgb, var(--mj-status-error) 5%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 20%, var(--mj-bg-surface));\n border-radius: 8px;\n}\n\n.finish-reason {\n margin: 0 0 12px 0;\n color: var(--mj-status-error);\n font-size: 14px;\n}\n\n.error-details {\n margin-top: 12px;\n}\n\n.error-details h4 {\n margin: 0 0 8px 0;\n color: color-mix(in srgb, var(--mj-status-error) 80%, black);\n font-size: 14px;\n font-weight: 600;\n}\n\n.error-hint {\n margin: 0;\n color: color-mix(in srgb, var(--mj-status-error) 70%, black);\n font-size: 14px;\n font-style: italic;\n}\n\n/* Header Section */\n.prompt-run-header {\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n padding: 20px;\n margin-bottom: 0;\n}\n\n.header-content {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 20px;\n margin-bottom: 16px;\n}\n\n.run-overview {\n display: flex;\n align-items: flex-start;\n gap: 16px;\n flex: 1;\n}\n\n.run-icon-wrapper {\n width: 56px;\n height: 56px;\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.run-icon-wrapper i {\n font-size: 24px;\n}\n\n.run-info {\n flex: 1;\n min-width: 0;\n}\n\n.run-title {\n margin: 0 0 8px 0;\n font-size: 1.5em;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.run-id {\n font-size: 0.8em;\n color: var(--mj-text-muted);\n font-weight: 400;\n font-family: 'Courier New', monospace;\n}\n\n.run-meta {\n display: flex;\n align-items: stretch;\n gap: 10px;\n flex-wrap: wrap;\n}\n\n/* Shared meta-card style (Status, Execution, single Prompt) */\n.meta-card {\n display: flex;\n flex-direction: column;\n border-radius: 8px;\n overflow: hidden;\n border: 1px solid var(--mj-border-default);\n}\n\n.meta-card-body {\n display: flex;\n align-items: center;\n gap: 7px;\n padding: 8px 12px;\n background: var(--mj-bg-surface-card);\n font-size: 0.82em;\n font-weight: 500;\n color: var(--mj-text-primary);\n white-space: nowrap;\n}\n\n.meta-card-body.clickable {\n cursor: pointer;\n transition: color 0.15s;\n}\n\n.meta-card-body.clickable:hover {\n color: var(--mj-brand-primary-hover);\n}\n\n/* Status indicator dot */\n.status-indicator {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n/* C3 Stacked Connector \u2014 Prompt Card */\n.prompt-card-c3 {\n display: flex;\n flex-direction: column;\n border-radius: 10px;\n overflow: hidden;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n}\n\n.c3-child-section {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 14px;\n font-size: 0.92em;\n font-weight: 600;\n color: var(--mj-text-primary);\n cursor: pointer;\n transition: color 0.15s;\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.c3-child-section:hover {\n color: var(--mj-brand-primary-hover);\n}\n\n.c3-child-section i.prompt-icon {\n color: var(--mj-brand-primary);\n font-size: 1rem;\n}\n\n.c3-divider {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 0 14px;\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.c3-line {\n flex: 1;\n height: 1px;\n background: var(--mj-border-default);\n}\n\n.c3-divider-label {\n font-size: 0.55rem;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.1em;\n color: var(--mj-text-disabled);\n white-space: nowrap;\n}\n\n.c3-parent-section {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 7px 14px 9px 14px;\n font-size: 0.76em;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: color 0.15s;\n border-left: 3px solid color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.c3-parent-section:hover {\n color: var(--mj-text-secondary);\n}\n\n.c3-parent-section i {\n font-size: 0.75rem;\n}\n\n.c3-link-icon {\n margin-left: auto;\n font-size: 0.6rem !important;\n opacity: 0.4;\n}\n\n.c3-parent-section:hover .c3-link-icon {\n opacity: 0.8;\n}\n\n/* C3 Model Card */\n.model-card-c3 {\n display: flex;\n flex-direction: column;\n border-radius: 8px;\n overflow: hidden;\n border: 1px solid var(--mj-border-default);\n cursor: pointer;\n transition: border-color 0.15s;\n}\n\n.model-card-c3:hover {\n border-color: var(--mj-border-strong);\n}\n\n.c3-card-label {\n font-size: 0.6rem;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.08em;\n padding: 4px 10px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.c3-card-body {\n display: flex;\n flex-direction: column;\n gap: 2px;\n padding: 8px 12px;\n background: var(--mj-bg-surface-card);\n font-size: 0.82em;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.c3-model-name {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.c3-model-name i {\n color: var(--mj-text-muted);\n font-size: 0.9rem;\n}\n\n.c3-vendor-name {\n font-size: 0.72em;\n color: var(--mj-text-muted);\n font-weight: 400;\n padding-left: 22px;\n}\n\n.original-run {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n border-radius: 16px;\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n font-size: 0.85em;\n}\n\n.original-link {\n color: var(--mj-status-error);\n text-decoration: none;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.original-link:hover {\n color: color-mix(in srgb, var(--mj-status-error) 85%, black);\n text-decoration: underline;\n}\n\n.run-actions {\n display: flex;\n gap: 8px;\n}\n\n/* Metrics Bar */\n.metrics-bar {\n display: flex;\n gap: 24px;\n padding-top: 16px;\n border-top: 1px solid var(--mj-border-default);\n flex-wrap: wrap;\n}\n\n.metric-item {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.metric-item > i {\n font-size: 1.2em;\n color: var(--mj-text-muted);\n width: 24px;\n text-align: center;\n}\n\n.metric-content {\n display: flex;\n flex-direction: column;\n}\n\n.metric-label {\n font-size: 0.75em;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.metric-value {\n font-size: 1.1em;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.config-link {\n color: var(--mj-brand-primary);\n text-decoration: none;\n cursor: pointer;\n transition: color 0.2s;\n}\n\n.config-link:hover {\n color: color-mix(in srgb, var(--mj-brand-primary) 75%, black);\n text-decoration: underline;\n}\n\n/* Panels */\n.form-content {\n padding: 16px;\n}\n\n.panel-title {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n}\n\n/* Nested Sub-Panel Styles */\n.sub-panel-title {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 500;\n font-size: 0.95em;\n}\n\n.sub-panel-content {\n padding: 0;\n}\n\n/* Nested accordion panel styles */\n.nested-panels mj-accordion-panel {\n margin-bottom: 8px;\n}\n\n/* Ensure chat message viewer takes appropriate height */\n.sub-panel-content mj-chat-message-viewer {\n display: block;\n min-height: 200px;\n max-height: 750px; /* Increased by 50% from 500px */\n height: auto;\n overflow: hidden;\n}\n\n/* Different colors for sub-expansion panels */\n.sub-expansion-panel {\n margin-bottom: 8px;\n}\n\n/* Sub-expansion panel styles */\n.sub-expansion-panel {\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\n}\n\n.panel-badge {\n margin-left: auto;\n padding: 2px 8px;\n border-radius: 12px;\n background: var(--mj-border-default);\n color: var(--mj-text-secondary);\n font-size: 0.75em;\n font-weight: 500;\n}\n\n.panel-badge.error {\n background: var(--mj-status-error);\n color: white;\n}\n\n.panel-count {\n color: var(--mj-text-muted);\n font-weight: 400;\n font-size: 0.9em;\n}\n\n.panel-content {\n padding: 20px;\n max-height: none !important;\n overflow: visible !important;\n}\n\n/* JSON Editor Container */\n.json-editor-container {\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\n}\n\n.json-toolbar {\n background: var(--mj-bg-surface-card);\n padding: 8px 12px;\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n justify-content: flex-end;\n}\n\n/* Error Message */\n.error-message {\n background: color-mix(in srgb, var(--mj-status-error) 6%, var(--mj-bg-surface));\n border: 1px solid var(--mj-status-error);\n border-radius: 6px;\n padding: 16px;\n display: flex;\n gap: 16px;\n margin-bottom: 16px;\n}\n\n.error-message i {\n font-size: 1.5em;\n color: var(--mj-status-error);\n flex-shrink: 0;\n}\n\n.error-content h4 {\n margin: 0 0 8px 0;\n color: var(--mj-status-error);\n font-size: 1em;\n}\n\n.error-content p {\n margin: 0;\n color: var(--mj-text-secondary);\n}\n\n/* Empty State */\n.empty-state {\n text-align: center;\n padding: 60px 40px;\n color: var(--mj-text-muted);\n}\n\n.empty-state i {\n font-size: 3em;\n margin-bottom: 16px;\n opacity: 0.3;\n}\n\n.empty-state p {\n margin: 0;\n font-size: 1.1em;\n}\n\n/* Loading State */\n.loading-state {\n text-align: center;\n padding: 60px 40px;\n color: var(--mj-text-muted);\n}\n\n.loading-state i {\n font-size: 3em;\n margin-bottom: 16px;\n opacity: 0.6;\n color: var(--mj-brand-primary);\n}\n\n.loading-state p {\n margin: 0;\n font-size: 1.1em;\n}\n\n/* Metrics Grid */\n.metrics-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 20px;\n margin-bottom: 24px;\n}\n\n.metric-card {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 20px;\n}\n\n.metric-header {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 12px;\n}\n\n.metric-header i {\n font-size: 1.2em;\n color: var(--mj-text-muted);\n}\n\n.metric-header h4 {\n margin: 0;\n font-size: 0.9em;\n color: var(--mj-text-muted);\n font-weight: 500;\n}\n\n.metric-value.large {\n font-size: 1.8em;\n font-weight: 700;\n color: var(--mj-text-primary);\n}\n\n.metric-rollup {\n margin-top: 8px;\n font-size: 0.85em;\n color: var(--mj-text-muted);\n}\n\n.metric-currency {\n margin-top: 4px;\n font-size: 0.85em;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n}\n\n/* Additional Metrics */\n.additional-metrics {\n padding-top: 16px;\n}\n\n.metric-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 8px 0;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n}\n\n.metric-row:last-child {\n border-bottom: none;\n}\n\n.metric-row .metric-label {\n font-weight: 500;\n color: var(--mj-text-muted);\n}\n\n.metric-row .metric-value {\n font-weight: 400;\n color: var(--mj-text-primary);\n}\n\n.metric-row .metric-value.link {\n color: var(--mj-brand-primary);\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: color 0.2s;\n}\n\n.metric-row .metric-value.link:hover {\n color: color-mix(in srgb, var(--mj-brand-primary) 75%, black);\n}\n\n/* Hierarchy Section */\n.parent-run-section,\n.child-runs-section {\n margin-bottom: 24px;\n}\n\n.parent-run-section:last-child,\n.child-runs-section:last-child {\n margin-bottom: 0;\n}\n\n.parent-run-section h4,\n.child-runs-section h4 {\n margin: 0 0 12px 0;\n font-size: 0.95em;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.runs-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.run-item {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 12px 16px;\n display: flex;\n align-items: center;\n gap: 12px;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.run-item:hover {\n background: var(--mj-border-default);\n border-color: var(--mj-border-strong);\n}\n\n.run-item.parent {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-brand-primary) 30%, var(--mj-bg-surface));\n}\n\n.run-item.parent:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 20%, var(--mj-bg-surface));\n}\n\n.run-item-icon {\n width: 36px;\n height: 36px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.run-item-content {\n flex: 1;\n min-width: 0;\n}\n\n.run-item-title {\n font-weight: 500;\n color: var(--mj-text-primary);\n margin-bottom: 4px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.execution-order {\n background: var(--mj-text-muted);\n color: white;\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 0.75em;\n font-weight: 600;\n}\n\n.run-item-type {\n font-size: 0.85em;\n color: var(--mj-text-muted);\n font-weight: 400;\n}\n\n.run-item-meta {\n display: flex;\n align-items: center;\n gap: 16px;\n font-size: 0.85em;\n color: var(--mj-text-muted);\n}\n\n.run-item-meta span {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.status-indicator {\n font-weight: 500;\n}\n\n.run-item > i:last-child {\n color: var(--mj-text-muted);\n font-size: 0.85em;\n}\n\n/* Detail Fields Grid */\n.detail-fields-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n gap: 24px;\n width: 100%;\n min-height: auto;\n overflow: visible;\n}\n\n.detail-field {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.detail-field label {\n font-size: 0.85em;\n color: var(--mj-text-muted);\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.detail-value {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 1em;\n color: var(--mj-text-primary);\n padding: 10px 14px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n transition: all 0.2s;\n}\n\n.detail-value i:first-child {\n color: var(--mj-text-muted);\n font-size: 1.1em;\n width: 20px;\n text-align: center;\n}\n\n.detail-value.clickable {\n cursor: pointer;\n}\n\n.detail-value.clickable:hover {\n background: var(--mj-border-default);\n border-color: var(--mj-border-strong);\n color: var(--mj-brand-primary);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n}\n\n.detail-value.clickable i:last-child {\n margin-left: auto;\n font-size: 0.85em;\n opacity: 0.6;\n}\n\n.detail-value.clickable:hover i:last-child {\n opacity: 1;\n}\n\n.detail-value.null-value {\n color: var(--mj-text-disabled);\n font-style: italic;\n}\n\n.detail-value.null-value i:first-child {\n opacity: 0.5;\n}\n\n/* Accordion Panel Overrides */\nmj-accordion-panel {\n display: block;\n}\n\n/* Validation Panel Styles */\n.validation-summary {\n margin-bottom: 24px;\n}\n\n.summary-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 16px;\n}\n\n.summary-header h4 {\n margin: 0;\n font-size: 1.1em;\n color: var(--mj-text-primary);\n}\n\n.validation-status {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 6px 16px;\n border-radius: 20px;\n font-weight: 500;\n font-size: 0.9em;\n}\n\n.validation-status.success {\n background: color-mix(in srgb, var(--mj-status-success) 12%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.validation-status.failed {\n background: color-mix(in srgb, var(--mj-status-error) 12%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.validation-metrics {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));\n gap: 12px;\n margin-bottom: 20px;\n}\n\n.metric-card.small {\n padding: 16px;\n text-align: center;\n}\n\n.metric-card.small .metric-label {\n font-size: 0.8em;\n margin-bottom: 8px;\n font-weight: 600;\n}\n\n.metric-card.small .metric-value {\n font-size: 1.4em;\n font-weight: 700;\n}\n\n.validation-error,\n.common-error {\n background: color-mix(in srgb, var(--mj-status-error) 6%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 18%, var(--mj-bg-surface));\n border-radius: 8px;\n padding: 16px;\n margin-bottom: 16px;\n}\n\n.validation-error h5,\n.common-error h5 {\n margin: 0 0 8px 0;\n color: var(--mj-status-error);\n font-size: 0.95em;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.validation-error p,\n.common-error p {\n margin: 0;\n color: var(--mj-text-secondary);\n font-size: 0.9em;\n}\n\n.error-count {\n display: inline-block;\n margin-top: 8px;\n padding: 2px 8px;\n background: var(--mj-status-error);\n color: white;\n border-radius: 12px;\n font-size: 0.75em;\n font-weight: 500;\n}\n\n/* Retry Timeline */\n.retry-timeline {\n margin-bottom: 24px;\n}\n\n.retry-timeline h4 {\n margin: 0 0 12px 0;\n font-size: 1em;\n color: var(--mj-text-secondary);\n}\n\n.timeline-info {\n display: flex;\n gap: 24px;\n flex-wrap: wrap;\n}\n\n.timeline-stat {\n display: flex;\n align-items: center;\n gap: 8px;\n color: var(--mj-text-muted);\n font-size: 0.9em;\n}\n\n.timeline-stat i {\n font-size: 1.1em;\n}\n\n/* Validation Attempts */\n.validation-attempts {\n margin-bottom: 24px;\n}\n\n.validation-attempts h4 {\n margin: 0 0 12px 0;\n font-size: 1em;\n color: var(--mj-text-secondary);\n}\n\n.attempts-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.attempt-item {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 12px 16px;\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 16px;\n}\n\n.attempt-item.success {\n background: color-mix(in srgb, var(--mj-status-success) 6%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-status-success) 18%, var(--mj-bg-surface));\n}\n\n.attempt-item.failed {\n background: color-mix(in srgb, var(--mj-status-error) 6%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-status-error) 18%, var(--mj-bg-surface));\n}\n\n.attempt-number {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.attempt-item.success .attempt-number {\n color: var(--mj-status-success);\n}\n\n.attempt-item.failed .attempt-number {\n color: var(--mj-status-error);\n}\n\n.attempt-details {\n flex: 1;\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n font-size: 0.85em;\n}\n\n.attempt-time {\n color: var(--mj-text-muted);\n}\n\n.attempt-error {\n color: var(--mj-status-error);\n flex: 1 0 100%;\n}\n\n.output-length {\n color: var(--mj-text-muted);\n font-style: italic;\n}\n\n/* Validation JSON */\n.validation-json {\n margin-top: 24px;\n}\n\n.validation-json h4 {\n margin: 0 0 12px 0;\n font-size: 1em;\n color: var(--mj-text-secondary);\n}\n\n.json-viewer-container {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n}\n\n/* Panel badge styles */\n.panel-badge.success {\n background: var(--mj-status-success);\n color: white;\n}\n\n/* Full-screen overlay */\n.fullscreen-overlay {\n position: fixed;\n inset: 0;\n z-index: 10000;\n background: var(--mj-bg-overlay, rgba(0, 0, 0, 0.6));\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 1.5rem;\n}\n\n.fullscreen-container {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n max-width: 95vw;\n max-height: 95vh;\n background: var(--mj-bg-surface);\n border-radius: 10px;\n border: 1px solid var(--mj-border-default);\n box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);\n overflow: hidden;\n}\n\n.fullscreen-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0.75rem 1rem;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.fullscreen-title {\n font-weight: 600;\n font-size: 0.9rem;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.fullscreen-title i {\n color: var(--mj-text-secondary);\n}\n\n.fullscreen-actions {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.fullscreen-body {\n flex: 1;\n min-height: 0;\n overflow: hidden;\n}\n\n.fullscreen-body mj-code-editor {\n display: block;\n height: 100%;\n}\n"] }]
|
|
2456
|
+
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 @if (inputData && formattedData) {\n <div class=\"json-editor-container\">\n <div class=\"json-toolbar\">\n <button mjButton\n variant=\"flat\"\n size=\"sm\"\n (click)=\"copyToClipboard(formattedData, 'Data')\"\n title=\"Copy JSON\">\n <i class=\"fa-solid fa-copy\"></i> Copy\n </button>\n <button mjButton\n variant=\"flat\"\n size=\"sm\"\n (click)=\"openFullScreen(formattedData, 'json', 'Data')\"\n title=\"View full screen\">\n <i class=\"fa-solid fa-expand\"></i>\n </button>\n </div>\n <mj-code-editor \n [(ngModel)]=\"formattedData\"\n name=\"formattedData\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n </div>\n } @else {\n <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: white;\n}\n\n.panel-count {\n color: var(--mj-text-muted);\n font-weight: 400;\n font-size: 0.9em;\n}\n\n.panel-content {\n padding: 20px;\n max-height: none !important;\n overflow: visible !important;\n}\n\n/* JSON Editor Container */\n.json-editor-container {\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\n}\n\n.json-toolbar {\n background: var(--mj-bg-surface-card);\n padding: 8px 12px;\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n justify-content: flex-end;\n}\n\n/* Error Message */\n.error-message {\n background: color-mix(in srgb, var(--mj-status-error) 6%, var(--mj-bg-surface));\n border: 1px solid var(--mj-status-error);\n border-radius: 6px;\n padding: 16px;\n display: flex;\n gap: 16px;\n margin-bottom: 16px;\n}\n\n.error-message i {\n font-size: 1.5em;\n color: var(--mj-status-error);\n flex-shrink: 0;\n}\n\n.error-content h4 {\n margin: 0 0 8px 0;\n color: var(--mj-status-error);\n font-size: 1em;\n}\n\n.error-content p {\n margin: 0;\n color: var(--mj-text-secondary);\n}\n\n/* Loading State */\n.loading-state {\n text-align: center;\n padding: 60px 40px;\n color: var(--mj-text-muted);\n}\n\n.loading-state i {\n font-size: 3em;\n margin-bottom: 16px;\n opacity: 0.6;\n color: var(--mj-brand-primary);\n}\n\n.loading-state p {\n margin: 0;\n font-size: 1.1em;\n}\n\n/* Metrics Grid */\n.metrics-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 20px;\n margin-bottom: 24px;\n}\n\n.metric-card {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 20px;\n}\n\n.metric-header {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 12px;\n}\n\n.metric-header i {\n font-size: 1.2em;\n color: var(--mj-text-muted);\n}\n\n.metric-header h4 {\n margin: 0;\n font-size: 0.9em;\n color: var(--mj-text-muted);\n font-weight: 500;\n}\n\n.metric-value.large {\n font-size: 1.8em;\n font-weight: 700;\n color: var(--mj-text-primary);\n}\n\n.metric-rollup {\n margin-top: 8px;\n font-size: 0.85em;\n color: var(--mj-text-muted);\n}\n\n.metric-currency {\n margin-top: 4px;\n font-size: 0.85em;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n}\n\n/* Additional Metrics */\n.additional-metrics {\n padding-top: 16px;\n}\n\n.metric-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 8px 0;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n}\n\n.metric-row:last-child {\n border-bottom: none;\n}\n\n.metric-row .metric-label {\n font-weight: 500;\n color: var(--mj-text-muted);\n}\n\n.metric-row .metric-value {\n font-weight: 400;\n color: var(--mj-text-primary);\n}\n\n.metric-row .metric-value.link {\n color: var(--mj-brand-primary);\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: color 0.2s;\n}\n\n.metric-row .metric-value.link:hover {\n color: color-mix(in srgb, var(--mj-brand-primary) 75%, black);\n}\n\n/* Hierarchy Section */\n.parent-run-section,\n.child-runs-section {\n margin-bottom: 24px;\n}\n\n.parent-run-section:last-child,\n.child-runs-section:last-child {\n margin-bottom: 0;\n}\n\n.parent-run-section h4,\n.child-runs-section h4 {\n margin: 0 0 12px 0;\n font-size: 0.95em;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.runs-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.run-item {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 12px 16px;\n display: flex;\n align-items: center;\n gap: 12px;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.run-item:hover {\n background: var(--mj-border-default);\n border-color: var(--mj-border-strong);\n}\n\n.run-item.parent {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-brand-primary) 30%, var(--mj-bg-surface));\n}\n\n.run-item.parent:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 20%, var(--mj-bg-surface));\n}\n\n.run-item-icon {\n width: 36px;\n height: 36px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.run-item-content {\n flex: 1;\n min-width: 0;\n}\n\n.run-item-title {\n font-weight: 500;\n color: var(--mj-text-primary);\n margin-bottom: 4px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.execution-order {\n background: var(--mj-text-muted);\n color: white;\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 0.75em;\n font-weight: 600;\n}\n\n.run-item-type {\n font-size: 0.85em;\n color: var(--mj-text-muted);\n font-weight: 400;\n}\n\n.run-item-meta {\n display: flex;\n align-items: center;\n gap: 16px;\n font-size: 0.85em;\n color: var(--mj-text-muted);\n}\n\n.run-item-meta span {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.status-indicator {\n font-weight: 500;\n}\n\n.run-item > i:last-child {\n color: var(--mj-text-muted);\n font-size: 0.85em;\n}\n\n/* Detail Fields Grid */\n.detail-fields-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n gap: 24px;\n width: 100%;\n min-height: auto;\n overflow: visible;\n}\n\n.detail-field {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.detail-field label {\n font-size: 0.85em;\n color: var(--mj-text-muted);\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.detail-value {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 1em;\n color: var(--mj-text-primary);\n padding: 10px 14px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n transition: all 0.2s;\n}\n\n.detail-value i:first-child {\n color: var(--mj-text-muted);\n font-size: 1.1em;\n width: 20px;\n text-align: center;\n}\n\n.detail-value.clickable {\n cursor: pointer;\n}\n\n.detail-value.clickable:hover {\n background: var(--mj-border-default);\n border-color: var(--mj-border-strong);\n color: var(--mj-brand-primary);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n}\n\n.detail-value.clickable i:last-child {\n margin-left: auto;\n font-size: 0.85em;\n opacity: 0.6;\n}\n\n.detail-value.clickable:hover i:last-child {\n opacity: 1;\n}\n\n.detail-value.null-value {\n color: var(--mj-text-disabled);\n font-style: italic;\n}\n\n.detail-value.null-value i:first-child {\n opacity: 0.5;\n}\n\n/* Accordion Panel Overrides */\nmj-accordion-panel {\n display: block;\n}\n\n/* Validation Panel Styles */\n.validation-summary {\n margin-bottom: 24px;\n}\n\n.summary-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 16px;\n}\n\n.summary-header h4 {\n margin: 0;\n font-size: 1.1em;\n color: var(--mj-text-primary);\n}\n\n.validation-status {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 6px 16px;\n border-radius: 20px;\n font-weight: 500;\n font-size: 0.9em;\n}\n\n.validation-status.success {\n background: color-mix(in srgb, var(--mj-status-success) 12%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.validation-status.failed {\n background: color-mix(in srgb, var(--mj-status-error) 12%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.validation-metrics {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));\n gap: 12px;\n margin-bottom: 20px;\n}\n\n.metric-card.small {\n padding: 16px;\n text-align: center;\n}\n\n.metric-card.small .metric-label {\n font-size: 0.8em;\n margin-bottom: 8px;\n font-weight: 600;\n}\n\n.metric-card.small .metric-value {\n font-size: 1.4em;\n font-weight: 700;\n}\n\n.validation-error,\n.common-error {\n background: color-mix(in srgb, var(--mj-status-error) 6%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 18%, var(--mj-bg-surface));\n border-radius: 8px;\n padding: 16px;\n margin-bottom: 16px;\n}\n\n.validation-error h5,\n.common-error h5 {\n margin: 0 0 8px 0;\n color: var(--mj-status-error);\n font-size: 0.95em;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.validation-error p,\n.common-error p {\n margin: 0;\n color: var(--mj-text-secondary);\n font-size: 0.9em;\n}\n\n.error-count {\n display: inline-block;\n margin-top: 8px;\n padding: 2px 8px;\n background: var(--mj-status-error);\n color: white;\n border-radius: 12px;\n font-size: 0.75em;\n font-weight: 500;\n}\n\n/* Retry Timeline */\n.retry-timeline {\n margin-bottom: 24px;\n}\n\n.retry-timeline h4 {\n margin: 0 0 12px 0;\n font-size: 1em;\n color: var(--mj-text-secondary);\n}\n\n.timeline-info {\n display: flex;\n gap: 24px;\n flex-wrap: wrap;\n}\n\n.timeline-stat {\n display: flex;\n align-items: center;\n gap: 8px;\n color: var(--mj-text-muted);\n font-size: 0.9em;\n}\n\n.timeline-stat i {\n font-size: 1.1em;\n}\n\n/* Validation Attempts */\n.validation-attempts {\n margin-bottom: 24px;\n}\n\n.validation-attempts h4 {\n margin: 0 0 12px 0;\n font-size: 1em;\n color: var(--mj-text-secondary);\n}\n\n.attempts-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.attempt-item {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 12px 16px;\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 16px;\n}\n\n.attempt-item.success {\n background: color-mix(in srgb, var(--mj-status-success) 6%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-status-success) 18%, var(--mj-bg-surface));\n}\n\n.attempt-item.failed {\n background: color-mix(in srgb, var(--mj-status-error) 6%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-status-error) 18%, var(--mj-bg-surface));\n}\n\n.attempt-number {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.attempt-item.success .attempt-number {\n color: var(--mj-status-success);\n}\n\n.attempt-item.failed .attempt-number {\n color: var(--mj-status-error);\n}\n\n.attempt-details {\n flex: 1;\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n font-size: 0.85em;\n}\n\n.attempt-time {\n color: var(--mj-text-muted);\n}\n\n.attempt-error {\n color: var(--mj-status-error);\n flex: 1 0 100%;\n}\n\n.output-length {\n color: var(--mj-text-muted);\n font-style: italic;\n}\n\n/* Validation JSON */\n.validation-json {\n margin-top: 24px;\n}\n\n.validation-json h4 {\n margin: 0 0 12px 0;\n font-size: 1em;\n color: var(--mj-text-secondary);\n}\n\n.json-viewer-container {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n}\n\n/* Panel badge styles */\n.panel-badge.success {\n background: var(--mj-status-success);\n color: white;\n}\n\n/* Full-screen overlay */\n.fullscreen-overlay {\n position: fixed;\n inset: 0;\n z-index: 10000;\n background: var(--mj-bg-overlay, rgba(0, 0, 0, 0.6));\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 1.5rem;\n}\n\n.fullscreen-container {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n max-width: 95vw;\n max-height: 95vh;\n background: var(--mj-bg-surface);\n border-radius: 10px;\n border: 1px solid var(--mj-border-default);\n box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);\n overflow: hidden;\n}\n\n.fullscreen-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0.75rem 1rem;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.fullscreen-title {\n font-weight: 600;\n font-size: 0.9rem;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.fullscreen-title i {\n color: var(--mj-text-secondary);\n}\n\n.fullscreen-actions {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.fullscreen-body {\n flex: 1;\n min-height: 0;\n overflow: hidden;\n}\n\n.fullscreen-body mj-code-editor {\n display: block;\n height: 100%;\n}\n"] }]
|
|
2473
2457
|
}], null, null); })();
|
|
2474
2458
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MJAIPromptRunFormComponentExtended, { className: "MJAIPromptRunFormComponentExtended", filePath: "src/lib/custom/AIPromptRuns/ai-prompt-run-form.component.ts", lineNumber: 21 }); })();
|
|
2475
2459
|
//# sourceMappingURL=ai-prompt-run-form.component.js.map
|