@memberjunction/ng-core-entity-forms 5.43.0 → 5.45.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.d.ts +1 -0
- package/dist/lib/custom/Lists/list-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Lists/list-form.component.js +126 -175
- package/dist/lib/custom/Lists/list-form.component.js.map +1 -1
- package/dist/lib/custom/Queries/query-form.component.d.ts +1 -0
- package/dist/lib/custom/Queries/query-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Queries/query-form.component.js +196 -252
- 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/Templates/template-params-grid.component.d.ts +1 -0
- package/dist/lib/custom/Templates/template-params-grid.component.d.ts.map +1 -1
- package/dist/lib/custom/Templates/template-params-grid.component.js +5 -3
- package/dist/lib/custom/Templates/template-params-grid.component.js.map +1 -1
- package/dist/lib/custom/Templates/templates-form.component.d.ts +2 -1
- package/dist/lib/custom/Templates/templates-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Templates/templates-form.component.js +10 -4
- package/dist/lib/custom/Templates/templates-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-form.component.d.ts +2 -1
- package/dist/lib/custom/Tests/test-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-form.component.js +105 -133
- 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 +10 -1
- package/dist/lib/custom/Tests/test-suite-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-suite-form.component.js +417 -492
- 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.d.ts +15 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.js +283 -158
- 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-step-node.component.d.ts +10 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.js +80 -26
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js +11 -18
- 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 +263 -258
- 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 +302 -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 +152 -78
- package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentRunStep/mjaiagentrunstep.form.component.js +23 -21
- package/dist/lib/generated/Entities/MJAIAgentRunStep/mjaiagentrunstep.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 +56 -34
- 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 +46 -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 +169 -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/MJActionExecutionLog/mjactionexecutionlog.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJActionExecutionLog/mjactionexecutionlog.form.component.js +23 -5
- package/dist/lib/generated/Entities/MJActionExecutionLog/mjactionexecutionlog.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 +78 -52
- 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 +105 -47
- 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/MJConversationWidgetInstance/mjconversationwidgetinstance.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJConversationWidgetInstance/mjconversationwidgetinstance.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJConversationWidgetInstance/mjconversationwidgetinstance.form.component.js +86 -0
- package/dist/lib/generated/Entities/MJConversationWidgetInstance/mjconversationwidgetinstance.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJCredential/mjcredential.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJCredential/mjcredential.form.component.js +30 -12
- package/dist/lib/generated/Entities/MJCredential/mjcredential.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJCredentialType/mjcredentialtype.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJCredentialType/mjcredentialtype.form.component.js +27 -9
- package/dist/lib/generated/Entities/MJCredentialType/mjcredentialtype.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 +490 -412
- 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/MJEnvironment/mjenvironment.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJEnvironment/mjenvironment.form.component.js +29 -11
- package/dist/lib/generated/Entities/MJEnvironment/mjenvironment.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/MJExternalDataSource/mjexternaldatasource.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJExternalDataSource/mjexternaldatasource.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJExternalDataSource/mjexternaldatasource.form.component.js +113 -0
- package/dist/lib/generated/Entities/MJExternalDataSource/mjexternaldatasource.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJExternalDataSourceType/mjexternaldatasourcetype.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJExternalDataSourceType/mjexternaldatasourcetype.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJExternalDataSourceType/mjexternaldatasourcetype.form.component.js +95 -0
- package/dist/lib/generated/Entities/MJExternalDataSourceType/mjexternaldatasourcetype.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/MJQuery/mjquery.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJQuery/mjquery.form.component.js +54 -46
- package/dist/lib/generated/Entities/MJQuery/mjquery.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 +54 -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/MJTemplate/mjtemplate.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJTemplate/mjtemplate.form.component.js +30 -12
- package/dist/lib/generated/Entities/MJTemplate/mjtemplate.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js +181 -109
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJUserRoutine/mjuserroutine.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJUserRoutine/mjuserroutine.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJUserRoutine/mjuserroutine.form.component.js +169 -0
- package/dist/lib/generated/Entities/MJUserRoutine/mjuserroutine.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJUserRoutineRecipient/mjuserroutinerecipient.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJUserRoutineRecipient/mjuserroutinerecipient.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJUserRoutineRecipient/mjuserroutinerecipient.form.component.js +82 -0
- package/dist/lib/generated/Entities/MJUserRoutineRecipient/mjuserroutinerecipient.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJUserRoutineRun/mjuserroutinerun.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJUserRoutineRun/mjuserroutinerun.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJUserRoutineRun/mjuserroutinerun.form.component.js +100 -0
- package/dist/lib/generated/Entities/MJUserRoutineRun/mjuserroutinerun.form.component.js.map +1 -0
- package/dist/lib/generated/generated-forms.module.d.ts +362 -335
- package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
- package/dist/lib/generated/generated-forms.module.js +299 -203
- 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/dist/lib/shared/components/template-editor.component.d.ts +4 -2
- package/dist/lib/shared/components/template-editor.component.d.ts.map +1 -1
- package/dist/lib/shared/components/template-editor.component.js +10 -9
- package/dist/lib/shared/components/template-editor.component.js.map +1 -1
- 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
|
@@ -14,7 +14,6 @@ import { AIAgentRunTimelineComponent } from './ai-agent-run-timeline.component';
|
|
|
14
14
|
import { MJAIAgentRunFormComponent } from '../../generated/Entities/MJAIAgentRun/mjaiagentrun.form.component';
|
|
15
15
|
import { ParseJSONRecursive } from '@memberjunction/global';
|
|
16
16
|
import { AIAgentRunAnalyticsComponent } from './ai-agent-run-analytics.component';
|
|
17
|
-
import { AIAgentRunVisualizationComponent } from './ai-agent-run-visualization.component';
|
|
18
17
|
import { AIAgentRunCostService } from './ai-agent-run-cost.service';
|
|
19
18
|
import { AIAgentRunDataHelper } from './ai-agent-run-data.service';
|
|
20
19
|
import { ApplicationManager } from '@memberjunction/ng-base-application';
|
|
@@ -27,26 +26,26 @@ import * as i5 from "@memberjunction/ng-deep-diff";
|
|
|
27
26
|
import * as i6 from "angular-split";
|
|
28
27
|
import * as i7 from "./ai-agent-run-timeline.component";
|
|
29
28
|
import * as i8 from "./ai-agent-run-analytics.component";
|
|
30
|
-
import * as i9 from "./ai-agent-run-
|
|
31
|
-
import * as i10 from "./
|
|
29
|
+
import * as i9 from "./ai-agent-run-step-detail.component";
|
|
30
|
+
import * as i10 from "./flow/agent-run-flow.component";
|
|
32
31
|
function MJAIAgentRunFormComponentExtended_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
33
|
-
i0.ɵɵelement(0, "img",
|
|
32
|
+
i0.ɵɵelement(0, "img", 7);
|
|
34
33
|
} if (rf & 2) {
|
|
35
34
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
36
35
|
i0.ɵɵproperty("src", ctx_r0.agent.LogoURL, i0.ɵɵsanitizeUrl)("alt", ctx_r0.agent.Name || "Agent");
|
|
37
36
|
} }
|
|
38
37
|
function MJAIAgentRunFormComponentExtended_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
39
|
-
i0.ɵɵelement(0, "i",
|
|
38
|
+
i0.ɵɵelement(0, "i", 8);
|
|
40
39
|
} if (rf & 2) {
|
|
41
40
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
42
41
|
i0.ɵɵproperty("ngClass", ctx_r0.agent.IconClass);
|
|
43
42
|
} }
|
|
44
43
|
function MJAIAgentRunFormComponentExtended_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
45
|
-
i0.ɵɵelement(0, "i",
|
|
44
|
+
i0.ɵɵelement(0, "i", 9);
|
|
46
45
|
} }
|
|
47
46
|
function MJAIAgentRunFormComponentExtended_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
48
47
|
const _r2 = i0.ɵɵgetCurrentView();
|
|
49
|
-
i0.ɵɵelementStart(0, "span",
|
|
48
|
+
i0.ɵɵelementStart(0, "span", 12)(1, "a", 36);
|
|
50
49
|
i0.ɵɵlistener("click", function MJAIAgentRunFormComponentExtended_Conditional_13_Template_a_click_1_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.openEntityRecord("MJ: AI Agents", ctx_r0.record.AgentID)); });
|
|
51
50
|
i0.ɵɵtext(2);
|
|
52
51
|
i0.ɵɵelementEnd()();
|
|
@@ -57,7 +56,7 @@ function MJAIAgentRunFormComponentExtended_Conditional_13_Template(rf, ctx) { if
|
|
|
57
56
|
} }
|
|
58
57
|
function MJAIAgentRunFormComponentExtended_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
59
58
|
const _r3 = i0.ɵɵgetCurrentView();
|
|
60
|
-
i0.ɵɵelementStart(0, "span",
|
|
59
|
+
i0.ɵɵelementStart(0, "span", 14);
|
|
61
60
|
i0.ɵɵelement(1, "i", 37);
|
|
62
61
|
i0.ɵɵelementStart(2, "a", 38);
|
|
63
62
|
i0.ɵɵlistener("click", function MJAIAgentRunFormComponentExtended_Conditional_16_Template_a_click_2_listener() { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.navigateToParentRun()); });
|
|
@@ -75,7 +74,13 @@ function MJAIAgentRunFormComponentExtended_Conditional_17_Template(rf, ctx) { if
|
|
|
75
74
|
i0.ɵɵelement(4, "i", 41);
|
|
76
75
|
i0.ɵɵelementEnd();
|
|
77
76
|
} }
|
|
78
|
-
function
|
|
77
|
+
function MJAIAgentRunFormComponentExtended_Conditional_19_Template(rf, ctx) { if (rf & 1) {
|
|
78
|
+
i0.ɵɵelementStart(0, "div", 17);
|
|
79
|
+
i0.ɵɵelement(1, "i", 42);
|
|
80
|
+
i0.ɵɵtext(2, " Plan Mode ");
|
|
81
|
+
i0.ɵɵelementEnd();
|
|
82
|
+
} }
|
|
83
|
+
function MJAIAgentRunFormComponentExtended_Conditional_33_Template(rf, ctx) { if (rf & 1) {
|
|
79
84
|
i0.ɵɵelementStart(0, "div", 23)(1, "span", 24);
|
|
80
85
|
i0.ɵɵtext(2, "Completed");
|
|
81
86
|
i0.ɵɵelementEnd();
|
|
@@ -88,7 +93,7 @@ function MJAIAgentRunFormComponentExtended_Conditional_32_Template(rf, ctx) { if
|
|
|
88
93
|
i0.ɵɵadvance(4);
|
|
89
94
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(5, 1, ctx_r0.record.CompletedAt, "medium"));
|
|
90
95
|
} }
|
|
91
|
-
function
|
|
96
|
+
function MJAIAgentRunFormComponentExtended_Conditional_34_Template(rf, ctx) { if (rf & 1) {
|
|
92
97
|
i0.ɵɵelementStart(0, "div", 23)(1, "span", 24);
|
|
93
98
|
i0.ɵɵtext(2, "Duration");
|
|
94
99
|
i0.ɵɵelementEnd();
|
|
@@ -100,7 +105,7 @@ function MJAIAgentRunFormComponentExtended_Conditional_33_Template(rf, ctx) { if
|
|
|
100
105
|
i0.ɵɵadvance(4);
|
|
101
106
|
i0.ɵɵtextInterpolate(ctx_r0.calculateDuration(ctx_r0.record.StartedAt, ctx_r0.record.CompletedAt));
|
|
102
107
|
} }
|
|
103
|
-
function
|
|
108
|
+
function MJAIAgentRunFormComponentExtended_Conditional_35_Template(rf, ctx) { if (rf & 1) {
|
|
104
109
|
i0.ɵɵelementStart(0, "div", 23)(1, "span", 24);
|
|
105
110
|
i0.ɵɵtext(2, "Result");
|
|
106
111
|
i0.ɵɵelementEnd();
|
|
@@ -114,7 +119,7 @@ function MJAIAgentRunFormComponentExtended_Conditional_34_Template(rf, ctx) { if
|
|
|
114
119
|
i0.ɵɵadvance();
|
|
115
120
|
i0.ɵɵtextInterpolate1(" ", ctx_r0.record.Success ? "Success" : "Failed", " ");
|
|
116
121
|
} }
|
|
117
|
-
function
|
|
122
|
+
function MJAIAgentRunFormComponentExtended_Conditional_36_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
118
123
|
i0.ɵɵelementStart(0, "span", 25);
|
|
119
124
|
i0.ɵɵtext(1);
|
|
120
125
|
i0.ɵɵpipe(2, "number");
|
|
@@ -124,17 +129,17 @@ function MJAIAgentRunFormComponentExtended_Conditional_35_Conditional_3_Template
|
|
|
124
129
|
i0.ɵɵadvance();
|
|
125
130
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(2, 1, ctx_r0.costMetrics.totalTokensInput + ctx_r0.costMetrics.totalTokensOutput, "1.0-0"));
|
|
126
131
|
} }
|
|
127
|
-
function
|
|
128
|
-
i0.ɵɵelementStart(0, "span",
|
|
129
|
-
i0.ɵɵelement(1, "i",
|
|
132
|
+
function MJAIAgentRunFormComponentExtended_Conditional_36_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
133
|
+
i0.ɵɵelementStart(0, "span", 43);
|
|
134
|
+
i0.ɵɵelement(1, "i", 44);
|
|
130
135
|
i0.ɵɵelementEnd();
|
|
131
136
|
} }
|
|
132
|
-
function
|
|
137
|
+
function MJAIAgentRunFormComponentExtended_Conditional_36_Template(rf, ctx) { if (rf & 1) {
|
|
133
138
|
i0.ɵɵelementStart(0, "div", 23)(1, "span", 24);
|
|
134
139
|
i0.ɵɵtext(2, "Tokens");
|
|
135
140
|
i0.ɵɵelementEnd();
|
|
136
|
-
i0.ɵɵconditionalCreate(3,
|
|
137
|
-
i0.ɵɵconditionalCreate(4,
|
|
141
|
+
i0.ɵɵconditionalCreate(3, MJAIAgentRunFormComponentExtended_Conditional_36_Conditional_3_Template, 3, 4, "span", 25);
|
|
142
|
+
i0.ɵɵconditionalCreate(4, MJAIAgentRunFormComponentExtended_Conditional_36_Conditional_4_Template, 2, 0, "span", 43);
|
|
138
143
|
i0.ɵɵelementEnd();
|
|
139
144
|
} if (rf & 2) {
|
|
140
145
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
@@ -143,7 +148,7 @@ function MJAIAgentRunFormComponentExtended_Conditional_35_Template(rf, ctx) { if
|
|
|
143
148
|
i0.ɵɵadvance();
|
|
144
149
|
i0.ɵɵconditional(ctx_r0.costMetrics.isLoading ? 4 : -1);
|
|
145
150
|
} }
|
|
146
|
-
function
|
|
151
|
+
function MJAIAgentRunFormComponentExtended_Conditional_37_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
147
152
|
i0.ɵɵelementStart(0, "span", 25);
|
|
148
153
|
i0.ɵɵtext(1);
|
|
149
154
|
i0.ɵɵpipe(2, "number");
|
|
@@ -153,17 +158,17 @@ function MJAIAgentRunFormComponentExtended_Conditional_36_Conditional_3_Template
|
|
|
153
158
|
i0.ɵɵadvance();
|
|
154
159
|
i0.ɵɵtextInterpolate1("$", i0.ɵɵpipeBind2(2, 1, ctx_r0.costMetrics.totalCost, "1.2-4"));
|
|
155
160
|
} }
|
|
156
|
-
function
|
|
157
|
-
i0.ɵɵelementStart(0, "span",
|
|
158
|
-
i0.ɵɵelement(1, "i",
|
|
161
|
+
function MJAIAgentRunFormComponentExtended_Conditional_37_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
162
|
+
i0.ɵɵelementStart(0, "span", 43);
|
|
163
|
+
i0.ɵɵelement(1, "i", 44);
|
|
159
164
|
i0.ɵɵelementEnd();
|
|
160
165
|
} }
|
|
161
|
-
function
|
|
166
|
+
function MJAIAgentRunFormComponentExtended_Conditional_37_Template(rf, ctx) { if (rf & 1) {
|
|
162
167
|
i0.ɵɵelementStart(0, "div", 23)(1, "span", 24);
|
|
163
168
|
i0.ɵɵtext(2, "Cost");
|
|
164
169
|
i0.ɵɵelementEnd();
|
|
165
|
-
i0.ɵɵconditionalCreate(3,
|
|
166
|
-
i0.ɵɵconditionalCreate(4,
|
|
170
|
+
i0.ɵɵconditionalCreate(3, MJAIAgentRunFormComponentExtended_Conditional_37_Conditional_3_Template, 3, 4, "span", 25);
|
|
171
|
+
i0.ɵɵconditionalCreate(4, MJAIAgentRunFormComponentExtended_Conditional_37_Conditional_4_Template, 2, 0, "span", 43);
|
|
167
172
|
i0.ɵɵelementEnd();
|
|
168
173
|
} if (rf & 2) {
|
|
169
174
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
@@ -172,7 +177,7 @@ function MJAIAgentRunFormComponentExtended_Conditional_36_Template(rf, ctx) { if
|
|
|
172
177
|
i0.ɵɵadvance();
|
|
173
178
|
i0.ɵɵconditional(ctx_r0.costMetrics.isLoading ? 4 : -1);
|
|
174
179
|
} }
|
|
175
|
-
function
|
|
180
|
+
function MJAIAgentRunFormComponentExtended_Conditional_38_Template(rf, ctx) { if (rf & 1) {
|
|
176
181
|
i0.ɵɵelementStart(0, "div", 23)(1, "span", 24);
|
|
177
182
|
i0.ɵɵtext(2, "Effort Level");
|
|
178
183
|
i0.ɵɵelementEnd();
|
|
@@ -184,15 +189,15 @@ function MJAIAgentRunFormComponentExtended_Conditional_37_Template(rf, ctx) { if
|
|
|
184
189
|
i0.ɵɵadvance(4);
|
|
185
190
|
i0.ɵɵtextInterpolate(ctx_r0.record.EffortLevel);
|
|
186
191
|
} }
|
|
187
|
-
function
|
|
192
|
+
function MJAIAgentRunFormComponentExtended_Conditional_39_Template(rf, ctx) { if (rf & 1) {
|
|
188
193
|
const _r5 = i0.ɵɵgetCurrentView();
|
|
189
|
-
i0.ɵɵelementStart(0, "div", 26)(1, "div",
|
|
190
|
-
i0.ɵɵelement(2, "i",
|
|
191
|
-
i0.ɵɵelementStart(3, "div",
|
|
194
|
+
i0.ɵɵelementStart(0, "div", 26)(1, "div", 45);
|
|
195
|
+
i0.ɵɵelement(2, "i", 46);
|
|
196
|
+
i0.ɵɵelementStart(3, "div", 47)(4, "div", 48);
|
|
192
197
|
i0.ɵɵtext(5, "Configuration");
|
|
193
198
|
i0.ɵɵelementEnd();
|
|
194
|
-
i0.ɵɵelementStart(6, "div",
|
|
195
|
-
i0.ɵɵlistener("click", function
|
|
199
|
+
i0.ɵɵelementStart(6, "div", 49)(7, "a", 36);
|
|
200
|
+
i0.ɵɵlistener("click", function MJAIAgentRunFormComponentExtended_Conditional_39_Template_a_click_7_listener() { i0.ɵɵrestoreView(_r5); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.openEntityRecord("MJ: AI Configurations", ctx_r0.record.ConfigurationID)); });
|
|
196
201
|
i0.ɵɵtext(8);
|
|
197
202
|
i0.ɵɵelementEnd()()()()();
|
|
198
203
|
} if (rf & 2) {
|
|
@@ -200,10 +205,10 @@ function MJAIAgentRunFormComponentExtended_Conditional_38_Template(rf, ctx) { if
|
|
|
200
205
|
i0.ɵɵadvance(8);
|
|
201
206
|
i0.ɵɵtextInterpolate1(" ", ctx_r0.record.Configuration || "Unknown", " ");
|
|
202
207
|
} }
|
|
203
|
-
function
|
|
208
|
+
function MJAIAgentRunFormComponentExtended_Conditional_54_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
204
209
|
const _r7 = i0.ɵɵgetCurrentView();
|
|
205
|
-
i0.ɵɵelementStart(0, "as-split-area",
|
|
206
|
-
i0.ɵɵlistener("closePanel", function
|
|
210
|
+
i0.ɵɵelementStart(0, "as-split-area", 51)(1, "mj-ai-agent-run-step-detail", 53);
|
|
211
|
+
i0.ɵɵlistener("closePanel", function MJAIAgentRunFormComponentExtended_Conditional_54_Conditional_4_Template_mj_ai_agent_run_step_detail_closePanel_1_listener() { i0.ɵɵrestoreView(_r7); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.closeJsonPanel()); })("navigateToActionLog", function MJAIAgentRunFormComponentExtended_Conditional_54_Conditional_4_Template_mj_ai_agent_run_step_detail_navigateToActionLog_1_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.navigateToActionLog($event)); })("copyToClipboard", function MJAIAgentRunFormComponentExtended_Conditional_54_Conditional_4_Template_mj_ai_agent_run_step_detail_copyToClipboard_1_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.copyToClipboard($event)); });
|
|
207
212
|
i0.ɵɵelementEnd()();
|
|
208
213
|
} if (rf & 2) {
|
|
209
214
|
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
@@ -211,12 +216,12 @@ function MJAIAgentRunFormComponentExtended_Conditional_53_Conditional_4_Template
|
|
|
211
216
|
i0.ɵɵadvance();
|
|
212
217
|
i0.ɵɵproperty("selectedTimelineItem", ctx_r0.selectedTimelineItem);
|
|
213
218
|
} }
|
|
214
|
-
function
|
|
219
|
+
function MJAIAgentRunFormComponentExtended_Conditional_54_Template(rf, ctx) { if (rf & 1) {
|
|
215
220
|
const _r6 = i0.ɵɵgetCurrentView();
|
|
216
|
-
i0.ɵɵelementStart(0, "div", 34)(1, "as-split",
|
|
217
|
-
i0.ɵɵlistener("itemSelected", function
|
|
221
|
+
i0.ɵɵelementStart(0, "div", 34)(1, "as-split", 50)(2, "as-split-area", 51)(3, "mj-ai-agent-run-timeline", 52);
|
|
222
|
+
i0.ɵɵlistener("itemSelected", function MJAIAgentRunFormComponentExtended_Conditional_54_Template_mj_ai_agent_run_timeline_itemSelected_3_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.selectTimelineItem($event)); })("navigateToEntity", function MJAIAgentRunFormComponentExtended_Conditional_54_Template_mj_ai_agent_run_timeline_navigateToEntity_3_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.navigateToEntityRecord($event)); });
|
|
218
223
|
i0.ɵɵelementEnd()();
|
|
219
|
-
i0.ɵɵconditionalCreate(4,
|
|
224
|
+
i0.ɵɵconditionalCreate(4, MJAIAgentRunFormComponentExtended_Conditional_54_Conditional_4_Template, 2, 2, "as-split-area", 51);
|
|
220
225
|
i0.ɵɵelementEnd()();
|
|
221
226
|
} if (rf & 2) {
|
|
222
227
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
@@ -227,44 +232,44 @@ function MJAIAgentRunFormComponentExtended_Conditional_53_Template(rf, ctx) { if
|
|
|
227
232
|
i0.ɵɵadvance();
|
|
228
233
|
i0.ɵɵconditional(ctx_r0.selectedTimelineItem ? 4 : -1);
|
|
229
234
|
} }
|
|
230
|
-
function
|
|
231
|
-
i0.ɵɵelement(0, "mj-ai-agent-run-
|
|
235
|
+
function MJAIAgentRunFormComponentExtended_Conditional_55_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
236
|
+
i0.ɵɵelement(0, "mj-ai-agent-run-flow", 54);
|
|
232
237
|
} if (rf & 2) {
|
|
233
238
|
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
234
|
-
i0.ɵɵproperty("aiAgentRunId", ctx_r0.record.ID)("dataHelper", ctx_r0.dataHelper);
|
|
239
|
+
i0.ɵɵproperty("aiAgentRunId", ctx_r0.record.ID)("dataHelper", ctx_r0.dataHelper)("agentName", (ctx_r0.agent == null ? null : ctx_r0.agent.Name) || null)("runStatus", ctx_r0.record.Status || "")("agentIconClass", (ctx_r0.agent == null ? null : ctx_r0.agent.IconClass) || null)("agentLogoUrl", (ctx_r0.agent == null ? null : ctx_r0.agent.LogoURL) || null);
|
|
235
240
|
} }
|
|
236
|
-
function
|
|
241
|
+
function MJAIAgentRunFormComponentExtended_Conditional_55_Template(rf, ctx) { if (rf & 1) {
|
|
237
242
|
i0.ɵɵelementStart(0, "div", 34);
|
|
238
|
-
i0.ɵɵconditionalCreate(1,
|
|
243
|
+
i0.ɵɵconditionalCreate(1, MJAIAgentRunFormComponentExtended_Conditional_55_Conditional_1_Template, 1, 6, "mj-ai-agent-run-flow", 54);
|
|
239
244
|
i0.ɵɵelementEnd();
|
|
240
245
|
} if (rf & 2) {
|
|
241
246
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
242
247
|
i0.ɵɵadvance();
|
|
243
248
|
i0.ɵɵconditional(ctx_r0.visualizationLoaded ? 1 : -1);
|
|
244
249
|
} }
|
|
245
|
-
function
|
|
246
|
-
i0.ɵɵelement(0, "mj-ai-agent-run-analytics",
|
|
250
|
+
function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
251
|
+
i0.ɵɵelement(0, "mj-ai-agent-run-analytics", 55, 0);
|
|
247
252
|
} if (rf & 2) {
|
|
248
253
|
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
249
254
|
i0.ɵɵproperty("agentRunId", ctx_r0.record.ID);
|
|
250
255
|
} }
|
|
251
|
-
function
|
|
256
|
+
function MJAIAgentRunFormComponentExtended_Conditional_56_Template(rf, ctx) { if (rf & 1) {
|
|
252
257
|
i0.ɵɵelementStart(0, "div", 34);
|
|
253
|
-
i0.ɵɵconditionalCreate(1,
|
|
258
|
+
i0.ɵɵconditionalCreate(1, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_1_Template, 2, 1, "mj-ai-agent-run-analytics", 55);
|
|
254
259
|
i0.ɵɵelementEnd();
|
|
255
260
|
} if (rf & 2) {
|
|
256
261
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
257
262
|
i0.ɵɵadvance();
|
|
258
263
|
i0.ɵɵconditional(ctx_r0.analyticsLoaded ? 1 : -1);
|
|
259
264
|
} }
|
|
260
|
-
function
|
|
265
|
+
function MJAIAgentRunFormComponentExtended_Conditional_57_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
261
266
|
i0.ɵɵelement(0, "i", 32);
|
|
262
267
|
i0.ɵɵtext(1, " General Information ");
|
|
263
268
|
} }
|
|
264
|
-
function
|
|
269
|
+
function MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
265
270
|
const _r9 = i0.ɵɵgetCurrentView();
|
|
266
271
|
i0.ɵɵelementStart(0, "a", 36);
|
|
267
|
-
i0.ɵɵlistener("click", function
|
|
272
|
+
i0.ɵɵlistener("click", function MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_14_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r9); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.openEntityRecord("MJ: AI Agent Runs", ctx_r0.record.ParentRunID)); });
|
|
268
273
|
i0.ɵɵtext(1);
|
|
269
274
|
i0.ɵɵelementEnd();
|
|
270
275
|
} if (rf & 2) {
|
|
@@ -272,15 +277,15 @@ function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_14_Templat
|
|
|
272
277
|
i0.ɵɵadvance();
|
|
273
278
|
i0.ɵɵtextInterpolate1(" ", ctx_r0.record.ParentRunID, " ");
|
|
274
279
|
} }
|
|
275
|
-
function
|
|
280
|
+
function MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
276
281
|
i0.ɵɵelementStart(0, "span");
|
|
277
282
|
i0.ɵɵtext(1, "None (Root)");
|
|
278
283
|
i0.ɵɵelementEnd();
|
|
279
284
|
} }
|
|
280
|
-
function
|
|
285
|
+
function MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_20_Template(rf, ctx) { if (rf & 1) {
|
|
281
286
|
const _r10 = i0.ɵɵgetCurrentView();
|
|
282
287
|
i0.ɵɵelementStart(0, "a", 36);
|
|
283
|
-
i0.ɵɵlistener("click", function
|
|
288
|
+
i0.ɵɵlistener("click", function MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_20_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r10); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.openEntityRecord("MJ: AI Agent Runs", ctx_r0.record.LastRunID)); });
|
|
284
289
|
i0.ɵɵtext(1);
|
|
285
290
|
i0.ɵɵelementEnd();
|
|
286
291
|
} if (rf & 2) {
|
|
@@ -288,15 +293,15 @@ function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_20_Templat
|
|
|
288
293
|
i0.ɵɵadvance();
|
|
289
294
|
i0.ɵɵtextInterpolate1(" ", ctx_r0.record.LastRunID, " ");
|
|
290
295
|
} }
|
|
291
|
-
function
|
|
296
|
+
function MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_21_Template(rf, ctx) { if (rf & 1) {
|
|
292
297
|
i0.ɵɵelementStart(0, "span");
|
|
293
298
|
i0.ɵɵtext(1, "None");
|
|
294
299
|
i0.ɵɵelementEnd();
|
|
295
300
|
} }
|
|
296
|
-
function
|
|
301
|
+
function MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_26_Template(rf, ctx) { if (rf & 1) {
|
|
297
302
|
const _r11 = i0.ɵɵgetCurrentView();
|
|
298
303
|
i0.ɵɵelementStart(0, "a", 36);
|
|
299
|
-
i0.ɵɵlistener("click", function
|
|
304
|
+
i0.ɵɵlistener("click", function MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_26_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r11); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.openEntityRecord("MJ: Conversations", ctx_r0.record.ConversationID)); });
|
|
300
305
|
i0.ɵɵtext(1);
|
|
301
306
|
i0.ɵɵelementEnd();
|
|
302
307
|
} if (rf & 2) {
|
|
@@ -304,15 +309,15 @@ function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_26_Templat
|
|
|
304
309
|
i0.ɵɵadvance();
|
|
305
310
|
i0.ɵɵtextInterpolate1(" ", ctx_r0.record.ConversationID, " ");
|
|
306
311
|
} }
|
|
307
|
-
function
|
|
312
|
+
function MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_27_Template(rf, ctx) { if (rf & 1) {
|
|
308
313
|
i0.ɵɵelementStart(0, "span");
|
|
309
314
|
i0.ɵɵtext(1, "N/A");
|
|
310
315
|
i0.ɵɵelementEnd();
|
|
311
316
|
} }
|
|
312
|
-
function
|
|
317
|
+
function MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_32_Template(rf, ctx) { if (rf & 1) {
|
|
313
318
|
const _r12 = i0.ɵɵgetCurrentView();
|
|
314
319
|
i0.ɵɵelementStart(0, "a", 36);
|
|
315
|
-
i0.ɵɵlistener("click", function
|
|
320
|
+
i0.ɵɵlistener("click", function MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_32_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r12); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.openEntityRecord("MJ: Users", ctx_r0.record.UserID)); });
|
|
316
321
|
i0.ɵɵtext(1);
|
|
317
322
|
i0.ɵɵelementEnd();
|
|
318
323
|
} if (rf & 2) {
|
|
@@ -320,19 +325,19 @@ function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_32_Templat
|
|
|
320
325
|
i0.ɵɵadvance();
|
|
321
326
|
i0.ɵɵtextInterpolate1(" ", ctx_r0.record.User || "N/A", " ");
|
|
322
327
|
} }
|
|
323
|
-
function
|
|
328
|
+
function MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_33_Template(rf, ctx) { if (rf & 1) {
|
|
324
329
|
i0.ɵɵelementStart(0, "span");
|
|
325
330
|
i0.ɵɵtext(1, "N/A");
|
|
326
331
|
i0.ɵɵelementEnd();
|
|
327
332
|
} }
|
|
328
|
-
function
|
|
329
|
-
i0.ɵɵelement(0, "i",
|
|
333
|
+
function MJAIAgentRunFormComponentExtended_Conditional_57_ng_template_35_Template(rf, ctx) { if (rf & 1) {
|
|
334
|
+
i0.ɵɵelement(0, "i", 64);
|
|
330
335
|
i0.ɵɵtext(1, " Execution Settings ");
|
|
331
336
|
} }
|
|
332
|
-
function
|
|
337
|
+
function MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_41_Template(rf, ctx) { if (rf & 1) {
|
|
333
338
|
const _r13 = i0.ɵɵgetCurrentView();
|
|
334
339
|
i0.ɵɵelementStart(0, "a", 36);
|
|
335
|
-
i0.ɵɵlistener("click", function
|
|
340
|
+
i0.ɵɵlistener("click", function MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_41_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r13); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.openEntityRecord("MJ: AI Models", ctx_r0.record.OverrideModelID)); });
|
|
336
341
|
i0.ɵɵtext(1);
|
|
337
342
|
i0.ɵɵelementEnd();
|
|
338
343
|
} if (rf & 2) {
|
|
@@ -340,15 +345,15 @@ function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_41_Templat
|
|
|
340
345
|
i0.ɵɵadvance();
|
|
341
346
|
i0.ɵɵtextInterpolate1(" ", ctx_r0.record.OverrideModel || "N/A", " ");
|
|
342
347
|
} }
|
|
343
|
-
function
|
|
348
|
+
function MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_42_Template(rf, ctx) { if (rf & 1) {
|
|
344
349
|
i0.ɵɵelementStart(0, "span");
|
|
345
350
|
i0.ɵɵtext(1, "N/A");
|
|
346
351
|
i0.ɵɵelementEnd();
|
|
347
352
|
} }
|
|
348
|
-
function
|
|
353
|
+
function MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_47_Template(rf, ctx) { if (rf & 1) {
|
|
349
354
|
const _r14 = i0.ɵɵgetCurrentView();
|
|
350
355
|
i0.ɵɵelementStart(0, "a", 36);
|
|
351
|
-
i0.ɵɵlistener("click", function
|
|
356
|
+
i0.ɵɵlistener("click", function MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_47_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r14); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.openEntityRecord("MJ: AI Vendors", ctx_r0.record.OverrideVendorID)); });
|
|
352
357
|
i0.ɵɵtext(1);
|
|
353
358
|
i0.ɵɵelementEnd();
|
|
354
359
|
} if (rf & 2) {
|
|
@@ -356,35 +361,35 @@ function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_47_Templat
|
|
|
356
361
|
i0.ɵɵadvance();
|
|
357
362
|
i0.ɵɵtextInterpolate1(" ", ctx_r0.record.OverrideVendor || "N/A", " ");
|
|
358
363
|
} }
|
|
359
|
-
function
|
|
364
|
+
function MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_48_Template(rf, ctx) { if (rf & 1) {
|
|
360
365
|
i0.ɵɵelementStart(0, "span");
|
|
361
366
|
i0.ɵɵtext(1, "N/A");
|
|
362
367
|
i0.ɵɵelementEnd();
|
|
363
368
|
} }
|
|
364
|
-
function
|
|
365
|
-
i0.ɵɵelement(0, "i",
|
|
369
|
+
function MJAIAgentRunFormComponentExtended_Conditional_57_ng_template_55_Template(rf, ctx) { if (rf & 1) {
|
|
370
|
+
i0.ɵɵelement(0, "i", 65);
|
|
366
371
|
i0.ɵɵtext(1, " Execution Status ");
|
|
367
372
|
} }
|
|
368
|
-
function
|
|
373
|
+
function MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_65_Template(rf, ctx) { if (rf & 1) {
|
|
369
374
|
i0.ɵɵelementStart(0, "span");
|
|
370
375
|
i0.ɵɵtext(1, "In Progress");
|
|
371
376
|
i0.ɵɵelementEnd();
|
|
372
377
|
} }
|
|
373
|
-
function
|
|
374
|
-
i0.ɵɵelementStart(0, "span",
|
|
378
|
+
function MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_66_Template(rf, ctx) { if (rf & 1) {
|
|
379
|
+
i0.ɵɵelementStart(0, "span", 61);
|
|
375
380
|
i0.ɵɵtext(1, "Yes");
|
|
376
381
|
i0.ɵɵelementEnd();
|
|
377
382
|
} }
|
|
378
|
-
function
|
|
379
|
-
i0.ɵɵelementStart(0, "span",
|
|
383
|
+
function MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_67_Template(rf, ctx) { if (rf & 1) {
|
|
384
|
+
i0.ɵɵelementStart(0, "span", 62);
|
|
380
385
|
i0.ɵɵtext(1, "No");
|
|
381
386
|
i0.ɵɵelementEnd();
|
|
382
387
|
} }
|
|
383
|
-
function
|
|
384
|
-
i0.ɵɵelementStart(0, "div",
|
|
388
|
+
function MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_68_Template(rf, ctx) { if (rf & 1) {
|
|
389
|
+
i0.ɵɵelementStart(0, "div", 63)(1, "label");
|
|
385
390
|
i0.ɵɵtext(2, "Message");
|
|
386
391
|
i0.ɵɵelementEnd();
|
|
387
|
-
i0.ɵɵelementStart(3, "div",
|
|
392
|
+
i0.ɵɵelementStart(3, "div", 66);
|
|
388
393
|
i0.ɵɵtext(4);
|
|
389
394
|
i0.ɵɵelementEnd()();
|
|
390
395
|
} if (rf & 2) {
|
|
@@ -392,11 +397,11 @@ function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_68_Templat
|
|
|
392
397
|
i0.ɵɵadvance(4);
|
|
393
398
|
i0.ɵɵtextInterpolate(ctx_r0.record.Message);
|
|
394
399
|
} }
|
|
395
|
-
function
|
|
396
|
-
i0.ɵɵelementStart(0, "div",
|
|
400
|
+
function MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_69_Template(rf, ctx) { if (rf & 1) {
|
|
401
|
+
i0.ɵɵelementStart(0, "div", 63)(1, "label");
|
|
397
402
|
i0.ɵɵtext(2, "Error Message");
|
|
398
403
|
i0.ɵɵelementEnd();
|
|
399
|
-
i0.ɵɵelementStart(3, "div",
|
|
404
|
+
i0.ɵɵelementStart(3, "div", 62);
|
|
400
405
|
i0.ɵɵtext(4);
|
|
401
406
|
i0.ɵɵelementEnd()();
|
|
402
407
|
} if (rf & 2) {
|
|
@@ -404,31 +409,31 @@ function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_69_Templat
|
|
|
404
409
|
i0.ɵɵadvance(4);
|
|
405
410
|
i0.ɵɵtextInterpolate(ctx_r0.record.ErrorMessage);
|
|
406
411
|
} }
|
|
407
|
-
function
|
|
408
|
-
i0.ɵɵelement(0, "i",
|
|
412
|
+
function MJAIAgentRunFormComponentExtended_Conditional_57_ng_template_71_Template(rf, ctx) { if (rf & 1) {
|
|
413
|
+
i0.ɵɵelement(0, "i", 67);
|
|
409
414
|
i0.ɵɵtext(1, " Usage & Cost ");
|
|
410
415
|
} }
|
|
411
|
-
function
|
|
412
|
-
i0.ɵɵelement(0, "i",
|
|
416
|
+
function MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_103_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
417
|
+
i0.ɵɵelement(0, "i", 71);
|
|
413
418
|
i0.ɵɵtext(1, " Result ");
|
|
414
419
|
} }
|
|
415
|
-
function
|
|
416
|
-
i0.ɵɵelement(0, "mj-code-editor",
|
|
420
|
+
function MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_103_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
421
|
+
i0.ɵɵelement(0, "mj-code-editor", 69);
|
|
417
422
|
} if (rf & 2) {
|
|
418
423
|
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
419
424
|
i0.ɵɵproperty("ngModel", ctx_r0.parsedResult)("language", "json")("readonly", true);
|
|
420
425
|
} }
|
|
421
|
-
function
|
|
422
|
-
i0.ɵɵelementStart(0, "div",
|
|
423
|
-
i0.ɵɵelement(1, "i",
|
|
426
|
+
function MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_103_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
427
|
+
i0.ɵɵelementStart(0, "div", 70);
|
|
428
|
+
i0.ɵɵelement(1, "i", 44);
|
|
424
429
|
i0.ɵɵtext(2, " Loading result data... ");
|
|
425
430
|
i0.ɵɵelementEnd();
|
|
426
431
|
} }
|
|
427
|
-
function
|
|
428
|
-
i0.ɵɵelementStart(0, "mj-accordion-panel",
|
|
429
|
-
i0.ɵɵtemplate(1,
|
|
430
|
-
i0.ɵɵelementStart(2, "div",
|
|
431
|
-
i0.ɵɵconditionalCreate(3,
|
|
432
|
+
function MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_103_Template(rf, ctx) { if (rf & 1) {
|
|
433
|
+
i0.ɵɵelementStart(0, "mj-accordion-panel", 56);
|
|
434
|
+
i0.ɵɵtemplate(1, MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_103_ng_template_1_Template, 2, 0, "ng-template", 57);
|
|
435
|
+
i0.ɵɵelementStart(2, "div", 68);
|
|
436
|
+
i0.ɵɵconditionalCreate(3, MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_103_Conditional_3_Template, 1, 3, "mj-code-editor", 69)(4, MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_103_Conditional_4_Template, 3, 0, "div", 70);
|
|
432
437
|
i0.ɵɵelementEnd()();
|
|
433
438
|
} if (rf & 2) {
|
|
434
439
|
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
@@ -436,27 +441,27 @@ function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_103_Templa
|
|
|
436
441
|
i0.ɵɵadvance(3);
|
|
437
442
|
i0.ɵɵconditional(ctx_r0.isParsingComplete ? 3 : 4);
|
|
438
443
|
} }
|
|
439
|
-
function
|
|
440
|
-
i0.ɵɵelement(0, "i",
|
|
444
|
+
function MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_104_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
445
|
+
i0.ɵɵelement(0, "i", 72);
|
|
441
446
|
i0.ɵɵtext(1, " Starting Payload ");
|
|
442
447
|
} }
|
|
443
|
-
function
|
|
444
|
-
i0.ɵɵelement(0, "mj-code-editor",
|
|
448
|
+
function MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_104_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
449
|
+
i0.ɵɵelement(0, "mj-code-editor", 69);
|
|
445
450
|
} if (rf & 2) {
|
|
446
451
|
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
447
452
|
i0.ɵɵproperty("ngModel", ctx_r0.parsedStartingPayload)("language", "json")("readonly", true);
|
|
448
453
|
} }
|
|
449
|
-
function
|
|
450
|
-
i0.ɵɵelementStart(0, "div",
|
|
451
|
-
i0.ɵɵelement(1, "i",
|
|
454
|
+
function MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_104_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
455
|
+
i0.ɵɵelementStart(0, "div", 70);
|
|
456
|
+
i0.ɵɵelement(1, "i", 44);
|
|
452
457
|
i0.ɵɵtext(2, " Loading payload data... ");
|
|
453
458
|
i0.ɵɵelementEnd();
|
|
454
459
|
} }
|
|
455
|
-
function
|
|
456
|
-
i0.ɵɵelementStart(0, "mj-accordion-panel",
|
|
457
|
-
i0.ɵɵtemplate(1,
|
|
458
|
-
i0.ɵɵelementStart(2, "div",
|
|
459
|
-
i0.ɵɵconditionalCreate(3,
|
|
460
|
+
function MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_104_Template(rf, ctx) { if (rf & 1) {
|
|
461
|
+
i0.ɵɵelementStart(0, "mj-accordion-panel", 56);
|
|
462
|
+
i0.ɵɵtemplate(1, MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_104_ng_template_1_Template, 2, 0, "ng-template", 57);
|
|
463
|
+
i0.ɵɵelementStart(2, "div", 68);
|
|
464
|
+
i0.ɵɵconditionalCreate(3, MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_104_Conditional_3_Template, 1, 3, "mj-code-editor", 69)(4, MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_104_Conditional_4_Template, 3, 0, "div", 70);
|
|
460
465
|
i0.ɵɵelementEnd()();
|
|
461
466
|
} if (rf & 2) {
|
|
462
467
|
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
@@ -464,27 +469,27 @@ function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_104_Templa
|
|
|
464
469
|
i0.ɵɵadvance(3);
|
|
465
470
|
i0.ɵɵconditional(ctx_r0.isParsingComplete ? 3 : 4);
|
|
466
471
|
} }
|
|
467
|
-
function
|
|
468
|
-
i0.ɵɵelement(0, "i",
|
|
472
|
+
function MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_105_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
473
|
+
i0.ɵɵelement(0, "i", 73);
|
|
469
474
|
i0.ɵɵtext(1, " Execution Data ");
|
|
470
475
|
} }
|
|
471
|
-
function
|
|
472
|
-
i0.ɵɵelement(0, "mj-code-editor",
|
|
476
|
+
function MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_105_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
477
|
+
i0.ɵɵelement(0, "mj-code-editor", 69);
|
|
473
478
|
} if (rf & 2) {
|
|
474
479
|
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
475
480
|
i0.ɵɵproperty("ngModel", ctx_r0.parsedData)("language", "json")("readonly", true);
|
|
476
481
|
} }
|
|
477
|
-
function
|
|
478
|
-
i0.ɵɵelementStart(0, "div",
|
|
479
|
-
i0.ɵɵelement(1, "i",
|
|
482
|
+
function MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_105_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
483
|
+
i0.ɵɵelementStart(0, "div", 70);
|
|
484
|
+
i0.ɵɵelement(1, "i", 44);
|
|
480
485
|
i0.ɵɵtext(2, " Loading execution data... ");
|
|
481
486
|
i0.ɵɵelementEnd();
|
|
482
487
|
} }
|
|
483
|
-
function
|
|
484
|
-
i0.ɵɵelementStart(0, "mj-accordion-panel",
|
|
485
|
-
i0.ɵɵtemplate(1,
|
|
486
|
-
i0.ɵɵelementStart(2, "div",
|
|
487
|
-
i0.ɵɵconditionalCreate(3,
|
|
488
|
+
function MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_105_Template(rf, ctx) { if (rf & 1) {
|
|
489
|
+
i0.ɵɵelementStart(0, "mj-accordion-panel", 56);
|
|
490
|
+
i0.ɵɵtemplate(1, MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_105_ng_template_1_Template, 2, 0, "ng-template", 57);
|
|
491
|
+
i0.ɵɵelementStart(2, "div", 68);
|
|
492
|
+
i0.ɵɵconditionalCreate(3, MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_105_Conditional_3_Template, 1, 3, "mj-code-editor", 69)(4, MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_105_Conditional_4_Template, 3, 0, "div", 70);
|
|
488
493
|
i0.ɵɵelementEnd()();
|
|
489
494
|
} if (rf & 2) {
|
|
490
495
|
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
@@ -492,27 +497,27 @@ function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_105_Templa
|
|
|
492
497
|
i0.ɵɵadvance(3);
|
|
493
498
|
i0.ɵɵconditional(ctx_r0.isParsingComplete ? 3 : 4);
|
|
494
499
|
} }
|
|
495
|
-
function
|
|
496
|
-
i0.ɵɵelement(0, "i",
|
|
500
|
+
function MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_106_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
501
|
+
i0.ɵɵelement(0, "i", 74);
|
|
497
502
|
i0.ɵɵtext(1, " Final Payload ");
|
|
498
503
|
} }
|
|
499
|
-
function
|
|
500
|
-
i0.ɵɵelement(0, "mj-code-editor",
|
|
504
|
+
function MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_106_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
505
|
+
i0.ɵɵelement(0, "mj-code-editor", 69);
|
|
501
506
|
} if (rf & 2) {
|
|
502
507
|
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
503
508
|
i0.ɵɵproperty("ngModel", ctx_r0.parsedFinalPayload)("language", "json")("readonly", true);
|
|
504
509
|
} }
|
|
505
|
-
function
|
|
506
|
-
i0.ɵɵelementStart(0, "div",
|
|
507
|
-
i0.ɵɵelement(1, "i",
|
|
510
|
+
function MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_106_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
511
|
+
i0.ɵɵelementStart(0, "div", 70);
|
|
512
|
+
i0.ɵɵelement(1, "i", 44);
|
|
508
513
|
i0.ɵɵtext(2, " Loading final payload data... ");
|
|
509
514
|
i0.ɵɵelementEnd();
|
|
510
515
|
} }
|
|
511
|
-
function
|
|
512
|
-
i0.ɵɵelementStart(0, "mj-accordion-panel",
|
|
513
|
-
i0.ɵɵtemplate(1,
|
|
514
|
-
i0.ɵɵelementStart(2, "div",
|
|
515
|
-
i0.ɵɵconditionalCreate(3,
|
|
516
|
+
function MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_106_Template(rf, ctx) { if (rf & 1) {
|
|
517
|
+
i0.ɵɵelementStart(0, "mj-accordion-panel", 56);
|
|
518
|
+
i0.ɵɵtemplate(1, MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_106_ng_template_1_Template, 2, 0, "ng-template", 57);
|
|
519
|
+
i0.ɵɵelementStart(2, "div", 68);
|
|
520
|
+
i0.ɵɵconditionalCreate(3, MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_106_Conditional_3_Template, 1, 3, "mj-code-editor", 69)(4, MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_106_Conditional_4_Template, 3, 0, "div", 70);
|
|
516
521
|
i0.ɵɵelementEnd()();
|
|
517
522
|
} if (rf & 2) {
|
|
518
523
|
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
@@ -520,27 +525,27 @@ function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_106_Templa
|
|
|
520
525
|
i0.ɵɵadvance(3);
|
|
521
526
|
i0.ɵɵconditional(ctx_r0.isParsingComplete ? 3 : 4);
|
|
522
527
|
} }
|
|
523
|
-
function
|
|
524
|
-
i0.ɵɵelement(0, "i",
|
|
528
|
+
function MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_107_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
529
|
+
i0.ɵɵelement(0, "i", 77);
|
|
525
530
|
i0.ɵɵtext(1, " Payload Diff ");
|
|
526
531
|
} }
|
|
527
|
-
function
|
|
528
|
-
i0.ɵɵelement(0, "mj-deep-diff",
|
|
532
|
+
function MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_107_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
533
|
+
i0.ɵɵelement(0, "mj-deep-diff", 76);
|
|
529
534
|
} if (rf & 2) {
|
|
530
535
|
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
531
536
|
i0.ɵɵproperty("oldValue", ctx_r0.startingPayloadObject)("newValue", ctx_r0.finalPayloadObject)("title", "")("showSummary", true)("showUnchanged", false)("expandAll", false)("maxDepth", 10)("maxStringLength", 200)("treatNullAsUndefined", true);
|
|
532
537
|
} }
|
|
533
|
-
function
|
|
534
|
-
i0.ɵɵelementStart(0, "div",
|
|
535
|
-
i0.ɵɵelement(1, "i",
|
|
538
|
+
function MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_107_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
539
|
+
i0.ɵɵelementStart(0, "div", 70);
|
|
540
|
+
i0.ɵɵelement(1, "i", 44);
|
|
536
541
|
i0.ɵɵtext(2, " Loading payload diff... ");
|
|
537
542
|
i0.ɵɵelementEnd();
|
|
538
543
|
} }
|
|
539
|
-
function
|
|
540
|
-
i0.ɵɵelementStart(0, "mj-accordion-panel",
|
|
541
|
-
i0.ɵɵtemplate(1,
|
|
542
|
-
i0.ɵɵelementStart(2, "div",
|
|
543
|
-
i0.ɵɵconditionalCreate(3,
|
|
544
|
+
function MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_107_Template(rf, ctx) { if (rf & 1) {
|
|
545
|
+
i0.ɵɵelementStart(0, "mj-accordion-panel", 56);
|
|
546
|
+
i0.ɵɵtemplate(1, MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_107_ng_template_1_Template, 2, 0, "ng-template", 57);
|
|
547
|
+
i0.ɵɵelementStart(2, "div", 75);
|
|
548
|
+
i0.ɵɵconditionalCreate(3, MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_107_Conditional_3_Template, 1, 9, "mj-deep-diff", 76)(4, MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_107_Conditional_4_Template, 3, 0, "div", 70);
|
|
544
549
|
i0.ɵɵelementEnd()();
|
|
545
550
|
} if (rf & 2) {
|
|
546
551
|
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
@@ -548,125 +553,125 @@ function MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_107_Templa
|
|
|
548
553
|
i0.ɵɵadvance(3);
|
|
549
554
|
i0.ɵɵconditional(ctx_r0.isParsingComplete ? 3 : 4);
|
|
550
555
|
} }
|
|
551
|
-
function
|
|
556
|
+
function MJAIAgentRunFormComponentExtended_Conditional_57_Template(rf, ctx) { if (rf & 1) {
|
|
552
557
|
const _r8 = i0.ɵɵgetCurrentView();
|
|
553
|
-
i0.ɵɵelementStart(0, "div", 35)(1, "mj-accordion-panel",
|
|
554
|
-
i0.ɵɵtemplate(2,
|
|
555
|
-
i0.ɵɵelementStart(3, "div",
|
|
558
|
+
i0.ɵɵelementStart(0, "div", 35)(1, "mj-accordion-panel", 56);
|
|
559
|
+
i0.ɵɵtemplate(2, MJAIAgentRunFormComponentExtended_Conditional_57_ng_template_2_Template, 2, 0, "ng-template", 57);
|
|
560
|
+
i0.ɵɵelementStart(3, "div", 58)(4, "div", 59)(5, "label");
|
|
556
561
|
i0.ɵɵtext(6, "Agent");
|
|
557
562
|
i0.ɵɵelementEnd();
|
|
558
563
|
i0.ɵɵelementStart(7, "span")(8, "a", 36);
|
|
559
|
-
i0.ɵɵlistener("click", function
|
|
564
|
+
i0.ɵɵlistener("click", function MJAIAgentRunFormComponentExtended_Conditional_57_Template_a_click_8_listener() { i0.ɵɵrestoreView(_r8); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.openEntityRecord("MJ: AI Agents", ctx_r0.record.AgentID)); });
|
|
560
565
|
i0.ɵɵtext(9);
|
|
561
566
|
i0.ɵɵelementEnd()()();
|
|
562
|
-
i0.ɵɵelementStart(10, "div",
|
|
567
|
+
i0.ɵɵelementStart(10, "div", 59)(11, "label");
|
|
563
568
|
i0.ɵɵtext(12, "Parent Run ID");
|
|
564
569
|
i0.ɵɵelementEnd();
|
|
565
570
|
i0.ɵɵelementStart(13, "span");
|
|
566
|
-
i0.ɵɵconditionalCreate(14,
|
|
567
|
-
i0.ɵɵconditionalCreate(15,
|
|
571
|
+
i0.ɵɵconditionalCreate(14, MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_14_Template, 2, 1, "a", 60);
|
|
572
|
+
i0.ɵɵconditionalCreate(15, MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_15_Template, 2, 0, "span");
|
|
568
573
|
i0.ɵɵelementEnd()();
|
|
569
|
-
i0.ɵɵelementStart(16, "div",
|
|
574
|
+
i0.ɵɵelementStart(16, "div", 59)(17, "label");
|
|
570
575
|
i0.ɵɵtext(18, "Last Run ID");
|
|
571
576
|
i0.ɵɵelementEnd();
|
|
572
577
|
i0.ɵɵelementStart(19, "span");
|
|
573
|
-
i0.ɵɵconditionalCreate(20,
|
|
574
|
-
i0.ɵɵconditionalCreate(21,
|
|
578
|
+
i0.ɵɵconditionalCreate(20, MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_20_Template, 2, 1, "a", 60);
|
|
579
|
+
i0.ɵɵconditionalCreate(21, MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_21_Template, 2, 0, "span");
|
|
575
580
|
i0.ɵɵelementEnd()();
|
|
576
|
-
i0.ɵɵelementStart(22, "div",
|
|
581
|
+
i0.ɵɵelementStart(22, "div", 59)(23, "label");
|
|
577
582
|
i0.ɵɵtext(24, "Conversation ID");
|
|
578
583
|
i0.ɵɵelementEnd();
|
|
579
584
|
i0.ɵɵelementStart(25, "span");
|
|
580
|
-
i0.ɵɵconditionalCreate(26,
|
|
581
|
-
i0.ɵɵconditionalCreate(27,
|
|
585
|
+
i0.ɵɵconditionalCreate(26, MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_26_Template, 2, 1, "a", 60);
|
|
586
|
+
i0.ɵɵconditionalCreate(27, MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_27_Template, 2, 0, "span");
|
|
582
587
|
i0.ɵɵelementEnd()();
|
|
583
|
-
i0.ɵɵelementStart(28, "div",
|
|
588
|
+
i0.ɵɵelementStart(28, "div", 59)(29, "label");
|
|
584
589
|
i0.ɵɵtext(30, "User");
|
|
585
590
|
i0.ɵɵelementEnd();
|
|
586
591
|
i0.ɵɵelementStart(31, "span");
|
|
587
|
-
i0.ɵɵconditionalCreate(32,
|
|
588
|
-
i0.ɵɵconditionalCreate(33,
|
|
592
|
+
i0.ɵɵconditionalCreate(32, MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_32_Template, 2, 1, "a", 60);
|
|
593
|
+
i0.ɵɵconditionalCreate(33, MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_33_Template, 2, 0, "span");
|
|
589
594
|
i0.ɵɵelementEnd()()()();
|
|
590
|
-
i0.ɵɵelementStart(34, "mj-accordion-panel",
|
|
591
|
-
i0.ɵɵtemplate(35,
|
|
592
|
-
i0.ɵɵelementStart(36, "div",
|
|
595
|
+
i0.ɵɵelementStart(34, "mj-accordion-panel", 56);
|
|
596
|
+
i0.ɵɵtemplate(35, MJAIAgentRunFormComponentExtended_Conditional_57_ng_template_35_Template, 2, 0, "ng-template", 57);
|
|
597
|
+
i0.ɵɵelementStart(36, "div", 58)(37, "div", 59)(38, "label");
|
|
593
598
|
i0.ɵɵtext(39, "Override Model");
|
|
594
599
|
i0.ɵɵelementEnd();
|
|
595
600
|
i0.ɵɵelementStart(40, "span");
|
|
596
|
-
i0.ɵɵconditionalCreate(41,
|
|
597
|
-
i0.ɵɵconditionalCreate(42,
|
|
601
|
+
i0.ɵɵconditionalCreate(41, MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_41_Template, 2, 1, "a", 60);
|
|
602
|
+
i0.ɵɵconditionalCreate(42, MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_42_Template, 2, 0, "span");
|
|
598
603
|
i0.ɵɵelementEnd()();
|
|
599
|
-
i0.ɵɵelementStart(43, "div",
|
|
604
|
+
i0.ɵɵelementStart(43, "div", 59)(44, "label");
|
|
600
605
|
i0.ɵɵtext(45, "Override Vendor");
|
|
601
606
|
i0.ɵɵelementEnd();
|
|
602
607
|
i0.ɵɵelementStart(46, "span");
|
|
603
|
-
i0.ɵɵconditionalCreate(47,
|
|
604
|
-
i0.ɵɵconditionalCreate(48,
|
|
608
|
+
i0.ɵɵconditionalCreate(47, MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_47_Template, 2, 1, "a", 60);
|
|
609
|
+
i0.ɵɵconditionalCreate(48, MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_48_Template, 2, 0, "span");
|
|
605
610
|
i0.ɵɵelementEnd()();
|
|
606
|
-
i0.ɵɵelementStart(49, "div",
|
|
611
|
+
i0.ɵɵelementStart(49, "div", 59)(50, "label");
|
|
607
612
|
i0.ɵɵtext(51, "Verbose Logging");
|
|
608
613
|
i0.ɵɵelementEnd();
|
|
609
614
|
i0.ɵɵelementStart(52, "span");
|
|
610
615
|
i0.ɵɵtext(53);
|
|
611
616
|
i0.ɵɵelementEnd()()()();
|
|
612
|
-
i0.ɵɵelementStart(54, "mj-accordion-panel",
|
|
613
|
-
i0.ɵɵtemplate(55,
|
|
614
|
-
i0.ɵɵelementStart(56, "div",
|
|
617
|
+
i0.ɵɵelementStart(54, "mj-accordion-panel", 56);
|
|
618
|
+
i0.ɵɵtemplate(55, MJAIAgentRunFormComponentExtended_Conditional_57_ng_template_55_Template, 2, 0, "ng-template", 57);
|
|
619
|
+
i0.ɵɵelementStart(56, "div", 58)(57, "div", 59)(58, "label");
|
|
615
620
|
i0.ɵɵtext(59, "Status");
|
|
616
621
|
i0.ɵɵelementEnd();
|
|
617
622
|
i0.ɵɵelementStart(60, "span", 18);
|
|
618
623
|
i0.ɵɵtext(61);
|
|
619
624
|
i0.ɵɵelementEnd()();
|
|
620
|
-
i0.ɵɵelementStart(62, "div",
|
|
625
|
+
i0.ɵɵelementStart(62, "div", 59)(63, "label");
|
|
621
626
|
i0.ɵɵtext(64, "Success");
|
|
622
627
|
i0.ɵɵelementEnd();
|
|
623
|
-
i0.ɵɵconditionalCreate(65,
|
|
628
|
+
i0.ɵɵconditionalCreate(65, MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_65_Template, 2, 0, "span")(66, MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_66_Template, 2, 0, "span", 61)(67, MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_67_Template, 2, 0, "span", 62);
|
|
624
629
|
i0.ɵɵelementEnd();
|
|
625
|
-
i0.ɵɵconditionalCreate(68,
|
|
626
|
-
i0.ɵɵconditionalCreate(69,
|
|
630
|
+
i0.ɵɵconditionalCreate(68, MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_68_Template, 5, 1, "div", 63);
|
|
631
|
+
i0.ɵɵconditionalCreate(69, MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_69_Template, 5, 1, "div", 63);
|
|
627
632
|
i0.ɵɵelementEnd()();
|
|
628
|
-
i0.ɵɵelementStart(70, "mj-accordion-panel",
|
|
629
|
-
i0.ɵɵtemplate(71,
|
|
630
|
-
i0.ɵɵelementStart(72, "div",
|
|
633
|
+
i0.ɵɵelementStart(70, "mj-accordion-panel", 56);
|
|
634
|
+
i0.ɵɵtemplate(71, MJAIAgentRunFormComponentExtended_Conditional_57_ng_template_71_Template, 2, 0, "ng-template", 57);
|
|
635
|
+
i0.ɵɵelementStart(72, "div", 58)(73, "div", 59)(74, "label");
|
|
631
636
|
i0.ɵɵtext(75, "Total Tokens Used");
|
|
632
637
|
i0.ɵɵelementEnd();
|
|
633
638
|
i0.ɵɵelementStart(76, "span");
|
|
634
639
|
i0.ɵɵtext(77);
|
|
635
640
|
i0.ɵɵpipe(78, "number");
|
|
636
641
|
i0.ɵɵelementEnd()();
|
|
637
|
-
i0.ɵɵelementStart(79, "div",
|
|
642
|
+
i0.ɵɵelementStart(79, "div", 59)(80, "label");
|
|
638
643
|
i0.ɵɵtext(81, "Prompt Tokens");
|
|
639
644
|
i0.ɵɵelementEnd();
|
|
640
645
|
i0.ɵɵelementStart(82, "span");
|
|
641
646
|
i0.ɵɵtext(83);
|
|
642
647
|
i0.ɵɵpipe(84, "number");
|
|
643
648
|
i0.ɵɵelementEnd()();
|
|
644
|
-
i0.ɵɵelementStart(85, "div",
|
|
649
|
+
i0.ɵɵelementStart(85, "div", 59)(86, "label");
|
|
645
650
|
i0.ɵɵtext(87, "Completion Tokens");
|
|
646
651
|
i0.ɵɵelementEnd();
|
|
647
652
|
i0.ɵɵelementStart(88, "span");
|
|
648
653
|
i0.ɵɵtext(89);
|
|
649
654
|
i0.ɵɵpipe(90, "number");
|
|
650
655
|
i0.ɵɵelementEnd()();
|
|
651
|
-
i0.ɵɵelementStart(91, "div",
|
|
656
|
+
i0.ɵɵelementStart(91, "div", 59)(92, "label");
|
|
652
657
|
i0.ɵɵtext(93, "Total Cost");
|
|
653
658
|
i0.ɵɵelementEnd();
|
|
654
659
|
i0.ɵɵelementStart(94, "span");
|
|
655
660
|
i0.ɵɵtext(95);
|
|
656
661
|
i0.ɵɵpipe(96, "number");
|
|
657
662
|
i0.ɵɵelementEnd()();
|
|
658
|
-
i0.ɵɵelementStart(97, "div",
|
|
663
|
+
i0.ɵɵelementStart(97, "div", 59)(98, "label");
|
|
659
664
|
i0.ɵɵtext(99, "Total Prompt Iterations");
|
|
660
665
|
i0.ɵɵelementEnd();
|
|
661
666
|
i0.ɵɵelementStart(100, "span");
|
|
662
667
|
i0.ɵɵtext(101);
|
|
663
668
|
i0.ɵɵpipe(102, "number");
|
|
664
669
|
i0.ɵɵelementEnd()()()();
|
|
665
|
-
i0.ɵɵconditionalCreate(103,
|
|
666
|
-
i0.ɵɵconditionalCreate(104,
|
|
667
|
-
i0.ɵɵconditionalCreate(105,
|
|
668
|
-
i0.ɵɵconditionalCreate(106,
|
|
669
|
-
i0.ɵɵconditionalCreate(107,
|
|
670
|
+
i0.ɵɵconditionalCreate(103, MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_103_Template, 5, 2, "mj-accordion-panel", 56);
|
|
671
|
+
i0.ɵɵconditionalCreate(104, MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_104_Template, 5, 2, "mj-accordion-panel", 56);
|
|
672
|
+
i0.ɵɵconditionalCreate(105, MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_105_Template, 5, 2, "mj-accordion-panel", 56);
|
|
673
|
+
i0.ɵɵconditionalCreate(106, MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_106_Template, 5, 2, "mj-accordion-panel", 56);
|
|
674
|
+
i0.ɵɵconditionalCreate(107, MJAIAgentRunFormComponentExtended_Conditional_57_Conditional_107_Template, 5, 2, "mj-accordion-panel", 56);
|
|
670
675
|
i0.ɵɵelementEnd();
|
|
671
676
|
} if (rf & 2) {
|
|
672
677
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
@@ -965,7 +970,7 @@ let MJAIAgentRunFormComponentExtended = class MJAIAgentRunFormComponentExtended
|
|
|
965
970
|
}
|
|
966
971
|
changeTab(tab) {
|
|
967
972
|
this.activeTab = tab;
|
|
968
|
-
// Lazy load
|
|
973
|
+
// Lazy load the Visualization (playable + static flow) view on first access
|
|
969
974
|
if (tab === 'visualization' && !this.visualizationLoaded) {
|
|
970
975
|
this.visualizationLoaded = true;
|
|
971
976
|
this.cdr.markForCheck();
|
|
@@ -1416,78 +1421,79 @@ let MJAIAgentRunFormComponentExtended = class MJAIAgentRunFormComponentExtended
|
|
|
1416
1421
|
}
|
|
1417
1422
|
static { this.ɵfac = /*@__PURE__*/ (() => { let ɵMJAIAgentRunFormComponentExtended_BaseFactory; return function MJAIAgentRunFormComponentExtended_Factory(__ngFactoryType__) { return (ɵMJAIAgentRunFormComponentExtended_BaseFactory || (ɵMJAIAgentRunFormComponentExtended_BaseFactory = i0.ɵɵgetInheritedFactory(MJAIAgentRunFormComponentExtended)))(__ngFactoryType__ || MJAIAgentRunFormComponentExtended); }; })(); }
|
|
1418
1423
|
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MJAIAgentRunFormComponentExtended, selectors: [["mj-ai-agent-run-form"]], viewQuery: function MJAIAgentRunFormComponentExtended_Query(rf, ctx) { if (rf & 1) {
|
|
1419
|
-
i0.ɵɵviewQuery(AIAgentRunTimelineComponent, 5)(AIAgentRunAnalyticsComponent, 5)
|
|
1424
|
+
i0.ɵɵviewQuery(AIAgentRunTimelineComponent, 5)(AIAgentRunAnalyticsComponent, 5);
|
|
1420
1425
|
} if (rf & 2) {
|
|
1421
1426
|
let _t;
|
|
1422
1427
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.timelineComponent = _t.first);
|
|
1423
1428
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.analyticsComponent = _t.first);
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
i0.ɵɵ
|
|
1427
|
-
i0.ɵɵconditionalCreate(
|
|
1428
|
-
i0.ɵɵconditionalCreate(
|
|
1429
|
-
i0.ɵɵconditionalCreate(8, MJAIAgentRunFormComponentExtended_Conditional_8_Template, 1, 0, "i", 10);
|
|
1429
|
+
} }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 58, vars: 34, consts: [["analyticsComponent", ""], [1, "record-form-container", "ai-agent-run-form"], [1, "record-form"], [1, "header"], [1, "header-content"], [1, "header-left"], [1, "icon-wrapper"], [1, "agent-logo", 3, "src", "alt"], [1, "fas", 3, "ngClass"], [1, "fas", "fa-robot"], [1, "header-info"], [1, "meta-info"], [1, "agent-name"], [1, "run-id"], [1, "parent-run"], ["title", "Open conversation in Chat app", 1, "conversation-pill"], [1, "header-right"], ["title", "This run executed in Plan Mode \u2014 the agent presented a plan for human approval before executing actions or sub-agents", 1, "plan-mode-badge"], [1, "status-badge"], [1, "header-actions"], ["title", "Refresh", 1, "btn-icon", 3, "click"], [1, "fas", "fa-sync-alt"], [1, "header-stats"], [1, "stat"], [1, "label"], [1, "value"], [1, "configuration-bar"], [1, "tabs"], [1, "tab", 3, "click"], [1, "fas", "fa-stream"], [1, "fas", "fa-diagram-project"], [1, "fas", "fa-chart-line"], [1, "fas", "fa-info-circle"], [1, "content-area"], [1, "tab-content", 2, "height", "100%"], [1, "tab-content"], ["href", "javascript:void(0)", 1, "entity-link", 3, "click"], [1, "fas", "fa-level-up-alt"], [1, "parent-link", 3, "click"], ["title", "Open conversation in Chat app", 1, "conversation-pill", 3, "click"], [1, "fas", "fa-comments"], [1, "fas", "fa-external-link-alt", "pill-action"], [1, "fas", "fa-clipboard-check"], [1, "value", "loading"], [1, "fas", "fa-spinner", "fa-spin"], [1, "config-item"], [1, "fas", "fa-cog"], [1, "config-content"], [1, "config-label"], [1, "config-value"], ["direction", "horizontal", 2, "height", "100%"], [3, "size"], [3, "itemSelected", "navigateToEntity", "aiAgentRunId", "dataHelper"], [3, "closePanel", "navigateToActionLog", "copyToClipboard", "selectedTimelineItem"], [3, "aiAgentRunId", "dataHelper", "agentName", "runStatus", "agentIconClass", "agentLogoUrl"], [3, "agentRunId"], [3, "Expanded"], ["mjAccordionTitle", ""], [1, "details-grid"], [1, "detail-item"], ["href", "javascript:void(0)", 1, "entity-link"], [1, "success"], [1, "error-message"], [1, "detail-item", "full-width"], [1, "fas", "fa-cogs"], [1, "fas", "fa-tasks"], [1, "message"], [1, "fas", "fa-dollar-sign"], [1, "result-viewer"], [2, "height", "300px", "width", "100%", 3, "ngModel", "language", "readonly"], [2, "padding", "20px", "text-align", "center", "color", "var(--mj-text-muted)"], [1, "fas", "fa-code"], [1, "fas", "fa-upload"], [1, "fas", "fa-database"], [1, "fas", "fa-download"], [2, "padding", "20px", "background", "var(--mj-bg-surface-card)"], [3, "oldValue", "newValue", "title", "showSummary", "showUnchanged", "expandAll", "maxDepth", "maxStringLength", "treatNullAsUndefined"], [1, "fas", "fa-code-compare"]], template: function MJAIAgentRunFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
|
|
1430
|
+
i0.ɵɵelementStart(0, "div", 1)(1, "div", 2)(2, "div", 3)(3, "div", 4)(4, "div", 5)(5, "div", 6);
|
|
1431
|
+
i0.ɵɵconditionalCreate(6, MJAIAgentRunFormComponentExtended_Conditional_6_Template, 1, 2, "img", 7);
|
|
1432
|
+
i0.ɵɵconditionalCreate(7, MJAIAgentRunFormComponentExtended_Conditional_7_Template, 1, 1, "i", 8);
|
|
1433
|
+
i0.ɵɵconditionalCreate(8, MJAIAgentRunFormComponentExtended_Conditional_8_Template, 1, 0, "i", 9);
|
|
1430
1434
|
i0.ɵɵelementEnd();
|
|
1431
|
-
i0.ɵɵelementStart(9, "div",
|
|
1435
|
+
i0.ɵɵelementStart(9, "div", 10)(10, "h2");
|
|
1432
1436
|
i0.ɵɵtext(11, "AI Agent Run");
|
|
1433
1437
|
i0.ɵɵelementEnd();
|
|
1434
|
-
i0.ɵɵelementStart(12, "div",
|
|
1435
|
-
i0.ɵɵconditionalCreate(13, MJAIAgentRunFormComponentExtended_Conditional_13_Template, 3, 1, "span",
|
|
1436
|
-
i0.ɵɵelementStart(14, "span",
|
|
1438
|
+
i0.ɵɵelementStart(12, "div", 11);
|
|
1439
|
+
i0.ɵɵconditionalCreate(13, MJAIAgentRunFormComponentExtended_Conditional_13_Template, 3, 1, "span", 12);
|
|
1440
|
+
i0.ɵɵelementStart(14, "span", 13);
|
|
1437
1441
|
i0.ɵɵtext(15);
|
|
1438
1442
|
i0.ɵɵelementEnd();
|
|
1439
|
-
i0.ɵɵconditionalCreate(16, MJAIAgentRunFormComponentExtended_Conditional_16_Template, 4, 0, "span",
|
|
1440
|
-
i0.ɵɵconditionalCreate(17, MJAIAgentRunFormComponentExtended_Conditional_17_Template, 5, 0, "span",
|
|
1443
|
+
i0.ɵɵconditionalCreate(16, MJAIAgentRunFormComponentExtended_Conditional_16_Template, 4, 0, "span", 14);
|
|
1444
|
+
i0.ɵɵconditionalCreate(17, MJAIAgentRunFormComponentExtended_Conditional_17_Template, 5, 0, "span", 15);
|
|
1441
1445
|
i0.ɵɵelementEnd()()();
|
|
1442
|
-
i0.ɵɵelementStart(18, "div",
|
|
1443
|
-
i0.ɵɵ
|
|
1444
|
-
i0.ɵɵ
|
|
1446
|
+
i0.ɵɵelementStart(18, "div", 16);
|
|
1447
|
+
i0.ɵɵconditionalCreate(19, MJAIAgentRunFormComponentExtended_Conditional_19_Template, 3, 0, "div", 17);
|
|
1448
|
+
i0.ɵɵelementStart(20, "div", 18);
|
|
1449
|
+
i0.ɵɵelement(21, "i", 8);
|
|
1450
|
+
i0.ɵɵtext(22);
|
|
1445
1451
|
i0.ɵɵelementEnd();
|
|
1446
|
-
i0.ɵɵelementStart(
|
|
1447
|
-
i0.ɵɵlistener("click", function
|
|
1448
|
-
i0.ɵɵelement(
|
|
1452
|
+
i0.ɵɵelementStart(23, "div", 19)(24, "button", 20);
|
|
1453
|
+
i0.ɵɵlistener("click", function MJAIAgentRunFormComponentExtended_Template_button_click_24_listener() { return ctx.refreshData(); });
|
|
1454
|
+
i0.ɵɵelement(25, "i", 21);
|
|
1449
1455
|
i0.ɵɵelementEnd()()()();
|
|
1450
|
-
i0.ɵɵelementStart(
|
|
1451
|
-
i0.ɵɵtext(
|
|
1456
|
+
i0.ɵɵelementStart(26, "div", 22)(27, "div", 23)(28, "span", 24);
|
|
1457
|
+
i0.ɵɵtext(29, "Started");
|
|
1452
1458
|
i0.ɵɵelementEnd();
|
|
1453
|
-
i0.ɵɵelementStart(
|
|
1454
|
-
i0.ɵɵtext(
|
|
1455
|
-
i0.ɵɵpipe(
|
|
1459
|
+
i0.ɵɵelementStart(30, "span", 25);
|
|
1460
|
+
i0.ɵɵtext(31);
|
|
1461
|
+
i0.ɵɵpipe(32, "date");
|
|
1456
1462
|
i0.ɵɵelementEnd()();
|
|
1457
|
-
i0.ɵɵconditionalCreate(
|
|
1458
|
-
i0.ɵɵconditionalCreate(
|
|
1459
|
-
i0.ɵɵconditionalCreate(
|
|
1460
|
-
i0.ɵɵconditionalCreate(35, MJAIAgentRunFormComponentExtended_Conditional_35_Template, 5, 2, "div", 23);
|
|
1463
|
+
i0.ɵɵconditionalCreate(33, MJAIAgentRunFormComponentExtended_Conditional_33_Template, 6, 4, "div", 23);
|
|
1464
|
+
i0.ɵɵconditionalCreate(34, MJAIAgentRunFormComponentExtended_Conditional_34_Template, 5, 1, "div", 23);
|
|
1465
|
+
i0.ɵɵconditionalCreate(35, MJAIAgentRunFormComponentExtended_Conditional_35_Template, 5, 5, "div", 23);
|
|
1461
1466
|
i0.ɵɵconditionalCreate(36, MJAIAgentRunFormComponentExtended_Conditional_36_Template, 5, 2, "div", 23);
|
|
1462
|
-
i0.ɵɵconditionalCreate(37, MJAIAgentRunFormComponentExtended_Conditional_37_Template, 5,
|
|
1467
|
+
i0.ɵɵconditionalCreate(37, MJAIAgentRunFormComponentExtended_Conditional_37_Template, 5, 2, "div", 23);
|
|
1468
|
+
i0.ɵɵconditionalCreate(38, MJAIAgentRunFormComponentExtended_Conditional_38_Template, 5, 1, "div", 23);
|
|
1463
1469
|
i0.ɵɵelementEnd();
|
|
1464
|
-
i0.ɵɵconditionalCreate(
|
|
1470
|
+
i0.ɵɵconditionalCreate(39, MJAIAgentRunFormComponentExtended_Conditional_39_Template, 9, 1, "div", 26);
|
|
1465
1471
|
i0.ɵɵelementEnd();
|
|
1466
|
-
i0.ɵɵelementStart(
|
|
1467
|
-
i0.ɵɵlistener("click", function
|
|
1468
|
-
i0.ɵɵelement(
|
|
1469
|
-
i0.ɵɵtext(
|
|
1472
|
+
i0.ɵɵelementStart(40, "div", 27)(41, "button", 28);
|
|
1473
|
+
i0.ɵɵlistener("click", function MJAIAgentRunFormComponentExtended_Template_button_click_41_listener() { return ctx.changeTab("timeline"); });
|
|
1474
|
+
i0.ɵɵelement(42, "i", 29);
|
|
1475
|
+
i0.ɵɵtext(43, " Timeline ");
|
|
1470
1476
|
i0.ɵɵelementEnd();
|
|
1471
|
-
i0.ɵɵelementStart(
|
|
1472
|
-
i0.ɵɵlistener("click", function
|
|
1473
|
-
i0.ɵɵelement(
|
|
1474
|
-
i0.ɵɵtext(
|
|
1477
|
+
i0.ɵɵelementStart(44, "button", 28);
|
|
1478
|
+
i0.ɵɵlistener("click", function MJAIAgentRunFormComponentExtended_Template_button_click_44_listener() { return ctx.changeTab("visualization"); });
|
|
1479
|
+
i0.ɵɵelement(45, "i", 30);
|
|
1480
|
+
i0.ɵɵtext(46, " Visualization ");
|
|
1475
1481
|
i0.ɵɵelementEnd();
|
|
1476
|
-
i0.ɵɵelementStart(
|
|
1477
|
-
i0.ɵɵlistener("click", function
|
|
1478
|
-
i0.ɵɵelement(
|
|
1479
|
-
i0.ɵɵtext(
|
|
1482
|
+
i0.ɵɵelementStart(47, "button", 28);
|
|
1483
|
+
i0.ɵɵlistener("click", function MJAIAgentRunFormComponentExtended_Template_button_click_47_listener() { return ctx.changeTab("analytics"); });
|
|
1484
|
+
i0.ɵɵelement(48, "i", 31);
|
|
1485
|
+
i0.ɵɵtext(49, " Analytics ");
|
|
1480
1486
|
i0.ɵɵelementEnd();
|
|
1481
|
-
i0.ɵɵelementStart(
|
|
1482
|
-
i0.ɵɵlistener("click", function
|
|
1483
|
-
i0.ɵɵelement(
|
|
1484
|
-
i0.ɵɵtext(
|
|
1487
|
+
i0.ɵɵelementStart(50, "button", 28);
|
|
1488
|
+
i0.ɵɵlistener("click", function MJAIAgentRunFormComponentExtended_Template_button_click_50_listener() { return ctx.changeTab("details"); });
|
|
1489
|
+
i0.ɵɵelement(51, "i", 32);
|
|
1490
|
+
i0.ɵɵtext(52, " Details ");
|
|
1485
1491
|
i0.ɵɵelementEnd()();
|
|
1486
|
-
i0.ɵɵelementStart(
|
|
1487
|
-
i0.ɵɵconditionalCreate(
|
|
1488
|
-
i0.ɵɵconditionalCreate(54, MJAIAgentRunFormComponentExtended_Conditional_54_Template, 2, 1, "div", 34);
|
|
1492
|
+
i0.ɵɵelementStart(53, "div", 33);
|
|
1493
|
+
i0.ɵɵconditionalCreate(54, MJAIAgentRunFormComponentExtended_Conditional_54_Template, 5, 4, "div", 34);
|
|
1489
1494
|
i0.ɵɵconditionalCreate(55, MJAIAgentRunFormComponentExtended_Conditional_55_Template, 2, 1, "div", 34);
|
|
1490
|
-
i0.ɵɵconditionalCreate(56, MJAIAgentRunFormComponentExtended_Conditional_56_Template,
|
|
1495
|
+
i0.ɵɵconditionalCreate(56, MJAIAgentRunFormComponentExtended_Conditional_56_Template, 2, 1, "div", 34);
|
|
1496
|
+
i0.ɵɵconditionalCreate(57, MJAIAgentRunFormComponentExtended_Conditional_57_Template, 108, 48, "div", 35);
|
|
1491
1497
|
i0.ɵɵelementEnd()()();
|
|
1492
1498
|
} if (rf & 2) {
|
|
1493
1499
|
i0.ɵɵadvance(6);
|
|
@@ -1505,27 +1511,29 @@ let MJAIAgentRunFormComponentExtended = class MJAIAgentRunFormComponentExtended
|
|
|
1505
1511
|
i0.ɵɵadvance();
|
|
1506
1512
|
i0.ɵɵconditional(ctx.record.ConversationID ? 17 : -1);
|
|
1507
1513
|
i0.ɵɵadvance(2);
|
|
1514
|
+
i0.ɵɵconditional(ctx.record.PlanMode ? 19 : -1);
|
|
1515
|
+
i0.ɵɵadvance();
|
|
1508
1516
|
i0.ɵɵattribute("data-status", ctx.record.Status);
|
|
1509
1517
|
i0.ɵɵadvance();
|
|
1510
1518
|
i0.ɵɵproperty("ngClass", ctx.getStatusIcon(ctx.record.Status || ""));
|
|
1511
1519
|
i0.ɵɵadvance();
|
|
1512
1520
|
i0.ɵɵtextInterpolate1(" ", ctx.record.Status, " ");
|
|
1513
1521
|
i0.ɵɵadvance(9);
|
|
1514
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(
|
|
1522
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(32, 31, ctx.record.StartedAt, "medium"));
|
|
1515
1523
|
i0.ɵɵadvance(2);
|
|
1516
|
-
i0.ɵɵconditional(ctx.record.CompletedAt ? 32 : -1);
|
|
1517
|
-
i0.ɵɵadvance();
|
|
1518
1524
|
i0.ɵɵconditional(ctx.record.CompletedAt ? 33 : -1);
|
|
1519
1525
|
i0.ɵɵadvance();
|
|
1520
|
-
i0.ɵɵconditional(ctx.record.
|
|
1526
|
+
i0.ɵɵconditional(ctx.record.CompletedAt ? 34 : -1);
|
|
1521
1527
|
i0.ɵɵadvance();
|
|
1522
|
-
i0.ɵɵconditional(ctx.
|
|
1528
|
+
i0.ɵɵconditional(ctx.record.Success !== null && ctx.record.CompletedAt !== null ? 35 : -1);
|
|
1523
1529
|
i0.ɵɵadvance();
|
|
1524
|
-
i0.ɵɵconditional(ctx.costMetrics && ctx.costMetrics.
|
|
1530
|
+
i0.ɵɵconditional(ctx.costMetrics && ctx.costMetrics.totalTokensInput + ctx.costMetrics.totalTokensOutput > 0 ? 36 : -1);
|
|
1525
1531
|
i0.ɵɵadvance();
|
|
1526
|
-
i0.ɵɵconditional(ctx.
|
|
1532
|
+
i0.ɵɵconditional(ctx.costMetrics && ctx.costMetrics.totalCost > 0 ? 37 : -1);
|
|
1527
1533
|
i0.ɵɵadvance();
|
|
1528
|
-
i0.ɵɵconditional(ctx.record.
|
|
1534
|
+
i0.ɵɵconditional(ctx.record.EffortLevel ? 38 : -1);
|
|
1535
|
+
i0.ɵɵadvance();
|
|
1536
|
+
i0.ɵɵconditional(ctx.record.ConfigurationID ? 39 : -1);
|
|
1529
1537
|
i0.ɵɵadvance(2);
|
|
1530
1538
|
i0.ɵɵclassProp("active", ctx.activeTab === "timeline");
|
|
1531
1539
|
i0.ɵɵadvance(3);
|
|
@@ -1535,14 +1543,14 @@ let MJAIAgentRunFormComponentExtended = class MJAIAgentRunFormComponentExtended
|
|
|
1535
1543
|
i0.ɵɵadvance(3);
|
|
1536
1544
|
i0.ɵɵclassProp("active", ctx.activeTab === "details");
|
|
1537
1545
|
i0.ɵɵadvance(4);
|
|
1538
|
-
i0.ɵɵconditional(ctx.activeTab === "timeline" ?
|
|
1546
|
+
i0.ɵɵconditional(ctx.activeTab === "timeline" ? 54 : -1);
|
|
1539
1547
|
i0.ɵɵadvance();
|
|
1540
|
-
i0.ɵɵconditional(ctx.activeTab === "visualization" ?
|
|
1548
|
+
i0.ɵɵconditional(ctx.activeTab === "visualization" ? 55 : -1);
|
|
1541
1549
|
i0.ɵɵadvance();
|
|
1542
|
-
i0.ɵɵconditional(ctx.activeTab === "analytics" ?
|
|
1550
|
+
i0.ɵɵconditional(ctx.activeTab === "analytics" ? 56 : -1);
|
|
1543
1551
|
i0.ɵɵadvance();
|
|
1544
|
-
i0.ɵɵconditional(ctx.activeTab === "details" ?
|
|
1545
|
-
} }, dependencies: [i1.NgClass, i2.NgControlStatus, i2.NgModel, i3.MJAccordionPanelComponent, i3.MJAccordionTitleDirective, i4.CodeEditorComponent, i5.DeepDiffComponent, i6.SplitComponent, i6.SplitAreaComponent, i7.AIAgentRunTimelineComponent, i8.AIAgentRunAnalyticsComponent, i9.AIAgentRunVisualizationComponent, i10.AIAgentRunStepDetailComponent, i1.DecimalPipe, i1.DatePipe], styles: [".ai-agent-run-form[_ngcontent-%COMP%] {\n height: 100%;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.record-form-container.ai-agent-run-form[_ngcontent-%COMP%] > .record-form[_ngcontent-%COMP%], \n.ai-agent-run-form[_ngcontent-%COMP%] > .record-form[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n}\n\n\n\n.header[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n padding: 20px;\n box-shadow: var(--mj-shadow-sm);\n flex-shrink: 0;\n}\n\n.header-content[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 16px;\n}\n\n.header-left[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.icon-wrapper[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n background: var(--mj-brand-primary);\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-inverse);\n font-size: 20px;\n overflow: hidden;\n}\n\n.agent-logo[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n.header-info[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 24px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.meta-info[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n margin-top: 4px;\n font-size: 14px;\n color: var(--mj-text-muted);\n}\n\n.parent-run[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.parent-link[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n text-decoration: none;\n cursor: pointer;\n transition: color 0.2s;\n}\n\n.parent-link[_ngcontent-%COMP%]:hover {\n color: var(--mj-status-error);\n text-decoration: underline;\n}\n\n.agent-name[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-secondary);\n}\n\n.run-id[_ngcontent-%COMP%] {\n font-family: monospace;\n font-size: 12px;\n opacity: 0.7;\n}\n\n\n\n.conversation-pill[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 10px;\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n border-radius: 16px;\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-brand-primary);\n cursor: pointer;\n transition: all 0.2s ease;\n white-space: nowrap;\n}\n\n.conversation-pill[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-brand-primary) 40%, transparent);\n transform: translateY(-1px);\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n.conversation-pill[_ngcontent-%COMP%] i[_ngcontent-%COMP%]:first-child {\n font-size: 11px;\n opacity: 0.9;\n}\n\n.conversation-pill[_ngcontent-%COMP%] .pill-action[_ngcontent-%COMP%] {\n font-size: 9px;\n opacity: 0.6;\n transition: opacity 0.2s ease;\n}\n\n.conversation-pill[_ngcontent-%COMP%]:hover .pill-action[_ngcontent-%COMP%] {\n opacity: 1;\n}\n\n.header-right[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.status-badge[_ngcontent-%COMP%] {\n padding: 6px 16px;\n border-radius: 20px;\n font-size: 13px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n}\n\n.status-badge[data-status=\"Running\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-info) 15%, var(--mj-bg-surface));\n color: var(--mj-status-info);\n}\n\n.status-badge[data-status=\"Completed\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.status-badge[data-status=\"Failed\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.status-badge[data-status=\"Cancelled\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n}\n\n.status-badge[data-status=\"Paused\"][_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.status-badge.small[_ngcontent-%COMP%] {\n padding: 4px 12px;\n font-size: 11px;\n}\n\n.header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n.btn-icon[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: var(--mj-text-muted);\n}\n\n.btn-icon[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n color: var(--mj-text-secondary);\n}\n\n.header-stats[_ngcontent-%COMP%] {\n display: flex;\n gap: 24px;\n padding-top: 12px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n\n\n.configuration-bar[_ngcontent-%COMP%] {\n display: flex;\n gap: 24px;\n padding-top: 16px;\n border-top: 1px solid var(--mj-border-default);\n margin-top: 16px;\n}\n\n.config-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.config-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.config-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n\n.config-label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.config-value[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.config-value[_ngcontent-%COMP%] .entity-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-value[_ngcontent-%COMP%] .entity-link[_ngcontent-%COMP%]:hover {\n color: var(--mj-brand-primary-hover);\n text-decoration: underline;\n}\n\n.stat[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.stat[_ngcontent-%COMP%] .label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.stat[_ngcontent-%COMP%] .value[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n}\n\n.stat[_ngcontent-%COMP%] .value.success[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.stat[_ngcontent-%COMP%] .value.error[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n\n\n.tabs[_ngcontent-%COMP%] {\n display: flex;\n border-bottom: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-sunken);\n flex-shrink: 0;\n}\n\n.tab[_ngcontent-%COMP%] {\n padding: 12px 24px;\n border: none;\n background: transparent;\n cursor: pointer;\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-muted);\n display: flex;\n align-items: center;\n gap: 8px;\n transition: all 0.2s ease;\n border-bottom: 3px solid transparent;\n}\n\n.tab[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-secondary);\n background: color-mix(in srgb, var(--mj-text-primary) 2%, var(--mj-bg-surface));\n}\n\n.tab.active[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n border-bottom-color: var(--mj-brand-primary);\n background: var(--mj-bg-surface);\n}\n\n\n\n.content-area[_ngcontent-%COMP%] {\n position: relative;\n flex: 1;\n min-height: 0;\n overflow: auto;\n background: var(--mj-bg-surface);\n}\n\n.tab-content[_ngcontent-%COMP%] {\n height: 100%;\n min-height: 0;\n overflow: auto;\n}\n\n\n\n.tab-content[_ngcontent-%COMP%] mj-accordion-panel[_ngcontent-%COMP%] {\n display: block;\n margin-bottom: 8px;\n}\n\n\n\n.json-detail-pane[_ngcontent-%COMP%] {\n height: 100%;\n display: flex;\n flex-direction: column;\n background: var(--mj-bg-surface-sunken);\n border-left: 1px solid var(--mj-border-default);\n}\n\n.json-pane-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 20px;\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n box-shadow: var(--mj-shadow-sm);\n}\n\n.json-pane-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.json-pane-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 14px;\n}\n\n.json-pane-content[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: auto;\n padding: 16px;\n}\n\n.json-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 20px;\n margin-bottom: 16px;\n flex-wrap: wrap;\n}\n\n.json-meta[_ngcontent-%COMP%] .meta-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.json-meta[_ngcontent-%COMP%] .meta-item[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: 11px;\n text-transform: uppercase;\n color: var(--mj-text-muted);\n font-weight: 600;\n letter-spacing: 0.5px;\n}\n\n.json-meta[_ngcontent-%COMP%] .meta-item[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-primary);\n font-weight: 500;\n}\n\n.action-link[_ngcontent-%COMP%] {\n margin-bottom: 12px;\n}\n\n.action-link[_ngcontent-%COMP%] .btn-link[_ngcontent-%COMP%] {\n background: none;\n border: none;\n color: var(--mj-brand-primary);\n font-size: 14px;\n cursor: pointer;\n padding: 6px 12px;\n border-radius: 4px;\n transition: all 0.2s;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n}\n\n.action-link[_ngcontent-%COMP%] .btn-link[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n color: var(--mj-brand-primary-hover);\n}\n\n.json-viewer[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n background: var(--mj-bg-surface);\n border-radius: 8px;\n border: 1px solid var(--mj-border-default);\n overflow: auto;\n padding: 20px;\n gap: 10px;\n min-height: 0;\n margin-bottom: 45px;\n}\n\n\n.json-toolbar[_ngcontent-%COMP%] {\n display: flex;\n justify-content: flex-end;\n padding: 8px 12px;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n\n\n.timeline-container[_ngcontent-%COMP%] {\n height: 100%;\n overflow-y: auto;\n padding: 20px;\n}\n\n.timeline-container[_ngcontent-%COMP%] > .timeline[_ngcontent-%COMP%] {\n max-width: 900px;\n margin: 0 auto;\n}\n\n.timeline[_ngcontent-%COMP%] {\n position: relative;\n padding-left: 40px;\n}\n\n.timeline[_ngcontent-%COMP%]::before {\n content: '';\n position: absolute;\n left: 20px;\n top: 0;\n bottom: 0;\n width: 2px;\n background: var(--mj-border-default);\n}\n\n.timeline-item[_ngcontent-%COMP%] {\n position: relative;\n margin-bottom: 24px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.timeline-item[_ngcontent-%COMP%]:hover {\n transform: translateX(4px);\n}\n\n.timeline-item.selected[_ngcontent-%COMP%] {\n transform: translateX(8px);\n}\n\n.timeline-item.selected[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n border-color: var(--mj-brand-primary);\n}\n\n.timeline-marker[_ngcontent-%COMP%] {\n position: absolute;\n left: -30px;\n top: 0;\n width: 40px;\n height: 40px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--mj-bg-surface);\n border: 3px solid var(--mj-border-default);\n z-index: 1;\n transition: all 0.2s ease;\n}\n\n.timeline-marker[data-color=\"success\"][_ngcontent-%COMP%] {\n border-color: var(--mj-status-success);\n color: var(--mj-status-success);\n}\n\n.timeline-marker[data-color=\"error\"][_ngcontent-%COMP%] {\n border-color: var(--mj-status-error);\n color: var(--mj-status-error);\n}\n\n.timeline-marker[data-color=\"info\"][_ngcontent-%COMP%] {\n border-color: var(--mj-status-info);\n color: var(--mj-status-info);\n}\n\n.timeline-marker[data-color=\"warning\"][_ngcontent-%COMP%] {\n border-color: var(--mj-status-warning);\n color: var(--mj-status-warning);\n}\n\n.timeline-marker[data-color=\"secondary\"][_ngcontent-%COMP%] {\n border-color: var(--mj-text-muted);\n color: var(--mj-text-muted);\n}\n\n.timeline-marker.small[_ngcontent-%COMP%] {\n width: 28px;\n height: 28px;\n font-size: 12px;\n}\n\n.timeline-content[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n padding: 16px 20px;\n margin-left: 20px;\n box-shadow: var(--mj-shadow-sm);\n transition: all 0.2s ease;\n}\n\n.timeline-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 8px;\n}\n\n.timeline-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.timeline-header[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n}\n\n.timeline-time[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n font-family: monospace;\n}\n\n.timeline-subtitle[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-bottom: 8px;\n}\n\n.timeline-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n.timeline-meta[_ngcontent-%COMP%] .status[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.timeline-meta[_ngcontent-%COMP%] .status[data-status=\"Completed\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.timeline-meta[_ngcontent-%COMP%] .status[data-status=\"Failed\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.timeline-meta[_ngcontent-%COMP%] .status[data-status=\"Running\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-info) 15%, var(--mj-bg-surface));\n color: var(--mj-status-info);\n}\n\n.timeline-meta[_ngcontent-%COMP%] .status[data-status=\"Paused\"][_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.duration[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.timeline-actions[_ngcontent-%COMP%] {\n position: absolute;\n right: 20px;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.btn-link[_ngcontent-%COMP%] {\n background: none;\n border: none;\n color: var(--mj-brand-primary);\n cursor: pointer;\n font-size: 12px;\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 4px 8px;\n border-radius: 4px;\n transition: all 0.2s ease;\n}\n\n.btn-link[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.btn-expand[_ngcontent-%COMP%] {\n width: 24px;\n height: 24px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: var(--mj-text-muted);\n font-size: 12px;\n}\n\n.btn-expand[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n color: var(--mj-text-secondary);\n}\n\n\n\n.timeline-children[_ngcontent-%COMP%] {\n position: relative;\n margin-top: 12px;\n margin-bottom: 12px;\n}\n\n.timeline-children[_ngcontent-%COMP%]::before {\n content: '';\n position: absolute;\n left: -10px;\n top: -12px;\n bottom: 0;\n width: 2px;\n background: var(--mj-border-default);\n}\n\n.child-item[_ngcontent-%COMP%] {\n margin-bottom: 12px;\n}\n\n.child-item[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-default);\n}\n\n\n\n.sub-run-timeline[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 2%, var(--mj-bg-surface));\n border-left: 2px solid color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n margin-left: 20px;\n padding-left: 20px;\n margin-top: 8px;\n margin-bottom: 8px;\n}\n\n.sub-run-item[_ngcontent-%COMP%] .timeline-marker[_ngcontent-%COMP%] {\n border-width: 2px;\n}\n\n.sub-run-item[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] {\n transition: all 0.2s ease;\n}\n\n\n\n.json-detail-pane[_ngcontent-%COMP%] {\n height: 100%;\n display: flex;\n flex-direction: column;\n background: var(--mj-bg-surface);\n border-left: 1px solid var(--mj-border-default);\n}\n\n.json-pane-header[_ngcontent-%COMP%] {\n padding: 16px 20px;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-shrink: 0;\n}\n\n.json-pane-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 16px;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 10px;\n font-weight: 600;\n}\n\n.json-pane-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n}\n\n.json-meta[_ngcontent-%COMP%] {\n padding: 16px 20px;\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n gap: 20px;\n flex-wrap: wrap;\n flex-shrink: 0;\n}\n\n.json-meta[_ngcontent-%COMP%] .meta-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.json-meta[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.json-meta[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-primary);\n font-weight: 500;\n}\n\n.action-link[_ngcontent-%COMP%] {\n padding: 12px 20px;\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.action-link[_ngcontent-%COMP%] .btn-link[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n color: var(--mj-brand-primary);\n text-decoration: none;\n font-size: 14px;\n padding: 8px 12px;\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n border-radius: 4px;\n transition: all 0.2s;\n cursor: pointer;\n}\n\n.action-link[_ngcontent-%COMP%] .btn-link[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-brand-primary) 35%, transparent);\n text-decoration: none;\n}\n\n\n.json-toolbar[_ngcontent-%COMP%] {\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n margin-bottom: 8px;\n}\n\n\n\n.details-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 20px;\n padding: 20px;\n}\n\n.detail-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.detail-item.full-width[_ngcontent-%COMP%] {\n grid-column: 1 / -1;\n}\n\n.detail-item[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.detail-item[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-secondary);\n}\n\n.error-message[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n padding: 12px;\n border-radius: 8px;\n font-size: 13px;\n}\n\n.result-viewer[_ngcontent-%COMP%], \n.state-viewer[_ngcontent-%COMP%] {\n padding: 20px;\n max-height: 450px;\n overflow: auto;\n display: flex;\n flex-direction: column;\n}\n\n.result-viewer[_ngcontent-%COMP%] mj-code-editor[_ngcontent-%COMP%], \n.state-viewer[_ngcontent-%COMP%] mj-code-editor[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n}\n\n\n\n.empty-state[_ngcontent-%COMP%], \n.loading-state[_ngcontent-%COMP%], \n.error-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 60px 20px;\n color: var(--mj-text-muted);\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.loading-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.error-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n opacity: 0.3;\n margin-bottom: 16px;\n}\n\n\n\n@media (max-width: 768px) {\n .header-content[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 16px;\n }\n \n .header-stats[_ngcontent-%COMP%] {\n flex-wrap: wrap;\n }\n \n .json-detail-pane[_ngcontent-%COMP%] {\n width: 100%;\n }\n \n .timeline[_ngcontent-%COMP%] {\n padding-left: 30px;\n }\n \n .timeline-marker[_ngcontent-%COMP%] {\n left: -25px;\n width: 32px;\n height: 32px;\n }\n \n .timeline-content[_ngcontent-%COMP%] {\n margin-left: 10px;\n }\n}\n\n\n\n.entity-link[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n text-decoration: none;\n transition: all 0.2s ease;\n border-bottom: 1px solid transparent;\n display: inline-block;\n}\n\n.entity-link[_ngcontent-%COMP%]:hover {\n color: var(--mj-brand-primary-hover);\n border-bottom-color: var(--mj-brand-primary-hover);\n}\n\n.entity-link[_ngcontent-%COMP%]:active {\n color: var(--mj-brand-primary-hover);\n}\n\n\n\n.detail-pane-tabs[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n margin: 8px 0 0 0;\n border-bottom: 1px solid var(--mj-border-default);\n padding: 0 16px;\n}\n\n.detail-tab[_ngcontent-%COMP%] {\n padding: 10px 16px;\n background: none;\n border: none;\n border-bottom: 3px solid transparent;\n color: var(--mj-text-muted);\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.detail-tab[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-secondary);\n background: color-mix(in srgb, var(--mj-text-primary) 2%, var(--mj-bg-surface));\n}\n\n.detail-tab.active[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.detail-tab[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n\n\n.detail-pane-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n min-height: 0;\n margin-bottom: 35px;\n}\n\n.detail-pane-content.with-tabs[_ngcontent-%COMP%] {\n \n\n margin-top: 0;\n}\n\n\n\n.step-payload-diff[_ngcontent-%COMP%] {\n height: 100%;\n overflow-y: auto;\n padding: 16px;\n}\n\n.step-payload-diff[_ngcontent-%COMP%] mj-deep-diff[_ngcontent-%COMP%] {\n display: block;\n height: 100%;\n}\n\n\n\n.detail-pane-content[_ngcontent-%COMP%]:not(.with-tabs) .json-viewer[_ngcontent-%COMP%] {\n margin-top: 16px;\n}"] }); }
|
|
1552
|
+
i0.ɵɵconditional(ctx.activeTab === "details" ? 57 : -1);
|
|
1553
|
+
} }, dependencies: [i1.NgClass, i2.NgControlStatus, i2.NgModel, i3.MJAccordionPanelComponent, i3.MJAccordionTitleDirective, i4.CodeEditorComponent, i5.DeepDiffComponent, i6.SplitComponent, i6.SplitAreaComponent, i7.AIAgentRunTimelineComponent, i8.AIAgentRunAnalyticsComponent, i9.AIAgentRunStepDetailComponent, i10.AIAgentRunFlowComponent, i1.DecimalPipe, i1.DatePipe], styles: [".ai-agent-run-form[_ngcontent-%COMP%] {\n height: 100%;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.record-form-container.ai-agent-run-form[_ngcontent-%COMP%] > .record-form[_ngcontent-%COMP%], \n.ai-agent-run-form[_ngcontent-%COMP%] > .record-form[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n}\n\n\n\n.header[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n padding: 20px;\n box-shadow: var(--mj-shadow-sm);\n flex-shrink: 0;\n}\n\n.header-content[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 16px;\n}\n\n.header-left[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.icon-wrapper[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n background: var(--mj-brand-primary);\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-inverse);\n font-size: 20px;\n overflow: hidden;\n}\n\n.agent-logo[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n.header-info[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 24px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.meta-info[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n margin-top: 4px;\n font-size: 14px;\n color: var(--mj-text-muted);\n}\n\n.parent-run[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.parent-link[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n text-decoration: none;\n cursor: pointer;\n transition: color 0.2s;\n}\n\n.parent-link[_ngcontent-%COMP%]:hover {\n color: var(--mj-status-error);\n text-decoration: underline;\n}\n\n.agent-name[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-secondary);\n}\n\n.run-id[_ngcontent-%COMP%] {\n font-family: monospace;\n font-size: 12px;\n opacity: 0.7;\n}\n\n\n\n.conversation-pill[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 10px;\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n border-radius: 16px;\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-brand-primary);\n cursor: pointer;\n transition: all 0.2s ease;\n white-space: nowrap;\n}\n\n.conversation-pill[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-brand-primary) 40%, transparent);\n transform: translateY(-1px);\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n.conversation-pill[_ngcontent-%COMP%] i[_ngcontent-%COMP%]:first-child {\n font-size: 11px;\n opacity: 0.9;\n}\n\n.conversation-pill[_ngcontent-%COMP%] .pill-action[_ngcontent-%COMP%] {\n font-size: 9px;\n opacity: 0.6;\n transition: opacity 0.2s ease;\n}\n\n.conversation-pill[_ngcontent-%COMP%]:hover .pill-action[_ngcontent-%COMP%] {\n opacity: 1;\n}\n\n.header-right[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.status-badge[_ngcontent-%COMP%] {\n padding: 6px 16px;\n border-radius: 20px;\n font-size: 13px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n}\n\n.status-badge[data-status=\"Running\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-info) 15%, var(--mj-bg-surface));\n color: var(--mj-status-info);\n}\n\n.status-badge[data-status=\"Completed\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.status-badge[data-status=\"Failed\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.status-badge[data-status=\"Cancelled\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n}\n\n.status-badge[data-status=\"Paused\"][_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.status-badge.small[_ngcontent-%COMP%] {\n padding: 4px 12px;\n font-size: 11px;\n}\n\n\n\n.plan-mode-badge[_ngcontent-%COMP%] {\n padding: 6px 16px;\n border-radius: 20px;\n font-size: 13px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n.btn-icon[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: var(--mj-text-muted);\n}\n\n.btn-icon[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n color: var(--mj-text-secondary);\n}\n\n.header-stats[_ngcontent-%COMP%] {\n display: flex;\n gap: 24px;\n padding-top: 12px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n\n\n.configuration-bar[_ngcontent-%COMP%] {\n display: flex;\n gap: 24px;\n padding-top: 16px;\n border-top: 1px solid var(--mj-border-default);\n margin-top: 16px;\n}\n\n.config-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.config-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.config-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n\n.config-label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.config-value[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.config-value[_ngcontent-%COMP%] .entity-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-value[_ngcontent-%COMP%] .entity-link[_ngcontent-%COMP%]:hover {\n color: var(--mj-brand-primary-hover);\n text-decoration: underline;\n}\n\n.stat[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.stat[_ngcontent-%COMP%] .label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.stat[_ngcontent-%COMP%] .value[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n}\n\n.stat[_ngcontent-%COMP%] .value.success[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.stat[_ngcontent-%COMP%] .value.error[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n\n\n.tabs[_ngcontent-%COMP%] {\n display: flex;\n border-bottom: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-sunken);\n flex-shrink: 0;\n}\n\n.tab[_ngcontent-%COMP%] {\n padding: 12px 24px;\n border: none;\n background: transparent;\n cursor: pointer;\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-muted);\n display: flex;\n align-items: center;\n gap: 8px;\n transition: all 0.2s ease;\n border-bottom: 3px solid transparent;\n}\n\n.tab[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-secondary);\n background: color-mix(in srgb, var(--mj-text-primary) 2%, var(--mj-bg-surface));\n}\n\n.tab.active[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n border-bottom-color: var(--mj-brand-primary);\n background: var(--mj-bg-surface);\n}\n\n\n\n.content-area[_ngcontent-%COMP%] {\n position: relative;\n flex: 1;\n min-height: 0;\n overflow: auto;\n background: var(--mj-bg-surface);\n}\n\n.tab-content[_ngcontent-%COMP%] {\n height: 100%;\n min-height: 0;\n overflow: auto;\n}\n\n\n\n.tab-content[_ngcontent-%COMP%] mj-accordion-panel[_ngcontent-%COMP%] {\n display: block;\n margin-bottom: 8px;\n}\n\n\n\n.json-detail-pane[_ngcontent-%COMP%] {\n height: 100%;\n display: flex;\n flex-direction: column;\n background: var(--mj-bg-surface-sunken);\n border-left: 1px solid var(--mj-border-default);\n}\n\n.json-pane-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 20px;\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n box-shadow: var(--mj-shadow-sm);\n}\n\n.json-pane-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.json-pane-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 14px;\n}\n\n.json-pane-content[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: auto;\n padding: 16px;\n}\n\n.json-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 20px;\n margin-bottom: 16px;\n flex-wrap: wrap;\n}\n\n.json-meta[_ngcontent-%COMP%] .meta-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.json-meta[_ngcontent-%COMP%] .meta-item[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: 11px;\n text-transform: uppercase;\n color: var(--mj-text-muted);\n font-weight: 600;\n letter-spacing: 0.5px;\n}\n\n.json-meta[_ngcontent-%COMP%] .meta-item[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-primary);\n font-weight: 500;\n}\n\n.action-link[_ngcontent-%COMP%] {\n margin-bottom: 12px;\n}\n\n.action-link[_ngcontent-%COMP%] .btn-link[_ngcontent-%COMP%] {\n background: none;\n border: none;\n color: var(--mj-brand-primary);\n font-size: 14px;\n cursor: pointer;\n padding: 6px 12px;\n border-radius: 4px;\n transition: all 0.2s;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n}\n\n.action-link[_ngcontent-%COMP%] .btn-link[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n color: var(--mj-brand-primary-hover);\n}\n\n.json-viewer[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n background: var(--mj-bg-surface);\n border-radius: 8px;\n border: 1px solid var(--mj-border-default);\n overflow: auto;\n padding: 20px;\n gap: 10px;\n min-height: 0;\n margin-bottom: 45px;\n}\n\n\n.json-toolbar[_ngcontent-%COMP%] {\n display: flex;\n justify-content: flex-end;\n padding: 8px 12px;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n\n\n.timeline-container[_ngcontent-%COMP%] {\n height: 100%;\n overflow-y: auto;\n padding: 20px;\n}\n\n.timeline-container[_ngcontent-%COMP%] > .timeline[_ngcontent-%COMP%] {\n max-width: 900px;\n margin: 0 auto;\n}\n\n.timeline[_ngcontent-%COMP%] {\n position: relative;\n padding-left: 40px;\n}\n\n.timeline[_ngcontent-%COMP%]::before {\n content: '';\n position: absolute;\n left: 20px;\n top: 0;\n bottom: 0;\n width: 2px;\n background: var(--mj-border-default);\n}\n\n.timeline-item[_ngcontent-%COMP%] {\n position: relative;\n margin-bottom: 24px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.timeline-item[_ngcontent-%COMP%]:hover {\n transform: translateX(4px);\n}\n\n.timeline-item.selected[_ngcontent-%COMP%] {\n transform: translateX(8px);\n}\n\n.timeline-item.selected[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n border-color: var(--mj-brand-primary);\n}\n\n.timeline-marker[_ngcontent-%COMP%] {\n position: absolute;\n left: -30px;\n top: 0;\n width: 40px;\n height: 40px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--mj-bg-surface);\n border: 3px solid var(--mj-border-default);\n z-index: 1;\n transition: all 0.2s ease;\n}\n\n.timeline-marker[data-color=\"success\"][_ngcontent-%COMP%] {\n border-color: var(--mj-status-success);\n color: var(--mj-status-success);\n}\n\n.timeline-marker[data-color=\"error\"][_ngcontent-%COMP%] {\n border-color: var(--mj-status-error);\n color: var(--mj-status-error);\n}\n\n.timeline-marker[data-color=\"info\"][_ngcontent-%COMP%] {\n border-color: var(--mj-status-info);\n color: var(--mj-status-info);\n}\n\n.timeline-marker[data-color=\"warning\"][_ngcontent-%COMP%] {\n border-color: var(--mj-status-warning);\n color: var(--mj-status-warning);\n}\n\n.timeline-marker[data-color=\"secondary\"][_ngcontent-%COMP%] {\n border-color: var(--mj-text-muted);\n color: var(--mj-text-muted);\n}\n\n.timeline-marker.small[_ngcontent-%COMP%] {\n width: 28px;\n height: 28px;\n font-size: 12px;\n}\n\n.timeline-content[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n padding: 16px 20px;\n margin-left: 20px;\n box-shadow: var(--mj-shadow-sm);\n transition: all 0.2s ease;\n}\n\n.timeline-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 8px;\n}\n\n.timeline-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.timeline-header[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n}\n\n.timeline-time[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n font-family: monospace;\n}\n\n.timeline-subtitle[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-bottom: 8px;\n}\n\n.timeline-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n.timeline-meta[_ngcontent-%COMP%] .status[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.timeline-meta[_ngcontent-%COMP%] .status[data-status=\"Completed\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.timeline-meta[_ngcontent-%COMP%] .status[data-status=\"Failed\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.timeline-meta[_ngcontent-%COMP%] .status[data-status=\"Running\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-info) 15%, var(--mj-bg-surface));\n color: var(--mj-status-info);\n}\n\n.timeline-meta[_ngcontent-%COMP%] .status[data-status=\"Paused\"][_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.duration[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.timeline-actions[_ngcontent-%COMP%] {\n position: absolute;\n right: 20px;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.btn-link[_ngcontent-%COMP%] {\n background: none;\n border: none;\n color: var(--mj-brand-primary);\n cursor: pointer;\n font-size: 12px;\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 4px 8px;\n border-radius: 4px;\n transition: all 0.2s ease;\n}\n\n.btn-link[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.btn-expand[_ngcontent-%COMP%] {\n width: 24px;\n height: 24px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: var(--mj-text-muted);\n font-size: 12px;\n}\n\n.btn-expand[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n color: var(--mj-text-secondary);\n}\n\n\n\n.timeline-children[_ngcontent-%COMP%] {\n position: relative;\n margin-top: 12px;\n margin-bottom: 12px;\n}\n\n.timeline-children[_ngcontent-%COMP%]::before {\n content: '';\n position: absolute;\n left: -10px;\n top: -12px;\n bottom: 0;\n width: 2px;\n background: var(--mj-border-default);\n}\n\n.child-item[_ngcontent-%COMP%] {\n margin-bottom: 12px;\n}\n\n.child-item[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-default);\n}\n\n\n\n.sub-run-timeline[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 2%, var(--mj-bg-surface));\n border-left: 2px solid color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n margin-left: 20px;\n padding-left: 20px;\n margin-top: 8px;\n margin-bottom: 8px;\n}\n\n.sub-run-item[_ngcontent-%COMP%] .timeline-marker[_ngcontent-%COMP%] {\n border-width: 2px;\n}\n\n.sub-run-item[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] {\n transition: all 0.2s ease;\n}\n\n\n\n.json-detail-pane[_ngcontent-%COMP%] {\n height: 100%;\n display: flex;\n flex-direction: column;\n background: var(--mj-bg-surface);\n border-left: 1px solid var(--mj-border-default);\n}\n\n.json-pane-header[_ngcontent-%COMP%] {\n padding: 16px 20px;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-shrink: 0;\n}\n\n.json-pane-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 16px;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 10px;\n font-weight: 600;\n}\n\n.json-pane-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n}\n\n.json-meta[_ngcontent-%COMP%] {\n padding: 16px 20px;\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n gap: 20px;\n flex-wrap: wrap;\n flex-shrink: 0;\n}\n\n.json-meta[_ngcontent-%COMP%] .meta-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.json-meta[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.json-meta[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-primary);\n font-weight: 500;\n}\n\n.action-link[_ngcontent-%COMP%] {\n padding: 12px 20px;\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.action-link[_ngcontent-%COMP%] .btn-link[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n color: var(--mj-brand-primary);\n text-decoration: none;\n font-size: 14px;\n padding: 8px 12px;\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n border-radius: 4px;\n transition: all 0.2s;\n cursor: pointer;\n}\n\n.action-link[_ngcontent-%COMP%] .btn-link[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-brand-primary) 35%, transparent);\n text-decoration: none;\n}\n\n\n.json-toolbar[_ngcontent-%COMP%] {\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n margin-bottom: 8px;\n}\n\n\n\n.details-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 20px;\n padding: 20px;\n}\n\n.detail-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.detail-item.full-width[_ngcontent-%COMP%] {\n grid-column: 1 / -1;\n}\n\n.detail-item[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.detail-item[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-secondary);\n}\n\n.error-message[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n padding: 12px;\n border-radius: 8px;\n font-size: 13px;\n}\n\n.result-viewer[_ngcontent-%COMP%], \n.state-viewer[_ngcontent-%COMP%] {\n padding: 20px;\n max-height: 450px;\n overflow: auto;\n display: flex;\n flex-direction: column;\n}\n\n.result-viewer[_ngcontent-%COMP%] mj-code-editor[_ngcontent-%COMP%], \n.state-viewer[_ngcontent-%COMP%] mj-code-editor[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n}\n\n\n\n.empty-state[_ngcontent-%COMP%], \n.loading-state[_ngcontent-%COMP%], \n.error-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 60px 20px;\n color: var(--mj-text-muted);\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.loading-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.error-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n opacity: 0.3;\n margin-bottom: 16px;\n}\n\n\n\n@media (max-width: 768px) {\n .header-content[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 16px;\n }\n \n .header-stats[_ngcontent-%COMP%] {\n flex-wrap: wrap;\n }\n \n .json-detail-pane[_ngcontent-%COMP%] {\n width: 100%;\n }\n \n .timeline[_ngcontent-%COMP%] {\n padding-left: 30px;\n }\n \n .timeline-marker[_ngcontent-%COMP%] {\n left: -25px;\n width: 32px;\n height: 32px;\n }\n \n .timeline-content[_ngcontent-%COMP%] {\n margin-left: 10px;\n }\n}\n\n\n\n.entity-link[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n text-decoration: none;\n transition: all 0.2s ease;\n border-bottom: 1px solid transparent;\n display: inline-block;\n}\n\n.entity-link[_ngcontent-%COMP%]:hover {\n color: var(--mj-brand-primary-hover);\n border-bottom-color: var(--mj-brand-primary-hover);\n}\n\n.entity-link[_ngcontent-%COMP%]:active {\n color: var(--mj-brand-primary-hover);\n}\n\n\n\n.detail-pane-tabs[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n margin: 8px 0 0 0;\n border-bottom: 1px solid var(--mj-border-default);\n padding: 0 16px;\n}\n\n.detail-tab[_ngcontent-%COMP%] {\n padding: 10px 16px;\n background: none;\n border: none;\n border-bottom: 3px solid transparent;\n color: var(--mj-text-muted);\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.detail-tab[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-secondary);\n background: color-mix(in srgb, var(--mj-text-primary) 2%, var(--mj-bg-surface));\n}\n\n.detail-tab.active[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.detail-tab[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n\n\n.detail-pane-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n min-height: 0;\n margin-bottom: 35px;\n}\n\n.detail-pane-content.with-tabs[_ngcontent-%COMP%] {\n \n\n margin-top: 0;\n}\n\n\n\n.step-payload-diff[_ngcontent-%COMP%] {\n height: 100%;\n overflow-y: auto;\n padding: 16px;\n}\n\n.step-payload-diff[_ngcontent-%COMP%] mj-deep-diff[_ngcontent-%COMP%] {\n display: block;\n height: 100%;\n}\n\n\n\n.detail-pane-content[_ngcontent-%COMP%]:not(.with-tabs) .json-viewer[_ngcontent-%COMP%] {\n margin-top: 16px;\n}"] }); }
|
|
1546
1554
|
};
|
|
1547
1555
|
MJAIAgentRunFormComponentExtended = __decorate([
|
|
1548
1556
|
RegisterClass(BaseFormComponent, 'MJ: AI Agent Runs')
|
|
@@ -1550,16 +1558,13 @@ MJAIAgentRunFormComponentExtended = __decorate([
|
|
|
1550
1558
|
export { MJAIAgentRunFormComponentExtended };
|
|
1551
1559
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MJAIAgentRunFormComponentExtended, [{
|
|
1552
1560
|
type: Component,
|
|
1553
|
-
args: [{ standalone: false, selector: 'mj-ai-agent-run-form', template: "<div class=\"record-form-container ai-agent-run-form\">\n <div class=\"record-form\">\n <!-- Header -->\n <div class=\"header\">\n <div class=\"header-content\">\n <div class=\"header-left\">\n <div class=\"icon-wrapper\">\n @if (agent && agent.LogoURL) {\n <img [src]=\"agent.LogoURL\" [alt]=\"agent.Name || 'Agent'\" class=\"agent-logo\" />\n }\n @if (agent && !agent.LogoURL && agent.IconClass) {\n <i class=\"fas\" [ngClass]=\"agent.IconClass\"></i>\n }\n @if (!agent || (!agent.LogoURL && !agent.IconClass)) {\n <i class=\"fas fa-robot\"></i>\n }\n </div>\n <div class=\"header-info\">\n <h2>AI Agent Run</h2>\n <div class=\"meta-info\">\n @if (agent) {\n <span class=\"agent-name\">\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: AI Agents', record.AgentID)\">\n {{ agent.Name }}\n </a>\n </span>\n }\n <span class=\"run-id\">{{ record.ID }}</span>\n @if (record.ParentRunID) {\n <span class=\"parent-run\">\n <i class=\"fas fa-level-up-alt\"></i>\n <a (click)=\"navigateToParentRun()\" class=\"parent-link\">Parent Run</a>\n </span>\n }\n <!-- Conversation Link Pill -->\n @if (record.ConversationID) {\n <span class=\"conversation-pill\" (click)=\"navigateToConversation()\" title=\"Open conversation in Chat app\">\n <i class=\"fas fa-comments\"></i>\n <span>Conversation</span>\n <i class=\"fas fa-external-link-alt pill-action\"></i>\n </span>\n }\n </div>\n </div>\n </div>\n <div class=\"header-right\">\n <div class=\"status-badge\" [attr.data-status]=\"record.Status\">\n <i class=\"fas\" [ngClass]=\"getStatusIcon(record.Status || '')\"></i>\n {{ record.Status }}\n </div>\n <div class=\"header-actions\">\n <button class=\"btn-icon\" (click)=\"refreshData()\" title=\"Refresh\">\n <i class=\"fas fa-sync-alt\"></i>\n </button>\n </div>\n </div>\n </div>\n <div class=\"header-stats\">\n <div class=\"stat\">\n <span class=\"label\">Started</span>\n <span class=\"value\">{{ record.StartedAt | date:'medium' }}</span>\n </div>\n @if (record.CompletedAt) {\n <div class=\"stat\">\n <span class=\"label\">Completed</span>\n <span class=\"value\">{{ record.CompletedAt | date:'medium' }}</span>\n </div>\n }\n @if (record.CompletedAt) {\n <div class=\"stat\">\n <span class=\"label\">Duration</span>\n <span class=\"value\">{{ calculateDuration(record.StartedAt, record.CompletedAt) }}</span>\n </div>\n }\n @if (record.Success !== null && record.CompletedAt !== null) {\n <div class=\"stat\">\n <span class=\"label\">Result</span>\n <span class=\"value\" [class.success]=\"record.Success\" [class.error]=\"!record.Success\">\n {{ record.Success ? 'Success' : 'Failed' }}\n </span>\n </div>\n }\n @if (costMetrics && (costMetrics.totalTokensInput + costMetrics.totalTokensOutput) > 0) {\n <div class=\"stat\">\n <span class=\"label\">Tokens</span>\n @if (!costMetrics.isLoading) {\n <span class=\"value\">{{ (costMetrics.totalTokensInput + costMetrics.totalTokensOutput) | number:'1.0-0' }}</span>\n }\n @if (costMetrics.isLoading) {\n <span class=\"value loading\"><i class=\"fas fa-spinner fa-spin\"></i></span>\n }\n </div>\n }\n @if (costMetrics && costMetrics.totalCost > 0) {\n <div class=\"stat\">\n <span class=\"label\">Cost</span>\n @if (!costMetrics.isLoading) {\n <span class=\"value\">${{ costMetrics.totalCost | number:'1.2-4' }}</span>\n }\n @if (costMetrics.isLoading) {\n <span class=\"value loading\"><i class=\"fas fa-spinner fa-spin\"></i></span>\n }\n </div>\n }\n @if (record.EffortLevel) {\n <div class=\"stat\">\n <span class=\"label\">Effort Level</span>\n <span class=\"value\">{{ record.EffortLevel }}</span>\n </div>\n }\n </div>\n\n <!-- Configuration Bar (shown below header stats when ConfigurationID exists) -->\n @if (record.ConfigurationID) {\n <div class=\"configuration-bar\">\n <div class=\"config-item\">\n <i class=\"fas fa-cog\"></i>\n <div class=\"config-content\">\n <div class=\"config-label\">Configuration</div>\n <div class=\"config-value\">\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: AI Configurations', record.ConfigurationID)\">\n {{ record.Configuration || 'Unknown' }}\n </a>\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n\n <!-- Tabs -->\n <div class=\"tabs\">\n <button class=\"tab\" [class.active]=\"activeTab === 'timeline'\" (click)=\"changeTab('timeline')\">\n <i class=\"fas fa-stream\"></i> Timeline\n </button>\n <button class=\"tab\" [class.active]=\"activeTab === 'visualization'\" (click)=\"changeTab('visualization')\">\n <i class=\"fas fa-diagram-project\"></i> Visualization\n </button>\n <button class=\"tab\" [class.active]=\"activeTab === 'analytics'\" (click)=\"changeTab('analytics')\">\n <i class=\"fas fa-chart-line\"></i> Analytics\n </button>\n <button class=\"tab\" [class.active]=\"activeTab === 'details'\" (click)=\"changeTab('details')\">\n <i class=\"fas fa-info-circle\"></i> Details\n </button>\n </div>\n\n <!-- Content -->\n <div class=\"content-area\">\n <!-- Timeline Tab -->\n @if (activeTab === 'timeline') {\n <div class=\"tab-content\" style=\"height: 100%;\">\n <as-split direction=\"horizontal\" style=\"height: 100%;\">\n <!-- Timeline Pane -->\n <as-split-area [size]=\"selectedTimelineItem ? 55 : 100\">\n <mj-ai-agent-run-timeline\n [aiAgentRunId]=\"record.ID\"\n [dataHelper]=\"dataHelper\"\n (itemSelected)=\"selectTimelineItem($event)\"\n (navigateToEntity)=\"navigateToEntityRecord($event)\">\n </mj-ai-agent-run-timeline>\n </as-split-area>\n <!-- JSON Detail Pane -->\n @if (selectedTimelineItem) {\n <as-split-area [size]=\"45\">\n <mj-ai-agent-run-step-detail\n [selectedTimelineItem]=\"selectedTimelineItem\"\n (closePanel)=\"closeJsonPanel()\"\n (navigateToActionLog)=\"navigateToActionLog($event)\"\n (copyToClipboard)=\"copyToClipboard($event)\">\n </mj-ai-agent-run-step-detail>\n </as-split-area>\n }\n </as-split>\n </div>\n }\n\n <!-- Visualization Tab -->\n @if (activeTab === 'visualization') {\n <div class=\"tab-content\" style=\"height: 100%;\">\n @if (visualizationLoaded) {\n <mj-ai-agent-run-visualization\n #visualizationComponent\n [aiAgentRunId]=\"record.ID\"\n [dataHelper]=\"dataHelper\"\n >\n </mj-ai-agent-run-visualization>\n }\n </div>\n }\n\n <!-- Analytics Tab -->\n @if (activeTab === 'analytics') {\n <div class=\"tab-content\" style=\"height: 100%;\">\n @if (analyticsLoaded) {\n <mj-ai-agent-run-analytics\n #analyticsComponent\n [agentRunId]=\"record.ID\"\n >\n </mj-ai-agent-run-analytics>\n }\n </div>\n }\n\n <!-- Details Tab -->\n @if (activeTab === 'details') {\n <div class=\"tab-content\">\n <mj-accordion-panel [Expanded]=\"true\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-info-circle\"></i> General Information\n </ng-template>\n <div class=\"details-grid\">\n <div class=\"detail-item\">\n <label>Agent</label>\n <span>\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: AI Agents', record.AgentID)\">\n {{ agent?.Name || 'N/A' }}\n </a>\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Parent Run ID</label>\n <span>\n @if (record.ParentRunID) {\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: AI Agent Runs', record.ParentRunID)\">\n {{ record.ParentRunID }}\n </a>\n }\n @if (!record.ParentRunID) {\n <span>None (Root)</span>\n }\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Last Run ID</label>\n <span>\n @if (record.LastRunID) {\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: AI Agent Runs', record.LastRunID)\">\n {{ record.LastRunID }}\n </a>\n }\n @if (!record.LastRunID) {\n <span>None</span>\n }\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Conversation ID</label>\n <span>\n @if (record.ConversationID) {\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: Conversations', record.ConversationID)\">\n {{ record.ConversationID }}\n </a>\n }\n @if (!record.ConversationID) {\n <span>N/A</span>\n }\n </span>\n </div>\n <div class=\"detail-item\">\n <label>User</label>\n <span>\n @if (record.UserID) {\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: Users', record.UserID)\">\n {{ record.User || 'N/A' }}\n </a>\n }\n @if (!record.UserID) {\n <span>N/A</span>\n }\n </span>\n </div>\n </div>\n </mj-accordion-panel>\n <mj-accordion-panel [Expanded]=\"false\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-cogs\"></i> Execution Settings\n </ng-template>\n <div class=\"details-grid\">\n <div class=\"detail-item\">\n <label>Override Model</label>\n <span>\n @if (record.OverrideModelID) {\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: AI Models', record.OverrideModelID)\">\n {{ record.OverrideModel || 'N/A' }}\n </a>\n }\n @if (!record.OverrideModelID) {\n <span>N/A</span>\n }\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Override Vendor</label>\n <span>\n @if (record.OverrideVendorID) {\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: AI Vendors', record.OverrideVendorID)\">\n {{ record.OverrideVendor || 'N/A' }}\n </a>\n }\n @if (!record.OverrideVendorID) {\n <span>N/A</span>\n }\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Verbose Logging</label>\n <span>{{ record.Verbose ? 'Yes' : 'No' }}</span>\n </div>\n </div>\n </mj-accordion-panel>\n <mj-accordion-panel [Expanded]=\"false\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-tasks\"></i> Execution Status\n </ng-template>\n <div class=\"details-grid\">\n <div class=\"detail-item\">\n <label>Status</label>\n <span class=\"status-badge\" [attr.data-status]=\"record.Status\">\n {{ record.Status }}\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Success</label>\n @if (record.Success === null) {\n <span>In Progress</span>\n }\n @else if (record.Success) {\n <span class=\"success\">Yes</span>\n }\n @else {\n <span class=\"error-message\">No</span>\n }\n </div>\n @if (record.Message) {\n <div class=\"detail-item full-width\">\n <label>Message</label>\n <div class=\"message\">{{ record.Message }}</div>\n </div>\n }\n @if (record.ErrorMessage) {\n <div class=\"detail-item full-width\">\n <label>Error Message</label>\n <div class=\"error-message\">{{ record.ErrorMessage }}</div>\n </div>\n }\n </div>\n </mj-accordion-panel>\n <mj-accordion-panel [Expanded]=\"false\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-dollar-sign\"></i> Usage & Cost\n </ng-template>\n <div class=\"details-grid\">\n <div class=\"detail-item\">\n <label>Total Tokens Used</label>\n <span>{{ record.TotalTokensUsed ? (record.TotalTokensUsed | number:'1.0-0') : 'N/A' }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Prompt Tokens</label>\n <span>{{ record.TotalPromptTokensUsed ? (record.TotalPromptTokensUsed | number:'1.0-0') : 'N/A' }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Completion Tokens</label>\n <span>{{ record.TotalCompletionTokensUsed ? (record.TotalCompletionTokensUsed | number:'1.0-0') : 'N/A' }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Total Cost</label>\n <span>{{ record.TotalCost != null ? ('$' + (record.TotalCost | number:'1.2-4')) : 'N/A' }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Total Prompt Iterations</label>\n <span>{{ record.TotalPromptIterations != null ? (record.TotalPromptIterations | number:'1.0-0') : 'N/A' }}</span>\n </div>\n </div>\n </mj-accordion-panel>\n @if (record.Result) {\n <mj-accordion-panel [Expanded]=\"false\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-code\"></i> Result\n </ng-template>\n <div class=\"result-viewer\">\n @if (isParsingComplete) {\n <mj-code-editor\n [ngModel]=\"parsedResult\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n } @else {\n <div style=\"padding: 20px; text-align: center; color: var(--mj-text-muted);\">\n <i class=\"fas fa-spinner fa-spin\"></i> Loading result data...\n </div>\n }\n </div>\n </mj-accordion-panel>\n }\n @if (record.StartingPayload) {\n <mj-accordion-panel [Expanded]=\"false\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-upload\"></i> Starting Payload\n </ng-template>\n <div class=\"result-viewer\">\n @if (isParsingComplete) {\n <mj-code-editor\n [ngModel]=\"parsedStartingPayload\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n } @else {\n <div style=\"padding: 20px; text-align: center; color: var(--mj-text-muted);\">\n <i class=\"fas fa-spinner fa-spin\"></i> Loading payload data...\n </div>\n }\n </div>\n </mj-accordion-panel>\n }\n @if (record.Data) {\n <mj-accordion-panel [Expanded]=\"false\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-database\"></i> Execution Data\n </ng-template>\n <div class=\"result-viewer\">\n @if (isParsingComplete) {\n <mj-code-editor\n [ngModel]=\"parsedData\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n } @else {\n <div style=\"padding: 20px; text-align: center; color: var(--mj-text-muted);\">\n <i class=\"fas fa-spinner fa-spin\"></i> Loading execution data...\n </div>\n }\n </div>\n </mj-accordion-panel>\n }\n @if (record.FinalPayload) {\n <mj-accordion-panel [Expanded]=\"false\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-download\"></i> Final Payload\n </ng-template>\n <div class=\"result-viewer\">\n @if (isParsingComplete) {\n <mj-code-editor\n [ngModel]=\"parsedFinalPayload\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n } @else {\n <div style=\"padding: 20px; text-align: center; color: var(--mj-text-muted);\">\n <i class=\"fas fa-spinner fa-spin\"></i> Loading final payload data...\n </div>\n }\n </div>\n </mj-accordion-panel>\n }\n @if (showPayloadDiff) {\n <mj-accordion-panel [Expanded]=\"false\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-code-compare\"></i> Payload Diff\n </ng-template>\n <div style=\"padding: 20px; background: var(--mj-bg-surface-card);\">\n @if (isParsingComplete) {\n <mj-deep-diff\n [oldValue]=\"startingPayloadObject\"\n [newValue]=\"finalPayloadObject\"\n [title]=\"''\"\n [showSummary]=\"true\"\n [showUnchanged]=\"false\"\n [expandAll]=\"false\"\n [maxDepth]=\"10\"\n [maxStringLength]=\"200\"\n [treatNullAsUndefined]=\"true\">\n </mj-deep-diff>\n } @else {\n <div style=\"padding: 20px; text-align: center; color: var(--mj-text-muted);\">\n <i class=\"fas fa-spinner fa-spin\"></i> Loading payload diff...\n </div>\n }\n </div>\n </mj-accordion-panel>\n }\n </div>\n }\n</div>\n</div>\n</div>", styles: [".ai-agent-run-form {\n height: 100%;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.record-form-container.ai-agent-run-form > .record-form,\n.ai-agent-run-form > .record-form {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n}\n\n/* Header Styles */\n.header {\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n padding: 20px;\n box-shadow: var(--mj-shadow-sm);\n flex-shrink: 0;\n}\n\n.header-content {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 16px;\n}\n\n.header-left {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.icon-wrapper {\n width: 48px;\n height: 48px;\n background: var(--mj-brand-primary);\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-inverse);\n font-size: 20px;\n overflow: hidden;\n}\n\n.agent-logo {\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n.header-info h2 {\n margin: 0;\n font-size: 24px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.meta-info {\n display: flex;\n gap: 12px;\n margin-top: 4px;\n font-size: 14px;\n color: var(--mj-text-muted);\n}\n\n.parent-run {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.parent-link {\n color: var(--mj-status-error);\n text-decoration: none;\n cursor: pointer;\n transition: color 0.2s;\n}\n\n.parent-link:hover {\n color: var(--mj-status-error);\n text-decoration: underline;\n}\n\n.agent-name {\n font-weight: 500;\n color: var(--mj-text-secondary);\n}\n\n.run-id {\n font-family: monospace;\n font-size: 12px;\n opacity: 0.7;\n}\n\n/* Conversation Link Pill */\n.conversation-pill {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 10px;\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n border-radius: 16px;\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-brand-primary);\n cursor: pointer;\n transition: all 0.2s ease;\n white-space: nowrap;\n}\n\n.conversation-pill:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-brand-primary) 40%, transparent);\n transform: translateY(-1px);\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n.conversation-pill i:first-child {\n font-size: 11px;\n opacity: 0.9;\n}\n\n.conversation-pill .pill-action {\n font-size: 9px;\n opacity: 0.6;\n transition: opacity 0.2s ease;\n}\n\n.conversation-pill:hover .pill-action {\n opacity: 1;\n}\n\n.header-right {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.status-badge {\n padding: 6px 16px;\n border-radius: 20px;\n font-size: 13px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n}\n\n.status-badge[data-status=\"Running\"] {\n background: color-mix(in srgb, var(--mj-status-info) 15%, var(--mj-bg-surface));\n color: var(--mj-status-info);\n}\n\n.status-badge[data-status=\"Completed\"] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.status-badge[data-status=\"Failed\"] {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.status-badge[data-status=\"Cancelled\"] {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n}\n\n.status-badge[data-status=\"Paused\"] {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.status-badge.small {\n padding: 4px 12px;\n font-size: 11px;\n}\n\n.header-actions {\n display: flex;\n gap: 8px;\n}\n\n.btn-icon {\n width: 36px;\n height: 36px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: var(--mj-text-muted);\n}\n\n.btn-icon:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n color: var(--mj-text-secondary);\n}\n\n.header-stats {\n display: flex;\n gap: 24px;\n padding-top: 12px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n/* Configuration Bar */\n.configuration-bar {\n display: flex;\n gap: 24px;\n padding-top: 16px;\n border-top: 1px solid var(--mj-border-default);\n margin-top: 16px;\n}\n\n.config-item {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.config-item > i {\n font-size: 1.2em;\n color: var(--mj-text-muted);\n width: 24px;\n text-align: center;\n}\n\n.config-content {\n display: flex;\n flex-direction: column;\n}\n\n.config-label {\n font-size: 12px;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.config-value {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.config-value .entity-link {\n color: var(--mj-brand-primary);\n text-decoration: none;\n cursor: pointer;\n transition: color 0.2s;\n}\n\n.config-value .entity-link:hover {\n color: var(--mj-brand-primary-hover);\n text-decoration: underline;\n}\n\n.stat {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.stat .label {\n font-size: 12px;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.stat .value {\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n}\n\n.stat .value.success {\n color: var(--mj-status-success);\n}\n\n.stat .value.error {\n color: var(--mj-status-error);\n}\n\n/* Tabs */\n.tabs {\n display: flex;\n border-bottom: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-sunken);\n flex-shrink: 0;\n}\n\n.tab {\n padding: 12px 24px;\n border: none;\n background: transparent;\n cursor: pointer;\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-muted);\n display: flex;\n align-items: center;\n gap: 8px;\n transition: all 0.2s ease;\n border-bottom: 3px solid transparent;\n}\n\n.tab:hover {\n color: var(--mj-text-secondary);\n background: color-mix(in srgb, var(--mj-text-primary) 2%, var(--mj-bg-surface));\n}\n\n.tab.active {\n color: var(--mj-brand-primary);\n border-bottom-color: var(--mj-brand-primary);\n background: var(--mj-bg-surface);\n}\n\n/* Content Area */\n.content-area {\n position: relative;\n flex: 1;\n min-height: 0;\n overflow: auto;\n background: var(--mj-bg-surface);\n}\n\n.tab-content {\n height: 100%;\n min-height: 0;\n overflow: auto;\n}\n\n/* Details tab accordion panels */\n.tab-content mj-accordion-panel {\n display: block;\n margin-bottom: 8px;\n}\n\n/* JSON Detail Pane */\n.json-detail-pane {\n height: 100%;\n display: flex;\n flex-direction: column;\n background: var(--mj-bg-surface-sunken);\n border-left: 1px solid var(--mj-border-default);\n}\n\n.json-pane-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 20px;\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n box-shadow: var(--mj-shadow-sm);\n}\n\n.json-pane-header h3 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.json-pane-header h3 i {\n color: var(--mj-text-muted);\n font-size: 14px;\n}\n\n.json-pane-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: auto;\n padding: 16px;\n}\n\n.json-meta {\n display: flex;\n gap: 20px;\n margin-bottom: 16px;\n flex-wrap: wrap;\n}\n\n.json-meta .meta-item {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.json-meta .meta-item label {\n font-size: 11px;\n text-transform: uppercase;\n color: var(--mj-text-muted);\n font-weight: 600;\n letter-spacing: 0.5px;\n}\n\n.json-meta .meta-item span {\n font-size: 14px;\n color: var(--mj-text-primary);\n font-weight: 500;\n}\n\n.action-link {\n margin-bottom: 12px;\n}\n\n.action-link .btn-link {\n background: none;\n border: none;\n color: var(--mj-brand-primary);\n font-size: 14px;\n cursor: pointer;\n padding: 6px 12px;\n border-radius: 4px;\n transition: all 0.2s;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n}\n\n.action-link .btn-link:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n color: var(--mj-brand-primary-hover);\n}\n\n.json-viewer {\n flex: 1;\n display: flex;\n flex-direction: column;\n background: var(--mj-bg-surface);\n border-radius: 8px;\n border: 1px solid var(--mj-border-default);\n overflow: auto;\n padding: 20px;\n gap: 10px;\n min-height: 0;\n margin-bottom: 45px;\n}\n\n\n.json-toolbar {\n display: flex;\n justify-content: flex-end;\n padding: 8px 12px;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n/* Timeline Styles */\n.timeline-container {\n height: 100%;\n overflow-y: auto;\n padding: 20px;\n}\n\n.timeline-container > .timeline {\n max-width: 900px;\n margin: 0 auto;\n}\n\n.timeline {\n position: relative;\n padding-left: 40px;\n}\n\n.timeline::before {\n content: '';\n position: absolute;\n left: 20px;\n top: 0;\n bottom: 0;\n width: 2px;\n background: var(--mj-border-default);\n}\n\n.timeline-item {\n position: relative;\n margin-bottom: 24px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.timeline-item:hover {\n transform: translateX(4px);\n}\n\n.timeline-item.selected {\n transform: translateX(8px);\n}\n\n.timeline-item.selected .timeline-content {\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n border-color: var(--mj-brand-primary);\n}\n\n.timeline-marker {\n position: absolute;\n left: -30px;\n top: 0;\n width: 40px;\n height: 40px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--mj-bg-surface);\n border: 3px solid var(--mj-border-default);\n z-index: 1;\n transition: all 0.2s ease;\n}\n\n.timeline-marker[data-color=\"success\"] {\n border-color: var(--mj-status-success);\n color: var(--mj-status-success);\n}\n\n.timeline-marker[data-color=\"error\"] {\n border-color: var(--mj-status-error);\n color: var(--mj-status-error);\n}\n\n.timeline-marker[data-color=\"info\"] {\n border-color: var(--mj-status-info);\n color: var(--mj-status-info);\n}\n\n.timeline-marker[data-color=\"warning\"] {\n border-color: var(--mj-status-warning);\n color: var(--mj-status-warning);\n}\n\n.timeline-marker[data-color=\"secondary\"] {\n border-color: var(--mj-text-muted);\n color: var(--mj-text-muted);\n}\n\n.timeline-marker.small {\n width: 28px;\n height: 28px;\n font-size: 12px;\n}\n\n.timeline-content {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n padding: 16px 20px;\n margin-left: 20px;\n box-shadow: var(--mj-shadow-sm);\n transition: all 0.2s ease;\n}\n\n.timeline-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 8px;\n}\n\n.timeline-header h4 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.timeline-header h5 {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n}\n\n.timeline-time {\n font-size: 12px;\n color: var(--mj-text-muted);\n font-family: monospace;\n}\n\n.timeline-subtitle {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-bottom: 8px;\n}\n\n.timeline-meta {\n display: flex;\n gap: 16px;\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n.timeline-meta .status {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.timeline-meta .status[data-status=\"Completed\"] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.timeline-meta .status[data-status=\"Failed\"] {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.timeline-meta .status[data-status=\"Running\"] {\n background: color-mix(in srgb, var(--mj-status-info) 15%, var(--mj-bg-surface));\n color: var(--mj-status-info);\n}\n\n.timeline-meta .status[data-status=\"Paused\"] {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.duration {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.timeline-actions {\n position: absolute;\n right: 20px;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.btn-link {\n background: none;\n border: none;\n color: var(--mj-brand-primary);\n cursor: pointer;\n font-size: 12px;\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 4px 8px;\n border-radius: 4px;\n transition: all 0.2s ease;\n}\n\n.btn-link:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.btn-expand {\n width: 24px;\n height: 24px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: var(--mj-text-muted);\n font-size: 12px;\n}\n\n.btn-expand:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n color: var(--mj-text-secondary);\n}\n\n/* Timeline Children */\n.timeline-children {\n position: relative;\n margin-top: 12px;\n margin-bottom: 12px;\n}\n\n.timeline-children::before {\n content: '';\n position: absolute;\n left: -10px;\n top: -12px;\n bottom: 0;\n width: 2px;\n background: var(--mj-border-default);\n}\n\n.child-item {\n margin-bottom: 12px;\n}\n\n.child-item .timeline-content {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-default);\n}\n\n/* Sub-run timeline styles */\n.sub-run-timeline {\n background: color-mix(in srgb, var(--mj-brand-primary) 2%, var(--mj-bg-surface));\n border-left: 2px solid color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n margin-left: 20px;\n padding-left: 20px;\n margin-top: 8px;\n margin-bottom: 8px;\n}\n\n.sub-run-item .timeline-marker {\n border-width: 2px;\n}\n\n.sub-run-item .timeline-content {\n transition: all 0.2s ease;\n}\n\n/* JSON Detail Pane (in splitter) */\n.json-detail-pane {\n height: 100%;\n display: flex;\n flex-direction: column;\n background: var(--mj-bg-surface);\n border-left: 1px solid var(--mj-border-default);\n}\n\n.json-pane-header {\n padding: 16px 20px;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-shrink: 0;\n}\n\n.json-pane-header h3 {\n margin: 0;\n font-size: 16px;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 10px;\n font-weight: 600;\n}\n\n.json-pane-content {\n flex: 1;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n}\n\n.json-meta {\n padding: 16px 20px;\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n gap: 20px;\n flex-wrap: wrap;\n flex-shrink: 0;\n}\n\n.json-meta .meta-item {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.json-meta label {\n font-size: 11px;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.json-meta span {\n font-size: 14px;\n color: var(--mj-text-primary);\n font-weight: 500;\n}\n\n.action-link {\n padding: 12px 20px;\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.action-link .btn-link {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n color: var(--mj-brand-primary);\n text-decoration: none;\n font-size: 14px;\n padding: 8px 12px;\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n border-radius: 4px;\n transition: all 0.2s;\n cursor: pointer;\n}\n\n.action-link .btn-link:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-brand-primary) 35%, transparent);\n text-decoration: none;\n}\n\n\n.json-toolbar {\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n margin-bottom: 8px;\n}\n\n/* Details Tab */\n.details-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 20px;\n padding: 20px;\n}\n\n.detail-item {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.detail-item.full-width {\n grid-column: 1 / -1;\n}\n\n.detail-item label {\n font-size: 12px;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.detail-item span {\n font-size: 14px;\n color: var(--mj-text-secondary);\n}\n\n.error-message {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n padding: 12px;\n border-radius: 8px;\n font-size: 13px;\n}\n\n.result-viewer,\n.state-viewer {\n padding: 20px;\n max-height: 450px;\n overflow: auto;\n display: flex;\n flex-direction: column;\n}\n\n.result-viewer mj-code-editor,\n.state-viewer mj-code-editor {\n flex: 1;\n min-height: 0;\n}\n\n/* Empty States */\n.empty-state,\n.loading-state,\n.error-state {\n text-align: center;\n padding: 60px 20px;\n color: var(--mj-text-muted);\n}\n\n.empty-state i,\n.loading-state i,\n.error-state i {\n opacity: 0.3;\n margin-bottom: 16px;\n}\n\n/* Responsive */\n@media (max-width: 768px) {\n .header-content {\n flex-direction: column;\n gap: 16px;\n }\n \n .header-stats {\n flex-wrap: wrap;\n }\n \n .json-detail-pane {\n width: 100%;\n }\n \n .timeline {\n padding-left: 30px;\n }\n \n .timeline-marker {\n left: -25px;\n width: 32px;\n height: 32px;\n }\n \n .timeline-content {\n margin-left: 10px;\n }\n}\n\n/* Entity Link Styles */\n.entity-link {\n color: var(--mj-brand-primary);\n text-decoration: none;\n transition: all 0.2s ease;\n border-bottom: 1px solid transparent;\n display: inline-block;\n}\n\n.entity-link:hover {\n color: var(--mj-brand-primary-hover);\n border-bottom-color: var(--mj-brand-primary-hover);\n}\n\n.entity-link:active {\n color: var(--mj-brand-primary-hover);\n}\n\n/* Detail Pane Tabs */\n.detail-pane-tabs {\n display: flex;\n gap: 8px;\n margin: 8px 0 0 0;\n border-bottom: 1px solid var(--mj-border-default);\n padding: 0 16px;\n}\n\n.detail-tab {\n padding: 10px 16px;\n background: none;\n border: none;\n border-bottom: 3px solid transparent;\n color: var(--mj-text-muted);\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.detail-tab:hover {\n color: var(--mj-text-secondary);\n background: color-mix(in srgb, var(--mj-text-primary) 2%, var(--mj-bg-surface));\n}\n\n.detail-tab.active {\n color: var(--mj-brand-primary);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.detail-tab i {\n font-size: 14px;\n}\n\n/* Detail Pane Content */\n.detail-pane-content {\n flex: 1;\n overflow-y: auto;\n min-height: 0;\n margin-bottom: 35px;\n}\n\n.detail-pane-content.with-tabs {\n /* When tabs are shown, content starts right after tabs */\n margin-top: 0;\n}\n\n/* Step Payload Diff */\n.step-payload-diff {\n height: 100%;\n overflow-y: auto;\n padding: 16px;\n}\n\n.step-payload-diff mj-deep-diff {\n display: block;\n height: 100%;\n}\n\n/* JSON Viewer adjustments when no tabs */\n.detail-pane-content:not(.with-tabs) .json-viewer {\n margin-top: 16px;\n}"] }]
|
|
1561
|
+
args: [{ standalone: false, selector: 'mj-ai-agent-run-form', template: "<div class=\"record-form-container ai-agent-run-form\">\n <div class=\"record-form\">\n <!-- Header -->\n <div class=\"header\">\n <div class=\"header-content\">\n <div class=\"header-left\">\n <div class=\"icon-wrapper\">\n @if (agent && agent.LogoURL) {\n <img [src]=\"agent.LogoURL\" [alt]=\"agent.Name || 'Agent'\" class=\"agent-logo\" />\n }\n @if (agent && !agent.LogoURL && agent.IconClass) {\n <i class=\"fas\" [ngClass]=\"agent.IconClass\"></i>\n }\n @if (!agent || (!agent.LogoURL && !agent.IconClass)) {\n <i class=\"fas fa-robot\"></i>\n }\n </div>\n <div class=\"header-info\">\n <h2>AI Agent Run</h2>\n <div class=\"meta-info\">\n @if (agent) {\n <span class=\"agent-name\">\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: AI Agents', record.AgentID)\">\n {{ agent.Name }}\n </a>\n </span>\n }\n <span class=\"run-id\">{{ record.ID }}</span>\n @if (record.ParentRunID) {\n <span class=\"parent-run\">\n <i class=\"fas fa-level-up-alt\"></i>\n <a (click)=\"navigateToParentRun()\" class=\"parent-link\">Parent Run</a>\n </span>\n }\n <!-- Conversation Link Pill -->\n @if (record.ConversationID) {\n <span class=\"conversation-pill\" (click)=\"navigateToConversation()\" title=\"Open conversation in Chat app\">\n <i class=\"fas fa-comments\"></i>\n <span>Conversation</span>\n <i class=\"fas fa-external-link-alt pill-action\"></i>\n </span>\n }\n </div>\n </div>\n </div>\n <div class=\"header-right\">\n @if (record.PlanMode) {\n <div class=\"plan-mode-badge\" title=\"This run executed in Plan Mode \u2014 the agent presented a plan for human approval before executing actions or sub-agents\">\n <i class=\"fas fa-clipboard-check\"></i>\n Plan Mode\n </div>\n }\n <div class=\"status-badge\" [attr.data-status]=\"record.Status\">\n <i class=\"fas\" [ngClass]=\"getStatusIcon(record.Status || '')\"></i>\n {{ record.Status }}\n </div>\n <div class=\"header-actions\">\n <button class=\"btn-icon\" (click)=\"refreshData()\" title=\"Refresh\">\n <i class=\"fas fa-sync-alt\"></i>\n </button>\n </div>\n </div>\n </div>\n <div class=\"header-stats\">\n <div class=\"stat\">\n <span class=\"label\">Started</span>\n <span class=\"value\">{{ record.StartedAt | date:'medium' }}</span>\n </div>\n @if (record.CompletedAt) {\n <div class=\"stat\">\n <span class=\"label\">Completed</span>\n <span class=\"value\">{{ record.CompletedAt | date:'medium' }}</span>\n </div>\n }\n @if (record.CompletedAt) {\n <div class=\"stat\">\n <span class=\"label\">Duration</span>\n <span class=\"value\">{{ calculateDuration(record.StartedAt, record.CompletedAt) }}</span>\n </div>\n }\n @if (record.Success !== null && record.CompletedAt !== null) {\n <div class=\"stat\">\n <span class=\"label\">Result</span>\n <span class=\"value\" [class.success]=\"record.Success\" [class.error]=\"!record.Success\">\n {{ record.Success ? 'Success' : 'Failed' }}\n </span>\n </div>\n }\n @if (costMetrics && (costMetrics.totalTokensInput + costMetrics.totalTokensOutput) > 0) {\n <div class=\"stat\">\n <span class=\"label\">Tokens</span>\n @if (!costMetrics.isLoading) {\n <span class=\"value\">{{ (costMetrics.totalTokensInput + costMetrics.totalTokensOutput) | number:'1.0-0' }}</span>\n }\n @if (costMetrics.isLoading) {\n <span class=\"value loading\"><i class=\"fas fa-spinner fa-spin\"></i></span>\n }\n </div>\n }\n @if (costMetrics && costMetrics.totalCost > 0) {\n <div class=\"stat\">\n <span class=\"label\">Cost</span>\n @if (!costMetrics.isLoading) {\n <span class=\"value\">${{ costMetrics.totalCost | number:'1.2-4' }}</span>\n }\n @if (costMetrics.isLoading) {\n <span class=\"value loading\"><i class=\"fas fa-spinner fa-spin\"></i></span>\n }\n </div>\n }\n @if (record.EffortLevel) {\n <div class=\"stat\">\n <span class=\"label\">Effort Level</span>\n <span class=\"value\">{{ record.EffortLevel }}</span>\n </div>\n }\n </div>\n\n <!-- Configuration Bar (shown below header stats when ConfigurationID exists) -->\n @if (record.ConfigurationID) {\n <div class=\"configuration-bar\">\n <div class=\"config-item\">\n <i class=\"fas fa-cog\"></i>\n <div class=\"config-content\">\n <div class=\"config-label\">Configuration</div>\n <div class=\"config-value\">\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: AI Configurations', record.ConfigurationID)\">\n {{ record.Configuration || 'Unknown' }}\n </a>\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n\n <!-- Tabs -->\n <div class=\"tabs\">\n <button class=\"tab\" [class.active]=\"activeTab === 'timeline'\" (click)=\"changeTab('timeline')\">\n <i class=\"fas fa-stream\"></i> Timeline\n </button>\n <button class=\"tab\" [class.active]=\"activeTab === 'visualization'\" (click)=\"changeTab('visualization')\">\n <i class=\"fas fa-diagram-project\"></i> Visualization\n </button>\n <button class=\"tab\" [class.active]=\"activeTab === 'analytics'\" (click)=\"changeTab('analytics')\">\n <i class=\"fas fa-chart-line\"></i> Analytics\n </button>\n <button class=\"tab\" [class.active]=\"activeTab === 'details'\" (click)=\"changeTab('details')\">\n <i class=\"fas fa-info-circle\"></i> Details\n </button>\n </div>\n\n <!-- Content -->\n <div class=\"content-area\">\n <!-- Timeline Tab -->\n @if (activeTab === 'timeline') {\n <div class=\"tab-content\" style=\"height: 100%;\">\n <as-split direction=\"horizontal\" style=\"height: 100%;\">\n <!-- Timeline Pane -->\n <as-split-area [size]=\"selectedTimelineItem ? 55 : 100\">\n <mj-ai-agent-run-timeline\n [aiAgentRunId]=\"record.ID\"\n [dataHelper]=\"dataHelper\"\n (itemSelected)=\"selectTimelineItem($event)\"\n (navigateToEntity)=\"navigateToEntityRecord($event)\">\n </mj-ai-agent-run-timeline>\n </as-split-area>\n <!-- JSON Detail Pane -->\n @if (selectedTimelineItem) {\n <as-split-area [size]=\"45\">\n <mj-ai-agent-run-step-detail\n [selectedTimelineItem]=\"selectedTimelineItem\"\n (closePanel)=\"closeJsonPanel()\"\n (navigateToActionLog)=\"navigateToActionLog($event)\"\n (copyToClipboard)=\"copyToClipboard($event)\">\n </mj-ai-agent-run-step-detail>\n </as-split-area>\n }\n </as-split>\n </div>\n }\n\n <!-- Visualization Tab (animated flow views + static flowchart) -->\n @if (activeTab === 'visualization') {\n <div class=\"tab-content\" style=\"height: 100%;\">\n @if (visualizationLoaded) {\n <mj-ai-agent-run-flow\n [aiAgentRunId]=\"record.ID\"\n [dataHelper]=\"dataHelper\"\n [agentName]=\"agent?.Name || null\"\n [runStatus]=\"record.Status || ''\"\n [agentIconClass]=\"agent?.IconClass || null\"\n [agentLogoUrl]=\"agent?.LogoURL || null\">\n </mj-ai-agent-run-flow>\n }\n </div>\n }\n\n <!-- Analytics Tab -->\n @if (activeTab === 'analytics') {\n <div class=\"tab-content\" style=\"height: 100%;\">\n @if (analyticsLoaded) {\n <mj-ai-agent-run-analytics\n #analyticsComponent\n [agentRunId]=\"record.ID\"\n >\n </mj-ai-agent-run-analytics>\n }\n </div>\n }\n\n <!-- Details Tab -->\n @if (activeTab === 'details') {\n <div class=\"tab-content\">\n <mj-accordion-panel [Expanded]=\"true\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-info-circle\"></i> General Information\n </ng-template>\n <div class=\"details-grid\">\n <div class=\"detail-item\">\n <label>Agent</label>\n <span>\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: AI Agents', record.AgentID)\">\n {{ agent?.Name || 'N/A' }}\n </a>\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Parent Run ID</label>\n <span>\n @if (record.ParentRunID) {\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: AI Agent Runs', record.ParentRunID)\">\n {{ record.ParentRunID }}\n </a>\n }\n @if (!record.ParentRunID) {\n <span>None (Root)</span>\n }\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Last Run ID</label>\n <span>\n @if (record.LastRunID) {\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: AI Agent Runs', record.LastRunID)\">\n {{ record.LastRunID }}\n </a>\n }\n @if (!record.LastRunID) {\n <span>None</span>\n }\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Conversation ID</label>\n <span>\n @if (record.ConversationID) {\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: Conversations', record.ConversationID)\">\n {{ record.ConversationID }}\n </a>\n }\n @if (!record.ConversationID) {\n <span>N/A</span>\n }\n </span>\n </div>\n <div class=\"detail-item\">\n <label>User</label>\n <span>\n @if (record.UserID) {\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: Users', record.UserID)\">\n {{ record.User || 'N/A' }}\n </a>\n }\n @if (!record.UserID) {\n <span>N/A</span>\n }\n </span>\n </div>\n </div>\n </mj-accordion-panel>\n <mj-accordion-panel [Expanded]=\"false\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-cogs\"></i> Execution Settings\n </ng-template>\n <div class=\"details-grid\">\n <div class=\"detail-item\">\n <label>Override Model</label>\n <span>\n @if (record.OverrideModelID) {\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: AI Models', record.OverrideModelID)\">\n {{ record.OverrideModel || 'N/A' }}\n </a>\n }\n @if (!record.OverrideModelID) {\n <span>N/A</span>\n }\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Override Vendor</label>\n <span>\n @if (record.OverrideVendorID) {\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: AI Vendors', record.OverrideVendorID)\">\n {{ record.OverrideVendor || 'N/A' }}\n </a>\n }\n @if (!record.OverrideVendorID) {\n <span>N/A</span>\n }\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Verbose Logging</label>\n <span>{{ record.Verbose ? 'Yes' : 'No' }}</span>\n </div>\n </div>\n </mj-accordion-panel>\n <mj-accordion-panel [Expanded]=\"false\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-tasks\"></i> Execution Status\n </ng-template>\n <div class=\"details-grid\">\n <div class=\"detail-item\">\n <label>Status</label>\n <span class=\"status-badge\" [attr.data-status]=\"record.Status\">\n {{ record.Status }}\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Success</label>\n @if (record.Success === null) {\n <span>In Progress</span>\n }\n @else if (record.Success) {\n <span class=\"success\">Yes</span>\n }\n @else {\n <span class=\"error-message\">No</span>\n }\n </div>\n @if (record.Message) {\n <div class=\"detail-item full-width\">\n <label>Message</label>\n <div class=\"message\">{{ record.Message }}</div>\n </div>\n }\n @if (record.ErrorMessage) {\n <div class=\"detail-item full-width\">\n <label>Error Message</label>\n <div class=\"error-message\">{{ record.ErrorMessage }}</div>\n </div>\n }\n </div>\n </mj-accordion-panel>\n <mj-accordion-panel [Expanded]=\"false\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-dollar-sign\"></i> Usage & Cost\n </ng-template>\n <div class=\"details-grid\">\n <div class=\"detail-item\">\n <label>Total Tokens Used</label>\n <span>{{ record.TotalTokensUsed ? (record.TotalTokensUsed | number:'1.0-0') : 'N/A' }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Prompt Tokens</label>\n <span>{{ record.TotalPromptTokensUsed ? (record.TotalPromptTokensUsed | number:'1.0-0') : 'N/A' }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Completion Tokens</label>\n <span>{{ record.TotalCompletionTokensUsed ? (record.TotalCompletionTokensUsed | number:'1.0-0') : 'N/A' }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Total Cost</label>\n <span>{{ record.TotalCost != null ? ('$' + (record.TotalCost | number:'1.2-4')) : 'N/A' }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Total Prompt Iterations</label>\n <span>{{ record.TotalPromptIterations != null ? (record.TotalPromptIterations | number:'1.0-0') : 'N/A' }}</span>\n </div>\n </div>\n </mj-accordion-panel>\n @if (record.Result) {\n <mj-accordion-panel [Expanded]=\"false\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-code\"></i> Result\n </ng-template>\n <div class=\"result-viewer\">\n @if (isParsingComplete) {\n <mj-code-editor\n [ngModel]=\"parsedResult\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n } @else {\n <div style=\"padding: 20px; text-align: center; color: var(--mj-text-muted);\">\n <i class=\"fas fa-spinner fa-spin\"></i> Loading result data...\n </div>\n }\n </div>\n </mj-accordion-panel>\n }\n @if (record.StartingPayload) {\n <mj-accordion-panel [Expanded]=\"false\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-upload\"></i> Starting Payload\n </ng-template>\n <div class=\"result-viewer\">\n @if (isParsingComplete) {\n <mj-code-editor\n [ngModel]=\"parsedStartingPayload\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n } @else {\n <div style=\"padding: 20px; text-align: center; color: var(--mj-text-muted);\">\n <i class=\"fas fa-spinner fa-spin\"></i> Loading payload data...\n </div>\n }\n </div>\n </mj-accordion-panel>\n }\n @if (record.Data) {\n <mj-accordion-panel [Expanded]=\"false\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-database\"></i> Execution Data\n </ng-template>\n <div class=\"result-viewer\">\n @if (isParsingComplete) {\n <mj-code-editor\n [ngModel]=\"parsedData\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n } @else {\n <div style=\"padding: 20px; text-align: center; color: var(--mj-text-muted);\">\n <i class=\"fas fa-spinner fa-spin\"></i> Loading execution data...\n </div>\n }\n </div>\n </mj-accordion-panel>\n }\n @if (record.FinalPayload) {\n <mj-accordion-panel [Expanded]=\"false\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-download\"></i> Final Payload\n </ng-template>\n <div class=\"result-viewer\">\n @if (isParsingComplete) {\n <mj-code-editor\n [ngModel]=\"parsedFinalPayload\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n } @else {\n <div style=\"padding: 20px; text-align: center; color: var(--mj-text-muted);\">\n <i class=\"fas fa-spinner fa-spin\"></i> Loading final payload data...\n </div>\n }\n </div>\n </mj-accordion-panel>\n }\n @if (showPayloadDiff) {\n <mj-accordion-panel [Expanded]=\"false\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-code-compare\"></i> Payload Diff\n </ng-template>\n <div style=\"padding: 20px; background: var(--mj-bg-surface-card);\">\n @if (isParsingComplete) {\n <mj-deep-diff\n [oldValue]=\"startingPayloadObject\"\n [newValue]=\"finalPayloadObject\"\n [title]=\"''\"\n [showSummary]=\"true\"\n [showUnchanged]=\"false\"\n [expandAll]=\"false\"\n [maxDepth]=\"10\"\n [maxStringLength]=\"200\"\n [treatNullAsUndefined]=\"true\">\n </mj-deep-diff>\n } @else {\n <div style=\"padding: 20px; text-align: center; color: var(--mj-text-muted);\">\n <i class=\"fas fa-spinner fa-spin\"></i> Loading payload diff...\n </div>\n }\n </div>\n </mj-accordion-panel>\n }\n </div>\n }\n</div>\n</div>\n</div>", styles: [".ai-agent-run-form {\n height: 100%;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.record-form-container.ai-agent-run-form > .record-form,\n.ai-agent-run-form > .record-form {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n}\n\n/* Header Styles */\n.header {\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n padding: 20px;\n box-shadow: var(--mj-shadow-sm);\n flex-shrink: 0;\n}\n\n.header-content {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 16px;\n}\n\n.header-left {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.icon-wrapper {\n width: 48px;\n height: 48px;\n background: var(--mj-brand-primary);\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-inverse);\n font-size: 20px;\n overflow: hidden;\n}\n\n.agent-logo {\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n.header-info h2 {\n margin: 0;\n font-size: 24px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.meta-info {\n display: flex;\n gap: 12px;\n margin-top: 4px;\n font-size: 14px;\n color: var(--mj-text-muted);\n}\n\n.parent-run {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.parent-link {\n color: var(--mj-status-error);\n text-decoration: none;\n cursor: pointer;\n transition: color 0.2s;\n}\n\n.parent-link:hover {\n color: var(--mj-status-error);\n text-decoration: underline;\n}\n\n.agent-name {\n font-weight: 500;\n color: var(--mj-text-secondary);\n}\n\n.run-id {\n font-family: monospace;\n font-size: 12px;\n opacity: 0.7;\n}\n\n/* Conversation Link Pill */\n.conversation-pill {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 10px;\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n border-radius: 16px;\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-brand-primary);\n cursor: pointer;\n transition: all 0.2s ease;\n white-space: nowrap;\n}\n\n.conversation-pill:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-brand-primary) 40%, transparent);\n transform: translateY(-1px);\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n.conversation-pill i:first-child {\n font-size: 11px;\n opacity: 0.9;\n}\n\n.conversation-pill .pill-action {\n font-size: 9px;\n opacity: 0.6;\n transition: opacity 0.2s ease;\n}\n\n.conversation-pill:hover .pill-action {\n opacity: 1;\n}\n\n.header-right {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.status-badge {\n padding: 6px 16px;\n border-radius: 20px;\n font-size: 13px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n}\n\n.status-badge[data-status=\"Running\"] {\n background: color-mix(in srgb, var(--mj-status-info) 15%, var(--mj-bg-surface));\n color: var(--mj-status-info);\n}\n\n.status-badge[data-status=\"Completed\"] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.status-badge[data-status=\"Failed\"] {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.status-badge[data-status=\"Cancelled\"] {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n}\n\n.status-badge[data-status=\"Paused\"] {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.status-badge.small {\n padding: 4px 12px;\n font-size: 11px;\n}\n\n/* Plan Mode chip \u2014 shown next to the status badge when AIAgentRun.PlanMode = 1 */\n.plan-mode-badge {\n padding: 6px 16px;\n border-radius: 20px;\n font-size: 13px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.header-actions {\n display: flex;\n gap: 8px;\n}\n\n.btn-icon {\n width: 36px;\n height: 36px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: var(--mj-text-muted);\n}\n\n.btn-icon:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n color: var(--mj-text-secondary);\n}\n\n.header-stats {\n display: flex;\n gap: 24px;\n padding-top: 12px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n/* Configuration Bar */\n.configuration-bar {\n display: flex;\n gap: 24px;\n padding-top: 16px;\n border-top: 1px solid var(--mj-border-default);\n margin-top: 16px;\n}\n\n.config-item {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.config-item > i {\n font-size: 1.2em;\n color: var(--mj-text-muted);\n width: 24px;\n text-align: center;\n}\n\n.config-content {\n display: flex;\n flex-direction: column;\n}\n\n.config-label {\n font-size: 12px;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.config-value {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.config-value .entity-link {\n color: var(--mj-brand-primary);\n text-decoration: none;\n cursor: pointer;\n transition: color 0.2s;\n}\n\n.config-value .entity-link:hover {\n color: var(--mj-brand-primary-hover);\n text-decoration: underline;\n}\n\n.stat {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.stat .label {\n font-size: 12px;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.stat .value {\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n}\n\n.stat .value.success {\n color: var(--mj-status-success);\n}\n\n.stat .value.error {\n color: var(--mj-status-error);\n}\n\n/* Tabs */\n.tabs {\n display: flex;\n border-bottom: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-sunken);\n flex-shrink: 0;\n}\n\n.tab {\n padding: 12px 24px;\n border: none;\n background: transparent;\n cursor: pointer;\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-muted);\n display: flex;\n align-items: center;\n gap: 8px;\n transition: all 0.2s ease;\n border-bottom: 3px solid transparent;\n}\n\n.tab:hover {\n color: var(--mj-text-secondary);\n background: color-mix(in srgb, var(--mj-text-primary) 2%, var(--mj-bg-surface));\n}\n\n.tab.active {\n color: var(--mj-brand-primary);\n border-bottom-color: var(--mj-brand-primary);\n background: var(--mj-bg-surface);\n}\n\n/* Content Area */\n.content-area {\n position: relative;\n flex: 1;\n min-height: 0;\n overflow: auto;\n background: var(--mj-bg-surface);\n}\n\n.tab-content {\n height: 100%;\n min-height: 0;\n overflow: auto;\n}\n\n/* Details tab accordion panels */\n.tab-content mj-accordion-panel {\n display: block;\n margin-bottom: 8px;\n}\n\n/* JSON Detail Pane */\n.json-detail-pane {\n height: 100%;\n display: flex;\n flex-direction: column;\n background: var(--mj-bg-surface-sunken);\n border-left: 1px solid var(--mj-border-default);\n}\n\n.json-pane-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 20px;\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n box-shadow: var(--mj-shadow-sm);\n}\n\n.json-pane-header h3 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.json-pane-header h3 i {\n color: var(--mj-text-muted);\n font-size: 14px;\n}\n\n.json-pane-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: auto;\n padding: 16px;\n}\n\n.json-meta {\n display: flex;\n gap: 20px;\n margin-bottom: 16px;\n flex-wrap: wrap;\n}\n\n.json-meta .meta-item {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.json-meta .meta-item label {\n font-size: 11px;\n text-transform: uppercase;\n color: var(--mj-text-muted);\n font-weight: 600;\n letter-spacing: 0.5px;\n}\n\n.json-meta .meta-item span {\n font-size: 14px;\n color: var(--mj-text-primary);\n font-weight: 500;\n}\n\n.action-link {\n margin-bottom: 12px;\n}\n\n.action-link .btn-link {\n background: none;\n border: none;\n color: var(--mj-brand-primary);\n font-size: 14px;\n cursor: pointer;\n padding: 6px 12px;\n border-radius: 4px;\n transition: all 0.2s;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n}\n\n.action-link .btn-link:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n color: var(--mj-brand-primary-hover);\n}\n\n.json-viewer {\n flex: 1;\n display: flex;\n flex-direction: column;\n background: var(--mj-bg-surface);\n border-radius: 8px;\n border: 1px solid var(--mj-border-default);\n overflow: auto;\n padding: 20px;\n gap: 10px;\n min-height: 0;\n margin-bottom: 45px;\n}\n\n\n.json-toolbar {\n display: flex;\n justify-content: flex-end;\n padding: 8px 12px;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n/* Timeline Styles */\n.timeline-container {\n height: 100%;\n overflow-y: auto;\n padding: 20px;\n}\n\n.timeline-container > .timeline {\n max-width: 900px;\n margin: 0 auto;\n}\n\n.timeline {\n position: relative;\n padding-left: 40px;\n}\n\n.timeline::before {\n content: '';\n position: absolute;\n left: 20px;\n top: 0;\n bottom: 0;\n width: 2px;\n background: var(--mj-border-default);\n}\n\n.timeline-item {\n position: relative;\n margin-bottom: 24px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.timeline-item:hover {\n transform: translateX(4px);\n}\n\n.timeline-item.selected {\n transform: translateX(8px);\n}\n\n.timeline-item.selected .timeline-content {\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n border-color: var(--mj-brand-primary);\n}\n\n.timeline-marker {\n position: absolute;\n left: -30px;\n top: 0;\n width: 40px;\n height: 40px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--mj-bg-surface);\n border: 3px solid var(--mj-border-default);\n z-index: 1;\n transition: all 0.2s ease;\n}\n\n.timeline-marker[data-color=\"success\"] {\n border-color: var(--mj-status-success);\n color: var(--mj-status-success);\n}\n\n.timeline-marker[data-color=\"error\"] {\n border-color: var(--mj-status-error);\n color: var(--mj-status-error);\n}\n\n.timeline-marker[data-color=\"info\"] {\n border-color: var(--mj-status-info);\n color: var(--mj-status-info);\n}\n\n.timeline-marker[data-color=\"warning\"] {\n border-color: var(--mj-status-warning);\n color: var(--mj-status-warning);\n}\n\n.timeline-marker[data-color=\"secondary\"] {\n border-color: var(--mj-text-muted);\n color: var(--mj-text-muted);\n}\n\n.timeline-marker.small {\n width: 28px;\n height: 28px;\n font-size: 12px;\n}\n\n.timeline-content {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n padding: 16px 20px;\n margin-left: 20px;\n box-shadow: var(--mj-shadow-sm);\n transition: all 0.2s ease;\n}\n\n.timeline-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 8px;\n}\n\n.timeline-header h4 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.timeline-header h5 {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n}\n\n.timeline-time {\n font-size: 12px;\n color: var(--mj-text-muted);\n font-family: monospace;\n}\n\n.timeline-subtitle {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-bottom: 8px;\n}\n\n.timeline-meta {\n display: flex;\n gap: 16px;\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n.timeline-meta .status {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.timeline-meta .status[data-status=\"Completed\"] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.timeline-meta .status[data-status=\"Failed\"] {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.timeline-meta .status[data-status=\"Running\"] {\n background: color-mix(in srgb, var(--mj-status-info) 15%, var(--mj-bg-surface));\n color: var(--mj-status-info);\n}\n\n.timeline-meta .status[data-status=\"Paused\"] {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.duration {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.timeline-actions {\n position: absolute;\n right: 20px;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.btn-link {\n background: none;\n border: none;\n color: var(--mj-brand-primary);\n cursor: pointer;\n font-size: 12px;\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 4px 8px;\n border-radius: 4px;\n transition: all 0.2s ease;\n}\n\n.btn-link:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.btn-expand {\n width: 24px;\n height: 24px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: var(--mj-text-muted);\n font-size: 12px;\n}\n\n.btn-expand:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n color: var(--mj-text-secondary);\n}\n\n/* Timeline Children */\n.timeline-children {\n position: relative;\n margin-top: 12px;\n margin-bottom: 12px;\n}\n\n.timeline-children::before {\n content: '';\n position: absolute;\n left: -10px;\n top: -12px;\n bottom: 0;\n width: 2px;\n background: var(--mj-border-default);\n}\n\n.child-item {\n margin-bottom: 12px;\n}\n\n.child-item .timeline-content {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-default);\n}\n\n/* Sub-run timeline styles */\n.sub-run-timeline {\n background: color-mix(in srgb, var(--mj-brand-primary) 2%, var(--mj-bg-surface));\n border-left: 2px solid color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n margin-left: 20px;\n padding-left: 20px;\n margin-top: 8px;\n margin-bottom: 8px;\n}\n\n.sub-run-item .timeline-marker {\n border-width: 2px;\n}\n\n.sub-run-item .timeline-content {\n transition: all 0.2s ease;\n}\n\n/* JSON Detail Pane (in splitter) */\n.json-detail-pane {\n height: 100%;\n display: flex;\n flex-direction: column;\n background: var(--mj-bg-surface);\n border-left: 1px solid var(--mj-border-default);\n}\n\n.json-pane-header {\n padding: 16px 20px;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-shrink: 0;\n}\n\n.json-pane-header h3 {\n margin: 0;\n font-size: 16px;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 10px;\n font-weight: 600;\n}\n\n.json-pane-content {\n flex: 1;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n}\n\n.json-meta {\n padding: 16px 20px;\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n gap: 20px;\n flex-wrap: wrap;\n flex-shrink: 0;\n}\n\n.json-meta .meta-item {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.json-meta label {\n font-size: 11px;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.json-meta span {\n font-size: 14px;\n color: var(--mj-text-primary);\n font-weight: 500;\n}\n\n.action-link {\n padding: 12px 20px;\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.action-link .btn-link {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n color: var(--mj-brand-primary);\n text-decoration: none;\n font-size: 14px;\n padding: 8px 12px;\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n border-radius: 4px;\n transition: all 0.2s;\n cursor: pointer;\n}\n\n.action-link .btn-link:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-brand-primary) 35%, transparent);\n text-decoration: none;\n}\n\n\n.json-toolbar {\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n margin-bottom: 8px;\n}\n\n/* Details Tab */\n.details-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 20px;\n padding: 20px;\n}\n\n.detail-item {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.detail-item.full-width {\n grid-column: 1 / -1;\n}\n\n.detail-item label {\n font-size: 12px;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.detail-item span {\n font-size: 14px;\n color: var(--mj-text-secondary);\n}\n\n.error-message {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n padding: 12px;\n border-radius: 8px;\n font-size: 13px;\n}\n\n.result-viewer,\n.state-viewer {\n padding: 20px;\n max-height: 450px;\n overflow: auto;\n display: flex;\n flex-direction: column;\n}\n\n.result-viewer mj-code-editor,\n.state-viewer mj-code-editor {\n flex: 1;\n min-height: 0;\n}\n\n/* Empty States */\n.empty-state,\n.loading-state,\n.error-state {\n text-align: center;\n padding: 60px 20px;\n color: var(--mj-text-muted);\n}\n\n.empty-state i,\n.loading-state i,\n.error-state i {\n opacity: 0.3;\n margin-bottom: 16px;\n}\n\n/* Responsive */\n@media (max-width: 768px) {\n .header-content {\n flex-direction: column;\n gap: 16px;\n }\n \n .header-stats {\n flex-wrap: wrap;\n }\n \n .json-detail-pane {\n width: 100%;\n }\n \n .timeline {\n padding-left: 30px;\n }\n \n .timeline-marker {\n left: -25px;\n width: 32px;\n height: 32px;\n }\n \n .timeline-content {\n margin-left: 10px;\n }\n}\n\n/* Entity Link Styles */\n.entity-link {\n color: var(--mj-brand-primary);\n text-decoration: none;\n transition: all 0.2s ease;\n border-bottom: 1px solid transparent;\n display: inline-block;\n}\n\n.entity-link:hover {\n color: var(--mj-brand-primary-hover);\n border-bottom-color: var(--mj-brand-primary-hover);\n}\n\n.entity-link:active {\n color: var(--mj-brand-primary-hover);\n}\n\n/* Detail Pane Tabs */\n.detail-pane-tabs {\n display: flex;\n gap: 8px;\n margin: 8px 0 0 0;\n border-bottom: 1px solid var(--mj-border-default);\n padding: 0 16px;\n}\n\n.detail-tab {\n padding: 10px 16px;\n background: none;\n border: none;\n border-bottom: 3px solid transparent;\n color: var(--mj-text-muted);\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.detail-tab:hover {\n color: var(--mj-text-secondary);\n background: color-mix(in srgb, var(--mj-text-primary) 2%, var(--mj-bg-surface));\n}\n\n.detail-tab.active {\n color: var(--mj-brand-primary);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.detail-tab i {\n font-size: 14px;\n}\n\n/* Detail Pane Content */\n.detail-pane-content {\n flex: 1;\n overflow-y: auto;\n min-height: 0;\n margin-bottom: 35px;\n}\n\n.detail-pane-content.with-tabs {\n /* When tabs are shown, content starts right after tabs */\n margin-top: 0;\n}\n\n/* Step Payload Diff */\n.step-payload-diff {\n height: 100%;\n overflow-y: auto;\n padding: 16px;\n}\n\n.step-payload-diff mj-deep-diff {\n display: block;\n height: 100%;\n}\n\n/* JSON Viewer adjustments when no tabs */\n.detail-pane-content:not(.with-tabs) .json-viewer {\n margin-top: 16px;\n}"] }]
|
|
1554
1562
|
}], null, { timelineComponent: [{
|
|
1555
1563
|
type: ViewChild,
|
|
1556
1564
|
args: [AIAgentRunTimelineComponent]
|
|
1557
1565
|
}], analyticsComponent: [{
|
|
1558
1566
|
type: ViewChild,
|
|
1559
1567
|
args: [AIAgentRunAnalyticsComponent]
|
|
1560
|
-
}], visualizationComponent: [{
|
|
1561
|
-
type: ViewChild,
|
|
1562
|
-
args: [AIAgentRunVisualizationComponent]
|
|
1563
1568
|
}] }); })();
|
|
1564
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MJAIAgentRunFormComponentExtended, { className: "MJAIAgentRunFormComponentExtended", filePath: "src/lib/custom/ai-agent-run/ai-agent-run.component.ts", lineNumber:
|
|
1569
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MJAIAgentRunFormComponentExtended, { className: "MJAIAgentRunFormComponentExtended", filePath: "src/lib/custom/ai-agent-run/ai-agent-run.component.ts", lineNumber: 23 }); })();
|
|
1565
1570
|
//# sourceMappingURL=ai-agent-run.component.js.map
|