@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.
Files changed (328) hide show
  1. package/dist/__tests__/model-prediction.logic.test.d.ts +2 -0
  2. package/dist/__tests__/model-prediction.logic.test.d.ts.map +1 -0
  3. package/dist/__tests__/model-prediction.logic.test.js +140 -0
  4. package/dist/__tests__/model-prediction.logic.test.js.map +1 -0
  5. package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.js +79 -105
  6. package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.js.map +1 -1
  7. package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.js +7 -10
  8. package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.js.map +1 -1
  9. package/dist/lib/custom/AIAgents/add-action-dialog.component.d.ts.map +1 -1
  10. package/dist/lib/custom/AIAgents/add-action-dialog.component.js +46 -51
  11. package/dist/lib/custom/AIAgents/add-action-dialog.component.js.map +1 -1
  12. package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts +2 -0
  13. package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts.map +1 -1
  14. package/dist/lib/custom/AIAgents/ai-agent-form.component.js +300 -378
  15. package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
  16. package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js +22 -29
  17. package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js.map +1 -1
  18. package/dist/lib/custom/AIAgents/new-agent-dialog.component.js +15 -17
  19. package/dist/lib/custom/AIAgents/new-agent-dialog.component.js.map +1 -1
  20. package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js +27 -34
  21. package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js.map +1 -1
  22. package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.d.ts +11 -0
  23. package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.d.ts.map +1 -1
  24. package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js +48 -47
  25. package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js.map +1 -1
  26. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js +438 -454
  27. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js.map +1 -1
  28. package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.js +48 -51
  29. package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.js.map +1 -1
  30. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js +253 -282
  31. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js.map +1 -1
  32. package/dist/lib/custom/Actions/action-execution-log-form.component.js +24 -33
  33. package/dist/lib/custom/Actions/action-execution-log-form.component.js.map +1 -1
  34. package/dist/lib/custom/Actions/action-form.component.js +263 -311
  35. package/dist/lib/custom/Actions/action-form.component.js.map +1 -1
  36. package/dist/lib/custom/Entities/entity-form.component.d.ts +6 -0
  37. package/dist/lib/custom/Entities/entity-form.component.d.ts.map +1 -1
  38. package/dist/lib/custom/Entities/entity-form.component.js +475 -493
  39. package/dist/lib/custom/Entities/entity-form.component.js.map +1 -1
  40. package/dist/lib/custom/Lists/list-form.component.d.ts +1 -0
  41. package/dist/lib/custom/Lists/list-form.component.d.ts.map +1 -1
  42. package/dist/lib/custom/Lists/list-form.component.js +126 -175
  43. package/dist/lib/custom/Lists/list-form.component.js.map +1 -1
  44. package/dist/lib/custom/Queries/query-form.component.d.ts +1 -0
  45. package/dist/lib/custom/Queries/query-form.component.d.ts.map +1 -1
  46. package/dist/lib/custom/Queries/query-form.component.js +196 -252
  47. package/dist/lib/custom/Queries/query-form.component.js.map +1 -1
  48. package/dist/lib/custom/Queries/query-run-dialog.component.js +19 -23
  49. package/dist/lib/custom/Queries/query-run-dialog.component.js.map +1 -1
  50. package/dist/lib/custom/SearchScopes/searchscopeprovider-form.component.js +23 -24
  51. package/dist/lib/custom/SearchScopes/searchscopeprovider-form.component.js.map +1 -1
  52. package/dist/lib/custom/Templates/template-param-dialog.component.js +14 -23
  53. package/dist/lib/custom/Templates/template-param-dialog.component.js.map +1 -1
  54. package/dist/lib/custom/Templates/template-params-grid.component.d.ts +1 -0
  55. package/dist/lib/custom/Templates/template-params-grid.component.d.ts.map +1 -1
  56. package/dist/lib/custom/Templates/template-params-grid.component.js +5 -3
  57. package/dist/lib/custom/Templates/template-params-grid.component.js.map +1 -1
  58. package/dist/lib/custom/Templates/templates-form.component.d.ts +2 -1
  59. package/dist/lib/custom/Templates/templates-form.component.d.ts.map +1 -1
  60. package/dist/lib/custom/Templates/templates-form.component.js +10 -4
  61. package/dist/lib/custom/Templates/templates-form.component.js.map +1 -1
  62. package/dist/lib/custom/Tests/test-form.component.d.ts +2 -1
  63. package/dist/lib/custom/Tests/test-form.component.d.ts.map +1 -1
  64. package/dist/lib/custom/Tests/test-form.component.js +105 -133
  65. package/dist/lib/custom/Tests/test-form.component.js.map +1 -1
  66. package/dist/lib/custom/Tests/test-run-form.component.js +187 -205
  67. package/dist/lib/custom/Tests/test-run-form.component.js.map +1 -1
  68. package/dist/lib/custom/Tests/test-suite-form.component.d.ts +10 -1
  69. package/dist/lib/custom/Tests/test-suite-form.component.d.ts.map +1 -1
  70. package/dist/lib/custom/Tests/test-suite-form.component.js +417 -492
  71. package/dist/lib/custom/Tests/test-suite-form.component.js.map +1 -1
  72. package/dist/lib/custom/Tests/test-suite-run-form.component.js +100 -126
  73. package/dist/lib/custom/Tests/test-suite-run-form.component.js.map +1 -1
  74. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js +166 -184
  75. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js.map +1 -1
  76. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.d.ts +15 -1
  77. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.d.ts.map +1 -1
  78. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.js +283 -158
  79. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.js.map +1 -1
  80. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.d.ts +10 -0
  81. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.d.ts.map +1 -1
  82. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.js +80 -26
  83. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.js.map +1 -1
  84. package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.d.ts.map +1 -1
  85. package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js +11 -18
  86. package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js.map +1 -1
  87. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts +0 -2
  88. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts.map +1 -1
  89. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js +263 -258
  90. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js.map +1 -1
  91. package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.component.d.ts +108 -0
  92. package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.component.d.ts.map +1 -0
  93. package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.component.js +665 -0
  94. package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.component.js.map +1 -0
  95. package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.model.d.ts +94 -0
  96. package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.model.d.ts.map +1 -0
  97. package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.model.js +257 -0
  98. package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.model.js.map +1 -0
  99. package/dist/lib/custom/ai-agent-run/flow/constellation.component.d.ts +38 -0
  100. package/dist/lib/custom/ai-agent-run/flow/constellation.component.d.ts.map +1 -0
  101. package/dist/lib/custom/ai-agent-run/flow/constellation.component.js +200 -0
  102. package/dist/lib/custom/ai-agent-run/flow/constellation.component.js.map +1 -0
  103. package/dist/lib/custom/ai-agent-run/flow/flame-cascade.component.d.ts +44 -0
  104. package/dist/lib/custom/ai-agent-run/flow/flame-cascade.component.d.ts.map +1 -0
  105. package/dist/lib/custom/ai-agent-run/flow/flame-cascade.component.js +180 -0
  106. package/dist/lib/custom/ai-agent-run/flow/flame-cascade.component.js.map +1 -0
  107. package/dist/lib/custom/ai-agent-run/flow/flow-svg.util.d.ts +12 -0
  108. package/dist/lib/custom/ai-agent-run/flow/flow-svg.util.d.ts.map +1 -0
  109. package/dist/lib/custom/ai-agent-run/flow/flow-svg.util.js +46 -0
  110. package/dist/lib/custom/ai-agent-run/flow/flow-svg.util.js.map +1 -0
  111. package/dist/lib/custom/ai-agent-run/flow/flowchart.component.d.ts +64 -0
  112. package/dist/lib/custom/ai-agent-run/flow/flowchart.component.d.ts.map +1 -0
  113. package/dist/lib/custom/ai-agent-run/flow/flowchart.component.js +267 -0
  114. package/dist/lib/custom/ai-agent-run/flow/flowchart.component.js.map +1 -0
  115. package/dist/lib/custom/ai-agent-run/flow/pan-zoom.d.ts +53 -0
  116. package/dist/lib/custom/ai-agent-run/flow/pan-zoom.d.ts.map +1 -0
  117. package/dist/lib/custom/ai-agent-run/flow/pan-zoom.js +111 -0
  118. package/dist/lib/custom/ai-agent-run/flow/pan-zoom.js.map +1 -0
  119. package/dist/lib/custom/ai-agent-run/flow/subway-lines.component.d.ts +42 -0
  120. package/dist/lib/custom/ai-agent-run/flow/subway-lines.component.d.ts.map +1 -0
  121. package/dist/lib/custom/ai-agent-run/flow/subway-lines.component.js +193 -0
  122. package/dist/lib/custom/ai-agent-run/flow/subway-lines.component.js.map +1 -0
  123. package/dist/lib/custom/custom-forms.module.d.ts +58 -51
  124. package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
  125. package/dist/lib/custom/custom-forms.module.js +52 -13
  126. package/dist/lib/custom/custom-forms.module.js.map +1 -1
  127. package/dist/lib/custom/shared/entity-selector-dialog.component.d.ts +2 -0
  128. package/dist/lib/custom/shared/entity-selector-dialog.component.d.ts.map +1 -1
  129. package/dist/lib/custom/shared/entity-selector-dialog.component.js +25 -25
  130. package/dist/lib/custom/shared/entity-selector-dialog.component.js.map +1 -1
  131. package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.d.ts.map +1 -1
  132. package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js +302 -216
  133. package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js.map +1 -1
  134. package/dist/lib/generated/Entities/MJAIAgentChannel/mjaiagentchannel.form.component.js +25 -21
  135. package/dist/lib/generated/Entities/MJAIAgentChannel/mjaiagentchannel.form.component.js.map +1 -1
  136. package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.d.ts.map +1 -1
  137. package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js +152 -78
  138. package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js.map +1 -1
  139. package/dist/lib/generated/Entities/MJAIAgentRunStep/mjaiagentrunstep.form.component.js +23 -21
  140. package/dist/lib/generated/Entities/MJAIAgentRunStep/mjaiagentrunstep.form.component.js.map +1 -1
  141. package/dist/lib/generated/Entities/MJAIAgentSession/mjaiagentsession.form.component.d.ts.map +1 -1
  142. package/dist/lib/generated/Entities/MJAIAgentSession/mjaiagentsession.form.component.js +56 -34
  143. package/dist/lib/generated/Entities/MJAIAgentSession/mjaiagentsession.form.component.js.map +1 -1
  144. package/dist/lib/generated/Entities/MJAIAgentSkill/mjaiagentskill.form.component.d.ts +10 -0
  145. package/dist/lib/generated/Entities/MJAIAgentSkill/mjaiagentskill.form.component.d.ts.map +1 -0
  146. package/dist/lib/generated/Entities/MJAIAgentSkill/mjaiagentskill.form.component.js +66 -0
  147. package/dist/lib/generated/Entities/MJAIAgentSkill/mjaiagentskill.form.component.js.map +1 -0
  148. package/dist/lib/generated/Entities/MJAIPrompt/mjaiprompt.form.component.d.ts.map +1 -1
  149. package/dist/lib/generated/Entities/MJAIPrompt/mjaiprompt.form.component.js +55 -19
  150. package/dist/lib/generated/Entities/MJAIPrompt/mjaiprompt.form.component.js.map +1 -1
  151. package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.d.ts.map +1 -1
  152. package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.js +46 -10
  153. package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.js.map +1 -1
  154. package/dist/lib/generated/Entities/MJAISkill/mjaiskill.form.component.d.ts +10 -0
  155. package/dist/lib/generated/Entities/MJAISkill/mjaiskill.form.component.d.ts.map +1 -0
  156. package/dist/lib/generated/Entities/MJAISkill/mjaiskill.form.component.js +169 -0
  157. package/dist/lib/generated/Entities/MJAISkill/mjaiskill.form.component.js.map +1 -0
  158. package/dist/lib/generated/Entities/MJAISkillAction/mjaiskillaction.form.component.d.ts +10 -0
  159. package/dist/lib/generated/Entities/MJAISkillAction/mjaiskillaction.form.component.d.ts.map +1 -0
  160. package/dist/lib/generated/Entities/MJAISkillAction/mjaiskillaction.form.component.js +64 -0
  161. package/dist/lib/generated/Entities/MJAISkillAction/mjaiskillaction.form.component.js.map +1 -0
  162. package/dist/lib/generated/Entities/MJAISkillPermission/mjaiskillpermission.form.component.d.ts +10 -0
  163. package/dist/lib/generated/Entities/MJAISkillPermission/mjaiskillpermission.form.component.d.ts.map +1 -0
  164. package/dist/lib/generated/Entities/MJAISkillPermission/mjaiskillpermission.form.component.js +82 -0
  165. package/dist/lib/generated/Entities/MJAISkillPermission/mjaiskillpermission.form.component.js.map +1 -0
  166. package/dist/lib/generated/Entities/MJAISkillSubAgent/mjaiskillsubagent.form.component.d.ts +10 -0
  167. package/dist/lib/generated/Entities/MJAISkillSubAgent/mjaiskillsubagent.form.component.d.ts.map +1 -0
  168. package/dist/lib/generated/Entities/MJAISkillSubAgent/mjaiskillsubagent.form.component.js +64 -0
  169. package/dist/lib/generated/Entities/MJAISkillSubAgent/mjaiskillsubagent.form.component.js.map +1 -0
  170. package/dist/lib/generated/Entities/MJAction/mjaction.form.component.d.ts.map +1 -1
  171. package/dist/lib/generated/Entities/MJAction/mjaction.form.component.js +35 -17
  172. package/dist/lib/generated/Entities/MJAction/mjaction.form.component.js.map +1 -1
  173. package/dist/lib/generated/Entities/MJActionExecutionLog/mjactionexecutionlog.form.component.d.ts.map +1 -1
  174. package/dist/lib/generated/Entities/MJActionExecutionLog/mjactionexecutionlog.form.component.js +23 -5
  175. package/dist/lib/generated/Entities/MJActionExecutionLog/mjactionexecutionlog.form.component.js.map +1 -1
  176. package/dist/lib/generated/Entities/MJApplication/mjapplication.form.component.d.ts.map +1 -1
  177. package/dist/lib/generated/Entities/MJApplication/mjapplication.form.component.js +78 -52
  178. package/dist/lib/generated/Entities/MJApplication/mjapplication.form.component.js.map +1 -1
  179. package/dist/lib/generated/Entities/MJCollection/mjcollection.form.component.d.ts.map +1 -1
  180. package/dist/lib/generated/Entities/MJCollection/mjcollection.form.component.js +25 -7
  181. package/dist/lib/generated/Entities/MJCollection/mjcollection.form.component.js.map +1 -1
  182. package/dist/lib/generated/Entities/MJCollectionArtifact/mjcollectionartifact.form.component.js +11 -7
  183. package/dist/lib/generated/Entities/MJCollectionArtifact/mjcollectionartifact.form.component.js.map +1 -1
  184. package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.d.ts.map +1 -1
  185. package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.js +105 -47
  186. package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.js.map +1 -1
  187. package/dist/lib/generated/Entities/MJConversationDetail/mjconversationdetail.form.component.d.ts.map +1 -1
  188. package/dist/lib/generated/Entities/MJConversationDetail/mjconversationdetail.form.component.js +73 -59
  189. package/dist/lib/generated/Entities/MJConversationDetail/mjconversationdetail.form.component.js.map +1 -1
  190. package/dist/lib/generated/Entities/MJConversationWidgetInstance/mjconversationwidgetinstance.form.component.d.ts +10 -0
  191. package/dist/lib/generated/Entities/MJConversationWidgetInstance/mjconversationwidgetinstance.form.component.d.ts.map +1 -0
  192. package/dist/lib/generated/Entities/MJConversationWidgetInstance/mjconversationwidgetinstance.form.component.js +86 -0
  193. package/dist/lib/generated/Entities/MJConversationWidgetInstance/mjconversationwidgetinstance.form.component.js.map +1 -0
  194. package/dist/lib/generated/Entities/MJCredential/mjcredential.form.component.d.ts.map +1 -1
  195. package/dist/lib/generated/Entities/MJCredential/mjcredential.form.component.js +30 -12
  196. package/dist/lib/generated/Entities/MJCredential/mjcredential.form.component.js.map +1 -1
  197. package/dist/lib/generated/Entities/MJCredentialType/mjcredentialtype.form.component.d.ts.map +1 -1
  198. package/dist/lib/generated/Entities/MJCredentialType/mjcredentialtype.form.component.js +27 -9
  199. package/dist/lib/generated/Entities/MJCredentialType/mjcredentialtype.form.component.js.map +1 -1
  200. package/dist/lib/generated/Entities/MJDuplicateRunDetailMatch/mjduplicaterundetailmatch.form.component.d.ts.map +1 -1
  201. package/dist/lib/generated/Entities/MJDuplicateRunDetailMatch/mjduplicaterundetailmatch.form.component.js +24 -4
  202. package/dist/lib/generated/Entities/MJDuplicateRunDetailMatch/mjduplicaterundetailmatch.form.component.js.map +1 -1
  203. package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.d.ts.map +1 -1
  204. package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js +490 -412
  205. package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js.map +1 -1
  206. package/dist/lib/generated/Entities/MJEntityDocument/mjentitydocument.form.component.d.ts.map +1 -1
  207. package/dist/lib/generated/Entities/MJEntityDocument/mjentitydocument.form.component.js +47 -29
  208. package/dist/lib/generated/Entities/MJEntityDocument/mjentitydocument.form.component.js.map +1 -1
  209. package/dist/lib/generated/Entities/MJEnvironment/mjenvironment.form.component.d.ts.map +1 -1
  210. package/dist/lib/generated/Entities/MJEnvironment/mjenvironment.form.component.js +29 -11
  211. package/dist/lib/generated/Entities/MJEnvironment/mjenvironment.form.component.js.map +1 -1
  212. package/dist/lib/generated/Entities/MJExperiment/mjexperiment.form.component.d.ts +10 -0
  213. package/dist/lib/generated/Entities/MJExperiment/mjexperiment.form.component.d.ts.map +1 -0
  214. package/dist/lib/generated/Entities/MJExperiment/mjexperiment.form.component.js +99 -0
  215. package/dist/lib/generated/Entities/MJExperiment/mjexperiment.form.component.js.map +1 -0
  216. package/dist/lib/generated/Entities/MJExperimentSession/mjexperimentsession.form.component.d.ts +10 -0
  217. package/dist/lib/generated/Entities/MJExperimentSession/mjexperimentsession.form.component.d.ts.map +1 -0
  218. package/dist/lib/generated/Entities/MJExperimentSession/mjexperimentsession.form.component.js +101 -0
  219. package/dist/lib/generated/Entities/MJExperimentSession/mjexperimentsession.form.component.js.map +1 -0
  220. package/dist/lib/generated/Entities/MJExperimentSessionIteration/mjexperimentsessioniteration.form.component.d.ts +10 -0
  221. package/dist/lib/generated/Entities/MJExperimentSessionIteration/mjexperimentsessioniteration.form.component.d.ts.map +1 -0
  222. package/dist/lib/generated/Entities/MJExperimentSessionIteration/mjexperimentsessioniteration.form.component.js +115 -0
  223. package/dist/lib/generated/Entities/MJExperimentSessionIteration/mjexperimentsessioniteration.form.component.js.map +1 -0
  224. package/dist/lib/generated/Entities/MJExternalDataSource/mjexternaldatasource.form.component.d.ts +10 -0
  225. package/dist/lib/generated/Entities/MJExternalDataSource/mjexternaldatasource.form.component.d.ts.map +1 -0
  226. package/dist/lib/generated/Entities/MJExternalDataSource/mjexternaldatasource.form.component.js +113 -0
  227. package/dist/lib/generated/Entities/MJExternalDataSource/mjexternaldatasource.form.component.js.map +1 -0
  228. package/dist/lib/generated/Entities/MJExternalDataSourceType/mjexternaldatasourcetype.form.component.d.ts +10 -0
  229. package/dist/lib/generated/Entities/MJExternalDataSourceType/mjexternaldatasourcetype.form.component.d.ts.map +1 -0
  230. package/dist/lib/generated/Entities/MJExternalDataSourceType/mjexternaldatasourcetype.form.component.js +95 -0
  231. package/dist/lib/generated/Entities/MJExternalDataSourceType/mjexternaldatasourcetype.form.component.js.map +1 -0
  232. package/dist/lib/generated/Entities/MJFile/mjfile.form.component.d.ts.map +1 -1
  233. package/dist/lib/generated/Entities/MJFile/mjfile.form.component.js +63 -9
  234. package/dist/lib/generated/Entities/MJFile/mjfile.form.component.js.map +1 -1
  235. package/dist/lib/generated/Entities/MJFileStorageProvider/mjfilestorageprovider.form.component.d.ts.map +1 -1
  236. package/dist/lib/generated/Entities/MJFileStorageProvider/mjfilestorageprovider.form.component.js +32 -14
  237. package/dist/lib/generated/Entities/MJFileStorageProvider/mjfilestorageprovider.form.component.js.map +1 -1
  238. package/dist/lib/generated/Entities/MJMLAlgorithm/mjmlalgorithm.form.component.d.ts +10 -0
  239. package/dist/lib/generated/Entities/MJMLAlgorithm/mjmlalgorithm.form.component.d.ts.map +1 -0
  240. package/dist/lib/generated/Entities/MJMLAlgorithm/mjmlalgorithm.form.component.js +161 -0
  241. package/dist/lib/generated/Entities/MJMLAlgorithm/mjmlalgorithm.form.component.js.map +1 -0
  242. package/dist/lib/generated/Entities/MJMLAlgorithmUseCase/mjmlalgorithmusecase.form.component.d.ts +10 -0
  243. package/dist/lib/generated/Entities/MJMLAlgorithmUseCase/mjmlalgorithmusecase.form.component.d.ts.map +1 -0
  244. package/dist/lib/generated/Entities/MJMLAlgorithmUseCase/mjmlalgorithmusecase.form.component.js +89 -0
  245. package/dist/lib/generated/Entities/MJMLAlgorithmUseCase/mjmlalgorithmusecase.form.component.js.map +1 -0
  246. package/dist/lib/generated/Entities/MJMLAlgorithmUseCaseRanking/mjmlalgorithmusecaseranking.form.component.d.ts +10 -0
  247. package/dist/lib/generated/Entities/MJMLAlgorithmUseCaseRanking/mjmlalgorithmusecaseranking.form.component.d.ts.map +1 -0
  248. package/dist/lib/generated/Entities/MJMLAlgorithmUseCaseRanking/mjmlalgorithmusecaseranking.form.component.js +76 -0
  249. package/dist/lib/generated/Entities/MJMLAlgorithmUseCaseRanking/mjmlalgorithmusecaseranking.form.component.js.map +1 -0
  250. package/dist/lib/generated/Entities/MJMLModel/mjmlmodel.form.component.d.ts +10 -0
  251. package/dist/lib/generated/Entities/MJMLModel/mjmlmodel.form.component.d.ts.map +1 -0
  252. package/dist/lib/generated/Entities/MJMLModel/mjmlmodel.form.component.js +141 -0
  253. package/dist/lib/generated/Entities/MJMLModel/mjmlmodel.form.component.js.map +1 -0
  254. package/dist/lib/generated/Entities/MJMLModelScoringBinding/mjmlmodelscoringbinding.form.component.d.ts +10 -0
  255. package/dist/lib/generated/Entities/MJMLModelScoringBinding/mjmlmodelscoringbinding.form.component.d.ts.map +1 -0
  256. package/dist/lib/generated/Entities/MJMLModelScoringBinding/mjmlmodelscoringbinding.form.component.js +88 -0
  257. package/dist/lib/generated/Entities/MJMLModelScoringBinding/mjmlmodelscoringbinding.form.component.js.map +1 -0
  258. package/dist/lib/generated/Entities/MJMLTrainingPipeline/mjmltrainingpipeline.form.component.d.ts +10 -0
  259. package/dist/lib/generated/Entities/MJMLTrainingPipeline/mjmltrainingpipeline.form.component.d.ts.map +1 -0
  260. package/dist/lib/generated/Entities/MJMLTrainingPipeline/mjmltrainingpipeline.form.component.js +143 -0
  261. package/dist/lib/generated/Entities/MJMLTrainingPipeline/mjmltrainingpipeline.form.component.js.map +1 -0
  262. package/dist/lib/generated/Entities/MJMLTrainingRun/mjmltrainingrun.form.component.d.ts +10 -0
  263. package/dist/lib/generated/Entities/MJMLTrainingRun/mjmltrainingrun.form.component.d.ts.map +1 -0
  264. package/dist/lib/generated/Entities/MJMLTrainingRun/mjmltrainingrun.form.component.js +110 -0
  265. package/dist/lib/generated/Entities/MJMLTrainingRun/mjmltrainingrun.form.component.js.map +1 -0
  266. package/dist/lib/generated/Entities/MJOpenApp/mjopenapp.form.component.d.ts.map +1 -1
  267. package/dist/lib/generated/Entities/MJOpenApp/mjopenapp.form.component.js +54 -24
  268. package/dist/lib/generated/Entities/MJOpenApp/mjopenapp.form.component.js.map +1 -1
  269. package/dist/lib/generated/Entities/MJQuery/mjquery.form.component.d.ts.map +1 -1
  270. package/dist/lib/generated/Entities/MJQuery/mjquery.form.component.js +54 -46
  271. package/dist/lib/generated/Entities/MJQuery/mjquery.form.component.js.map +1 -1
  272. package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.d.ts.map +1 -1
  273. package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.js +24 -6
  274. package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.js.map +1 -1
  275. package/dist/lib/generated/Entities/MJRole/mjrole.form.component.d.ts.map +1 -1
  276. package/dist/lib/generated/Entities/MJRole/mjrole.form.component.js +54 -18
  277. package/dist/lib/generated/Entities/MJRole/mjrole.form.component.js.map +1 -1
  278. package/dist/lib/generated/Entities/MJSchemaInfo/mjschemainfo.form.component.js +8 -6
  279. package/dist/lib/generated/Entities/MJSchemaInfo/mjschemainfo.form.component.js.map +1 -1
  280. package/dist/lib/generated/Entities/MJScopedPromptPart/mjscopedpromptpart.form.component.d.ts +10 -0
  281. package/dist/lib/generated/Entities/MJScopedPromptPart/mjscopedpromptpart.form.component.d.ts.map +1 -0
  282. package/dist/lib/generated/Entities/MJScopedPromptPart/mjscopedpromptpart.form.component.js +78 -0
  283. package/dist/lib/generated/Entities/MJScopedPromptPart/mjscopedpromptpart.form.component.js.map +1 -0
  284. package/dist/lib/generated/Entities/MJTemplate/mjtemplate.form.component.d.ts.map +1 -1
  285. package/dist/lib/generated/Entities/MJTemplate/mjtemplate.form.component.js +30 -12
  286. package/dist/lib/generated/Entities/MJTemplate/mjtemplate.form.component.js.map +1 -1
  287. package/dist/lib/generated/Entities/MJUser/mjuser.form.component.d.ts.map +1 -1
  288. package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js +181 -109
  289. package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js.map +1 -1
  290. package/dist/lib/generated/Entities/MJUserRoutine/mjuserroutine.form.component.d.ts +10 -0
  291. package/dist/lib/generated/Entities/MJUserRoutine/mjuserroutine.form.component.d.ts.map +1 -0
  292. package/dist/lib/generated/Entities/MJUserRoutine/mjuserroutine.form.component.js +169 -0
  293. package/dist/lib/generated/Entities/MJUserRoutine/mjuserroutine.form.component.js.map +1 -0
  294. package/dist/lib/generated/Entities/MJUserRoutineRecipient/mjuserroutinerecipient.form.component.d.ts +10 -0
  295. package/dist/lib/generated/Entities/MJUserRoutineRecipient/mjuserroutinerecipient.form.component.d.ts.map +1 -0
  296. package/dist/lib/generated/Entities/MJUserRoutineRecipient/mjuserroutinerecipient.form.component.js +82 -0
  297. package/dist/lib/generated/Entities/MJUserRoutineRecipient/mjuserroutinerecipient.form.component.js.map +1 -0
  298. package/dist/lib/generated/Entities/MJUserRoutineRun/mjuserroutinerun.form.component.d.ts +10 -0
  299. package/dist/lib/generated/Entities/MJUserRoutineRun/mjuserroutinerun.form.component.d.ts.map +1 -0
  300. package/dist/lib/generated/Entities/MJUserRoutineRun/mjuserroutinerun.form.component.js +100 -0
  301. package/dist/lib/generated/Entities/MJUserRoutineRun/mjuserroutinerun.form.component.js.map +1 -0
  302. package/dist/lib/generated/generated-forms.module.d.ts +362 -335
  303. package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
  304. package/dist/lib/generated/generated-forms.module.js +299 -203
  305. package/dist/lib/generated/generated-forms.module.js.map +1 -1
  306. package/dist/lib/panels/ai-agents/agent-realtime.panel.js +44 -44
  307. package/dist/lib/panels/ai-agents/agent-realtime.panel.js.map +1 -1
  308. package/dist/lib/panels/ai-skill-sharing/ai-skill-sharing-panel.component.d.ts +43 -0
  309. package/dist/lib/panels/ai-skill-sharing/ai-skill-sharing-panel.component.d.ts.map +1 -0
  310. package/dist/lib/panels/ai-skill-sharing/ai-skill-sharing-panel.component.js +240 -0
  311. package/dist/lib/panels/ai-skill-sharing/ai-skill-sharing-panel.component.js.map +1 -0
  312. package/dist/lib/panels/model-predictions/model-prediction.logic.d.ts +69 -0
  313. package/dist/lib/panels/model-predictions/model-prediction.logic.d.ts.map +1 -0
  314. package/dist/lib/panels/model-predictions/model-prediction.logic.js +130 -0
  315. package/dist/lib/panels/model-predictions/model-prediction.logic.js.map +1 -0
  316. package/dist/lib/panels/model-predictions/model-prediction.panel.d.ts +83 -0
  317. package/dist/lib/panels/model-predictions/model-prediction.panel.d.ts.map +1 -0
  318. package/dist/lib/panels/model-predictions/model-prediction.panel.js +293 -0
  319. package/dist/lib/panels/model-predictions/model-prediction.panel.js.map +1 -0
  320. package/dist/lib/shared/components/template-editor.component.d.ts +4 -2
  321. package/dist/lib/shared/components/template-editor.component.d.ts.map +1 -1
  322. package/dist/lib/shared/components/template-editor.component.js +10 -9
  323. package/dist/lib/shared/components/template-editor.component.js.map +1 -1
  324. package/package.json +38 -37
  325. package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.d.ts +0 -82
  326. package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.d.ts.map +0 -1
  327. package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.js +0 -1033
  328. 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-visualization.component";
31
- import * as i10 from "./ai-agent-run-step-detail.component";
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", 8);
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", 9);
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", 10);
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", 13)(1, "a", 36);
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", 15);
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 MJAIAgentRunFormComponentExtended_Conditional_32_Template(rf, ctx) { if (rf & 1) {
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 MJAIAgentRunFormComponentExtended_Conditional_33_Template(rf, ctx) { if (rf & 1) {
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 MJAIAgentRunFormComponentExtended_Conditional_34_Template(rf, ctx) { if (rf & 1) {
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 MJAIAgentRunFormComponentExtended_Conditional_35_Conditional_3_Template(rf, ctx) { if (rf & 1) {
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 MJAIAgentRunFormComponentExtended_Conditional_35_Conditional_4_Template(rf, ctx) { if (rf & 1) {
128
- i0.ɵɵelementStart(0, "span", 42);
129
- i0.ɵɵelement(1, "i", 43);
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 MJAIAgentRunFormComponentExtended_Conditional_35_Template(rf, ctx) { if (rf & 1) {
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, MJAIAgentRunFormComponentExtended_Conditional_35_Conditional_3_Template, 3, 4, "span", 25);
137
- i0.ɵɵconditionalCreate(4, MJAIAgentRunFormComponentExtended_Conditional_35_Conditional_4_Template, 2, 0, "span", 42);
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 MJAIAgentRunFormComponentExtended_Conditional_36_Conditional_3_Template(rf, ctx) { if (rf & 1) {
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 MJAIAgentRunFormComponentExtended_Conditional_36_Conditional_4_Template(rf, ctx) { if (rf & 1) {
157
- i0.ɵɵelementStart(0, "span", 42);
158
- i0.ɵɵelement(1, "i", 43);
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 MJAIAgentRunFormComponentExtended_Conditional_36_Template(rf, ctx) { if (rf & 1) {
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, MJAIAgentRunFormComponentExtended_Conditional_36_Conditional_3_Template, 3, 4, "span", 25);
166
- i0.ɵɵconditionalCreate(4, MJAIAgentRunFormComponentExtended_Conditional_36_Conditional_4_Template, 2, 0, "span", 42);
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 MJAIAgentRunFormComponentExtended_Conditional_37_Template(rf, ctx) { if (rf & 1) {
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 MJAIAgentRunFormComponentExtended_Conditional_38_Template(rf, ctx) { if (rf & 1) {
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", 44);
190
- i0.ɵɵelement(2, "i", 45);
191
- i0.ɵɵelementStart(3, "div", 46)(4, "div", 47);
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", 48)(7, "a", 36);
195
- i0.ɵɵlistener("click", function MJAIAgentRunFormComponentExtended_Conditional_38_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)); });
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 MJAIAgentRunFormComponentExtended_Conditional_53_Conditional_4_Template(rf, ctx) { if (rf & 1) {
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", 50)(1, "mj-ai-agent-run-step-detail", 52);
206
- i0.ɵɵlistener("closePanel", function MJAIAgentRunFormComponentExtended_Conditional_53_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_53_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_53_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)); });
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 MJAIAgentRunFormComponentExtended_Conditional_53_Template(rf, ctx) { if (rf & 1) {
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", 49)(2, "as-split-area", 50)(3, "mj-ai-agent-run-timeline", 51);
217
- i0.ɵɵlistener("itemSelected", function MJAIAgentRunFormComponentExtended_Conditional_53_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_53_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)); });
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, MJAIAgentRunFormComponentExtended_Conditional_53_Conditional_4_Template, 2, 2, "as-split-area", 50);
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 MJAIAgentRunFormComponentExtended_Conditional_54_Conditional_1_Template(rf, ctx) { if (rf & 1) {
231
- i0.ɵɵelement(0, "mj-ai-agent-run-visualization", 53, 0);
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 MJAIAgentRunFormComponentExtended_Conditional_54_Template(rf, ctx) { if (rf & 1) {
241
+ function MJAIAgentRunFormComponentExtended_Conditional_55_Template(rf, ctx) { if (rf & 1) {
237
242
  i0.ɵɵelementStart(0, "div", 34);
238
- i0.ɵɵconditionalCreate(1, MJAIAgentRunFormComponentExtended_Conditional_54_Conditional_1_Template, 2, 2, "mj-ai-agent-run-visualization", 53);
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 MJAIAgentRunFormComponentExtended_Conditional_55_Conditional_1_Template(rf, ctx) { if (rf & 1) {
246
- i0.ɵɵelement(0, "mj-ai-agent-run-analytics", 54, 1);
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 MJAIAgentRunFormComponentExtended_Conditional_55_Template(rf, ctx) { if (rf & 1) {
256
+ function MJAIAgentRunFormComponentExtended_Conditional_56_Template(rf, ctx) { if (rf & 1) {
252
257
  i0.ɵɵelementStart(0, "div", 34);
253
- i0.ɵɵconditionalCreate(1, MJAIAgentRunFormComponentExtended_Conditional_55_Conditional_1_Template, 2, 1, "mj-ai-agent-run-analytics", 54);
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 MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_2_Template(rf, ctx) { if (rf & 1) {
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 MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_14_Template(rf, ctx) { if (rf & 1) {
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 MJAIAgentRunFormComponentExtended_Conditional_56_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)); });
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 MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_15_Template(rf, ctx) { if (rf & 1) {
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 MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_20_Template(rf, ctx) { if (rf & 1) {
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 MJAIAgentRunFormComponentExtended_Conditional_56_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)); });
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 MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_21_Template(rf, ctx) { if (rf & 1) {
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 MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_26_Template(rf, ctx) { if (rf & 1) {
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 MJAIAgentRunFormComponentExtended_Conditional_56_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)); });
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 MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_27_Template(rf, ctx) { if (rf & 1) {
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 MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_32_Template(rf, ctx) { if (rf & 1) {
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 MJAIAgentRunFormComponentExtended_Conditional_56_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)); });
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 MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_33_Template(rf, ctx) { if (rf & 1) {
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 MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_35_Template(rf, ctx) { if (rf & 1) {
329
- i0.ɵɵelement(0, "i", 63);
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 MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_41_Template(rf, ctx) { if (rf & 1) {
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 MJAIAgentRunFormComponentExtended_Conditional_56_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)); });
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 MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_42_Template(rf, ctx) { if (rf & 1) {
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 MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_47_Template(rf, ctx) { if (rf & 1) {
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 MJAIAgentRunFormComponentExtended_Conditional_56_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)); });
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 MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_48_Template(rf, ctx) { if (rf & 1) {
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 MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_55_Template(rf, ctx) { if (rf & 1) {
365
- i0.ɵɵelement(0, "i", 64);
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 MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_65_Template(rf, ctx) { if (rf & 1) {
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 MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_66_Template(rf, ctx) { if (rf & 1) {
374
- i0.ɵɵelementStart(0, "span", 60);
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 MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_67_Template(rf, ctx) { if (rf & 1) {
379
- i0.ɵɵelementStart(0, "span", 61);
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 MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_68_Template(rf, ctx) { if (rf & 1) {
384
- i0.ɵɵelementStart(0, "div", 62)(1, "label");
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", 65);
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 MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_69_Template(rf, ctx) { if (rf & 1) {
396
- i0.ɵɵelementStart(0, "div", 62)(1, "label");
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", 61);
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 MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_71_Template(rf, ctx) { if (rf & 1) {
408
- i0.ɵɵelement(0, "i", 66);
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 MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_103_ng_template_1_Template(rf, ctx) { if (rf & 1) {
412
- i0.ɵɵelement(0, "i", 70);
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 MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_103_Conditional_3_Template(rf, ctx) { if (rf & 1) {
416
- i0.ɵɵelement(0, "mj-code-editor", 68);
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 MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_103_Conditional_4_Template(rf, ctx) { if (rf & 1) {
422
- i0.ɵɵelementStart(0, "div", 69);
423
- i0.ɵɵelement(1, "i", 43);
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 MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_103_Template(rf, ctx) { if (rf & 1) {
428
- i0.ɵɵelementStart(0, "mj-accordion-panel", 55);
429
- i0.ɵɵtemplate(1, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_103_ng_template_1_Template, 2, 0, "ng-template", 56);
430
- i0.ɵɵelementStart(2, "div", 67);
431
- i0.ɵɵconditionalCreate(3, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_103_Conditional_3_Template, 1, 3, "mj-code-editor", 68)(4, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_103_Conditional_4_Template, 3, 0, "div", 69);
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 MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_104_ng_template_1_Template(rf, ctx) { if (rf & 1) {
440
- i0.ɵɵelement(0, "i", 71);
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 MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_104_Conditional_3_Template(rf, ctx) { if (rf & 1) {
444
- i0.ɵɵelement(0, "mj-code-editor", 68);
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 MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_104_Conditional_4_Template(rf, ctx) { if (rf & 1) {
450
- i0.ɵɵelementStart(0, "div", 69);
451
- i0.ɵɵelement(1, "i", 43);
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 MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_104_Template(rf, ctx) { if (rf & 1) {
456
- i0.ɵɵelementStart(0, "mj-accordion-panel", 55);
457
- i0.ɵɵtemplate(1, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_104_ng_template_1_Template, 2, 0, "ng-template", 56);
458
- i0.ɵɵelementStart(2, "div", 67);
459
- i0.ɵɵconditionalCreate(3, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_104_Conditional_3_Template, 1, 3, "mj-code-editor", 68)(4, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_104_Conditional_4_Template, 3, 0, "div", 69);
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 MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_105_ng_template_1_Template(rf, ctx) { if (rf & 1) {
468
- i0.ɵɵelement(0, "i", 72);
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 MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_105_Conditional_3_Template(rf, ctx) { if (rf & 1) {
472
- i0.ɵɵelement(0, "mj-code-editor", 68);
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 MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_105_Conditional_4_Template(rf, ctx) { if (rf & 1) {
478
- i0.ɵɵelementStart(0, "div", 69);
479
- i0.ɵɵelement(1, "i", 43);
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 MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_105_Template(rf, ctx) { if (rf & 1) {
484
- i0.ɵɵelementStart(0, "mj-accordion-panel", 55);
485
- i0.ɵɵtemplate(1, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_105_ng_template_1_Template, 2, 0, "ng-template", 56);
486
- i0.ɵɵelementStart(2, "div", 67);
487
- i0.ɵɵconditionalCreate(3, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_105_Conditional_3_Template, 1, 3, "mj-code-editor", 68)(4, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_105_Conditional_4_Template, 3, 0, "div", 69);
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 MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_106_ng_template_1_Template(rf, ctx) { if (rf & 1) {
496
- i0.ɵɵelement(0, "i", 73);
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 MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_106_Conditional_3_Template(rf, ctx) { if (rf & 1) {
500
- i0.ɵɵelement(0, "mj-code-editor", 68);
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 MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_106_Conditional_4_Template(rf, ctx) { if (rf & 1) {
506
- i0.ɵɵelementStart(0, "div", 69);
507
- i0.ɵɵelement(1, "i", 43);
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 MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_106_Template(rf, ctx) { if (rf & 1) {
512
- i0.ɵɵelementStart(0, "mj-accordion-panel", 55);
513
- i0.ɵɵtemplate(1, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_106_ng_template_1_Template, 2, 0, "ng-template", 56);
514
- i0.ɵɵelementStart(2, "div", 67);
515
- i0.ɵɵconditionalCreate(3, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_106_Conditional_3_Template, 1, 3, "mj-code-editor", 68)(4, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_106_Conditional_4_Template, 3, 0, "div", 69);
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 MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_107_ng_template_1_Template(rf, ctx) { if (rf & 1) {
524
- i0.ɵɵelement(0, "i", 76);
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 MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_107_Conditional_3_Template(rf, ctx) { if (rf & 1) {
528
- i0.ɵɵelement(0, "mj-deep-diff", 75);
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 MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_107_Conditional_4_Template(rf, ctx) { if (rf & 1) {
534
- i0.ɵɵelementStart(0, "div", 69);
535
- i0.ɵɵelement(1, "i", 43);
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 MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_107_Template(rf, ctx) { if (rf & 1) {
540
- i0.ɵɵelementStart(0, "mj-accordion-panel", 55);
541
- i0.ɵɵtemplate(1, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_107_ng_template_1_Template, 2, 0, "ng-template", 56);
542
- i0.ɵɵelementStart(2, "div", 74);
543
- i0.ɵɵconditionalCreate(3, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_107_Conditional_3_Template, 1, 9, "mj-deep-diff", 75)(4, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_107_Conditional_4_Template, 3, 0, "div", 69);
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 MJAIAgentRunFormComponentExtended_Conditional_56_Template(rf, ctx) { if (rf & 1) {
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", 55);
554
- i0.ɵɵtemplate(2, MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_2_Template, 2, 0, "ng-template", 56);
555
- i0.ɵɵelementStart(3, "div", 57)(4, "div", 58)(5, "label");
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 MJAIAgentRunFormComponentExtended_Conditional_56_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)); });
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", 58)(11, "label");
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, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_14_Template, 2, 1, "a", 59);
567
- i0.ɵɵconditionalCreate(15, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_15_Template, 2, 0, "span");
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", 58)(17, "label");
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, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_20_Template, 2, 1, "a", 59);
574
- i0.ɵɵconditionalCreate(21, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_21_Template, 2, 0, "span");
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", 58)(23, "label");
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, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_26_Template, 2, 1, "a", 59);
581
- i0.ɵɵconditionalCreate(27, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_27_Template, 2, 0, "span");
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", 58)(29, "label");
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, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_32_Template, 2, 1, "a", 59);
588
- i0.ɵɵconditionalCreate(33, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_33_Template, 2, 0, "span");
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", 55);
591
- i0.ɵɵtemplate(35, MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_35_Template, 2, 0, "ng-template", 56);
592
- i0.ɵɵelementStart(36, "div", 57)(37, "div", 58)(38, "label");
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, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_41_Template, 2, 1, "a", 59);
597
- i0.ɵɵconditionalCreate(42, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_42_Template, 2, 0, "span");
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", 58)(44, "label");
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, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_47_Template, 2, 1, "a", 59);
604
- i0.ɵɵconditionalCreate(48, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_48_Template, 2, 0, "span");
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", 58)(50, "label");
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", 55);
613
- i0.ɵɵtemplate(55, MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_55_Template, 2, 0, "ng-template", 56);
614
- i0.ɵɵelementStart(56, "div", 57)(57, "div", 58)(58, "label");
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", 58)(63, "label");
625
+ i0.ɵɵelementStart(62, "div", 59)(63, "label");
621
626
  i0.ɵɵtext(64, "Success");
622
627
  i0.ɵɵelementEnd();
623
- i0.ɵɵconditionalCreate(65, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_65_Template, 2, 0, "span")(66, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_66_Template, 2, 0, "span", 60)(67, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_67_Template, 2, 0, "span", 61);
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, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_68_Template, 5, 1, "div", 62);
626
- i0.ɵɵconditionalCreate(69, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_69_Template, 5, 1, "div", 62);
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", 55);
629
- i0.ɵɵtemplate(71, MJAIAgentRunFormComponentExtended_Conditional_56_ng_template_71_Template, 2, 0, "ng-template", 56);
630
- i0.ɵɵelementStart(72, "div", 57)(73, "div", 58)(74, "label");
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", 58)(80, "label");
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", 58)(86, "label");
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", 58)(92, "label");
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", 58)(98, "label");
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, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_103_Template, 5, 2, "mj-accordion-panel", 55);
666
- i0.ɵɵconditionalCreate(104, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_104_Template, 5, 2, "mj-accordion-panel", 55);
667
- i0.ɵɵconditionalCreate(105, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_105_Template, 5, 2, "mj-accordion-panel", 55);
668
- i0.ɵɵconditionalCreate(106, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_106_Template, 5, 2, "mj-accordion-panel", 55);
669
- i0.ɵɵconditionalCreate(107, MJAIAgentRunFormComponentExtended_Conditional_56_Conditional_107_Template, 5, 2, "mj-accordion-panel", 55);
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 visualization when the tab is first accessed
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)(AIAgentRunVisualizationComponent, 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
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.visualizationComponent = _t.first);
1425
- } }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 57, vars: 33, consts: [["visualizationComponent", ""], ["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"], [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, "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"], [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) {
1426
- i0.ɵɵelementStart(0, "div", 2)(1, "div", 3)(2, "div", 4)(3, "div", 5)(4, "div", 6)(5, "div", 7);
1427
- i0.ɵɵconditionalCreate(6, MJAIAgentRunFormComponentExtended_Conditional_6_Template, 1, 2, "img", 8);
1428
- i0.ɵɵconditionalCreate(7, MJAIAgentRunFormComponentExtended_Conditional_7_Template, 1, 1, "i", 9);
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", 11)(10, "h2");
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", 12);
1435
- i0.ɵɵconditionalCreate(13, MJAIAgentRunFormComponentExtended_Conditional_13_Template, 3, 1, "span", 13);
1436
- i0.ɵɵelementStart(14, "span", 14);
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", 15);
1440
- i0.ɵɵconditionalCreate(17, MJAIAgentRunFormComponentExtended_Conditional_17_Template, 5, 0, "span", 16);
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", 17)(19, "div", 18);
1443
- i0.ɵɵelement(20, "i", 9);
1444
- i0.ɵɵtext(21);
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(22, "div", 19)(23, "button", 20);
1447
- i0.ɵɵlistener("click", function MJAIAgentRunFormComponentExtended_Template_button_click_23_listener() { return ctx.refreshData(); });
1448
- i0.ɵɵelement(24, "i", 21);
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(25, "div", 22)(26, "div", 23)(27, "span", 24);
1451
- i0.ɵɵtext(28, "Started");
1456
+ i0.ɵɵelementStart(26, "div", 22)(27, "div", 23)(28, "span", 24);
1457
+ i0.ɵɵtext(29, "Started");
1452
1458
  i0.ɵɵelementEnd();
1453
- i0.ɵɵelementStart(29, "span", 25);
1454
- i0.ɵɵtext(30);
1455
- i0.ɵɵpipe(31, "date");
1459
+ i0.ɵɵelementStart(30, "span", 25);
1460
+ i0.ɵɵtext(31);
1461
+ i0.ɵɵpipe(32, "date");
1456
1462
  i0.ɵɵelementEnd()();
1457
- i0.ɵɵconditionalCreate(32, MJAIAgentRunFormComponentExtended_Conditional_32_Template, 6, 4, "div", 23);
1458
- i0.ɵɵconditionalCreate(33, MJAIAgentRunFormComponentExtended_Conditional_33_Template, 5, 1, "div", 23);
1459
- i0.ɵɵconditionalCreate(34, MJAIAgentRunFormComponentExtended_Conditional_34_Template, 5, 5, "div", 23);
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, 1, "div", 23);
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(38, MJAIAgentRunFormComponentExtended_Conditional_38_Template, 9, 1, "div", 26);
1470
+ i0.ɵɵconditionalCreate(39, MJAIAgentRunFormComponentExtended_Conditional_39_Template, 9, 1, "div", 26);
1465
1471
  i0.ɵɵelementEnd();
1466
- i0.ɵɵelementStart(39, "div", 27)(40, "button", 28);
1467
- i0.ɵɵlistener("click", function MJAIAgentRunFormComponentExtended_Template_button_click_40_listener() { return ctx.changeTab("timeline"); });
1468
- i0.ɵɵelement(41, "i", 29);
1469
- i0.ɵɵtext(42, " Timeline ");
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(43, "button", 28);
1472
- i0.ɵɵlistener("click", function MJAIAgentRunFormComponentExtended_Template_button_click_43_listener() { return ctx.changeTab("visualization"); });
1473
- i0.ɵɵelement(44, "i", 30);
1474
- i0.ɵɵtext(45, " Visualization ");
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(46, "button", 28);
1477
- i0.ɵɵlistener("click", function MJAIAgentRunFormComponentExtended_Template_button_click_46_listener() { return ctx.changeTab("analytics"); });
1478
- i0.ɵɵelement(47, "i", 31);
1479
- i0.ɵɵtext(48, " Analytics ");
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(49, "button", 28);
1482
- i0.ɵɵlistener("click", function MJAIAgentRunFormComponentExtended_Template_button_click_49_listener() { return ctx.changeTab("details"); });
1483
- i0.ɵɵelement(50, "i", 32);
1484
- i0.ɵɵtext(51, " Details ");
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(52, "div", 33);
1487
- i0.ɵɵconditionalCreate(53, MJAIAgentRunFormComponentExtended_Conditional_53_Template, 5, 4, "div", 34);
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, 108, 48, "div", 35);
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(31, 30, ctx.record.StartedAt, "medium"));
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.Success !== null && ctx.record.CompletedAt !== null ? 34 : -1);
1526
+ i0.ɵɵconditional(ctx.record.CompletedAt ? 34 : -1);
1521
1527
  i0.ɵɵadvance();
1522
- i0.ɵɵconditional(ctx.costMetrics && ctx.costMetrics.totalTokensInput + ctx.costMetrics.totalTokensOutput > 0 ? 35 : -1);
1528
+ i0.ɵɵconditional(ctx.record.Success !== null && ctx.record.CompletedAt !== null ? 35 : -1);
1523
1529
  i0.ɵɵadvance();
1524
- i0.ɵɵconditional(ctx.costMetrics && ctx.costMetrics.totalCost > 0 ? 36 : -1);
1530
+ i0.ɵɵconditional(ctx.costMetrics && ctx.costMetrics.totalTokensInput + ctx.costMetrics.totalTokensOutput > 0 ? 36 : -1);
1525
1531
  i0.ɵɵadvance();
1526
- i0.ɵɵconditional(ctx.record.EffortLevel ? 37 : -1);
1532
+ i0.ɵɵconditional(ctx.costMetrics && ctx.costMetrics.totalCost > 0 ? 37 : -1);
1527
1533
  i0.ɵɵadvance();
1528
- i0.ɵɵconditional(ctx.record.ConfigurationID ? 38 : -1);
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" ? 53 : -1);
1546
+ i0.ɵɵconditional(ctx.activeTab === "timeline" ? 54 : -1);
1539
1547
  i0.ɵɵadvance();
1540
- i0.ɵɵconditional(ctx.activeTab === "visualization" ? 54 : -1);
1548
+ i0.ɵɵconditional(ctx.activeTab === "visualization" ? 55 : -1);
1541
1549
  i0.ɵɵadvance();
1542
- i0.ɵɵconditional(ctx.activeTab === "analytics" ? 55 : -1);
1550
+ i0.ɵɵconditional(ctx.activeTab === "analytics" ? 56 : -1);
1543
1551
  i0.ɵɵadvance();
1544
- i0.ɵɵconditional(ctx.activeTab === "details" ? 56 : -1);
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 &amp; 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 &amp; 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: 24 }); })();
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