@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
@@ -4,31 +4,48 @@ import { ParseJSONRecursive } from '@memberjunction/global';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "@angular/common";
6
6
  import * as i2 from "@angular/forms";
7
- import * as i3 from "@memberjunction/ng-code-editor";
8
- import * as i4 from "@memberjunction/ng-deep-diff";
7
+ import * as i3 from "@memberjunction/ng-ui-components";
8
+ import * as i4 from "@memberjunction/ng-code-editor";
9
+ import * as i5 from "@memberjunction/ng-deep-diff";
9
10
  const _c0 = a0 => ({ $implicit: a0 });
10
- const _forTrack0 = ($index, $item) => $item.id;
11
+ const _forTrack0 = ($index, $item) => $item.SkillID;
12
+ const _forTrack1 = ($index, $item) => $item.id;
11
13
  function AIAgentRunStepDetailComponent_Conditional_0_Conditional_24_Template(rf, ctx) { if (rf & 1) {
12
14
  const _r3 = i0.ɵɵgetCurrentView();
13
- i0.ɵɵelementStart(0, "div", 10)(1, "button", 16);
15
+ i0.ɵɵelementStart(0, "div", 10)(1, "button", 17);
14
16
  i0.ɵɵlistener("click", function AIAgentRunStepDetailComponent_Conditional_0_Conditional_24_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onNavigateToActionLog(ctx_r1.selectedTimelineItem.data.ID)); });
15
- i0.ɵɵelement(2, "i", 17);
17
+ i0.ɵɵelement(2, "i", 18);
16
18
  i0.ɵɵtext(3, " View Action Execution Log ");
17
19
  i0.ɵɵelementEnd()();
18
20
  } }
19
21
  function AIAgentRunStepDetailComponent_Conditional_0_Conditional_25_Conditional_1_Template(rf, ctx) { if (rf & 1) {
20
22
  const _r5 = i0.ɵɵgetCurrentView();
21
- i0.ɵɵelementStart(0, "button", 19);
23
+ i0.ɵɵelementStart(0, "button", 20);
22
24
  i0.ɵɵlistener("click", function AIAgentRunStepDetailComponent_Conditional_0_Conditional_25_Conditional_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.detailPaneTab = "diff"); });
23
- i0.ɵɵelement(1, "i", 21);
25
+ i0.ɵɵelement(1, "i", 22);
24
26
  i0.ɵɵtext(2, " Payload Changes ");
25
27
  i0.ɵɵelementEnd();
26
28
  } if (rf & 2) {
27
29
  const ctx_r1 = i0.ɵɵnextContext(3);
28
30
  i0.ɵɵclassProp("active", ctx_r1.detailPaneTab === "diff");
29
31
  } }
30
- function AIAgentRunStepDetailComponent_Conditional_0_Conditional_25_Conditional_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
31
- i0.ɵɵelementStart(0, "span", 23);
32
+ function AIAgentRunStepDetailComponent_Conditional_0_Conditional_25_Conditional_2_Template(rf, ctx) { if (rf & 1) {
33
+ const _r6 = i0.ɵɵgetCurrentView();
34
+ i0.ɵɵelementStart(0, "button", 20);
35
+ i0.ɵɵlistener("click", function AIAgentRunStepDetailComponent_Conditional_0_Conditional_25_Conditional_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.detailPaneTab = "skills"); });
36
+ i0.ɵɵelement(1, "i", 23);
37
+ i0.ɵɵtext(2, " Skills ");
38
+ i0.ɵɵelementStart(3, "span", 24);
39
+ i0.ɵɵtext(4);
40
+ i0.ɵɵelementEnd()();
41
+ } if (rf & 2) {
42
+ const ctx_r1 = i0.ɵɵnextContext(3);
43
+ i0.ɵɵclassProp("active", ctx_r1.detailPaneTab === "skills");
44
+ i0.ɵɵadvance(4);
45
+ i0.ɵɵtextInterpolate(ctx_r1.stepSkillInvocations.length);
46
+ } }
47
+ function AIAgentRunStepDetailComponent_Conditional_0_Conditional_25_Conditional_3_Conditional_3_Template(rf, ctx) { if (rf & 1) {
48
+ i0.ɵɵelementStart(0, "span", 24);
32
49
  i0.ɵɵtext(1);
33
50
  i0.ɵɵelementEnd();
34
51
  } if (rf & 2) {
@@ -36,13 +53,13 @@ function AIAgentRunStepDetailComponent_Conditional_0_Conditional_25_Conditional_
36
53
  i0.ɵɵadvance();
37
54
  i0.ɵɵtextInterpolate(ctx_r1.scratchpadTaskChangeCount);
38
55
  } }
39
- function AIAgentRunStepDetailComponent_Conditional_0_Conditional_25_Conditional_2_Template(rf, ctx) { if (rf & 1) {
40
- const _r6 = i0.ɵɵgetCurrentView();
41
- i0.ɵɵelementStart(0, "button", 19);
42
- i0.ɵɵlistener("click", function AIAgentRunStepDetailComponent_Conditional_0_Conditional_25_Conditional_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.detailPaneTab = "scratchpad"); });
43
- i0.ɵɵelement(1, "i", 22);
56
+ function AIAgentRunStepDetailComponent_Conditional_0_Conditional_25_Conditional_3_Template(rf, ctx) { if (rf & 1) {
57
+ const _r7 = i0.ɵɵgetCurrentView();
58
+ i0.ɵɵelementStart(0, "button", 20);
59
+ i0.ɵɵlistener("click", function AIAgentRunStepDetailComponent_Conditional_0_Conditional_25_Conditional_3_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.detailPaneTab = "scratchpad"); });
60
+ i0.ɵɵelement(1, "i", 25);
44
61
  i0.ɵɵtext(2, " Scratchpad ");
45
- i0.ɵɵconditionalCreate(3, AIAgentRunStepDetailComponent_Conditional_0_Conditional_25_Conditional_2_Conditional_3_Template, 2, 1, "span", 23);
62
+ i0.ɵɵconditionalCreate(3, AIAgentRunStepDetailComponent_Conditional_0_Conditional_25_Conditional_3_Conditional_3_Template, 2, 1, "span", 24);
46
63
  i0.ɵɵelementEnd();
47
64
  } if (rf & 2) {
48
65
  const ctx_r1 = i0.ɵɵnextContext(3);
@@ -53,143 +70,214 @@ function AIAgentRunStepDetailComponent_Conditional_0_Conditional_25_Conditional_
53
70
  function AIAgentRunStepDetailComponent_Conditional_0_Conditional_25_Template(rf, ctx) { if (rf & 1) {
54
71
  const _r4 = i0.ɵɵgetCurrentView();
55
72
  i0.ɵɵelementStart(0, "div", 11);
56
- i0.ɵɵconditionalCreate(1, AIAgentRunStepDetailComponent_Conditional_0_Conditional_25_Conditional_1_Template, 3, 2, "button", 18);
57
- i0.ɵɵconditionalCreate(2, AIAgentRunStepDetailComponent_Conditional_0_Conditional_25_Conditional_2_Template, 4, 3, "button", 18);
58
- i0.ɵɵelementStart(3, "button", 19);
59
- i0.ɵɵlistener("click", function AIAgentRunStepDetailComponent_Conditional_0_Conditional_25_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.detailPaneTab = "json"); });
60
- i0.ɵɵelement(4, "i", 20);
61
- i0.ɵɵtext(5, " Full JSON ");
73
+ i0.ɵɵconditionalCreate(1, AIAgentRunStepDetailComponent_Conditional_0_Conditional_25_Conditional_1_Template, 3, 2, "button", 19);
74
+ i0.ɵɵconditionalCreate(2, AIAgentRunStepDetailComponent_Conditional_0_Conditional_25_Conditional_2_Template, 5, 3, "button", 19);
75
+ i0.ɵɵconditionalCreate(3, AIAgentRunStepDetailComponent_Conditional_0_Conditional_25_Conditional_3_Template, 4, 3, "button", 19);
76
+ i0.ɵɵelementStart(4, "button", 20);
77
+ i0.ɵɵlistener("click", function AIAgentRunStepDetailComponent_Conditional_0_Conditional_25_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.detailPaneTab = "json"); });
78
+ i0.ɵɵelement(5, "i", 21);
79
+ i0.ɵɵtext(6, " Full JSON ");
62
80
  i0.ɵɵelementEnd()();
63
81
  } if (rf & 2) {
64
82
  const ctx_r1 = i0.ɵɵnextContext(2);
65
83
  i0.ɵɵadvance();
66
84
  i0.ɵɵconditional(ctx_r1.showStepPayloadDiff ? 1 : -1);
67
85
  i0.ɵɵadvance();
68
- i0.ɵɵconditional(ctx_r1.showScratchpadTab ? 2 : -1);
86
+ i0.ɵɵconditional(ctx_r1.showSkillsTab ? 2 : -1);
87
+ i0.ɵɵadvance();
88
+ i0.ɵɵconditional(ctx_r1.showScratchpadTab ? 3 : -1);
69
89
  i0.ɵɵadvance();
70
90
  i0.ɵɵclassProp("active", ctx_r1.detailPaneTab === "json");
71
91
  } }
92
+ function AIAgentRunStepDetailComponent_Conditional_0_Conditional_27_For_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
93
+ i0.ɵɵelementStart(0, "div", 30);
94
+ i0.ɵɵelement(1, "i", 37);
95
+ i0.ɵɵtext(2);
96
+ i0.ɵɵelementEnd();
97
+ } if (rf & 2) {
98
+ const inv_r8 = i0.ɵɵnextContext().$implicit;
99
+ i0.ɵɵadvance(2);
100
+ i0.ɵɵtextInterpolate1(" ", inv_r8.Reason, " ");
101
+ } }
102
+ function AIAgentRunStepDetailComponent_Conditional_0_Conditional_27_For_2_Template(rf, ctx) { if (rf & 1) {
103
+ i0.ɵɵelementStart(0, "div", 26)(1, "div", 27)(2, "span", 28);
104
+ i0.ɵɵelement(3, "i", 23);
105
+ i0.ɵɵtext(4);
106
+ i0.ɵɵelementEnd();
107
+ i0.ɵɵelementStart(5, "span", 29);
108
+ i0.ɵɵtext(6);
109
+ i0.ɵɵelementEnd()();
110
+ i0.ɵɵconditionalCreate(7, AIAgentRunStepDetailComponent_Conditional_0_Conditional_27_For_2_Conditional_7_Template, 3, 1, "div", 30);
111
+ i0.ɵɵelementStart(8, "div", 31)(9, "div", 32);
112
+ i0.ɵɵtext(10, "Provenance of Authority");
113
+ i0.ɵɵelementEnd();
114
+ i0.ɵɵelementStart(11, "div", 33)(12, "span", 34);
115
+ i0.ɵɵtext(13, "Requested By");
116
+ i0.ɵɵelementEnd();
117
+ i0.ɵɵelementStart(14, "span", 35);
118
+ i0.ɵɵtext(15);
119
+ i0.ɵɵelementEnd()();
120
+ i0.ɵɵelementStart(16, "div", 33)(17, "span", 34);
121
+ i0.ɵɵtext(18, "Agent AcceptsSkills");
122
+ i0.ɵɵelementEnd();
123
+ i0.ɵɵelementStart(19, "span", 35);
124
+ i0.ɵɵtext(20);
125
+ i0.ɵɵelementEnd()();
126
+ i0.ɵɵelementStart(21, "div", 33)(22, "span", 34);
127
+ i0.ɵɵtext(23, "Skill ActivationMode");
128
+ i0.ɵɵelementEnd();
129
+ i0.ɵɵelementStart(24, "span", 35);
130
+ i0.ɵɵtext(25);
131
+ i0.ɵɵelementEnd()();
132
+ i0.ɵɵelementStart(26, "div", 33)(27, "span", 34);
133
+ i0.ɵɵtext(28, "Agent SkillActivationMode");
134
+ i0.ɵɵelementEnd();
135
+ i0.ɵɵelementStart(29, "span", 35);
136
+ i0.ɵɵtext(30);
137
+ i0.ɵɵelementEnd()();
138
+ i0.ɵɵelementStart(31, "div", 33)(32, "span", 34);
139
+ i0.ɵɵtext(33, "Skill ID");
140
+ i0.ɵɵelementEnd();
141
+ i0.ɵɵelementStart(34, "span", 36);
142
+ i0.ɵɵtext(35);
143
+ i0.ɵɵelementEnd()()()();
144
+ } if (rf & 2) {
145
+ const inv_r8 = ctx.$implicit;
146
+ const ctx_r1 = i0.ɵɵnextContext(3);
147
+ i0.ɵɵattribute("data-activation", inv_r8.ActivationType);
148
+ i0.ɵɵadvance(4);
149
+ i0.ɵɵtextInterpolate1(" ", inv_r8.SkillName, " ");
150
+ i0.ɵɵadvance();
151
+ i0.ɵɵattribute("data-activation", inv_r8.ActivationType);
152
+ i0.ɵɵadvance();
153
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.GetActivationTypeLabel(inv_r8), " ");
154
+ i0.ɵɵadvance();
155
+ i0.ɵɵconditional(inv_r8.Reason ? 7 : -1);
156
+ i0.ɵɵadvance(8);
157
+ i0.ɵɵtextInterpolate(inv_r8.Provenance.RequestedBy === "user-request" ? "User (/skill mention)" : "Agent decision");
158
+ i0.ɵɵadvance(5);
159
+ i0.ɵɵtextInterpolate(inv_r8.Provenance.AgentAcceptsSkills);
160
+ i0.ɵɵadvance(5);
161
+ i0.ɵɵtextInterpolate(inv_r8.Provenance.SkillActivationMode);
162
+ i0.ɵɵadvance(5);
163
+ i0.ɵɵtextInterpolate(inv_r8.Provenance.AgentSkillActivationMode);
164
+ i0.ɵɵadvance(5);
165
+ i0.ɵɵtextInterpolate(inv_r8.SkillID);
166
+ } }
72
167
  function AIAgentRunStepDetailComponent_Conditional_0_Conditional_27_Template(rf, ctx) { if (rf & 1) {
73
168
  i0.ɵɵelementStart(0, "div", 13);
74
- i0.ɵɵelement(1, "mj-deep-diff", 24);
169
+ i0.ɵɵrepeaterCreate(1, AIAgentRunStepDetailComponent_Conditional_0_Conditional_27_For_2_Template, 36, 10, "div", 26, _forTrack0);
170
+ i0.ɵɵelementEnd();
171
+ } if (rf & 2) {
172
+ const ctx_r1 = i0.ɵɵnextContext(2);
173
+ i0.ɵɵadvance();
174
+ i0.ɵɵrepeater(ctx_r1.stepSkillInvocations);
175
+ } }
176
+ function AIAgentRunStepDetailComponent_Conditional_0_Conditional_28_Template(rf, ctx) { if (rf & 1) {
177
+ i0.ɵɵelementStart(0, "div", 14);
178
+ i0.ɵɵelement(1, "mj-deep-diff", 38);
75
179
  i0.ɵɵelementEnd();
76
180
  } if (rf & 2) {
77
181
  const ctx_r1 = i0.ɵɵnextContext(2);
78
182
  i0.ɵɵadvance();
79
183
  i0.ɵɵproperty("oldValue", ctx_r1.stepPayloadAtStartObject)("newValue", ctx_r1.stepPayloadAtEndObject)("title", "")("showSummary", true)("showUnchanged", false)("expandAll", false)("maxDepth", 8)("maxStringLength", 150)("treatNullAsUndefined", true);
80
184
  } }
81
- function AIAgentRunStepDetailComponent_Conditional_0_Conditional_28_Conditional_11_Conditional_1_Template(rf, ctx) { if (rf & 1) {
82
- i0.ɵɵelement(0, "mj-deep-diff", 24);
185
+ function AIAgentRunStepDetailComponent_Conditional_0_Conditional_29_Conditional_11_Conditional_1_Template(rf, ctx) { if (rf & 1) {
186
+ i0.ɵɵelement(0, "mj-deep-diff", 38);
83
187
  } if (rf & 2) {
84
188
  const ctx_r1 = i0.ɵɵnextContext(4);
85
189
  i0.ɵɵproperty("oldValue", ctx_r1.stepScratchpadInput)("newValue", ctx_r1.stepScratchpadOutput)("title", "")("showSummary", true)("showUnchanged", false)("expandAll", true)("maxDepth", 6)("maxStringLength", 300)("treatNullAsUndefined", true);
86
190
  } }
87
- function AIAgentRunStepDetailComponent_Conditional_0_Conditional_28_Conditional_11_Conditional_2_ng_container_5_Template(rf, ctx) { if (rf & 1) {
191
+ function AIAgentRunStepDetailComponent_Conditional_0_Conditional_29_Conditional_11_Conditional_2_ng_container_2_Template(rf, ctx) { if (rf & 1) {
88
192
  i0.ɵɵelementContainer(0);
89
193
  } }
90
- function AIAgentRunStepDetailComponent_Conditional_0_Conditional_28_Conditional_11_Conditional_2_Template(rf, ctx) { if (rf & 1) {
91
- i0.ɵɵelementStart(0, "div", 32);
92
- i0.ɵɵelement(1, "i", 33);
93
- i0.ɵɵelementStart(2, "span");
94
- i0.ɵɵtext(3, "Scratchpad created in this step (no prior state)");
95
- i0.ɵɵelementEnd()();
96
- i0.ɵɵelementStart(4, "div", 34);
97
- i0.ɵɵtemplate(5, AIAgentRunStepDetailComponent_Conditional_0_Conditional_28_Conditional_11_Conditional_2_ng_container_5_Template, 1, 0, "ng-container", 35);
194
+ function AIAgentRunStepDetailComponent_Conditional_0_Conditional_29_Conditional_11_Conditional_2_Template(rf, ctx) { if (rf & 1) {
195
+ i0.ɵɵelement(0, "mj-empty-state", 47);
196
+ i0.ɵɵelementStart(1, "div", 48);
197
+ i0.ɵɵtemplate(2, AIAgentRunStepDetailComponent_Conditional_0_Conditional_29_Conditional_11_Conditional_2_ng_container_2_Template, 1, 0, "ng-container", 49);
98
198
  i0.ɵɵelementEnd();
99
199
  } if (rf & 2) {
100
200
  const ctx_r1 = i0.ɵɵnextContext(4);
101
- const scratchpadSnapshotTpl_r8 = i0.ɵɵreference(2);
102
- i0.ɵɵadvance(5);
103
- i0.ɵɵproperty("ngTemplateOutlet", scratchpadSnapshotTpl_r8)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c0, ctx_r1.stepScratchpadOutput));
201
+ const scratchpadSnapshotTpl_r10 = i0.ɵɵreference(2);
202
+ i0.ɵɵadvance(2);
203
+ i0.ɵɵproperty("ngTemplateOutlet", scratchpadSnapshotTpl_r10)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c0, ctx_r1.stepScratchpadOutput));
104
204
  } }
105
- function AIAgentRunStepDetailComponent_Conditional_0_Conditional_28_Conditional_11_Conditional_3_Template(rf, ctx) { if (rf & 1) {
106
- i0.ɵɵelementStart(0, "div", 32);
107
- i0.ɵɵelement(1, "i", 36);
108
- i0.ɵɵelementStart(2, "span");
109
- i0.ɵɵtext(3, "No scratchpad changes in this step");
110
- i0.ɵɵelementEnd()();
205
+ function AIAgentRunStepDetailComponent_Conditional_0_Conditional_29_Conditional_11_Conditional_3_Template(rf, ctx) { if (rf & 1) {
206
+ i0.ɵɵelement(0, "mj-empty-state", 46);
111
207
  } }
112
- function AIAgentRunStepDetailComponent_Conditional_0_Conditional_28_Conditional_11_Template(rf, ctx) { if (rf & 1) {
113
- i0.ɵɵelementStart(0, "div", 30);
114
- i0.ɵɵconditionalCreate(1, AIAgentRunStepDetailComponent_Conditional_0_Conditional_28_Conditional_11_Conditional_1_Template, 1, 9, "mj-deep-diff", 24)(2, AIAgentRunStepDetailComponent_Conditional_0_Conditional_28_Conditional_11_Conditional_2_Template, 6, 4)(3, AIAgentRunStepDetailComponent_Conditional_0_Conditional_28_Conditional_11_Conditional_3_Template, 4, 0, "div", 32);
208
+ function AIAgentRunStepDetailComponent_Conditional_0_Conditional_29_Conditional_11_Template(rf, ctx) { if (rf & 1) {
209
+ i0.ɵɵelementStart(0, "div", 44);
210
+ i0.ɵɵconditionalCreate(1, AIAgentRunStepDetailComponent_Conditional_0_Conditional_29_Conditional_11_Conditional_1_Template, 1, 9, "mj-deep-diff", 38)(2, AIAgentRunStepDetailComponent_Conditional_0_Conditional_29_Conditional_11_Conditional_2_Template, 3, 4)(3, AIAgentRunStepDetailComponent_Conditional_0_Conditional_29_Conditional_11_Conditional_3_Template, 1, 0, "mj-empty-state", 46);
115
211
  i0.ɵɵelementEnd();
116
212
  } if (rf & 2) {
117
213
  const ctx_r1 = i0.ɵɵnextContext(3);
118
214
  i0.ɵɵadvance();
119
215
  i0.ɵɵconditional(ctx_r1.stepScratchpadInput && ctx_r1.stepScratchpadOutput ? 1 : ctx_r1.stepScratchpadOutput ? 2 : 3);
120
216
  } }
121
- function AIAgentRunStepDetailComponent_Conditional_0_Conditional_28_Conditional_12_Conditional_1_ng_container_0_Template(rf, ctx) { if (rf & 1) {
217
+ function AIAgentRunStepDetailComponent_Conditional_0_Conditional_29_Conditional_12_Conditional_1_ng_container_0_Template(rf, ctx) { if (rf & 1) {
122
218
  i0.ɵɵelementContainer(0);
123
219
  } }
124
- function AIAgentRunStepDetailComponent_Conditional_0_Conditional_28_Conditional_12_Conditional_1_Template(rf, ctx) { if (rf & 1) {
125
- i0.ɵɵtemplate(0, AIAgentRunStepDetailComponent_Conditional_0_Conditional_28_Conditional_12_Conditional_1_ng_container_0_Template, 1, 0, "ng-container", 35);
220
+ function AIAgentRunStepDetailComponent_Conditional_0_Conditional_29_Conditional_12_Conditional_1_Template(rf, ctx) { if (rf & 1) {
221
+ i0.ɵɵtemplate(0, AIAgentRunStepDetailComponent_Conditional_0_Conditional_29_Conditional_12_Conditional_1_ng_container_0_Template, 1, 0, "ng-container", 49);
126
222
  } if (rf & 2) {
127
223
  const ctx_r1 = i0.ɵɵnextContext(4);
128
- const scratchpadSnapshotTpl_r8 = i0.ɵɵreference(2);
129
- i0.ɵɵproperty("ngTemplateOutlet", scratchpadSnapshotTpl_r8)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c0, ctx_r1.stepScratchpadInput));
130
- } }
131
- function AIAgentRunStepDetailComponent_Conditional_0_Conditional_28_Conditional_12_Conditional_2_Template(rf, ctx) { if (rf & 1) {
132
- i0.ɵɵelementStart(0, "div", 32);
133
- i0.ɵɵelement(1, "i", 36);
134
- i0.ɵɵelementStart(2, "span");
135
- i0.ɵɵtext(3, "No scratchpad input for this step");
136
- i0.ɵɵelementEnd()();
224
+ const scratchpadSnapshotTpl_r10 = i0.ɵɵreference(2);
225
+ i0.ɵɵproperty("ngTemplateOutlet", scratchpadSnapshotTpl_r10)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c0, ctx_r1.stepScratchpadInput));
226
+ } }
227
+ function AIAgentRunStepDetailComponent_Conditional_0_Conditional_29_Conditional_12_Conditional_2_Template(rf, ctx) { if (rf & 1) {
228
+ i0.ɵɵelement(0, "mj-empty-state", 50);
137
229
  } }
138
- function AIAgentRunStepDetailComponent_Conditional_0_Conditional_28_Conditional_12_Template(rf, ctx) { if (rf & 1) {
139
- i0.ɵɵelementStart(0, "div", 31);
140
- i0.ɵɵconditionalCreate(1, AIAgentRunStepDetailComponent_Conditional_0_Conditional_28_Conditional_12_Conditional_1_Template, 1, 4, "ng-container")(2, AIAgentRunStepDetailComponent_Conditional_0_Conditional_28_Conditional_12_Conditional_2_Template, 4, 0, "div", 32);
230
+ function AIAgentRunStepDetailComponent_Conditional_0_Conditional_29_Conditional_12_Template(rf, ctx) { if (rf & 1) {
231
+ i0.ɵɵelementStart(0, "div", 45);
232
+ i0.ɵɵconditionalCreate(1, AIAgentRunStepDetailComponent_Conditional_0_Conditional_29_Conditional_12_Conditional_1_Template, 1, 4, "ng-container")(2, AIAgentRunStepDetailComponent_Conditional_0_Conditional_29_Conditional_12_Conditional_2_Template, 1, 0, "mj-empty-state", 50);
141
233
  i0.ɵɵelementEnd();
142
234
  } if (rf & 2) {
143
235
  const ctx_r1 = i0.ɵɵnextContext(3);
144
236
  i0.ɵɵadvance();
145
237
  i0.ɵɵconditional(ctx_r1.stepScratchpadInput ? 1 : 2);
146
238
  } }
147
- function AIAgentRunStepDetailComponent_Conditional_0_Conditional_28_Conditional_13_Conditional_1_ng_container_0_Template(rf, ctx) { if (rf & 1) {
239
+ function AIAgentRunStepDetailComponent_Conditional_0_Conditional_29_Conditional_13_Conditional_1_ng_container_0_Template(rf, ctx) { if (rf & 1) {
148
240
  i0.ɵɵelementContainer(0);
149
241
  } }
150
- function AIAgentRunStepDetailComponent_Conditional_0_Conditional_28_Conditional_13_Conditional_1_Template(rf, ctx) { if (rf & 1) {
151
- i0.ɵɵtemplate(0, AIAgentRunStepDetailComponent_Conditional_0_Conditional_28_Conditional_13_Conditional_1_ng_container_0_Template, 1, 0, "ng-container", 35);
242
+ function AIAgentRunStepDetailComponent_Conditional_0_Conditional_29_Conditional_13_Conditional_1_Template(rf, ctx) { if (rf & 1) {
243
+ i0.ɵɵtemplate(0, AIAgentRunStepDetailComponent_Conditional_0_Conditional_29_Conditional_13_Conditional_1_ng_container_0_Template, 1, 0, "ng-container", 49);
152
244
  } if (rf & 2) {
153
245
  const ctx_r1 = i0.ɵɵnextContext(4);
154
- const scratchpadSnapshotTpl_r8 = i0.ɵɵreference(2);
155
- i0.ɵɵproperty("ngTemplateOutlet", scratchpadSnapshotTpl_r8)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c0, ctx_r1.stepScratchpadOutput));
156
- } }
157
- function AIAgentRunStepDetailComponent_Conditional_0_Conditional_28_Conditional_13_Conditional_2_Template(rf, ctx) { if (rf & 1) {
158
- i0.ɵɵelementStart(0, "div", 32);
159
- i0.ɵɵelement(1, "i", 36);
160
- i0.ɵɵelementStart(2, "span");
161
- i0.ɵɵtext(3, "No scratchpad output for this step");
162
- i0.ɵɵelementEnd()();
246
+ const scratchpadSnapshotTpl_r10 = i0.ɵɵreference(2);
247
+ i0.ɵɵproperty("ngTemplateOutlet", scratchpadSnapshotTpl_r10)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c0, ctx_r1.stepScratchpadOutput));
248
+ } }
249
+ function AIAgentRunStepDetailComponent_Conditional_0_Conditional_29_Conditional_13_Conditional_2_Template(rf, ctx) { if (rf & 1) {
250
+ i0.ɵɵelement(0, "mj-empty-state", 51);
163
251
  } }
164
- function AIAgentRunStepDetailComponent_Conditional_0_Conditional_28_Conditional_13_Template(rf, ctx) { if (rf & 1) {
165
- i0.ɵɵelementStart(0, "div", 31);
166
- i0.ɵɵconditionalCreate(1, AIAgentRunStepDetailComponent_Conditional_0_Conditional_28_Conditional_13_Conditional_1_Template, 1, 4, "ng-container")(2, AIAgentRunStepDetailComponent_Conditional_0_Conditional_28_Conditional_13_Conditional_2_Template, 4, 0, "div", 32);
252
+ function AIAgentRunStepDetailComponent_Conditional_0_Conditional_29_Conditional_13_Template(rf, ctx) { if (rf & 1) {
253
+ i0.ɵɵelementStart(0, "div", 45);
254
+ i0.ɵɵconditionalCreate(1, AIAgentRunStepDetailComponent_Conditional_0_Conditional_29_Conditional_13_Conditional_1_Template, 1, 4, "ng-container")(2, AIAgentRunStepDetailComponent_Conditional_0_Conditional_29_Conditional_13_Conditional_2_Template, 1, 0, "mj-empty-state", 51);
167
255
  i0.ɵɵelementEnd();
168
256
  } if (rf & 2) {
169
257
  const ctx_r1 = i0.ɵɵnextContext(3);
170
258
  i0.ɵɵadvance();
171
259
  i0.ɵɵconditional(ctx_r1.stepScratchpadOutput ? 1 : 2);
172
260
  } }
173
- function AIAgentRunStepDetailComponent_Conditional_0_Conditional_28_Template(rf, ctx) { if (rf & 1) {
174
- const _r7 = i0.ɵɵgetCurrentView();
175
- i0.ɵɵelementStart(0, "div", 14)(1, "div", 25)(2, "button", 26);
176
- i0.ɵɵlistener("click", function AIAgentRunStepDetailComponent_Conditional_0_Conditional_28_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.scratchpadSubTab = "diff"); });
177
- i0.ɵɵelement(3, "i", 27);
261
+ function AIAgentRunStepDetailComponent_Conditional_0_Conditional_29_Template(rf, ctx) { if (rf & 1) {
262
+ const _r9 = i0.ɵɵgetCurrentView();
263
+ i0.ɵɵelementStart(0, "div", 15)(1, "div", 39)(2, "button", 40);
264
+ i0.ɵɵlistener("click", function AIAgentRunStepDetailComponent_Conditional_0_Conditional_29_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.scratchpadSubTab = "diff"); });
265
+ i0.ɵɵelement(3, "i", 41);
178
266
  i0.ɵɵtext(4, " Diff ");
179
267
  i0.ɵɵelementEnd();
180
- i0.ɵɵelementStart(5, "button", 26);
181
- i0.ɵɵlistener("click", function AIAgentRunStepDetailComponent_Conditional_0_Conditional_28_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.scratchpadSubTab = "input"); });
182
- i0.ɵɵelement(6, "i", 28);
268
+ i0.ɵɵelementStart(5, "button", 40);
269
+ i0.ɵɵlistener("click", function AIAgentRunStepDetailComponent_Conditional_0_Conditional_29_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.scratchpadSubTab = "input"); });
270
+ i0.ɵɵelement(6, "i", 42);
183
271
  i0.ɵɵtext(7, " Input ");
184
272
  i0.ɵɵelementEnd();
185
- i0.ɵɵelementStart(8, "button", 26);
186
- i0.ɵɵlistener("click", function AIAgentRunStepDetailComponent_Conditional_0_Conditional_28_Template_button_click_8_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.scratchpadSubTab = "output"); });
187
- i0.ɵɵelement(9, "i", 29);
273
+ i0.ɵɵelementStart(8, "button", 40);
274
+ i0.ɵɵlistener("click", function AIAgentRunStepDetailComponent_Conditional_0_Conditional_29_Template_button_click_8_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.scratchpadSubTab = "output"); });
275
+ i0.ɵɵelement(9, "i", 43);
188
276
  i0.ɵɵtext(10, " Output ");
189
277
  i0.ɵɵelementEnd()();
190
- i0.ɵɵconditionalCreate(11, AIAgentRunStepDetailComponent_Conditional_0_Conditional_28_Conditional_11_Template, 4, 1, "div", 30);
191
- i0.ɵɵconditionalCreate(12, AIAgentRunStepDetailComponent_Conditional_0_Conditional_28_Conditional_12_Template, 3, 1, "div", 31);
192
- i0.ɵɵconditionalCreate(13, AIAgentRunStepDetailComponent_Conditional_0_Conditional_28_Conditional_13_Template, 3, 1, "div", 31);
278
+ i0.ɵɵconditionalCreate(11, AIAgentRunStepDetailComponent_Conditional_0_Conditional_29_Conditional_11_Template, 4, 1, "div", 44);
279
+ i0.ɵɵconditionalCreate(12, AIAgentRunStepDetailComponent_Conditional_0_Conditional_29_Conditional_12_Template, 3, 1, "div", 45);
280
+ i0.ɵɵconditionalCreate(13, AIAgentRunStepDetailComponent_Conditional_0_Conditional_29_Conditional_13_Template, 3, 1, "div", 45);
193
281
  i0.ɵɵelementEnd();
194
282
  } if (rf & 2) {
195
283
  const ctx_r1 = i0.ɵɵnextContext(2);
@@ -206,14 +294,14 @@ function AIAgentRunStepDetailComponent_Conditional_0_Conditional_28_Template(rf,
206
294
  i0.ɵɵadvance();
207
295
  i0.ɵɵconditional(ctx_r1.scratchpadSubTab === "output" ? 13 : -1);
208
296
  } }
209
- function AIAgentRunStepDetailComponent_Conditional_0_Conditional_29_Template(rf, ctx) { if (rf & 1) {
210
- const _r9 = i0.ɵɵgetCurrentView();
211
- i0.ɵɵelementStart(0, "div", 15)(1, "div", 37)(2, "button", 38);
212
- i0.ɵɵlistener("click", function AIAgentRunStepDetailComponent_Conditional_0_Conditional_29_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onCopyToClipboard()); });
213
- i0.ɵɵelement(3, "i", 39);
297
+ function AIAgentRunStepDetailComponent_Conditional_0_Conditional_30_Template(rf, ctx) { if (rf & 1) {
298
+ const _r11 = i0.ɵɵgetCurrentView();
299
+ i0.ɵɵelementStart(0, "div", 16)(1, "div", 52)(2, "button", 53);
300
+ i0.ɵɵlistener("click", function AIAgentRunStepDetailComponent_Conditional_0_Conditional_30_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onCopyToClipboard()); });
301
+ i0.ɵɵelement(3, "i", 54);
214
302
  i0.ɵɵelementEnd()();
215
- i0.ɵɵelementStart(4, "mj-code-editor", 40);
216
- i0.ɵɵtwoWayListener("ngModelChange", function AIAgentRunStepDetailComponent_Conditional_0_Conditional_29_Template_mj_code_editor_ngModelChange_4_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.selectedItemJsonString, $event) || (ctx_r1.selectedItemJsonString = $event); return i0.ɵɵresetView($event); });
303
+ i0.ɵɵelementStart(4, "mj-code-editor", 55);
304
+ i0.ɵɵtwoWayListener("ngModelChange", function AIAgentRunStepDetailComponent_Conditional_0_Conditional_30_Template_mj_code_editor_ngModelChange_4_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.selectedItemJsonString, $event) || (ctx_r1.selectedItemJsonString = $event); return i0.ɵɵresetView($event); });
217
305
  i0.ɵɵelementEnd()();
218
306
  } if (rf & 2) {
219
307
  const ctx_r1 = i0.ɵɵnextContext(2);
@@ -250,11 +338,12 @@ function AIAgentRunStepDetailComponent_Conditional_0_Template(rf, ctx) { if (rf
250
338
  i0.ɵɵtext(23);
251
339
  i0.ɵɵelementEnd()()();
252
340
  i0.ɵɵconditionalCreate(24, AIAgentRunStepDetailComponent_Conditional_0_Conditional_24_Template, 4, 0, "div", 10);
253
- i0.ɵɵconditionalCreate(25, AIAgentRunStepDetailComponent_Conditional_0_Conditional_25_Template, 6, 4, "div", 11);
341
+ i0.ɵɵconditionalCreate(25, AIAgentRunStepDetailComponent_Conditional_0_Conditional_25_Template, 7, 5, "div", 11);
254
342
  i0.ɵɵelementStart(26, "div", 12);
255
- i0.ɵɵconditionalCreate(27, AIAgentRunStepDetailComponent_Conditional_0_Conditional_27_Template, 2, 9, "div", 13);
256
- i0.ɵɵconditionalCreate(28, AIAgentRunStepDetailComponent_Conditional_0_Conditional_28_Template, 14, 9, "div", 14);
257
- i0.ɵɵconditionalCreate(29, AIAgentRunStepDetailComponent_Conditional_0_Conditional_29_Template, 5, 3, "div", 15);
343
+ i0.ɵɵconditionalCreate(27, AIAgentRunStepDetailComponent_Conditional_0_Conditional_27_Template, 3, 0, "div", 13);
344
+ i0.ɵɵconditionalCreate(28, AIAgentRunStepDetailComponent_Conditional_0_Conditional_28_Template, 2, 9, "div", 14);
345
+ i0.ɵɵconditionalCreate(29, AIAgentRunStepDetailComponent_Conditional_0_Conditional_29_Template, 14, 9, "div", 15);
346
+ i0.ɵɵconditionalCreate(30, AIAgentRunStepDetailComponent_Conditional_0_Conditional_30_Template, 5, 3, "div", 16);
258
347
  i0.ɵɵelementEnd()()();
259
348
  } if (rf & 2) {
260
349
  const ctx_r1 = i0.ɵɵnextContext();
@@ -273,120 +362,118 @@ function AIAgentRunStepDetailComponent_Conditional_0_Template(rf, ctx) { if (rf
273
362
  i0.ɵɵadvance();
274
363
  i0.ɵɵconditional(ctx_r1.selectedTimelineItem.type === "action" && (ctx_r1.selectedTimelineItem.data == null ? null : ctx_r1.selectedTimelineItem.data.ID) ? 24 : -1);
275
364
  i0.ɵɵadvance();
276
- i0.ɵɵconditional(ctx_r1.showStepPayloadDiff || ctx_r1.showScratchpadTab ? 25 : -1);
365
+ i0.ɵɵconditional(ctx_r1.showStepPayloadDiff || ctx_r1.showScratchpadTab || ctx_r1.showSkillsTab ? 25 : -1);
277
366
  i0.ɵɵadvance();
278
- i0.ɵɵclassProp("with-tabs", ctx_r1.showStepPayloadDiff || ctx_r1.showScratchpadTab);
367
+ i0.ɵɵclassProp("with-tabs", ctx_r1.showStepPayloadDiff || ctx_r1.showScratchpadTab || ctx_r1.showSkillsTab);
279
368
  i0.ɵɵadvance();
280
- i0.ɵɵconditional(ctx_r1.detailPaneTab === "diff" && ctx_r1.showStepPayloadDiff ? 27 : -1);
369
+ i0.ɵɵconditional(ctx_r1.detailPaneTab === "skills" && ctx_r1.showSkillsTab ? 27 : -1);
281
370
  i0.ɵɵadvance();
282
- i0.ɵɵconditional(ctx_r1.detailPaneTab === "scratchpad" && ctx_r1.showScratchpadTab ? 28 : -1);
371
+ i0.ɵɵconditional(ctx_r1.detailPaneTab === "diff" && ctx_r1.showStepPayloadDiff ? 28 : -1);
283
372
  i0.ɵɵadvance();
284
- i0.ɵɵconditional(ctx_r1.detailPaneTab === "json" || !ctx_r1.showStepPayloadDiff && !ctx_r1.showScratchpadTab ? 29 : -1);
373
+ i0.ɵɵconditional(ctx_r1.detailPaneTab === "scratchpad" && ctx_r1.showScratchpadTab ? 29 : -1);
374
+ i0.ɵɵadvance();
375
+ i0.ɵɵconditional(ctx_r1.detailPaneTab === "json" || !ctx_r1.showStepPayloadDiff && !ctx_r1.showScratchpadTab ? 30 : -1);
285
376
  } }
286
377
  function AIAgentRunStepDetailComponent_ng_template_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
287
- i0.ɵɵelementStart(0, "div", 41)(1, "h4");
288
- i0.ɵɵelement(2, "i", 43);
378
+ i0.ɵɵelementStart(0, "div", 56)(1, "h4");
379
+ i0.ɵɵelement(2, "i", 59);
289
380
  i0.ɵɵtext(3, " Notes");
290
381
  i0.ɵɵelementEnd();
291
- i0.ɵɵelementStart(4, "div", 44);
382
+ i0.ɵɵelementStart(4, "div", 60);
292
383
  i0.ɵɵtext(5);
293
384
  i0.ɵɵelementEnd()();
294
385
  } if (rf & 2) {
295
- const snapshot_r10 = i0.ɵɵnextContext().$implicit;
386
+ const snapshot_r12 = i0.ɵɵnextContext().$implicit;
296
387
  i0.ɵɵadvance(5);
297
- i0.ɵɵtextInterpolate(snapshot_r10.notes);
388
+ i0.ɵɵtextInterpolate(snapshot_r12.notes);
298
389
  } }
299
390
  function AIAgentRunStepDetailComponent_ng_template_1_Conditional_2_For_6_Case_2_Template(rf, ctx) { if (rf & 1) {
300
- i0.ɵɵelement(0, "i", 49);
391
+ i0.ɵɵelement(0, "i", 65);
301
392
  } }
302
393
  function AIAgentRunStepDetailComponent_ng_template_1_Conditional_2_For_6_Case_3_Template(rf, ctx) { if (rf & 1) {
303
- i0.ɵɵelement(0, "i", 50);
394
+ i0.ɵɵelement(0, "i", 66);
304
395
  } }
305
396
  function AIAgentRunStepDetailComponent_ng_template_1_Conditional_2_For_6_Case_4_Template(rf, ctx) { if (rf & 1) {
306
- i0.ɵɵelement(0, "i", 51);
397
+ i0.ɵɵelement(0, "i", 67);
307
398
  } }
308
399
  function AIAgentRunStepDetailComponent_ng_template_1_Conditional_2_For_6_Case_5_Template(rf, ctx) { if (rf & 1) {
309
- i0.ɵɵelement(0, "i", 52);
400
+ i0.ɵɵelement(0, "i", 68);
310
401
  } }
311
402
  function AIAgentRunStepDetailComponent_ng_template_1_Conditional_2_For_6_Conditional_11_Template(rf, ctx) { if (rf & 1) {
312
- i0.ɵɵelementStart(0, "span", 56);
403
+ i0.ɵɵelementStart(0, "span", 72);
313
404
  i0.ɵɵtext(1);
314
405
  i0.ɵɵelementEnd();
315
406
  } if (rf & 2) {
316
- const task_r11 = i0.ɵɵnextContext().$implicit;
407
+ const task_r13 = i0.ɵɵnextContext().$implicit;
317
408
  i0.ɵɵadvance();
318
- i0.ɵɵtextInterpolate(task_r11.notes);
409
+ i0.ɵɵtextInterpolate(task_r13.notes);
319
410
  } }
320
411
  function AIAgentRunStepDetailComponent_ng_template_1_Conditional_2_For_6_Template(rf, ctx) { if (rf & 1) {
321
- i0.ɵɵelementStart(0, "div", 47)(1, "span", 48);
322
- i0.ɵɵconditionalCreate(2, AIAgentRunStepDetailComponent_ng_template_1_Conditional_2_For_6_Case_2_Template, 1, 0, "i", 49)(3, AIAgentRunStepDetailComponent_ng_template_1_Conditional_2_For_6_Case_3_Template, 1, 0, "i", 50)(4, AIAgentRunStepDetailComponent_ng_template_1_Conditional_2_For_6_Case_4_Template, 1, 0, "i", 51)(5, AIAgentRunStepDetailComponent_ng_template_1_Conditional_2_For_6_Case_5_Template, 1, 0, "i", 52);
412
+ i0.ɵɵelementStart(0, "div", 63)(1, "span", 64);
413
+ i0.ɵɵconditionalCreate(2, AIAgentRunStepDetailComponent_ng_template_1_Conditional_2_For_6_Case_2_Template, 1, 0, "i", 65)(3, AIAgentRunStepDetailComponent_ng_template_1_Conditional_2_For_6_Case_3_Template, 1, 0, "i", 66)(4, AIAgentRunStepDetailComponent_ng_template_1_Conditional_2_For_6_Case_4_Template, 1, 0, "i", 67)(5, AIAgentRunStepDetailComponent_ng_template_1_Conditional_2_For_6_Case_5_Template, 1, 0, "i", 68);
323
414
  i0.ɵɵelementEnd();
324
- i0.ɵɵelementStart(6, "div", 53)(7, "span", 54);
415
+ i0.ɵɵelementStart(6, "div", 69)(7, "span", 70);
325
416
  i0.ɵɵtext(8);
326
417
  i0.ɵɵelementEnd();
327
- i0.ɵɵelementStart(9, "span", 55);
418
+ i0.ɵɵelementStart(9, "span", 71);
328
419
  i0.ɵɵtext(10);
329
420
  i0.ɵɵelementEnd();
330
- i0.ɵɵconditionalCreate(11, AIAgentRunStepDetailComponent_ng_template_1_Conditional_2_For_6_Conditional_11_Template, 2, 1, "span", 56);
421
+ i0.ɵɵconditionalCreate(11, AIAgentRunStepDetailComponent_ng_template_1_Conditional_2_For_6_Conditional_11_Template, 2, 1, "span", 72);
331
422
  i0.ɵɵelementEnd();
332
- i0.ɵɵelementStart(12, "span", 57);
423
+ i0.ɵɵelementStart(12, "span", 73);
333
424
  i0.ɵɵtext(13);
334
425
  i0.ɵɵelementEnd()();
335
426
  } if (rf & 2) {
336
427
  let tmp_16_0;
337
- const task_r11 = ctx.$implicit;
338
- i0.ɵɵattribute("data-status", task_r11.status);
428
+ const task_r13 = ctx.$implicit;
429
+ i0.ɵɵattribute("data-status", task_r13.status);
339
430
  i0.ɵɵadvance();
340
- i0.ɵɵattribute("data-status", task_r11.status);
431
+ i0.ɵɵattribute("data-status", task_r13.status);
341
432
  i0.ɵɵadvance();
342
- i0.ɵɵconditional((tmp_16_0 = task_r11.status) === "completed" ? 2 : tmp_16_0 === "in_progress" ? 3 : tmp_16_0 === "blocked" ? 4 : 5);
433
+ i0.ɵɵconditional((tmp_16_0 = task_r13.status) === "completed" ? 2 : tmp_16_0 === "in_progress" ? 3 : tmp_16_0 === "blocked" ? 4 : 5);
343
434
  i0.ɵɵadvance(6);
344
- i0.ɵɵtextInterpolate(task_r11.id);
435
+ i0.ɵɵtextInterpolate(task_r13.id);
345
436
  i0.ɵɵadvance(2);
346
- i0.ɵɵtextInterpolate(task_r11.title);
437
+ i0.ɵɵtextInterpolate(task_r13.title);
347
438
  i0.ɵɵadvance();
348
- i0.ɵɵconditional(task_r11.notes ? 11 : -1);
439
+ i0.ɵɵconditional(task_r13.notes ? 11 : -1);
349
440
  i0.ɵɵadvance();
350
- i0.ɵɵattribute("data-status", task_r11.status);
441
+ i0.ɵɵattribute("data-status", task_r13.status);
351
442
  i0.ɵɵadvance();
352
- i0.ɵɵtextInterpolate(task_r11.status);
443
+ i0.ɵɵtextInterpolate(task_r13.status);
353
444
  } }
354
445
  function AIAgentRunStepDetailComponent_ng_template_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
355
- i0.ɵɵelementStart(0, "div", 42)(1, "h4");
356
- i0.ɵɵelement(2, "i", 45);
446
+ i0.ɵɵelementStart(0, "div", 57)(1, "h4");
447
+ i0.ɵɵelement(2, "i", 61);
357
448
  i0.ɵɵtext(3);
358
449
  i0.ɵɵelementEnd();
359
- i0.ɵɵelementStart(4, "div", 46);
360
- i0.ɵɵrepeaterCreate(5, AIAgentRunStepDetailComponent_ng_template_1_Conditional_2_For_6_Template, 14, 8, "div", 47, _forTrack0);
450
+ i0.ɵɵelementStart(4, "div", 62);
451
+ i0.ɵɵrepeaterCreate(5, AIAgentRunStepDetailComponent_ng_template_1_Conditional_2_For_6_Template, 14, 8, "div", 63, _forTrack1);
361
452
  i0.ɵɵelementEnd()();
362
453
  } if (rf & 2) {
363
- const snapshot_r10 = i0.ɵɵnextContext().$implicit;
454
+ const snapshot_r12 = i0.ɵɵnextContext().$implicit;
364
455
  i0.ɵɵadvance(3);
365
- i0.ɵɵtextInterpolate1(" Tasks (", snapshot_r10.tasks.length, ")");
456
+ i0.ɵɵtextInterpolate1(" Tasks (", snapshot_r12.tasks.length, ")");
366
457
  i0.ɵɵadvance(2);
367
- i0.ɵɵrepeater(snapshot_r10.tasks);
458
+ i0.ɵɵrepeater(snapshot_r12.tasks);
368
459
  } }
369
460
  function AIAgentRunStepDetailComponent_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
370
- i0.ɵɵelementStart(0, "div", 32);
371
- i0.ɵɵelement(1, "i", 36);
372
- i0.ɵɵelementStart(2, "span");
373
- i0.ɵɵtext(3, "Empty scratchpad");
374
- i0.ɵɵelementEnd()();
461
+ i0.ɵɵelement(0, "mj-empty-state", 58);
375
462
  } }
376
463
  function AIAgentRunStepDetailComponent_ng_template_1_Template(rf, ctx) { if (rf & 1) {
377
- i0.ɵɵelementStart(0, "div", 34);
378
- i0.ɵɵconditionalCreate(1, AIAgentRunStepDetailComponent_ng_template_1_Conditional_1_Template, 6, 1, "div", 41);
379
- i0.ɵɵconditionalCreate(2, AIAgentRunStepDetailComponent_ng_template_1_Conditional_2_Template, 7, 1, "div", 42);
380
- i0.ɵɵconditionalCreate(3, AIAgentRunStepDetailComponent_ng_template_1_Conditional_3_Template, 4, 0, "div", 32);
464
+ i0.ɵɵelementStart(0, "div", 48);
465
+ i0.ɵɵconditionalCreate(1, AIAgentRunStepDetailComponent_ng_template_1_Conditional_1_Template, 6, 1, "div", 56);
466
+ i0.ɵɵconditionalCreate(2, AIAgentRunStepDetailComponent_ng_template_1_Conditional_2_Template, 7, 1, "div", 57);
467
+ i0.ɵɵconditionalCreate(3, AIAgentRunStepDetailComponent_ng_template_1_Conditional_3_Template, 1, 0, "mj-empty-state", 58);
381
468
  i0.ɵɵelementEnd();
382
469
  } if (rf & 2) {
383
- const snapshot_r10 = ctx.$implicit;
470
+ const snapshot_r12 = ctx.$implicit;
384
471
  i0.ɵɵadvance();
385
- i0.ɵɵconditional(snapshot_r10.notes ? 1 : -1);
472
+ i0.ɵɵconditional(snapshot_r12.notes ? 1 : -1);
386
473
  i0.ɵɵadvance();
387
- i0.ɵɵconditional((snapshot_r10.tasks == null ? null : snapshot_r10.tasks.length) > 0 ? 2 : -1);
474
+ i0.ɵɵconditional((snapshot_r12.tasks == null ? null : snapshot_r12.tasks.length) > 0 ? 2 : -1);
388
475
  i0.ɵɵadvance();
389
- i0.ɵɵconditional(!snapshot_r10.notes && (!snapshot_r10.tasks || snapshot_r10.tasks.length === 0) ? 3 : -1);
476
+ i0.ɵɵconditional(!snapshot_r12.notes && (!snapshot_r12.tasks || snapshot_r12.tasks.length === 0) ? 3 : -1);
390
477
  } }
391
478
  export class AIAgentRunStepDetailComponent {
392
479
  constructor(cdr) {
@@ -402,13 +489,20 @@ export class AIAgentRunStepDetailComponent {
402
489
  ngOnChanges() {
403
490
  if (this.selectedTimelineItem) {
404
491
  this.selectedItemJsonString = this.getSelectedItemJson();
405
- // Default to diff tab if step has payload diff, scratchpad if available, otherwise json
492
+ // Default to diff tab if step has payload diff, skills for Skill steps (the activation IS
493
+ // the story there), scratchpad if available, otherwise json
406
494
  if (this.showStepPayloadDiff) {
407
495
  this.detailPaneTab = 'diff';
408
496
  }
497
+ else if (this.showSkillsTab && this.selectedTimelineItem.data?.StepType === 'Skill') {
498
+ this.detailPaneTab = 'skills';
499
+ }
409
500
  else if (this.showScratchpadTab) {
410
501
  this.detailPaneTab = 'scratchpad';
411
502
  }
503
+ else if (this.showSkillsTab) {
504
+ this.detailPaneTab = 'skills';
505
+ }
412
506
  else {
413
507
  this.detailPaneTab = 'json';
414
508
  }
@@ -526,6 +620,37 @@ export class AIAgentRunStepDetailComponent {
526
620
  onCopyToClipboard() {
527
621
  this.copyToClipboard.emit(this.getSelectedItemJson());
528
622
  }
623
+ /**
624
+ * Whether the Skills tab should be shown — true when the step has skill-invocation records
625
+ * on its `Skills` column (Skill steps, Prompt steps with skills in effect, and Actions/
626
+ * Sub-Agent steps whose tool was granted through a skill).
627
+ */
628
+ get showSkillsTab() {
629
+ return this.stepSkillInvocations.length > 0;
630
+ }
631
+ /**
632
+ * Parsed {@link MJAIAgentRunStepEntity_AgentSkillInvocation} records from the step's `Skills`
633
+ * JSON column. Empty array when the step has no skill linkage or the JSON is malformed.
634
+ */
635
+ get stepSkillInvocations() {
636
+ if (!this.selectedTimelineItem || this.selectedTimelineItem.type !== 'step') {
637
+ return [];
638
+ }
639
+ const raw = this.selectedTimelineItem.data?.Skills;
640
+ if (!raw)
641
+ return [];
642
+ try {
643
+ const parsed = typeof raw === 'string' ? JSON.parse(raw) : raw;
644
+ return Array.isArray(parsed) ? parsed : [];
645
+ }
646
+ catch {
647
+ return [];
648
+ }
649
+ }
650
+ /** Human-readable label for an invocation's activation type. */
651
+ GetActivationTypeLabel(inv) {
652
+ return inv.ActivationType === 'requested' ? 'User Requested' : 'Agent Self-Activated';
653
+ }
529
654
  /**
530
655
  * Whether the scratchpad tab should be shown (step has scratchpad data in InputData or OutputData)
531
656
  */
@@ -600,16 +725,16 @@ export class AIAgentRunStepDetailComponent {
600
725
  }
601
726
  }
602
727
  static { this.ɵfac = function AIAgentRunStepDetailComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || AIAgentRunStepDetailComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); }; }
603
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AIAgentRunStepDetailComponent, selectors: [["mj-ai-agent-run-step-detail"]], inputs: { selectedTimelineItem: "selectedTimelineItem" }, outputs: { closePanel: "closePanel", navigateToActionLog: "navigateToActionLog", copyToClipboard: "copyToClipboard" }, standalone: false, features: [i0.ɵɵNgOnChangesFeature], decls: 3, vars: 1, consts: [["scratchpadSnapshotTpl", ""], [1, "json-detail-pane"], [1, "json-pane-header"], [1, "fas", 3, "ngClass"], ["title", "Close", 1, "btn-icon", 3, "click"], [1, "fas", "fa-times"], [1, "json-pane-content"], [1, "json-meta"], [1, "meta-item"], [1, "status-badge", "small"], [1, "action-link"], [1, "detail-pane-tabs"], [1, "detail-pane-content"], [1, "step-payload-diff"], [1, "scratchpad-content"], [1, "json-viewer"], [1, "btn-link", 3, "click"], [1, "fas", "fa-external-link-alt"], [1, "detail-tab", 3, "active"], [1, "detail-tab", 3, "click"], [1, "fa-solid", "fa-code"], [1, "fa-solid", "fa-code-branch"], [1, "fa-solid", "fa-clipboard-list"], [1, "tab-badge"], [3, "oldValue", "newValue", "title", "showSummary", "showUnchanged", "expandAll", "maxDepth", "maxStringLength", "treatNullAsUndefined"], [1, "scratchpad-sub-tabs"], [1, "scratchpad-sub-tab", 3, "click"], [1, "fa-solid", "fa-code-compare"], [1, "fa-solid", "fa-arrow-right-to-bracket"], [1, "fa-solid", "fa-arrow-right-from-bracket"], [1, "scratchpad-diff-view"], [1, "scratchpad-snapshot-view"], [1, "scratchpad-empty-state"], [1, "fa-solid", "fa-circle-plus"], [1, "scratchpad-snapshot"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], [1, "fa-solid", "fa-circle-info"], [1, "json-toolbar"], ["title", "Copy JSON", 1, "btn-icon", 3, "click"], [1, "fas", "fa-copy"], [2, "width", "100%", 3, "ngModelChange", "ngModel", "language", "readonly"], [1, "scratchpad-notes-section"], [1, "scratchpad-tasks-section"], [1, "fa-solid", "fa-note-sticky"], [1, "scratchpad-notes-content"], [1, "fa-solid", "fa-list-check"], [1, "scratchpad-task-list"], [1, "scratchpad-task-item"], [1, "task-status-indicator"], [1, "fa-solid", "fa-circle-check"], [1, "fa-solid", "fa-spinner"], [1, "fa-solid", "fa-circle-xmark"], [1, "fa-regular", "fa-circle"], [1, "task-content"], [1, "task-id"], [1, "task-title"], [1, "task-notes"], [1, "task-status-badge"]], template: function AIAgentRunStepDetailComponent_Template(rf, ctx) { if (rf & 1) {
604
- i0.ɵɵconditionalCreate(0, AIAgentRunStepDetailComponent_Conditional_0_Template, 30, 13, "div", 1);
728
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AIAgentRunStepDetailComponent, selectors: [["mj-ai-agent-run-step-detail"]], inputs: { selectedTimelineItem: "selectedTimelineItem" }, outputs: { closePanel: "closePanel", navigateToActionLog: "navigateToActionLog", copyToClipboard: "copyToClipboard" }, standalone: false, features: [i0.ɵɵNgOnChangesFeature], decls: 3, vars: 1, consts: [["scratchpadSnapshotTpl", ""], [1, "json-detail-pane"], [1, "json-pane-header"], [1, "fas", 3, "ngClass"], ["title", "Close", 1, "btn-icon", 3, "click"], [1, "fas", "fa-times"], [1, "json-pane-content"], [1, "json-meta"], [1, "meta-item"], [1, "status-badge", "small"], [1, "action-link"], [1, "detail-pane-tabs"], [1, "detail-pane-content"], [1, "skills-content"], [1, "step-payload-diff"], [1, "scratchpad-content"], [1, "json-viewer"], [1, "btn-link", 3, "click"], [1, "fas", "fa-external-link-alt"], [1, "detail-tab", 3, "active"], [1, "detail-tab", 3, "click"], [1, "fa-solid", "fa-code"], [1, "fa-solid", "fa-code-branch"], [1, "fa-solid", "fa-wand-magic-sparkles"], [1, "tab-badge"], [1, "fa-solid", "fa-clipboard-list"], [1, "skill-invocation-card"], [1, "skill-invocation-header"], [1, "skill-invocation-name"], [1, "skill-invocation-type"], [1, "skill-invocation-reason"], [1, "skill-invocation-provenance"], [1, "provenance-title"], [1, "provenance-row"], [1, "provenance-label"], [1, "provenance-value"], [1, "provenance-value", "provenance-id"], [1, "fa-solid", "fa-quote-left"], [3, "oldValue", "newValue", "title", "showSummary", "showUnchanged", "expandAll", "maxDepth", "maxStringLength", "treatNullAsUndefined"], [1, "scratchpad-sub-tabs"], [1, "scratchpad-sub-tab", 3, "click"], [1, "fa-solid", "fa-code-compare"], [1, "fa-solid", "fa-arrow-right-to-bracket"], [1, "fa-solid", "fa-arrow-right-from-bracket"], [1, "scratchpad-diff-view"], [1, "scratchpad-snapshot-view"], ["Size", "compact", "Icon", "fa-solid fa-circle-info", "Title", "No scratchpad changes in this step"], ["Size", "compact", "Icon", "fa-solid fa-circle-plus", "Title", "Scratchpad created in this step (no prior state)"], [1, "scratchpad-snapshot"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], ["Size", "compact", "Icon", "fa-solid fa-circle-info", "Title", "No scratchpad input for this step"], ["Size", "compact", "Icon", "fa-solid fa-circle-info", "Title", "No scratchpad output for this step"], [1, "json-toolbar"], ["title", "Copy JSON", 1, "btn-icon", 3, "click"], [1, "fas", "fa-copy"], [2, "width", "100%", 3, "ngModelChange", "ngModel", "language", "readonly"], [1, "scratchpad-notes-section"], [1, "scratchpad-tasks-section"], ["Size", "compact", "Icon", "fa-solid fa-circle-info", "Title", "Empty scratchpad"], [1, "fa-solid", "fa-note-sticky"], [1, "scratchpad-notes-content"], [1, "fa-solid", "fa-list-check"], [1, "scratchpad-task-list"], [1, "scratchpad-task-item"], [1, "task-status-indicator"], [1, "fa-solid", "fa-circle-check"], [1, "fa-solid", "fa-spinner"], [1, "fa-solid", "fa-circle-xmark"], [1, "fa-regular", "fa-circle"], [1, "task-content"], [1, "task-id"], [1, "task-title"], [1, "task-notes"], [1, "task-status-badge"]], template: function AIAgentRunStepDetailComponent_Template(rf, ctx) { if (rf & 1) {
729
+ i0.ɵɵconditionalCreate(0, AIAgentRunStepDetailComponent_Conditional_0_Template, 31, 14, "div", 1);
605
730
  i0.ɵɵtemplate(1, AIAgentRunStepDetailComponent_ng_template_1_Template, 4, 3, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
606
731
  } if (rf & 2) {
607
732
  i0.ɵɵconditional(ctx.selectedTimelineItem ? 0 : -1);
608
- } }, dependencies: [i1.NgClass, i1.NgTemplateOutlet, i2.NgControlStatus, i2.NgModel, i3.CodeEditorComponent, i4.DeepDiffComponent], styles: [".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;\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n justify-content: space-between;\n align-items: center;\n background: var(--mj-bg-surface-sunken);\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.btn-icon[_ngcontent-%COMP%] {\n background: none;\n border: none;\n padding: 4px 8px;\n cursor: pointer;\n color: var(--mj-text-muted);\n border-radius: 4px;\n transition: all 0.2s;\n}\n\n.btn-icon[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-text-primary) 5%, transparent);\n color: var(--mj-text-secondary);\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;\n display: flex;\n gap: 24px;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.meta-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.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}\n\n.meta-item[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-primary);\n}\n\n.status-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n padding: 4px 8px;\n border-radius: 4px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.status-badge.small[_ngcontent-%COMP%] {\n padding: 2px 6px;\n font-size: 10px;\n}\n\n.status-badge[data-status=\"Running\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\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.action-link[_ngcontent-%COMP%] {\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.btn-link[_ngcontent-%COMP%] {\n background: none;\n border: none;\n color: var(--mj-brand-primary);\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 font-size: 13px;\n}\n\n.btn-link[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n color: var(--mj-brand-primary);\n}\n\n.detail-pane-tabs[_ngcontent-%COMP%] {\n display: flex;\n gap: 0;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n padding: 0 16px;\n}\n\n.detail-tab[_ngcontent-%COMP%] {\n padding: 12px 16px;\n background: none;\n border: none;\n border-bottom: 2px solid transparent;\n cursor: pointer;\n font-size: 13px;\n color: var(--mj-text-muted);\n transition: all 0.2s;\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%, transparent);\n}\n\n.detail-tab.active[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n border-bottom-color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n.detail-pane-content[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n min-height: 0; \n\n}\n\n\n\n\n\n\n\n\n.json-viewer[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n position: relative;\n overflow: hidden;\n min-height: 0; \n\n}\n\n.json-toolbar[_ngcontent-%COMP%] {\n position: absolute;\n top: 8px;\n right: 8px;\n z-index: 10;\n display: flex;\n gap: 4px;\n}\n\n.step-payload-diff[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n min-height: 0; \n\n}\n\n\n\n.json-viewer[_ngcontent-%COMP%] mj-code-editor[_ngcontent-%COMP%] {\n flex: 1;\n overflow: hidden;\n min-height: 0;\n display: flex;\n flex-direction: column;\n}\n\n\n\n.tab-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 18px;\n height: 18px;\n padding: 0 5px;\n border-radius: 9px;\n font-size: 10px;\n font-weight: 700;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n\n\n.scratchpad-content[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n min-height: 0;\n}\n\n\n\n.scratchpad-sub-tabs[_ngcontent-%COMP%] {\n display: flex;\n gap: 0;\n padding: 0 16px;\n border-bottom: 1px solid var(--mj-border-subtle);\n background: var(--mj-bg-surface);\n}\n\n.scratchpad-sub-tab[_ngcontent-%COMP%] {\n padding: 8px 12px;\n background: none;\n border: none;\n border-bottom: 2px solid transparent;\n cursor: pointer;\n font-size: 12px;\n color: var(--mj-text-muted);\n transition: all 0.2s;\n display: flex;\n align-items: center;\n gap: 5px;\n}\n\n.scratchpad-sub-tab[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-secondary);\n background: color-mix(in srgb, var(--mj-text-primary) 2%, transparent);\n}\n\n.scratchpad-sub-tab.active[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n border-bottom-color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n\n\n.scratchpad-diff-view[_ngcontent-%COMP%], \n.scratchpad-snapshot-view[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n min-height: 0;\n}\n\n\n\n.scratchpad-snapshot[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.scratchpad-notes-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%], \n.scratchpad-tasks-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.scratchpad-notes-content[_ngcontent-%COMP%] {\n padding: 12px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 6px;\n border: 1px solid var(--mj-border-subtle);\n font-size: 13px;\n line-height: 1.5;\n color: var(--mj-text-primary);\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n\n\n.scratchpad-task-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.scratchpad-task-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n padding: 8px 12px;\n border-radius: 6px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-subtle);\n transition: background 0.15s;\n}\n\n.scratchpad-task-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n\n\n.task-status-indicator[_ngcontent-%COMP%] {\n flex-shrink: 0;\n width: 16px;\n margin-top: 2px;\n font-size: 14px;\n}\n\n.task-status-indicator[data-status=\"completed\"][_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.task-status-indicator[data-status=\"in_progress\"][_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.task-status-indicator[data-status=\"blocked\"][_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n.task-status-indicator[data-status=\"pending\"][_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n\n\n.task-content[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n}\n\n.task-id[_ngcontent-%COMP%] {\n font-size: 10px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n}\n\n.task-title[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-primary);\n line-height: 1.4;\n}\n\n.task-notes[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-secondary);\n line-height: 1.4;\n font-style: italic;\n}\n\n\n\n.task-status-badge[_ngcontent-%COMP%] {\n flex-shrink: 0;\n padding: 2px 6px;\n border-radius: 4px;\n font-size: 10px;\n font-weight: 600;\n text-transform: uppercase;\n white-space: nowrap;\n}\n\n.task-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.task-status-badge[data-status=\"in_progress\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.task-status-badge[data-status=\"blocked\"][_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.task-status-badge[data-status=\"pending\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-text-muted) 15%, var(--mj-bg-surface));\n color: var(--mj-text-muted);\n}\n\n\n\n.scratchpad-empty-state[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 16px;\n color: var(--mj-text-muted);\n font-size: 13px;\n font-style: italic;\n}"] }); }
733
+ } }, dependencies: [i1.NgClass, i1.NgTemplateOutlet, i2.NgControlStatus, i2.NgModel, i3.MJEmptyStateComponent, i4.CodeEditorComponent, i5.DeepDiffComponent], styles: [".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;\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n justify-content: space-between;\n align-items: center;\n background: var(--mj-bg-surface-sunken);\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.btn-icon[_ngcontent-%COMP%] {\n background: none;\n border: none;\n padding: 4px 8px;\n cursor: pointer;\n color: var(--mj-text-muted);\n border-radius: 4px;\n transition: all 0.2s;\n}\n\n.btn-icon[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-text-primary) 5%, transparent);\n color: var(--mj-text-secondary);\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;\n display: flex;\n gap: 24px;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.meta-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.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}\n\n.meta-item[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-primary);\n}\n\n.status-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n padding: 4px 8px;\n border-radius: 4px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.status-badge.small[_ngcontent-%COMP%] {\n padding: 2px 6px;\n font-size: 10px;\n}\n\n.status-badge[data-status=\"Running\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\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.action-link[_ngcontent-%COMP%] {\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.btn-link[_ngcontent-%COMP%] {\n background: none;\n border: none;\n color: var(--mj-brand-primary);\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 font-size: 13px;\n}\n\n.btn-link[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n color: var(--mj-brand-primary);\n}\n\n.detail-pane-tabs[_ngcontent-%COMP%] {\n display: flex;\n gap: 0;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n padding: 0 16px;\n}\n\n.detail-tab[_ngcontent-%COMP%] {\n padding: 12px 16px;\n background: none;\n border: none;\n border-bottom: 2px solid transparent;\n cursor: pointer;\n font-size: 13px;\n color: var(--mj-text-muted);\n transition: all 0.2s;\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%, transparent);\n}\n\n.detail-tab.active[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n border-bottom-color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n.detail-pane-content[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n min-height: 0; \n\n}\n\n\n\n\n\n\n\n\n.json-viewer[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n position: relative;\n overflow: hidden;\n min-height: 0; \n\n}\n\n.json-toolbar[_ngcontent-%COMP%] {\n position: absolute;\n top: 8px;\n right: 8px;\n z-index: 10;\n display: flex;\n gap: 4px;\n}\n\n.step-payload-diff[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n min-height: 0; \n\n}\n\n\n\n.json-viewer[_ngcontent-%COMP%] mj-code-editor[_ngcontent-%COMP%] {\n flex: 1;\n overflow: hidden;\n min-height: 0;\n display: flex;\n flex-direction: column;\n}\n\n\n\n.tab-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 18px;\n height: 18px;\n padding: 0 5px;\n border-radius: 9px;\n font-size: 10px;\n font-weight: 700;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n\n\n.scratchpad-content[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n min-height: 0;\n}\n\n\n\n.scratchpad-sub-tabs[_ngcontent-%COMP%] {\n display: flex;\n gap: 0;\n padding: 0 16px;\n border-bottom: 1px solid var(--mj-border-subtle);\n background: var(--mj-bg-surface);\n}\n\n.scratchpad-sub-tab[_ngcontent-%COMP%] {\n padding: 8px 12px;\n background: none;\n border: none;\n border-bottom: 2px solid transparent;\n cursor: pointer;\n font-size: 12px;\n color: var(--mj-text-muted);\n transition: all 0.2s;\n display: flex;\n align-items: center;\n gap: 5px;\n}\n\n.scratchpad-sub-tab[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-secondary);\n background: color-mix(in srgb, var(--mj-text-primary) 2%, transparent);\n}\n\n.scratchpad-sub-tab.active[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n border-bottom-color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n\n\n.scratchpad-diff-view[_ngcontent-%COMP%], \n.scratchpad-snapshot-view[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n min-height: 0;\n}\n\n\n\n.scratchpad-snapshot[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.scratchpad-notes-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%], \n.scratchpad-tasks-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.scratchpad-notes-content[_ngcontent-%COMP%] {\n padding: 12px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 6px;\n border: 1px solid var(--mj-border-subtle);\n font-size: 13px;\n line-height: 1.5;\n color: var(--mj-text-primary);\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n\n\n.scratchpad-task-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.scratchpad-task-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n padding: 8px 12px;\n border-radius: 6px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-subtle);\n transition: background 0.15s;\n}\n\n.scratchpad-task-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n\n\n.task-status-indicator[_ngcontent-%COMP%] {\n flex-shrink: 0;\n width: 16px;\n margin-top: 2px;\n font-size: 14px;\n}\n\n.task-status-indicator[data-status=\"completed\"][_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.task-status-indicator[data-status=\"in_progress\"][_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.task-status-indicator[data-status=\"blocked\"][_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n.task-status-indicator[data-status=\"pending\"][_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n\n\n.task-content[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n}\n\n.task-id[_ngcontent-%COMP%] {\n font-size: 10px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n}\n\n.task-title[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-primary);\n line-height: 1.4;\n}\n\n.task-notes[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-secondary);\n line-height: 1.4;\n font-style: italic;\n}\n\n\n\n.task-status-badge[_ngcontent-%COMP%] {\n flex-shrink: 0;\n padding: 2px 6px;\n border-radius: 4px;\n font-size: 10px;\n font-weight: 600;\n text-transform: uppercase;\n white-space: nowrap;\n}\n\n.task-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.task-status-badge[data-status=\"in_progress\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.task-status-badge[data-status=\"blocked\"][_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.task-status-badge[data-status=\"pending\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-text-muted) 15%, var(--mj-bg-surface));\n color: var(--mj-text-muted);\n}\n\n\n\n\n\n.skills-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n padding: 12px;\n}\n\n.skill-invocation-card[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 12px 14px;\n background: var(--mj-bg-surface);\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.skill-invocation-card[data-activation=\"auto\"][_ngcontent-%COMP%] {\n border-left-color: var(--mj-status-warning);\n}\n\n.skill-invocation-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n}\n\n.skill-invocation-name[_ngcontent-%COMP%] {\n font-weight: 600;\n font-size: 14px;\n color: var(--mj-text-primary);\n display: inline-flex;\n align-items: center;\n gap: 8px;\n}\n\n.skill-invocation-name[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.skill-invocation-type[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n padding: 2px 10px;\n border-radius: 10px;\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.skill-invocation-type[data-activation=\"auto\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 12%, var(--mj-bg-surface));\n color: var(--mj-status-warning-text);\n}\n\n.skill-invocation-reason[_ngcontent-%COMP%] {\n margin-top: 8px;\n font-size: 13px;\n font-style: italic;\n color: var(--mj-text-secondary);\n display: flex;\n gap: 8px;\n align-items: baseline;\n}\n\n.skill-invocation-reason[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 10px;\n}\n\n.skill-invocation-provenance[_ngcontent-%COMP%] {\n margin-top: 10px;\n padding-top: 10px;\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n.provenance-title[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--mj-text-muted);\n margin-bottom: 6px;\n}\n\n.provenance-row[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n gap: 12px;\n font-size: 12px;\n padding: 2px 0;\n}\n\n.provenance-label[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n}\n\n.provenance-value[_ngcontent-%COMP%] {\n color: var(--mj-text-primary);\n font-weight: 500;\n}\n\n.provenance-id[_ngcontent-%COMP%] {\n font-family: monospace;\n font-size: 11px;\n color: var(--mj-text-muted);\n}"] }); }
609
734
  }
610
735
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AIAgentRunStepDetailComponent, [{
611
736
  type: Component,
612
- args: [{ standalone: false, selector: 'mj-ai-agent-run-step-detail', template: "@if (selectedTimelineItem) {\n <div class=\"json-detail-pane\">\n <div class=\"json-pane-header\">\n <h3>\n <i class=\"fas\" [ngClass]=\"selectedTimelineItem.icon\"></i>\n {{ selectedTimelineItem.title }}\n </h3>\n <button class=\"btn-icon\" (click)=\"onClosePanel()\" title=\"Close\">\n <i class=\"fas fa-times\"></i>\n </button>\n </div>\n <div class=\"json-pane-content\">\n <div class=\"json-meta\">\n <div class=\"meta-item\">\n <label>Type</label>\n <span>{{ selectedTimelineItem.type }}</span>\n </div>\n <div class=\"meta-item\">\n <label>Status</label>\n <span class=\"status-badge small\" [attr.data-status]=\"selectedTimelineItem.status\">\n {{ selectedTimelineItem.status }}\n </span>\n </div>\n <div class=\"meta-item\">\n <label>Duration</label>\n <span>{{ selectedTimelineItem.duration || 'N/A' }}</span>\n </div>\n </div>\n <!-- Action-specific link -->\n @if (selectedTimelineItem.type === 'action' && selectedTimelineItem.data?.ID) {\n <div class=\"action-link\">\n <button class=\"btn-link\" (click)=\"onNavigateToActionLog(selectedTimelineItem.data.ID)\">\n <i class=\"fas fa-external-link-alt\"></i> View Action Execution Log\n </button>\n </div>\n }\n <!-- Tab Navigation - Show when we have payload diff or scratchpad data -->\n @if (showStepPayloadDiff || showScratchpadTab) {\n <div class=\"detail-pane-tabs\">\n @if (showStepPayloadDiff) {\n <button\n class=\"detail-tab\"\n [class.active]=\"detailPaneTab === 'diff'\"\n (click)=\"detailPaneTab = 'diff'\">\n <i class=\"fa-solid fa-code-branch\"></i>\n Payload Changes\n </button>\n }\n @if (showScratchpadTab) {\n <button\n class=\"detail-tab\"\n [class.active]=\"detailPaneTab === 'scratchpad'\"\n (click)=\"detailPaneTab = 'scratchpad'\">\n <i class=\"fa-solid fa-clipboard-list\"></i>\n Scratchpad\n @if (scratchpadTaskChangeCount > 0) {\n <span class=\"tab-badge\">{{ scratchpadTaskChangeCount }}</span>\n }\n </button>\n }\n <button\n class=\"detail-tab\"\n [class.active]=\"detailPaneTab === 'json'\"\n (click)=\"detailPaneTab = 'json'\">\n <i class=\"fa-solid fa-code\"></i>\n Full JSON\n </button>\n </div>\n }\n <!-- Tab Content -->\n <div class=\"detail-pane-content\" [class.with-tabs]=\"showStepPayloadDiff || showScratchpadTab\">\n <!-- Payload Diff Tab -->\n @if (detailPaneTab === 'diff' && showStepPayloadDiff) {\n <div class=\"step-payload-diff\">\n <mj-deep-diff\n [oldValue]=\"stepPayloadAtStartObject\"\n [newValue]=\"stepPayloadAtEndObject\"\n [title]=\"''\"\n [showSummary]=\"true\"\n [showUnchanged]=\"false\"\n [expandAll]=\"false\"\n [maxDepth]=\"8\"\n [maxStringLength]=\"150\"\n [treatNullAsUndefined]=\"true\">\n </mj-deep-diff>\n </div>\n }\n <!-- Scratchpad Tab -->\n @if (detailPaneTab === 'scratchpad' && showScratchpadTab) {\n <div class=\"scratchpad-content\">\n <div class=\"scratchpad-sub-tabs\">\n <button\n class=\"scratchpad-sub-tab\"\n [class.active]=\"scratchpadSubTab === 'diff'\"\n (click)=\"scratchpadSubTab = 'diff'\">\n <i class=\"fa-solid fa-code-compare\"></i> Diff\n </button>\n <button\n class=\"scratchpad-sub-tab\"\n [class.active]=\"scratchpadSubTab === 'input'\"\n (click)=\"scratchpadSubTab = 'input'\">\n <i class=\"fa-solid fa-arrow-right-to-bracket\"></i> Input\n </button>\n <button\n class=\"scratchpad-sub-tab\"\n [class.active]=\"scratchpadSubTab === 'output'\"\n (click)=\"scratchpadSubTab = 'output'\">\n <i class=\"fa-solid fa-arrow-right-from-bracket\"></i> Output\n </button>\n </div>\n <!-- Scratchpad Diff Sub-Tab -->\n @if (scratchpadSubTab === 'diff') {\n <div class=\"scratchpad-diff-view\">\n @if (stepScratchpadInput && stepScratchpadOutput) {\n <mj-deep-diff\n [oldValue]=\"stepScratchpadInput\"\n [newValue]=\"stepScratchpadOutput\"\n [title]=\"''\"\n [showSummary]=\"true\"\n [showUnchanged]=\"false\"\n [expandAll]=\"true\"\n [maxDepth]=\"6\"\n [maxStringLength]=\"300\"\n [treatNullAsUndefined]=\"true\">\n </mj-deep-diff>\n } @else if (stepScratchpadOutput) {\n <div class=\"scratchpad-empty-state\">\n <i class=\"fa-solid fa-circle-plus\"></i>\n <span>Scratchpad created in this step (no prior state)</span>\n </div>\n <div class=\"scratchpad-snapshot\">\n <ng-container *ngTemplateOutlet=\"scratchpadSnapshotTpl; context: { $implicit: stepScratchpadOutput }\"></ng-container>\n </div>\n } @else {\n <div class=\"scratchpad-empty-state\">\n <i class=\"fa-solid fa-circle-info\"></i>\n <span>No scratchpad changes in this step</span>\n </div>\n }\n </div>\n }\n <!-- Scratchpad Input Sub-Tab -->\n @if (scratchpadSubTab === 'input') {\n <div class=\"scratchpad-snapshot-view\">\n @if (stepScratchpadInput) {\n <ng-container *ngTemplateOutlet=\"scratchpadSnapshotTpl; context: { $implicit: stepScratchpadInput }\"></ng-container>\n } @else {\n <div class=\"scratchpad-empty-state\">\n <i class=\"fa-solid fa-circle-info\"></i>\n <span>No scratchpad input for this step</span>\n </div>\n }\n </div>\n }\n <!-- Scratchpad Output Sub-Tab -->\n @if (scratchpadSubTab === 'output') {\n <div class=\"scratchpad-snapshot-view\">\n @if (stepScratchpadOutput) {\n <ng-container *ngTemplateOutlet=\"scratchpadSnapshotTpl; context: { $implicit: stepScratchpadOutput }\"></ng-container>\n } @else {\n <div class=\"scratchpad-empty-state\">\n <i class=\"fa-solid fa-circle-info\"></i>\n <span>No scratchpad output for this step</span>\n </div>\n }\n </div>\n }\n </div>\n }\n <!-- Full JSON Tab -->\n @if (detailPaneTab === 'json' || (!showStepPayloadDiff && !showScratchpadTab)) {\n <div class=\"json-viewer\">\n <div class=\"json-toolbar\">\n <button class=\"btn-icon\" title=\"Copy JSON\" (click)=\"onCopyToClipboard()\">\n <i class=\"fas fa-copy\"></i>\n </button>\n </div>\n <mj-code-editor\n [(ngModel)]=\"selectedItemJsonString\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n style=\"width: 100%;\">\n </mj-code-editor>\n </div>\n }\n </div>\n </div>\n </div>\n}\n\n<!-- Reusable scratchpad snapshot template -->\n<ng-template #scratchpadSnapshotTpl let-snapshot>\n <div class=\"scratchpad-snapshot\">\n @if (snapshot.notes) {\n <div class=\"scratchpad-notes-section\">\n <h4><i class=\"fa-solid fa-note-sticky\"></i> Notes</h4>\n <div class=\"scratchpad-notes-content\">{{ snapshot.notes }}</div>\n </div>\n }\n @if (snapshot.tasks?.length > 0) {\n <div class=\"scratchpad-tasks-section\">\n <h4><i class=\"fa-solid fa-list-check\"></i> Tasks ({{ snapshot.tasks.length }})</h4>\n <div class=\"scratchpad-task-list\">\n @for (task of snapshot.tasks; track task.id) {\n <div class=\"scratchpad-task-item\" [attr.data-status]=\"task.status\">\n <span class=\"task-status-indicator\" [attr.data-status]=\"task.status\">\n @switch (task.status) {\n @case ('completed') { <i class=\"fa-solid fa-circle-check\"></i> }\n @case ('in_progress') { <i class=\"fa-solid fa-spinner\"></i> }\n @case ('blocked') { <i class=\"fa-solid fa-circle-xmark\"></i> }\n @default { <i class=\"fa-regular fa-circle\"></i> }\n }\n </span>\n <div class=\"task-content\">\n <span class=\"task-id\">{{ task.id }}</span>\n <span class=\"task-title\">{{ task.title }}</span>\n @if (task.notes) {\n <span class=\"task-notes\">{{ task.notes }}</span>\n }\n </div>\n <span class=\"task-status-badge\" [attr.data-status]=\"task.status\">{{ task.status }}</span>\n </div>\n }\n </div>\n </div>\n }\n @if (!snapshot.notes && (!snapshot.tasks || snapshot.tasks.length === 0)) {\n <div class=\"scratchpad-empty-state\">\n <i class=\"fa-solid fa-circle-info\"></i>\n <span>Empty scratchpad</span>\n </div>\n }\n </div>\n</ng-template>", styles: [".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;\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n justify-content: space-between;\n align-items: center;\n background: var(--mj-bg-surface-sunken);\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.btn-icon {\n background: none;\n border: none;\n padding: 4px 8px;\n cursor: pointer;\n color: var(--mj-text-muted);\n border-radius: 4px;\n transition: all 0.2s;\n}\n\n.btn-icon:hover {\n background: color-mix(in srgb, var(--mj-text-primary) 5%, transparent);\n color: var(--mj-text-secondary);\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;\n display: flex;\n gap: 24px;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.meta-item {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.meta-item label {\n font-size: 11px;\n text-transform: uppercase;\n color: var(--mj-text-muted);\n font-weight: 600;\n}\n\n.meta-item span {\n font-size: 13px;\n color: var(--mj-text-primary);\n}\n\n.status-badge {\n display: inline-flex;\n align-items: center;\n padding: 4px 8px;\n border-radius: 4px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.status-badge.small {\n padding: 2px 6px;\n font-size: 10px;\n}\n\n.status-badge[data-status=\"Running\"] {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\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.action-link {\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.btn-link {\n background: none;\n border: none;\n color: var(--mj-brand-primary);\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 font-size: 13px;\n}\n\n.btn-link:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n color: var(--mj-brand-primary);\n}\n\n.detail-pane-tabs {\n display: flex;\n gap: 0;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n padding: 0 16px;\n}\n\n.detail-tab {\n padding: 12px 16px;\n background: none;\n border: none;\n border-bottom: 2px solid transparent;\n cursor: pointer;\n font-size: 13px;\n color: var(--mj-text-muted);\n transition: all 0.2s;\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%, transparent);\n}\n\n.detail-tab.active {\n color: var(--mj-brand-primary);\n border-bottom-color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n.detail-pane-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n min-height: 0; /* Allow flexbox to properly size */\n}\n\n/* \n.detail-pane-content.with-tabs {\n // No explicit height needed with flexbox \n} \n*/\n\n.json-viewer {\n flex: 1;\n display: flex;\n flex-direction: column;\n position: relative;\n overflow: hidden;\n min-height: 0; /* Important for flexbox children to respect overflow */\n}\n\n.json-toolbar {\n position: absolute;\n top: 8px;\n right: 8px;\n z-index: 10;\n display: flex;\n gap: 4px;\n}\n\n.step-payload-diff {\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n min-height: 0; /* Allow proper scrolling */\n}\n\n/* Specific styling for mj-code-editor container */\n.json-viewer mj-code-editor {\n flex: 1;\n overflow: hidden;\n min-height: 0;\n display: flex;\n flex-direction: column;\n}\n\n/* Tab badge for change count */\n.tab-badge {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 18px;\n height: 18px;\n padding: 0 5px;\n border-radius: 9px;\n font-size: 10px;\n font-weight: 700;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n/* Scratchpad content area */\n.scratchpad-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n min-height: 0;\n}\n\n/* Scratchpad sub-tabs */\n.scratchpad-sub-tabs {\n display: flex;\n gap: 0;\n padding: 0 16px;\n border-bottom: 1px solid var(--mj-border-subtle);\n background: var(--mj-bg-surface);\n}\n\n.scratchpad-sub-tab {\n padding: 8px 12px;\n background: none;\n border: none;\n border-bottom: 2px solid transparent;\n cursor: pointer;\n font-size: 12px;\n color: var(--mj-text-muted);\n transition: all 0.2s;\n display: flex;\n align-items: center;\n gap: 5px;\n}\n\n.scratchpad-sub-tab:hover {\n color: var(--mj-text-secondary);\n background: color-mix(in srgb, var(--mj-text-primary) 2%, transparent);\n}\n\n.scratchpad-sub-tab.active {\n color: var(--mj-brand-primary);\n border-bottom-color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n/* Scratchpad diff and snapshot views */\n.scratchpad-diff-view,\n.scratchpad-snapshot-view {\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n min-height: 0;\n}\n\n/* Scratchpad snapshot rendering */\n.scratchpad-snapshot {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.scratchpad-notes-section h4,\n.scratchpad-tasks-section h4 {\n margin: 0 0 8px 0;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.scratchpad-notes-content {\n padding: 12px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 6px;\n border: 1px solid var(--mj-border-subtle);\n font-size: 13px;\n line-height: 1.5;\n color: var(--mj-text-primary);\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n/* Task list */\n.scratchpad-task-list {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.scratchpad-task-item {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n padding: 8px 12px;\n border-radius: 6px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-subtle);\n transition: background 0.15s;\n}\n\n.scratchpad-task-item:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n/* Task status indicator icon */\n.task-status-indicator {\n flex-shrink: 0;\n width: 16px;\n margin-top: 2px;\n font-size: 14px;\n}\n\n.task-status-indicator[data-status=\"completed\"] {\n color: var(--mj-status-success);\n}\n\n.task-status-indicator[data-status=\"in_progress\"] {\n color: var(--mj-brand-primary);\n}\n\n.task-status-indicator[data-status=\"blocked\"] {\n color: var(--mj-status-error);\n}\n\n.task-status-indicator[data-status=\"pending\"] {\n color: var(--mj-text-muted);\n}\n\n/* Task content */\n.task-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n}\n\n.task-id {\n font-size: 10px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n}\n\n.task-title {\n font-size: 13px;\n color: var(--mj-text-primary);\n line-height: 1.4;\n}\n\n.task-notes {\n font-size: 12px;\n color: var(--mj-text-secondary);\n line-height: 1.4;\n font-style: italic;\n}\n\n/* Task status badge */\n.task-status-badge {\n flex-shrink: 0;\n padding: 2px 6px;\n border-radius: 4px;\n font-size: 10px;\n font-weight: 600;\n text-transform: uppercase;\n white-space: nowrap;\n}\n\n.task-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.task-status-badge[data-status=\"in_progress\"] {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.task-status-badge[data-status=\"blocked\"] {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.task-status-badge[data-status=\"pending\"] {\n background: color-mix(in srgb, var(--mj-text-muted) 15%, var(--mj-bg-surface));\n color: var(--mj-text-muted);\n}\n\n/* Empty state */\n.scratchpad-empty-state {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 16px;\n color: var(--mj-text-muted);\n font-size: 13px;\n font-style: italic;\n}"] }]
737
+ args: [{ standalone: false, selector: 'mj-ai-agent-run-step-detail', template: "@if (selectedTimelineItem) {\n <div class=\"json-detail-pane\">\n <div class=\"json-pane-header\">\n <h3>\n <i class=\"fas\" [ngClass]=\"selectedTimelineItem.icon\"></i>\n {{ selectedTimelineItem.title }}\n </h3>\n <button class=\"btn-icon\" (click)=\"onClosePanel()\" title=\"Close\">\n <i class=\"fas fa-times\"></i>\n </button>\n </div>\n <div class=\"json-pane-content\">\n <div class=\"json-meta\">\n <div class=\"meta-item\">\n <label>Type</label>\n <span>{{ selectedTimelineItem.type }}</span>\n </div>\n <div class=\"meta-item\">\n <label>Status</label>\n <span class=\"status-badge small\" [attr.data-status]=\"selectedTimelineItem.status\">\n {{ selectedTimelineItem.status }}\n </span>\n </div>\n <div class=\"meta-item\">\n <label>Duration</label>\n <span>{{ selectedTimelineItem.duration || 'N/A' }}</span>\n </div>\n </div>\n <!-- Action-specific link -->\n @if (selectedTimelineItem.type === 'action' && selectedTimelineItem.data?.ID) {\n <div class=\"action-link\">\n <button class=\"btn-link\" (click)=\"onNavigateToActionLog(selectedTimelineItem.data.ID)\">\n <i class=\"fas fa-external-link-alt\"></i> View Action Execution Log\n </button>\n </div>\n }\n <!-- Tab Navigation - Show when we have payload diff or scratchpad data -->\n @if (showStepPayloadDiff || showScratchpadTab || showSkillsTab) {\n <div class=\"detail-pane-tabs\">\n @if (showStepPayloadDiff) {\n <button\n class=\"detail-tab\"\n [class.active]=\"detailPaneTab === 'diff'\"\n (click)=\"detailPaneTab = 'diff'\">\n <i class=\"fa-solid fa-code-branch\"></i>\n Payload Changes\n </button>\n }\n @if (showSkillsTab) {\n <button\n class=\"detail-tab\"\n [class.active]=\"detailPaneTab === 'skills'\"\n (click)=\"detailPaneTab = 'skills'\">\n <i class=\"fa-solid fa-wand-magic-sparkles\"></i>\n Skills\n <span class=\"tab-badge\">{{ stepSkillInvocations.length }}</span>\n </button>\n }\n @if (showScratchpadTab) {\n <button\n class=\"detail-tab\"\n [class.active]=\"detailPaneTab === 'scratchpad'\"\n (click)=\"detailPaneTab = 'scratchpad'\">\n <i class=\"fa-solid fa-clipboard-list\"></i>\n Scratchpad\n @if (scratchpadTaskChangeCount > 0) {\n <span class=\"tab-badge\">{{ scratchpadTaskChangeCount }}</span>\n }\n </button>\n }\n <button\n class=\"detail-tab\"\n [class.active]=\"detailPaneTab === 'json'\"\n (click)=\"detailPaneTab = 'json'\">\n <i class=\"fa-solid fa-code\"></i>\n Full JSON\n </button>\n </div>\n }\n <!-- Tab Content -->\n <div class=\"detail-pane-content\" [class.with-tabs]=\"showStepPayloadDiff || showScratchpadTab || showSkillsTab\">\n <!-- Skills Tab \u2014 skill-invocation observability (activation type, provenance of authority, reason) -->\n @if (detailPaneTab === 'skills' && showSkillsTab) {\n <div class=\"skills-content\">\n @for (inv of stepSkillInvocations; track inv.SkillID) {\n <div class=\"skill-invocation-card\" [attr.data-activation]=\"inv.ActivationType\">\n <div class=\"skill-invocation-header\">\n <span class=\"skill-invocation-name\">\n <i class=\"fa-solid fa-wand-magic-sparkles\"></i>\n {{ inv.SkillName }}\n </span>\n <span class=\"skill-invocation-type\" [attr.data-activation]=\"inv.ActivationType\">\n {{ GetActivationTypeLabel(inv) }}\n </span>\n </div>\n @if (inv.Reason) {\n <div class=\"skill-invocation-reason\">\n <i class=\"fa-solid fa-quote-left\"></i>\n {{ inv.Reason }}\n </div>\n }\n <div class=\"skill-invocation-provenance\">\n <div class=\"provenance-title\">Provenance of Authority</div>\n <div class=\"provenance-row\">\n <span class=\"provenance-label\">Requested By</span>\n <span class=\"provenance-value\">{{ inv.Provenance.RequestedBy === 'user-request' ? 'User (/skill mention)' : 'Agent decision' }}</span>\n </div>\n <div class=\"provenance-row\">\n <span class=\"provenance-label\">Agent AcceptsSkills</span>\n <span class=\"provenance-value\">{{ inv.Provenance.AgentAcceptsSkills }}</span>\n </div>\n <div class=\"provenance-row\">\n <span class=\"provenance-label\">Skill ActivationMode</span>\n <span class=\"provenance-value\">{{ inv.Provenance.SkillActivationMode }}</span>\n </div>\n <div class=\"provenance-row\">\n <span class=\"provenance-label\">Agent SkillActivationMode</span>\n <span class=\"provenance-value\">{{ inv.Provenance.AgentSkillActivationMode }}</span>\n </div>\n <div class=\"provenance-row\">\n <span class=\"provenance-label\">Skill ID</span>\n <span class=\"provenance-value provenance-id\">{{ inv.SkillID }}</span>\n </div>\n </div>\n </div>\n }\n </div>\n }\n <!-- Payload Diff Tab -->\n @if (detailPaneTab === 'diff' && showStepPayloadDiff) {\n <div class=\"step-payload-diff\">\n <mj-deep-diff\n [oldValue]=\"stepPayloadAtStartObject\"\n [newValue]=\"stepPayloadAtEndObject\"\n [title]=\"''\"\n [showSummary]=\"true\"\n [showUnchanged]=\"false\"\n [expandAll]=\"false\"\n [maxDepth]=\"8\"\n [maxStringLength]=\"150\"\n [treatNullAsUndefined]=\"true\">\n </mj-deep-diff>\n </div>\n }\n <!-- Scratchpad Tab -->\n @if (detailPaneTab === 'scratchpad' && showScratchpadTab) {\n <div class=\"scratchpad-content\">\n <div class=\"scratchpad-sub-tabs\">\n <button\n class=\"scratchpad-sub-tab\"\n [class.active]=\"scratchpadSubTab === 'diff'\"\n (click)=\"scratchpadSubTab = 'diff'\">\n <i class=\"fa-solid fa-code-compare\"></i> Diff\n </button>\n <button\n class=\"scratchpad-sub-tab\"\n [class.active]=\"scratchpadSubTab === 'input'\"\n (click)=\"scratchpadSubTab = 'input'\">\n <i class=\"fa-solid fa-arrow-right-to-bracket\"></i> Input\n </button>\n <button\n class=\"scratchpad-sub-tab\"\n [class.active]=\"scratchpadSubTab === 'output'\"\n (click)=\"scratchpadSubTab = 'output'\">\n <i class=\"fa-solid fa-arrow-right-from-bracket\"></i> Output\n </button>\n </div>\n <!-- Scratchpad Diff Sub-Tab -->\n @if (scratchpadSubTab === 'diff') {\n <div class=\"scratchpad-diff-view\">\n @if (stepScratchpadInput && stepScratchpadOutput) {\n <mj-deep-diff\n [oldValue]=\"stepScratchpadInput\"\n [newValue]=\"stepScratchpadOutput\"\n [title]=\"''\"\n [showSummary]=\"true\"\n [showUnchanged]=\"false\"\n [expandAll]=\"true\"\n [maxDepth]=\"6\"\n [maxStringLength]=\"300\"\n [treatNullAsUndefined]=\"true\">\n </mj-deep-diff>\n } @else if (stepScratchpadOutput) {\n <mj-empty-state\n Size=\"compact\"\n Icon=\"fa-solid fa-circle-plus\"\n Title=\"Scratchpad created in this step (no prior state)\" />\n <div class=\"scratchpad-snapshot\">\n <ng-container *ngTemplateOutlet=\"scratchpadSnapshotTpl; context: { $implicit: stepScratchpadOutput }\"></ng-container>\n </div>\n } @else {\n <mj-empty-state\n Size=\"compact\"\n Icon=\"fa-solid fa-circle-info\"\n Title=\"No scratchpad changes in this step\" />\n }\n </div>\n }\n <!-- Scratchpad Input Sub-Tab -->\n @if (scratchpadSubTab === 'input') {\n <div class=\"scratchpad-snapshot-view\">\n @if (stepScratchpadInput) {\n <ng-container *ngTemplateOutlet=\"scratchpadSnapshotTpl; context: { $implicit: stepScratchpadInput }\"></ng-container>\n } @else {\n <mj-empty-state\n Size=\"compact\"\n Icon=\"fa-solid fa-circle-info\"\n Title=\"No scratchpad input for this step\" />\n }\n </div>\n }\n <!-- Scratchpad Output Sub-Tab -->\n @if (scratchpadSubTab === 'output') {\n <div class=\"scratchpad-snapshot-view\">\n @if (stepScratchpadOutput) {\n <ng-container *ngTemplateOutlet=\"scratchpadSnapshotTpl; context: { $implicit: stepScratchpadOutput }\"></ng-container>\n } @else {\n <mj-empty-state\n Size=\"compact\"\n Icon=\"fa-solid fa-circle-info\"\n Title=\"No scratchpad output for this step\" />\n }\n </div>\n }\n </div>\n }\n <!-- Full JSON Tab -->\n @if (detailPaneTab === 'json' || (!showStepPayloadDiff && !showScratchpadTab)) {\n <div class=\"json-viewer\">\n <div class=\"json-toolbar\">\n <button class=\"btn-icon\" title=\"Copy JSON\" (click)=\"onCopyToClipboard()\">\n <i class=\"fas fa-copy\"></i>\n </button>\n </div>\n <mj-code-editor\n [(ngModel)]=\"selectedItemJsonString\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n style=\"width: 100%;\">\n </mj-code-editor>\n </div>\n }\n </div>\n </div>\n </div>\n}\n\n<!-- Reusable scratchpad snapshot template -->\n<ng-template #scratchpadSnapshotTpl let-snapshot>\n <div class=\"scratchpad-snapshot\">\n @if (snapshot.notes) {\n <div class=\"scratchpad-notes-section\">\n <h4><i class=\"fa-solid fa-note-sticky\"></i> Notes</h4>\n <div class=\"scratchpad-notes-content\">{{ snapshot.notes }}</div>\n </div>\n }\n @if (snapshot.tasks?.length > 0) {\n <div class=\"scratchpad-tasks-section\">\n <h4><i class=\"fa-solid fa-list-check\"></i> Tasks ({{ snapshot.tasks.length }})</h4>\n <div class=\"scratchpad-task-list\">\n @for (task of snapshot.tasks; track task.id) {\n <div class=\"scratchpad-task-item\" [attr.data-status]=\"task.status\">\n <span class=\"task-status-indicator\" [attr.data-status]=\"task.status\">\n @switch (task.status) {\n @case ('completed') { <i class=\"fa-solid fa-circle-check\"></i> }\n @case ('in_progress') { <i class=\"fa-solid fa-spinner\"></i> }\n @case ('blocked') { <i class=\"fa-solid fa-circle-xmark\"></i> }\n @default { <i class=\"fa-regular fa-circle\"></i> }\n }\n </span>\n <div class=\"task-content\">\n <span class=\"task-id\">{{ task.id }}</span>\n <span class=\"task-title\">{{ task.title }}</span>\n @if (task.notes) {\n <span class=\"task-notes\">{{ task.notes }}</span>\n }\n </div>\n <span class=\"task-status-badge\" [attr.data-status]=\"task.status\">{{ task.status }}</span>\n </div>\n }\n </div>\n </div>\n }\n @if (!snapshot.notes && (!snapshot.tasks || snapshot.tasks.length === 0)) {\n <mj-empty-state\n Size=\"compact\"\n Icon=\"fa-solid fa-circle-info\"\n Title=\"Empty scratchpad\" />\n }\n </div>\n</ng-template>", styles: [".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;\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n justify-content: space-between;\n align-items: center;\n background: var(--mj-bg-surface-sunken);\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.btn-icon {\n background: none;\n border: none;\n padding: 4px 8px;\n cursor: pointer;\n color: var(--mj-text-muted);\n border-radius: 4px;\n transition: all 0.2s;\n}\n\n.btn-icon:hover {\n background: color-mix(in srgb, var(--mj-text-primary) 5%, transparent);\n color: var(--mj-text-secondary);\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;\n display: flex;\n gap: 24px;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.meta-item {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.meta-item label {\n font-size: 11px;\n text-transform: uppercase;\n color: var(--mj-text-muted);\n font-weight: 600;\n}\n\n.meta-item span {\n font-size: 13px;\n color: var(--mj-text-primary);\n}\n\n.status-badge {\n display: inline-flex;\n align-items: center;\n padding: 4px 8px;\n border-radius: 4px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.status-badge.small {\n padding: 2px 6px;\n font-size: 10px;\n}\n\n.status-badge[data-status=\"Running\"] {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\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.action-link {\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.btn-link {\n background: none;\n border: none;\n color: var(--mj-brand-primary);\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 font-size: 13px;\n}\n\n.btn-link:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n color: var(--mj-brand-primary);\n}\n\n.detail-pane-tabs {\n display: flex;\n gap: 0;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n padding: 0 16px;\n}\n\n.detail-tab {\n padding: 12px 16px;\n background: none;\n border: none;\n border-bottom: 2px solid transparent;\n cursor: pointer;\n font-size: 13px;\n color: var(--mj-text-muted);\n transition: all 0.2s;\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%, transparent);\n}\n\n.detail-tab.active {\n color: var(--mj-brand-primary);\n border-bottom-color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n.detail-pane-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n min-height: 0; /* Allow flexbox to properly size */\n}\n\n/* \n.detail-pane-content.with-tabs {\n // No explicit height needed with flexbox \n} \n*/\n\n.json-viewer {\n flex: 1;\n display: flex;\n flex-direction: column;\n position: relative;\n overflow: hidden;\n min-height: 0; /* Important for flexbox children to respect overflow */\n}\n\n.json-toolbar {\n position: absolute;\n top: 8px;\n right: 8px;\n z-index: 10;\n display: flex;\n gap: 4px;\n}\n\n.step-payload-diff {\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n min-height: 0; /* Allow proper scrolling */\n}\n\n/* Specific styling for mj-code-editor container */\n.json-viewer mj-code-editor {\n flex: 1;\n overflow: hidden;\n min-height: 0;\n display: flex;\n flex-direction: column;\n}\n\n/* Tab badge for change count */\n.tab-badge {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 18px;\n height: 18px;\n padding: 0 5px;\n border-radius: 9px;\n font-size: 10px;\n font-weight: 700;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n/* Scratchpad content area */\n.scratchpad-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n min-height: 0;\n}\n\n/* Scratchpad sub-tabs */\n.scratchpad-sub-tabs {\n display: flex;\n gap: 0;\n padding: 0 16px;\n border-bottom: 1px solid var(--mj-border-subtle);\n background: var(--mj-bg-surface);\n}\n\n.scratchpad-sub-tab {\n padding: 8px 12px;\n background: none;\n border: none;\n border-bottom: 2px solid transparent;\n cursor: pointer;\n font-size: 12px;\n color: var(--mj-text-muted);\n transition: all 0.2s;\n display: flex;\n align-items: center;\n gap: 5px;\n}\n\n.scratchpad-sub-tab:hover {\n color: var(--mj-text-secondary);\n background: color-mix(in srgb, var(--mj-text-primary) 2%, transparent);\n}\n\n.scratchpad-sub-tab.active {\n color: var(--mj-brand-primary);\n border-bottom-color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n/* Scratchpad diff and snapshot views */\n.scratchpad-diff-view,\n.scratchpad-snapshot-view {\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n min-height: 0;\n}\n\n/* Scratchpad snapshot rendering */\n.scratchpad-snapshot {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.scratchpad-notes-section h4,\n.scratchpad-tasks-section h4 {\n margin: 0 0 8px 0;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.scratchpad-notes-content {\n padding: 12px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 6px;\n border: 1px solid var(--mj-border-subtle);\n font-size: 13px;\n line-height: 1.5;\n color: var(--mj-text-primary);\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n/* Task list */\n.scratchpad-task-list {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.scratchpad-task-item {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n padding: 8px 12px;\n border-radius: 6px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-subtle);\n transition: background 0.15s;\n}\n\n.scratchpad-task-item:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n/* Task status indicator icon */\n.task-status-indicator {\n flex-shrink: 0;\n width: 16px;\n margin-top: 2px;\n font-size: 14px;\n}\n\n.task-status-indicator[data-status=\"completed\"] {\n color: var(--mj-status-success);\n}\n\n.task-status-indicator[data-status=\"in_progress\"] {\n color: var(--mj-brand-primary);\n}\n\n.task-status-indicator[data-status=\"blocked\"] {\n color: var(--mj-status-error);\n}\n\n.task-status-indicator[data-status=\"pending\"] {\n color: var(--mj-text-muted);\n}\n\n/* Task content */\n.task-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n}\n\n.task-id {\n font-size: 10px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n}\n\n.task-title {\n font-size: 13px;\n color: var(--mj-text-primary);\n line-height: 1.4;\n}\n\n.task-notes {\n font-size: 12px;\n color: var(--mj-text-secondary);\n line-height: 1.4;\n font-style: italic;\n}\n\n/* Task status badge */\n.task-status-badge {\n flex-shrink: 0;\n padding: 2px 6px;\n border-radius: 4px;\n font-size: 10px;\n font-weight: 600;\n text-transform: uppercase;\n white-space: nowrap;\n}\n\n.task-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.task-status-badge[data-status=\"in_progress\"] {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.task-status-badge[data-status=\"blocked\"] {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.task-status-badge[data-status=\"pending\"] {\n background: color-mix(in srgb, var(--mj-text-muted) 15%, var(--mj-bg-surface));\n color: var(--mj-text-muted);\n}\n\n/* ============================================================\n Skills tab \u2014 skill-invocation observability cards\n ============================================================ */\n.skills-content {\n display: flex;\n flex-direction: column;\n gap: 12px;\n padding: 12px;\n}\n\n.skill-invocation-card {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 12px 14px;\n background: var(--mj-bg-surface);\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.skill-invocation-card[data-activation=\"auto\"] {\n border-left-color: var(--mj-status-warning);\n}\n\n.skill-invocation-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n}\n\n.skill-invocation-name {\n font-weight: 600;\n font-size: 14px;\n color: var(--mj-text-primary);\n display: inline-flex;\n align-items: center;\n gap: 8px;\n}\n\n.skill-invocation-name i {\n color: var(--mj-brand-primary);\n}\n\n.skill-invocation-type {\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n padding: 2px 10px;\n border-radius: 10px;\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.skill-invocation-type[data-activation=\"auto\"] {\n background: color-mix(in srgb, var(--mj-status-warning) 12%, var(--mj-bg-surface));\n color: var(--mj-status-warning-text);\n}\n\n.skill-invocation-reason {\n margin-top: 8px;\n font-size: 13px;\n font-style: italic;\n color: var(--mj-text-secondary);\n display: flex;\n gap: 8px;\n align-items: baseline;\n}\n\n.skill-invocation-reason i {\n color: var(--mj-text-muted);\n font-size: 10px;\n}\n\n.skill-invocation-provenance {\n margin-top: 10px;\n padding-top: 10px;\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n.provenance-title {\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--mj-text-muted);\n margin-bottom: 6px;\n}\n\n.provenance-row {\n display: flex;\n justify-content: space-between;\n gap: 12px;\n font-size: 12px;\n padding: 2px 0;\n}\n\n.provenance-label {\n color: var(--mj-text-secondary);\n}\n\n.provenance-value {\n color: var(--mj-text-primary);\n font-weight: 500;\n}\n\n.provenance-id {\n font-family: monospace;\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n"] }]
613
738
  }], () => [{ type: i0.ChangeDetectorRef }], { selectedTimelineItem: [{
614
739
  type: Input
615
740
  }], closePanel: [{